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();
|
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 ConexionRutaConfVO carregarConexoesCadastradas(Integer conexionrutaconfId);
|
||||||
|
|
||||||
public List<List<Ruta>> buscarRutasPorConexionConf(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.ArrayList;
|
||||||
import java.util.Calendar;
|
import java.util.Calendar;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.hibernate.Criteria;
|
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.ConexionRutaCtrl;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
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.ConexionCtrlVO;
|
||||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaConfVO;
|
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaConfVO;
|
||||||
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
|
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
|
||||||
|
@ -50,8 +52,8 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf) {
|
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf, boolean isConexionGerada) {
|
||||||
List<String> comandos = carregarComandosInativarConfiguracao(excluirConexionRutaConf);
|
List<String> comandos = carregarComandosInativarConfiguracao(excluirConexionRutaConf, isConexionGerada);
|
||||||
for (String comando : comandos) {
|
for (String comando : comandos) {
|
||||||
Query qr = getSession().createSQLQuery(comando);
|
Query qr = getSession().createSQLQuery(comando);
|
||||||
qr.setParameter("usuarioId", usuarioId);
|
qr.setParameter("usuarioId", usuarioId);
|
||||||
|
@ -61,33 +63,38 @@ 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);
|
List<String> comandos = new ArrayList<String>(0);
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
if(excluirConexionRutaConf) {
|
if(excluirConexionRutaConf) {
|
||||||
sb.append("update conexion_ruta_conf ")
|
sb.append("update conexion_ruta_conf ")
|
||||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
.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());
|
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 = new StringBuilder();
|
||||||
sb.append("update conexion_ruta_excepcion_ptovta ")
|
sb.append("update conexion_ruta_excepcion_ptovta ")
|
||||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
.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());
|
comandos.add(sb.toString());
|
||||||
|
|
||||||
sb = new StringBuilder();
|
sb = new StringBuilder();
|
||||||
sb.append("update conexion_rutaexcepciontipopta ")
|
sb.append("update conexion_rutaexcepciontipopta ")
|
||||||
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
|
.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());
|
||||||
|
|
||||||
|
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());
|
comandos.add(sb.toString());
|
||||||
|
|
||||||
sb = new StringBuilder();
|
sb = new StringBuilder();
|
||||||
|
@ -135,6 +142,7 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
||||||
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionconf_id = c.conexionconf_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("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
|
||||||
comandos.add(sb.toString());
|
comandos.add(sb.toString());
|
||||||
|
}
|
||||||
|
|
||||||
return comandos;
|
return comandos;
|
||||||
}
|
}
|
||||||
|
@ -210,6 +218,8 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
|
||||||
}
|
}
|
||||||
|
|
||||||
retorno.setListConexionCtrl(listConexionCtrl);
|
retorno.setListConexionCtrl(listConexionCtrl);
|
||||||
|
|
||||||
|
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
|
||||||
retorno.setLocalidadesCombinadas(localidadesCombinadas);
|
retorno.setLocalidadesCombinadas(localidadesCombinadas);
|
||||||
|
|
||||||
return retorno;
|
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 obtenerID(Integer id);
|
||||||
|
|
||||||
public ConexionRutaConf salvarConfiguracao(ConexionRutaConf conexion, List<TipoPuntoVenta> canalVentas, List<PuntoVenta> puntoVentas,
|
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);
|
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
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf) {
|
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf, boolean isConexionGerada) {
|
||||||
conexionRutaConfDAO.excluirConfiguracao(conexion, UsuarioLogado.getUsuarioLogado().getUsuarioId(), excluirConexionRutaConf);
|
conexionRutaConfDAO.excluirConfiguracao(conexion, UsuarioLogado.getUsuarioLogado().getUsuarioId(), excluirConexionRutaConf, isConexionGerada);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
public ConexionRutaConf salvarConfiguracao(ConexionRutaConf conexionRutaConf, List<TipoPuntoVenta> canalVentas, List<PuntoVenta> puntoVentas,
|
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);
|
conexionRutaConf = suscribirOrActualizacion(conexionRutaConf);
|
||||||
|
|
||||||
salvarCanalVentasRutaCtrl(conexionRutaConf, canalVentas);
|
salvarCanalVentasRutaCtrl(conexionRutaConf, canalVentas);
|
||||||
salvarPuntoVentasRutaCtrl(conexionRutaConf, puntoVentas);
|
salvarPuntoVentasRutaCtrl(conexionRutaConf, puntoVentas);
|
||||||
|
|
||||||
|
if(isConexionGerada) {
|
||||||
salvarConexionesRutaCtrl(conexionRutaConf, conexoesCtrl, rutas, localidadesCombinadas);
|
salvarConexionesRutaCtrl(conexionRutaConf, conexoesCtrl, rutas, localidadesCombinadas);
|
||||||
|
} else {
|
||||||
|
conexionRutaConfDAO.atualizarTempoMinimoEMaximo(conexionRutaConf);
|
||||||
|
}
|
||||||
|
|
||||||
return 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