From 4f7871cc6755da2574c212a15c1872742f7a6f1b Mon Sep 17 00:00:00 2001 From: valdevir Date: Thu, 29 Feb 2024 15:36:17 -0300 Subject: [PATCH 1/2] fixes bug #AL-3494 --- pom.xml | 2 +- .../service/CorridaTramoService.java | 3 +- .../service/impl/CorridaServiceImpl.java | 70 ++++++++++++------- .../service/impl/CorridaTramoServiceImpl.java | 45 +++++++++++- 4 files changed, 91 insertions(+), 29 deletions(-) diff --git a/pom.xml b/pom.xml index e511bdcc1..8122a1a65 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 br.com.rjconsultores ModelWeb - 1.40.6 + 1.40.7 diff --git a/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java b/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java index bb5a71da9..8d8a032da 100644 --- a/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java +++ b/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java @@ -18,5 +18,6 @@ public interface CorridaTramoService extends GenericService criaCorridaTramoList(Autobus autobus, Date dataGeracao, Date fechorSalidaOriginalH , List lsEsquemaTramo, Nodo nodo, ClaseServicio claseServicio, String statusCorrida); - public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida); + public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida, List lsParadaEsquemaOrignal); + } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index 456101ab3..51b1bb431 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -91,10 +91,8 @@ import com.rjconsultores.ventaboletos.utilerias.ActivoUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.FeriadoCache; import com.rjconsultores.ventaboletos.utilerias.HoraSistema; -import com.rjconsultores.ventaboletos.utilerias.LocaleUtil; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal; -import com.rjconsultores.ventaboletos.vo.esquemaoperacional.TarefaGeracaoCorridaVO; /** * @@ -473,15 +471,26 @@ public class CorridaServiceImpl implements CorridaService { Corrida.Id id = new Corrida.Id(); id.setCorridaId(numCorrida); id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao)); - List lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida); + List lsEsquemaTramo = null; + Parada origemCorrida = null; + Parada destinoCorrida =null; + boolean isValidaTrecho = true; + if(corridaTramoList !=null && !corridaTramoList.isEmpty()) { + origemCorrida = corridaTramoList.get(0).getOrigem(); + destinoCorrida = corridaTramoList.get(corridaTramoList.size()-1).getDestino(); + isValidaTrecho = false; + }else { + lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida); + origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem(); + destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino(); + } - if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo, isValidaActivo)) { + + if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, + horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo, isValidaActivo, isValidaTrecho)) { return null; } - Parada origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem(); - - Parada destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino(); /* Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, é chave primaria, temos que buscar somente por esse campo Caso o registro já exista, atualizamos os dados dele. Sendo assim, o que vai indicar a "duplicidade" de uma corrida será apenas o número dela e não mais o conjunto : clase + marca + horario + ruta*/ @@ -635,7 +644,8 @@ public class CorridaServiceImpl implements CorridaService { } private Boolean realizaValidacoesGerais(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer diaSemana, Boolean isFeriado, - Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra, List lsEsquemaTramo, boolean isGeraCorridaInativa){ + Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra, + List lsEsquemaTramo, boolean isGeraCorridaInativa, boolean isValidaTrecho ){ Integer corridaId = esquemaCorrida.getNumCorrida(); String fecCorrida = DateUtil.getStringDate(horario); if (!vigenciaValida(esquemaCorrida, dataGeracao)) { @@ -672,25 +682,12 @@ public class CorridaServiceImpl implements CorridaService { return Boolean.FALSE; } } - - if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) { - log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)"); - return Boolean.FALSE; + if(isValidaTrecho) { + if(!realizaValidacoesTrecho(corridaId, fecCorrida, lsEsquemaTramo)) { + return Boolean.FALSE; + } } - EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0); - Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem(); - if (origemCorrida == null) { - log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Origem não preenchido (Primeiro trecho EsquemaTramo)"); - return Boolean.FALSE; - } - - EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1); - Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino(); - if (destinoCorrida == null) { - log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Destino não preenchido (Último trecho EsquemaTramo)"); - return Boolean.FALSE; - } if(marca !=null && Boolean.FALSE.equals(marca.getActivo())){ log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". MarcaId=" + marca.getMarcaId() +" inativa, corrida não pode ser gerada"); @@ -699,6 +696,29 @@ public class CorridaServiceImpl implements CorridaService { return Boolean.TRUE; } + + private boolean realizaValidacoesTrecho(Integer corridaId, String fecCorrida,List lsEsquemaTramo ) { + if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) { + log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)"); + return Boolean.FALSE; + } + EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0); + Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem(); + if (origemCorrida == null) { + log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Origem não preenchido (Primeiro trecho EsquemaTramo)"); + return Boolean.FALSE; + } + + + EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1); + Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino(); + if (destinoCorrida == null) { + log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Destino não preenchido (Último trecho EsquemaTramo)"); + return Boolean.FALSE; + } + + return true; + } private Boolean validaCorridaDiaSimDiaNao(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer numCorrida ){ if (Boolean.TRUE.equals(esquemaCorrida.getIndDiaSimDiaNao())) { diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java index b193b5bff..6ce10e545 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java @@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Nodo; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.TramoTiempo; +import com.rjconsultores.ventaboletos.service.BoletoService; import com.rjconsultores.ventaboletos.service.CorridaService; import com.rjconsultores.ventaboletos.service.CorridaTramoService; import com.rjconsultores.ventaboletos.service.TramoServicioService; @@ -48,6 +49,9 @@ public class CorridaTramoServiceImpl implements CorridaTramoService { @Autowired private CorridaService corridaService; + @Autowired + BoletoService boletoService; + public CorridaTramoServiceImpl() { super(); log = LogManager.getLogger(CorridaTramoServiceImpl.class); @@ -96,9 +100,13 @@ public class CorridaTramoServiceImpl implements CorridaTramoService { @Override @Transactional - public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida) { - //Busca todas as corridas tramo + public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida, List lsEsquemaTramoOrignal) { List corridaTramoListAntigas = corridaTramoDAO.buscaCorridaTramoByFecCorridaECorridaId(dataCorrida, esquemaCorrida.getNumCorrida(), false); + //Caso encontre nas CorridaTramo existente algum trecho vendido que não está nas configurações do serviço retorna null + if(!validaTramoInexistenteServicoComVenda(esquemaCorrida, dataCorrida, lsEsquemaTramoOrignal, + corridaTramoListAntigas)) { + return null; + } inativaCorridasTramos(corridaTramoListAntigas); @@ -115,6 +123,39 @@ public class CorridaTramoServiceImpl implements CorridaTramoService { } + /** + * Valida se existe alguma CorrridaTramo atualmente que contem venda e não está nas configurações de Serviço. + * @param esquemaCorrida + * @param dataCorrida + * @param lsParadaEsquemaOrignal + * @param corridaTramoListAntigas + * @return + */ + private boolean validaTramoInexistenteServicoComVenda(EsquemaCorrida esquemaCorrida, Date dataCorrida, + List lsParadaEsquemaOrignal, List corridaTramoListAntigas) { + List corridaTramoInexistenteList = new ArrayList(); + for (CorridaTramo corridaTramo : corridaTramoListAntigas) { + boolean isTrechoExiste = false; + for (EsquemaTramo esquemaTramo : lsParadaEsquemaOrignal) { + if(esquemaTramo.getTramo().getOrigem().equals(corridaTramo.getTramo().getOrigem()) && + esquemaTramo.getTramo().getDestino().equals(corridaTramo.getDestino())) { + isTrechoExiste = true; + break; + } + } + if(!isTrechoExiste) { + corridaTramoInexistenteList.add(corridaTramo); + } + } + for (CorridaTramo corridaTramo : corridaTramoInexistenteList) { + if(boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorrida(), dataCorrida, corridaTramo.getOrigem().getParadaId(), corridaTramo.getDestino().getParadaId())){ + return false; + } + + } + return true; + } + /** From 3609ca56013c6ea4cc92b83f17528eebffb5989e Mon Sep 17 00:00:00 2001 From: valdevir Date: Thu, 29 Feb 2024 16:48:24 -0300 Subject: [PATCH 2/2] fixes bug #AL-3494 --- .../ventaboletos/service/impl/CorridaTramoServiceImpl.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java index 6ce10e545..27289e82e 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java @@ -103,9 +103,8 @@ public class CorridaTramoServiceImpl implements CorridaTramoService { public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida, List lsEsquemaTramoOrignal) { List corridaTramoListAntigas = corridaTramoDAO.buscaCorridaTramoByFecCorridaECorridaId(dataCorrida, esquemaCorrida.getNumCorrida(), false); //Caso encontre nas CorridaTramo existente algum trecho vendido que não está nas configurações do serviço retorna null - if(!validaTramoInexistenteServicoComVenda(esquemaCorrida, dataCorrida, lsEsquemaTramoOrignal, - corridaTramoListAntigas)) { - return null; + if(!validaTramoInexistenteServicoComVenda(esquemaCorrida, dataCorrida, lsEsquemaTramoOrignal, corridaTramoListAntigas)) { + return corridaTramoListAntigas; } inativaCorridasTramos(corridaTramoListAntigas);