Merge pull request 'AL-2734' (!245) from AL-2734 into master

Reviewed-on: adm/VentaBoletosAdm#245
Reviewed-by: Valdir Cordeiro <valdir.cordeiro@totvs.com.br>
master 1.11.9
pinheiro 2023-08-16 20:35:29 +00:00
commit 0ff725aef6
2 changed files with 68 additions and 50 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId>
<version>1.11.8</version>
<version>1.11.9</version>
<packaging>war</packaging>
<properties>

View File

@ -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<TarefaGeracaoCorridaVO> tarefaSucesso = new ArrayList<TarefaGeracaoCorridaVO>();
List<TarefaGeracaoCorridaVO> tarefaErros = new ArrayList<TarefaGeracaoCorridaVO>();
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<EsquemaCorrida> esquemaCorridaList = new ArrayList<EsquemaCorrida>();
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<EsquemaCorrida> esquemaCorridaList = new ArrayList<EsquemaCorrida>();
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<EsquemaCorrida> lsEC)
throws InterruptedException {