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..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
@@ -948,65 +948,49 @@ 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)) {
- //valida data
+ Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
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 +1012,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 {