From 3db4ac0aa7dfafc79d48f896d478d165cf5005f7 Mon Sep 17 00:00:00 2001 From: valdevir Date: Wed, 16 Aug 2023 17:23:47 -0300 Subject: [PATCH 1/2] fixes bug #AL-2734 --- pom.xml | 2 +- .../EditarCorridaController.java | 115 ++++++++++-------- 2 files changed, 68 insertions(+), 49 deletions(-) diff --git a/pom.xml b/pom.xml index 6677c3e98..d2132dad9 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.11.8 + 1.11.9 war diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java index d95afe2f5..cdd84249f 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java @@ -948,65 +948,50 @@ public class EditarCorridaController extends MyGenericForwardComposer { try { LocalDate inicioLocalDate = dataInicialFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); LocalDate fimLocalDate = dataFinalFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1); - LocalDate currentStart=LocalDate.from(inicioLocalDate); List tarefaSucesso = new ArrayList(); List tarefaErros = new ArrayList(); - Date dataIter = Date.from(currentStart.atStartOfDay(ZoneId.systemDefault()).toInstant()); for (LocalDate date = inicioLocalDate; date.isBefore(fimLocalDate); date = date.plusDays(1)) { + Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); //valida data try { //1 - Validar se corrida existe vendas disponíveis - if(!boletoService.isExisteBoletoPorCorrida(esquemaCorrida.getNumCorrida(), dataIter)) { - //2 - Apagar corrida caso não exista venda - Corrida.Id id = new Corrida.Id(esquemaCorrida.getNumCorrida(), dataIter); - //3 - Gerar nova corrida somente se a corrida estiver ativa - Corrida corrida = corridaService.buscarCorridaAtivaPorId(id); - if(corrida !=null) { - try { - corridaService.borrar(corrida); - }catch (DataIntegrityViolationException e) { - if(e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004956867")) { - String msgErro = "Existe uma ocupação para esta corrida nesta data (tabela Disponibilidade). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter); - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - tarefaErros.add(tarefa); - //log.error("Geração de corrida via Conf. " + msgErro, e); - }else if (e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004957483")) { - String msgErro = "Existe um assento exclusivo para esta corrida nesta data (tabela ASIENTO_EXCLUSIVO). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter); - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - tarefaErros.add(tarefa); - //log.error("Geração de corrida via Conf. " + msgErro, e); - - }else{ - String msgErro = "Alguma restrição de integridade foi violada. Favor verificar "; - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - tarefaErros.add(tarefa); - log.error("Geração de corrida via Conf. " + msgErro, e); - } - continue; - - } - //4 - Gerar corrida novamente. - List esquemaCorridaList = new ArrayList(); - esquemaCorridaList.add(esquemaCorrida); - corridaService.generarCorrida(dataIter, esquemaCorridaList, false); - String msgSucesso = "Corrida parada a data " + DateUtil.getStringDate(dataIter) + " gerada com sucesso"; - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgSucesso, "OK", "OK" ); - tarefaSucesso.add(tarefa); - }else { - String msgErro = "Não econtrado corrida:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter); - log.error("Geração de corrida via Conf. " + msgErro); - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - tarefaErros.add(tarefa); - - } - - }else { + if(boletoService.isExisteBoletoPorCorrida(esquemaCorrida.getNumCorrida(), dataIter)) { String msgErro = "Corrida não será gerada novamente. Existem vendas para a corrida:" + esquemaCorrida.getNumCorrida() + " na data:" + DateUtil.getStringDate(dataIter); log.error("Geração de corrida via Conf. " + msgErro); TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); tarefaErros.add(tarefa); - + continue; } + + //Valida Pìso Extra tem boletos vendidos + if(Boolean.TRUE.equals(esquemaCorrida.getPisoExtra()) && boletoService.isExisteBoletoPorCorrida(esquemaCorrida.getNumCorridaPisoExtra(), dataIter)) { + String msgErro = "Não econtrado corrida:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter); + log.error("Geração de corrida via Conf. " + msgErro); + TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + tarefaErros.add(tarefa); + continue; + } + //Valida e apaga corrida caso exista + TarefaGeracaoCorridaVO tarefaErro= validaApagaCorridaAgerar(esquemaCorrida.getNumCorrida(), dataIter); + if(tarefaErro !=null) { + tarefaErros.add(tarefaErro); + continue; + } + //Valida e apaga corrida piso extra caso exista + tarefaErro= validaApagaCorridaAgerar(esquemaCorrida.getNumCorridaPisoExtra(), dataIter); + if(tarefaErro !=null) { + tarefaErros.add(tarefaErro); + continue; + } + + // Gerar corrida novamente. + List esquemaCorridaList = new ArrayList(); + esquemaCorridaList.add(esquemaCorrida); + corridaService.generarCorrida(dataIter, esquemaCorridaList, false); + String msgSucesso = "Corrida para a data " + DateUtil.getStringDate(dataIter) + " gerada com sucesso"; + TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgSucesso, "OK", "OK" ); + tarefaSucesso.add(tarefa); + }catch (Exception e) { String msgErro = "Serviço. Erro ao regerar a corrida:" + esquemaCorrida.getNumCorrida() + "para a data:" + DateUtil.getStringDate(dataIter); log.error("Geração de corrida via Conf. " + msgErro, e); @@ -1028,6 +1013,40 @@ public class EditarCorridaController extends MyGenericForwardComposer { log.error("Erro ao gerar corrida para a corrida: " + esquemaCorrida.getNumCorrida()); } } + + private TarefaGeracaoCorridaVO validaApagaCorridaAgerar(Integer corridaId, Date dataIter) { + + //2 - Apagar corrida caso não exista venda + Corrida.Id id = new Corrida.Id(corridaId, dataIter); + //3 - Gerar nova corrida somente se a corrida estiver ativa + Corrida corrida = corridaService.buscarCorridaAtivaPorId(id); + + if(corrida==null) { + String msgErro = "Não econtrado corrida:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter); + log.error("Geração de corrida via Conf. " + msgErro); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + } + + try { + corridaService.borrar(corrida); + }catch (DataIntegrityViolationException e) { + if(e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004956867")) { + String msgErro = "Existe uma ocupação para esta corrida nesta data (tabela Disponibilidade). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + //log.error("Geração de corrida via Conf. " + msgErro, e); + }else if (e.getRootCause()!=null && e.getRootCause().getLocalizedMessage() !=null && e.getRootCause().getLocalizedMessage().contains("SYS_C004957483")) { + String msgErro = "Existe um assento exclusivo para esta corrida nesta data (tabela ASIENTO_EXCLUSIVO). Corrida:" + esquemaCorrida.getNumCorrida() + " data:" + DateUtil.getStringDate(dataIter); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + //log.error("Geração de corrida via Conf. " + msgErro, e); + + }else{ + String msgErro = "Alguma restrição de integridade foi violada. Favor verificar "; + log.error("Geração de corrida via Conf. " + msgErro, e); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + } + } + return null; + } private void salvaNovoEsquemaCorrida(Date dataDeFecInicioVigencia, List lsEC) throws InterruptedException { From 5ff9f357e228073dd5db4427e2c3bff822e6acb8 Mon Sep 17 00:00:00 2001 From: valdevir Date: Wed, 16 Aug 2023 17:25:56 -0300 Subject: [PATCH 2/2] fixes bug #AL-2734 --- .../esquemaoperacional/EditarCorridaController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java index cdd84249f..a6cf68eab 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/EditarCorridaController.java @@ -952,7 +952,6 @@ public class EditarCorridaController extends MyGenericForwardComposer { List tarefaErros = new ArrayList(); for (LocalDate date = inicioLocalDate; date.isBefore(fimLocalDate); date = date.plusDays(1)) { Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); - //valida data try { //1 - Validar se corrida existe vendas disponíveis if(boletoService.isExisteBoletoPorCorrida(esquemaCorrida.getNumCorrida(), dataIter)) {