fixes bug#22508
dev:wilian qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@107098 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
2c041c3d9f
commit
53d597fab2
|
@ -12,10 +12,12 @@ public interface ConexionRutaConfDAO extends GenericDAO<ConexionRutaConf, Intege
|
|||
|
||||
List<ConexionRutaConf> obtenerTodosActivo();
|
||||
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf);
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf, boolean isConexionGerada);
|
||||
|
||||
public ConexionRutaConfVO carregarConexoesCadastradas(Integer conexionrutaconfId);
|
||||
|
||||
public List<List<Ruta>> buscarRutasPorConexionConf(Integer conexionRutaConfId);
|
||||
|
||||
public void atualizarTempoMinimoEMaximo(ConexionRutaConf conexionRutaConf);
|
||||
|
||||
}
|
||||
|
|
|
@ -2,6 +2,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Criteria;
|
||||
|
@ -19,6 +20,7 @@ import com.rjconsultores.ventaboletos.entidad.ConexionRutaConf;
|
|||
import com.rjconsultores.ventaboletos.entidad.ConexionRutaCtrl;
|
||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.vo.conexion.OrdenarLocalidadesGeradas;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaConfVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
|
||||
|
@ -50,8 +52,8 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
|||
}
|
||||
|
||||
@Override
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf) {
|
||||
List<String> comandos = carregarComandosInativarConfiguracao(excluirConexionRutaConf);
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf, boolean isConexionGerada) {
|
||||
List<String> comandos = carregarComandosInativarConfiguracao(excluirConexionRutaConf, isConexionGerada);
|
||||
for (String comando : comandos) {
|
||||
Query qr = getSession().createSQLQuery(comando);
|
||||
qr.setParameter("usuarioId", usuarioId);
|
||||
|
@ -61,80 +63,86 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
|||
}
|
||||
}
|
||||
|
||||
private List<String> carregarComandosInativarConfiguracao(boolean excluirConexionRutaConf) {
|
||||
private List<String> carregarComandosInativarConfiguracao(boolean excluirConexionRutaConf, boolean isConexionGerada) {
|
||||
List<String> comandos = new ArrayList<String>(0);
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if(excluirConexionRutaConf) {
|
||||
sb.append("update conexion_ruta_conf ")
|
||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId");
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId ")
|
||||
.append("and activo = 1");
|
||||
comandos.add(sb.toString());
|
||||
}
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("update conexion_ruta_ctrl ")
|
||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("update conexion_ruta_excepcion_ptovta ")
|
||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId");
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId ")
|
||||
.append("and activo = 1");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("update conexion_rutaexcepciontipopta ")
|
||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_ruta_tramo_ctrl c ")
|
||||
.append("using ( ")
|
||||
.append("select c1.conexionrutatramoctrl_id ")
|
||||
.append("from conexion_ruta_tramo_ctrl c1 ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c1.activo = 1) t on (t.conexionrutatramoctrl_id = c.conexionrutatramoctrl_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion c ")
|
||||
.append("using ( ")
|
||||
.append("select c.conexion_id ")
|
||||
.append("from conexion c ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexion_id = c.conexion_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_ctrl c ")
|
||||
.append("using ( ")
|
||||
.append("select distinct c.conexionctrl_id ")
|
||||
.append("from conexion_ctrl c ")
|
||||
.append("join conexion c3 on c3.conexionctrl_id = c.conexionctrl_id ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionctrl_id = c.conexionctrl_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_conf c ")
|
||||
.append("using ( ")
|
||||
.append("select distinct c.conexionconf_id ")
|
||||
.append("from conexion_conf c ")
|
||||
.append("join conexion_ctrl c4 on c4.conexionctrl_id = c.conexionctrl_id ")
|
||||
.append("join conexion c3 on c3.conexionctrl_id = c4.conexionctrl_id ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionconf_id = c.conexionconf_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId ")
|
||||
.append("and activo = 1");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
if(isConexionGerada || excluirConexionRutaConf) {
|
||||
sb = new StringBuilder();
|
||||
sb.append("update conexion_ruta_ctrl ")
|
||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
||||
.append("where conexionrutaconf_id = :conexionrutaconfId ")
|
||||
.append("and activo = 1");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_ruta_tramo_ctrl c ")
|
||||
.append("using ( ")
|
||||
.append("select c1.conexionrutatramoctrl_id ")
|
||||
.append("from conexion_ruta_tramo_ctrl c1 ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c1.activo = 1) t on (t.conexionrutatramoctrl_id = c.conexionrutatramoctrl_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion c ")
|
||||
.append("using ( ")
|
||||
.append("select c.conexion_id ")
|
||||
.append("from conexion c ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexion_id = c.conexion_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_ctrl c ")
|
||||
.append("using ( ")
|
||||
.append("select distinct c.conexionctrl_id ")
|
||||
.append("from conexion_ctrl c ")
|
||||
.append("join conexion c3 on c3.conexionctrl_id = c.conexionctrl_id ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionctrl_id = c.conexionctrl_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
|
||||
comandos.add(sb.toString());
|
||||
|
||||
sb = new StringBuilder();
|
||||
sb.append("merge into conexion_conf c ")
|
||||
.append("using ( ")
|
||||
.append("select distinct c.conexionconf_id ")
|
||||
.append("from conexion_conf c ")
|
||||
.append("join conexion_ctrl c4 on c4.conexionctrl_id = c.conexionctrl_id ")
|
||||
.append("join conexion c3 on c3.conexionctrl_id = c4.conexionctrl_id ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionconf_id = c.conexionconf_id) ")
|
||||
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
|
||||
comandos.add(sb.toString());
|
||||
}
|
||||
|
||||
return comandos;
|
||||
}
|
||||
|
@ -210,6 +218,8 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
|||
}
|
||||
|
||||
retorno.setListConexionCtrl(listConexionCtrl);
|
||||
|
||||
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
|
||||
retorno.setLocalidadesCombinadas(localidadesCombinadas);
|
||||
|
||||
return retorno;
|
||||
|
@ -269,4 +279,27 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
|||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void atualizarTempoMinimoEMaximo(ConexionRutaConf conexionRutaConf) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("merge into conexion_conf c ")
|
||||
.append("using ( ")
|
||||
.append("select distinct c.conexionconf_id ")
|
||||
.append("from conexion_conf c ")
|
||||
.append("join conexion_ctrl c4 on c4.conexionctrl_id = c.conexionctrl_id ")
|
||||
.append("join conexion c3 on c3.conexionctrl_id = c4.conexionctrl_id ")
|
||||
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
|
||||
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
|
||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionconf_id = c.conexionconf_id) ")
|
||||
.append("when matched then update set usuario_id = :usuarioId, fecmodif = :fecmodif, tiempomin = :tiempomin, tiempomax = :tiempomax ");
|
||||
|
||||
Query qr = getSession().createSQLQuery(sb.toString());
|
||||
qr.setParameter("usuarioId", conexionRutaConf.getUsuarioId());
|
||||
qr.setParameter("conexionrutaconfId", conexionRutaConf.getConexionRutaConfId());
|
||||
qr.setParameter("fecmodif", Calendar.getInstance().getTime());
|
||||
qr.setParameter("tiempomin", conexionRutaConf.getTiempoMin());
|
||||
qr.setParameter("tiempomax", conexionRutaConf.getTiempoMax());
|
||||
qr.executeUpdate();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
package com.rjconsultores.ventaboletos.service;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
|
||||
|
||||
public interface ConexionRutaCombinacionService {
|
||||
|
||||
public void gerarCombinacionEntre2Eixos(List<Parada> listParada1, List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Parada> lsLocalidadesComuns, List<Parada> listParada4, List<Ruta> rutasEixoA2, List<Ruta> rutasEixoB2, List<ParadaVOConexionRuta> localidadesGeradas, List<ConexionCtrlVO> conexoesCtrl);
|
||||
|
||||
public void gerarCombinacionEntre3Eixos(List<Parada> listParada1, List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Parada> lsLocalidadesComuns, List<Parada> listParada4, List<Parada> listParadasC, List<Ruta> rutasEixoA2, List<Ruta> rutasEixoB2, List<Ruta> rutasEixoC, List<ParadaVOConexionRuta> localidadesGeradas, List<ConexionCtrlVO> conexoesCtrl);
|
||||
|
||||
public List<ConexionRutaCtrlVO> extrairConexionRutaCtrl(List<ParadaVOConexionRuta> localidadesGeradas);
|
||||
|
||||
}
|
|
@ -30,9 +30,10 @@ public interface ConexionRutaConfService {
|
|||
public ConexionRutaConf obtenerID(Integer id);
|
||||
|
||||
public ConexionRutaConf salvarConfiguracao(ConexionRutaConf conexion, List<TipoPuntoVenta> canalVentas, List<PuntoVenta> puntoVentas,
|
||||
List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas);
|
||||
List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas,
|
||||
boolean isConexionGerada);
|
||||
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf);
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf, boolean isConexionGerada);
|
||||
|
||||
public ConexionRutaConfVO carregarConexoesCadastradas(Integer conexionrutaconfId);
|
||||
|
||||
|
|
|
@ -0,0 +1,309 @@
|
|||
package com.rjconsultores.ventaboletos.service.impl;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.service.ConexionRutaCombinacionService;
|
||||
import com.rjconsultores.ventaboletos.service.RutaCombinacionService;
|
||||
import com.rjconsultores.ventaboletos.vo.conexion.OrdenarLocalidadesGeradas;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
|
||||
|
||||
@Service("conexionRutaCombinacionFactory")
|
||||
public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinacionService {
|
||||
|
||||
@Autowired
|
||||
private RutaCombinacionService rutaCombinacionService;
|
||||
|
||||
private Map<Integer, Parada> criandoCacheLocalidades(List<Parada> list) {
|
||||
Map<Integer, Parada> cacheLocalidades = new HashMap<Integer, Parada>();
|
||||
for (Parada parada : list) {
|
||||
cacheLocalidades.put(parada.getParadaId(), parada);
|
||||
}
|
||||
return cacheLocalidades;
|
||||
}
|
||||
|
||||
private void gerarCombinacao(LinkedList<List<Parada>> lists, List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Ruta> rutasEixoC, List<ParadaVOConexionRuta> localidadesGeradas, List<ConexionCtrlVO> conexoesCtrl, Map<Integer, Parada> cacheLocalidades) {
|
||||
|
||||
|
||||
Set<String> combinacoes = new TreeSet<String>();
|
||||
|
||||
for (Parada s : lists.removeFirst())
|
||||
combinacoes.add(s.getParadaId().toString());
|
||||
|
||||
while (!lists.isEmpty()) {
|
||||
List<Parada> next = lists.removeFirst();
|
||||
Set<String> novasCombinacoes = new TreeSet<String>();
|
||||
for (String s1 : combinacoes) {
|
||||
for (Parada s2 : next) {
|
||||
novasCombinacoes.add(s1 + ";" + s2.getParadaId());
|
||||
}
|
||||
}
|
||||
combinacoes = novasCombinacoes;
|
||||
}
|
||||
//System.out.println(combinacoes);
|
||||
|
||||
if(rutasEixoC == null) {
|
||||
gerarLocalidadesEixoAB(rutasEixoA, rutasEixoB, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades);
|
||||
}else {
|
||||
gerarLocalidadesEixoABC(rutasEixoA, rutasEixoB,rutasEixoC, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades);
|
||||
}
|
||||
|
||||
Collections.sort(localidadesGeradas, new OrdenarLocalidadesGeradas());
|
||||
}
|
||||
|
||||
|
||||
private void gerarLocalidadesEixoAB(List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<ParadaVOConexionRuta> localidadesGeradas, Set<String> combinacoes, List<ConexionCtrlVO> conexoesCtrl, Map<Integer, Parada> cacheLocalidades) {
|
||||
short i = 1;
|
||||
String[] valoresCalculados;
|
||||
|
||||
for (Ruta rutaEixoA : rutasEixoA) {
|
||||
for (Ruta rutaEixoB : rutasEixoB) {
|
||||
for (String comb : combinacoes) {
|
||||
valoresCalculados = comb.split(";");
|
||||
if(valoresCalculados != null && valoresCalculados.length == 4) {
|
||||
Integer origemConexaoCtrl = Integer.parseInt(valoresCalculados[0]);
|
||||
Integer destinoConexaoCtrl = Integer.parseInt(valoresCalculados[3]);
|
||||
if(origemConexaoCtrl == null || cacheLocalidades.get(origemConexaoCtrl) == null ||
|
||||
destinoConexaoCtrl == null || cacheLocalidades.get(destinoConexaoCtrl) == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ConexionCtrlVO conexionCtrl = adicionarConexao(conexoesCtrl, origemConexaoCtrl, destinoConexaoCtrl);
|
||||
ConexionRutaCtrlVO conexionRutaCtrl = new ConexionRutaCtrlVO(rutaEixoA.getRutaId(), rutaEixoB.getRutaId(), null);
|
||||
|
||||
ParadaVOConexionRuta trechoA = new ParadaVOConexionRuta(conexionCtrl.getGrupo(), cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[1])), rutaEixoA.getRutaId(), rutaEixoA.getNumRuta(), i, true,
|
||||
cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[3])),
|
||||
conexionCtrl, conexionRutaCtrl, rutaEixoA.getDescSentido());
|
||||
i++;
|
||||
|
||||
ParadaVOConexionRuta trechoB = new ParadaVOConexionRuta(conexionCtrl.getGrupo(), cacheLocalidades.get(Integer.parseInt(valoresCalculados[2])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[3])), rutaEixoB.getRutaId(), rutaEixoB.getNumRuta(), i, true,
|
||||
cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[3])),
|
||||
conexionCtrl, conexionRutaCtrl, rutaEixoB.getDescSentido());
|
||||
i++;
|
||||
|
||||
adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, null);
|
||||
|
||||
i = 1;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
removerConexionCtrlInvalida(conexoesCtrl);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param conexoesCtrl
|
||||
* @param origemConexaoCtrl
|
||||
* @param destinoConexaoCtrl
|
||||
* @return
|
||||
*/
|
||||
private ConexionCtrlVO adicionarConexao(List<ConexionCtrlVO> conexoesCtrl, Integer origemConexaoCtrl, Integer destinoConexaoCtrl) {
|
||||
ConexionCtrlVO conexionCtrl = null;
|
||||
Integer indice = 0;
|
||||
for (ConexionCtrlVO conexionCtrlTemp : conexoesCtrl) {
|
||||
if(conexionCtrlTemp.isOrigemDestinoIgual(origemConexaoCtrl, destinoConexaoCtrl)) {
|
||||
conexionCtrl = conexionCtrlTemp;
|
||||
break;
|
||||
}
|
||||
indice++;
|
||||
}
|
||||
|
||||
if(conexionCtrl == null) {
|
||||
conexionCtrl = new ConexionCtrlVO(origemConexaoCtrl, destinoConexaoCtrl);
|
||||
indice = -1;
|
||||
}
|
||||
|
||||
conexionCtrl.incrementarGrupo();
|
||||
|
||||
if(indice > -1) {
|
||||
conexoesCtrl.set(indice, conexionCtrl);
|
||||
} else {
|
||||
conexoesCtrl.add(conexionCtrl);
|
||||
}
|
||||
|
||||
return conexionCtrl;
|
||||
|
||||
}
|
||||
|
||||
private void adicionarLocalidadeGerada(ConexionCtrlVO conexionCtrl, List<ParadaVOConexionRuta> localidadesGeradas, ParadaVOConexionRuta trechoA, ParadaVOConexionRuta trechoB, ParadaVOConexionRuta trechoC) {
|
||||
boolean isTrechoAVende = false;
|
||||
boolean isTrechoBVende = false;
|
||||
|
||||
if(isDadosNotNull(trechoA)) {
|
||||
isTrechoAVende = rutaCombinacionService.isRutaCombinacionVenda(trechoA.getRutaId(), trechoA.getParadaOrigem().getParadaId(), trechoA.getParadaDestino().getParadaId());
|
||||
}
|
||||
|
||||
if(isDadosNotNull(trechoB)) {
|
||||
isTrechoBVende = rutaCombinacionService.isRutaCombinacionVenda(trechoB.getRutaId(), trechoB.getParadaOrigem().getParadaId(), trechoB.getParadaDestino().getParadaId());
|
||||
}
|
||||
|
||||
boolean isTrechoCVende = true;
|
||||
if(trechoC != null) {
|
||||
if(isDadosNotNull(trechoC)) {
|
||||
isTrechoCVende = rutaCombinacionService.isRutaCombinacionVenda(trechoC.getRutaId(), trechoC.getParadaOrigem().getParadaId(), trechoC.getParadaDestino().getParadaId());
|
||||
} else {
|
||||
isTrechoCVende = false;
|
||||
}
|
||||
}
|
||||
|
||||
if(isTrechoAVende && isTrechoBVende && isTrechoCVende) {
|
||||
localidadesGeradas.add(trechoA);
|
||||
localidadesGeradas.add(trechoB);
|
||||
if(trechoC != null) {
|
||||
localidadesGeradas.add(trechoC);
|
||||
}
|
||||
conexionCtrl.setValida(true);
|
||||
} else {
|
||||
conexionCtrl.decrementarGrupo();
|
||||
}
|
||||
}
|
||||
|
||||
private void gerarLocalidadesEixoABC(List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Ruta> rutasEixoC, List<ParadaVOConexionRuta> localidadesGeradas, Set<String> combinations, List<ConexionCtrlVO> conexoesCtrl, Map<Integer, Parada> cacheLocalidades) {
|
||||
|
||||
short i = 1;
|
||||
String[] valoresCalculados = null;
|
||||
for (Ruta rutaEixoA : rutasEixoA) {
|
||||
|
||||
for (Ruta rutaEixoB : rutasEixoB) {
|
||||
for (Ruta rutaEixoC : rutasEixoC) {
|
||||
for (String comb : combinations) {
|
||||
valoresCalculados = comb.split(";");
|
||||
if(valoresCalculados != null && valoresCalculados.length == 5) {
|
||||
Integer origemConexaoCtrl = Integer.parseInt(valoresCalculados[0]);
|
||||
Integer destinoConexaoCtrl = Integer.parseInt(valoresCalculados[4]);
|
||||
if(origemConexaoCtrl == null || cacheLocalidades.get(origemConexaoCtrl) == null ||
|
||||
destinoConexaoCtrl == null || cacheLocalidades.get(destinoConexaoCtrl) == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ConexionCtrlVO conexionCtrl = adicionarConexao(conexoesCtrl, origemConexaoCtrl, destinoConexaoCtrl);
|
||||
ConexionRutaCtrlVO conexionRutaCtrl = new ConexionRutaCtrlVO(rutaEixoA.getRutaId(), rutaEixoB.getRutaId(), rutaEixoC.getRutaId());
|
||||
|
||||
ParadaVOConexionRuta trechoA = new ParadaVOConexionRuta(conexionCtrl.getGrupo(), cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[1])), rutaEixoA.getRutaId(), rutaEixoA.getNumRuta(), i, true,
|
||||
cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[4])),
|
||||
conexionCtrl, conexionRutaCtrl, rutaEixoA.getDescSentido());
|
||||
i++;
|
||||
|
||||
ParadaVOConexionRuta trechoB = new ParadaVOConexionRuta(conexionCtrl.getGrupo(), cacheLocalidades.get(Integer.parseInt(valoresCalculados[2])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[3])), rutaEixoB.getRutaId(), rutaEixoB.getNumRuta(), i, true,
|
||||
cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[4])),
|
||||
conexionCtrl, conexionRutaCtrl, rutaEixoB.getDescSentido());
|
||||
i++;
|
||||
|
||||
ParadaVOConexionRuta trechoC = new ParadaVOConexionRuta(conexionCtrl.getGrupo(), cacheLocalidades.get(Integer.parseInt(valoresCalculados[3])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[4])), rutaEixoC.getRutaId(), rutaEixoC.getNumRuta(), i, true,
|
||||
cacheLocalidades.get(Integer.parseInt(valoresCalculados[0])), cacheLocalidades.get(Integer.parseInt(valoresCalculados[4])),
|
||||
conexionCtrl, conexionRutaCtrl, rutaEixoC.getDescSentido());
|
||||
i++;
|
||||
|
||||
adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, trechoC);
|
||||
|
||||
i = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
removerConexionCtrlInvalida(conexoesCtrl);
|
||||
}
|
||||
|
||||
private void removerConexionCtrlInvalida(List<ConexionCtrlVO> conexoesCtrl) {
|
||||
List<ConexionCtrlVO> temp = new ArrayList<ConexionCtrlVO>(0);
|
||||
for (ConexionCtrlVO conexionCtrl : conexoesCtrl) {
|
||||
if(conexionCtrl.isValida()) {
|
||||
temp.add(conexionCtrl);
|
||||
}
|
||||
}
|
||||
conexoesCtrl.clear();
|
||||
conexoesCtrl.addAll(temp);
|
||||
}
|
||||
|
||||
public void gerarCombinacionEntre2Eixos(List<Parada> listParada1, List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Parada> lsLocalidadesComuns, List<Parada> listParada4, List<Ruta> rutasEixoA2, List<Ruta> rutasEixoB2, List<ParadaVOConexionRuta> localidadesGeradas, List<ConexionCtrlVO> conexoesCtrl) {
|
||||
|
||||
for (int i = 0; i < lsLocalidadesComuns.size(); i++) {
|
||||
|
||||
List<Parada> listParada2 = Arrays.asList(lsLocalidadesComuns.get(i));
|
||||
List<Parada> listParada3 = Arrays.asList(lsLocalidadesComuns.get(i));
|
||||
|
||||
LinkedList<List<Parada>> lists = new LinkedList<List<Parada>>();
|
||||
|
||||
lists.add(listParada1);
|
||||
lists.add(listParada2);
|
||||
lists.add(listParada3);
|
||||
lists.add(listParada4);
|
||||
|
||||
List<Parada> localidades = new ArrayList<Parada>();
|
||||
localidades.addAll(listParada1);
|
||||
localidades.addAll(listParada2);
|
||||
localidades.addAll(listParada3);
|
||||
localidades.addAll(listParada4);
|
||||
|
||||
Map<Integer, Parada> cacheLocalidades = criandoCacheLocalidades(localidades);
|
||||
gerarCombinacao(lists, rutasEixoA, rutasEixoB, null, localidadesGeradas, conexoesCtrl, cacheLocalidades);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void gerarCombinacionEntre3Eixos(List<Parada> listParada1, List<Ruta> rutasEixoA, List<Ruta> rutasEixoB, List<Parada> lsLocalidadesComuns, List<Parada> listParada4, List<Parada> listParadasC, List<Ruta> rutasEixoA2, List<Ruta> rutasEixoB2, List<Ruta> rutasEixoC, List<ParadaVOConexionRuta> localidadesGeradas, List<ConexionCtrlVO> conexoesCtrl) {
|
||||
|
||||
for (int i = 0; i < lsLocalidadesComuns.size(); i++) {
|
||||
|
||||
List<Parada> listParada2 = Arrays.asList(lsLocalidadesComuns.get(i));
|
||||
List<Parada> listParada3 = Arrays.asList(lsLocalidadesComuns.get(i));
|
||||
|
||||
LinkedList<List<Parada>> lists = new LinkedList<List<Parada>>();
|
||||
|
||||
lists.add(listParada1);
|
||||
lists.add(listParada2);
|
||||
lists.add(listParada3);
|
||||
lists.add(listParada4);
|
||||
lists.add(listParadasC);
|
||||
|
||||
List<Parada> localidades = new ArrayList<Parada>();
|
||||
localidades.addAll(listParada1);
|
||||
localidades.addAll(listParada2);
|
||||
localidades.addAll(listParada3);
|
||||
localidades.addAll(listParada4);
|
||||
localidades.addAll(listParadasC);
|
||||
|
||||
Map<Integer, Parada> cacheLocalidades = criandoCacheLocalidades(localidades);
|
||||
gerarCombinacao(lists, rutasEixoA, rutasEixoB, rutasEixoC, localidadesGeradas, conexoesCtrl, cacheLocalidades);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public List<ConexionRutaCtrlVO> extrairConexionRutaCtrl(List<ParadaVOConexionRuta> localidadesGeradas) {
|
||||
List<ConexionRutaCtrlVO> list = new ArrayList<ConexionRutaCtrlVO>(0);
|
||||
for (ParadaVOConexionRuta paradaVOConexionRuta : localidadesGeradas) {
|
||||
if(!list.contains(paradaVOConexionRuta.getConexionRutaCtrl())) {
|
||||
list.add(paradaVOConexionRuta.getConexionRutaCtrl());
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private boolean isDadosNotNull(ParadaVOConexionRuta trecho) {
|
||||
return trecho != null &&
|
||||
trecho.getRutaId() != null &&
|
||||
trecho.getParadaOrigem() != null &&
|
||||
trecho.getParadaDestino() != null;
|
||||
}
|
||||
|
||||
}
|
|
@ -126,19 +126,25 @@ public class ConexionRutaConfServiceImpl implements ConexionRutaConfService {
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf) {
|
||||
conexionRutaConfDAO.excluirConfiguracao(conexion, UsuarioLogado.getUsuarioLogado().getUsuarioId(), excluirConexionRutaConf);
|
||||
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf, boolean isConexionGerada) {
|
||||
conexionRutaConfDAO.excluirConfiguracao(conexion, UsuarioLogado.getUsuarioLogado().getUsuarioId(), excluirConexionRutaConf, isConexionGerada);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public ConexionRutaConf salvarConfiguracao(ConexionRutaConf conexionRutaConf, List<TipoPuntoVenta> canalVentas, List<PuntoVenta> puntoVentas,
|
||||
List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas) {
|
||||
List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas,
|
||||
boolean isConexionGerada) {
|
||||
conexionRutaConf = suscribirOrActualizacion(conexionRutaConf);
|
||||
|
||||
salvarCanalVentasRutaCtrl(conexionRutaConf, canalVentas);
|
||||
salvarPuntoVentasRutaCtrl(conexionRutaConf, puntoVentas);
|
||||
salvarConexionesRutaCtrl(conexionRutaConf, conexoesCtrl, rutas, localidadesCombinadas);
|
||||
|
||||
if(isConexionGerada) {
|
||||
salvarConexionesRutaCtrl(conexionRutaConf, conexoesCtrl, rutas, localidadesCombinadas);
|
||||
} else {
|
||||
conexionRutaConfDAO.atualizarTempoMinimoEMaximo(conexionRutaConf);
|
||||
}
|
||||
|
||||
return conexionRutaConf;
|
||||
}
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
package com.rjconsultores.ventaboletos.vo.conexion;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
|
||||
|
||||
public class OrdenarLocalidadesGeradas implements Comparator<ParadaVOConexionRuta> {
|
||||
|
||||
@Override
|
||||
public int compare(ParadaVOConexionRuta o1, ParadaVOConexionRuta o2) {
|
||||
int retorno = o1.getParadaOrigemTrecho().getParadaId().compareTo(o2.getParadaOrigemTrecho().getParadaId());
|
||||
if(retorno == 0) {
|
||||
retorno = o1.getParadaDestinoTrecho().getParadaId().compareTo(o2.getParadaDestinoTrecho().getParadaId());
|
||||
}
|
||||
if(retorno == 0) {
|
||||
retorno = o1.getGrupo().compareTo(o2.getGrupo());
|
||||
}
|
||||
if(retorno == 0) {
|
||||
retorno = o1.getSecuencia().compareTo(o2.getSecuencia());
|
||||
}
|
||||
return retorno;
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue