fixes bug #AL-3494

master
valdevir 2024-02-16 18:36:49 -03:00
parent f0314cdf24
commit 4186e05efc
3 changed files with 183 additions and 39 deletions

View File

@ -8,7 +8,7 @@
<packaging>war</packaging>
<properties>
<modelWeb.version>1.37.0</modelWeb.version>
<modelWeb.version>1.38.0</modelWeb.version>
<flyway.version>1.28.0</flyway.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

View File

@ -20,7 +20,6 @@ import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.dao.DataIntegrityViolationException;
@ -29,6 +28,7 @@ import org.zkoss.util.resource.Labels;
import org.zkoss.zhtml.Messagebox;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Executions;
import org.zkoss.zk.ui.SuspendNotAllowedException;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
@ -75,6 +75,7 @@ import com.rjconsultores.ventaboletos.service.ClaseServicioService;
import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.CorridaInfoService;
import com.rjconsultores.ventaboletos.service.CorridaService;
import com.rjconsultores.ventaboletos.service.CorridaTramoService;
import com.rjconsultores.ventaboletos.service.DisponibilidadService;
import com.rjconsultores.ventaboletos.service.DivisionService;
import com.rjconsultores.ventaboletos.service.EmpresaService;
@ -95,6 +96,7 @@ import com.rjconsultores.ventaboletos.utilerias.ApplicationProperties;
import com.rjconsultores.ventaboletos.utilerias.CustomEnum;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.ItemEditarCorridaTramo;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.TarefaGeracaoCorridaVO;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
@ -164,6 +166,8 @@ public class EditarCorridaController extends MyGenericForwardComposer {
@Autowired
private ConstanteService constanteService;
@Autowired
private CorridaTramoService corridaTramoService;
//Radio
private Radio porBloq;
@ -290,6 +294,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
private EsquemaCorrida esquemaCorrida;
private Date dataInicialFiltroCorridaExistente;
private Date dataFinalFiltroCorridaExistente;
private List<ItemEditarCorridaTramo> itemEditarCorridaTramoList;
private Button btnCancelarRetomar;
@ -301,6 +306,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
salvar = true;
cmbRuta.setItemRenderer(new MyComboRutaRenderer());
popularCombobox(cmbIndGeneraFeriado);
itemEditarCorridaTramoList = new ArrayList<ItemEditarCorridaTramo>();
esquemaCorridaEmbarqueDesembarqueListbox.setItemRenderer(new RenderEsquemaCorridaEmbarqueDesembarque());
lstTrechosInformacaoCorridaListbox.setItemRenderer(new RenderCorridaInfomacaoTramo());
@ -1001,44 +1007,115 @@ public class EditarCorridaController extends MyGenericForwardComposer {
Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant());
try {
//1 - Validar se corrida existe vendas disponíveis
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;
}
//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);
//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;
//}
//Aqui chegará um objeto CorridaTramo com as alterações realizadas
for(ItemEditarCorridaTramo itemEditarCorridaTramo: itemEditarCorridaTramoList) {
//2 - Valida existe boleto para origem
itemEditarCorridaTramo.setCorridaId(esquemaCorrida.getNumCorrida());
itemEditarCorridaTramo.setFecCorrida(dataIter);
itemEditarCorridaTramo.setAutobus(esquemaCorrida.getAutoBus());
itemEditarCorridaTramo.setClaseServicio(esquemaCorrida.getClaseServicio());
itemEditarCorridaTramo.setStatusCorrida(esquemaCorrida.getStatusCorrida());
if(esquemaCorrida!=null && esquemaCorrida.getRuta()!=null) {
// parada origem
Parada origen = rutaService.getOrigem(esquemaCorrida.getRuta());
if (origen == null) {
log.info("origen nao encontrado para a ruta = " + esquemaCorrida.getRuta().getRutaId());
}
itemEditarCorridaTramo.setNodo((origen == null) ? null : origen.getNodo());
}
if(boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorrida(), dataIter, itemEditarCorridaTramo.getParadaId(), itemEditarCorridaTramo.getParadaId())) {
String msgErro = "Trecho com origem/destino: " + itemEditarCorridaTramo.getDescParada() + " não pode ser alterdo" + ". Existem vendas para essa localidade da 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 e apaga corrida caso exista
TarefaGeracaoCorridaVO tarefaErro= validaApagaCorridaAgerar(esquemaCorrida.getNumCorrida(), dataIter);
if(tarefaErro !=null) {
tarefaErros.add(tarefaErro);
//Valida Pìso Extra tem boletos vendidos para origem
if(Boolean.TRUE.equals(esquemaCorrida.getPisoExtra()) && boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorridaPisoExtra(), dataIter, itemEditarCorridaTramo.getParadaId(), itemEditarCorridaTramo.getParadaId())) {
String msgErro = "Trecho com origem/destino: " + itemEditarCorridaTramo.getDescParada() + " não pode ser alterdo" + ". Existem vendas para essa localidade da 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 e apaga corrida piso extra caso exista
if(esquemaCorrida.getNumCorridaPisoExtra()!=null) {
tarefaErro= validaApagaCorridaAgerar(esquemaCorrida.getNumCorridaPisoExtra(), dataIter);
if(tarefaErro !=null) {
tarefaErros.add(tarefaErro);
if(itemEditarCorridaTramo !=null) {
if(itemEditarCorridaTramo.isTramoEditado()) {
if(!corridaTramoService.atualizaCorridaTramo(itemEditarCorridaTramo)) {
String msgErro = "Trecho não será atualizado. Houve algu,m erro ao atualizar corridaTramo(parada_id): " + itemEditarCorridaTramo.getParadaId() +" da corrida:" + esquemaCorrida.getNumCorrida() + " na data:" + DateUtil.getStringDate(dataIter);
log.error("Geração de corrida via Conf. " + msgErro);
TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO");
continue;
}
}else if(itemEditarCorridaTramo.isAdicionado()) {
corridaTramoService.adicionaCorridaTramo(itemEditarCorridaTramo, esquemaCorrida,dataIter);
}else if(itemEditarCorridaTramo.isExcluido()) {
corridaTramoService.excluiCorridaTramo(itemEditarCorridaTramo);
}
}
// 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);
}
//1 - busca corridatramos da corrida
//3 - Valida existe venda para destino
//4 - Carrega os trechos da linha, caso algum tenha sido removido nas configurações do esquema corrida
//5 - inativa corrida_tramo
//6 - insere corrida tramo novamente recalculando da hora de saida e chegada de acordo com tempoEstancia (tempo que que o serviço fica na parada)
//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
//if(esquemaCorrida.getNumCorridaPisoExtra()!=null) {
// tarefaErro= validaApagaCorridaAgerar(esquemaCorrida.getNumCorridaPisoExtra(), dataIter);
// if(tarefaErro !=null) {
// tarefaErros.add(tarefaErro);
// }
//}
// 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 = "Erro ao regerar a corrida:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter);
log.error("Geração de corrida via Conf. " + msgErro, e);
@ -1386,7 +1463,13 @@ public class EditarCorridaController extends MyGenericForwardComposer {
// Ruta Secuencia
lsEsquemaTramo = adicionarParadaEsquemaTramo(lsParadaEsquema, (Parada) cmbTramo.getSelectedItem().getValue(), esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), plataforma, tipoPassagem);
Parada paradaAlterada = (Parada) cmbTramo.getSelectedItem().getValue();
lsEsquemaTramo = adicionarParadaEsquemaTramo(lsParadaEsquema,paradaAlterada , esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), plataforma, tipoPassagem);
ItemEditarCorridaTramo itemEditarCorridaTramo = new ItemEditarCorridaTramo();
itemEditarCorridaTramo.setLsEsquemaTramoNova(lsEsquemaTramo);
itemEditarCorridaTramo.setAdicionado(true);
itemEditarCorridaTramo.setParadaId(paradaAlterada!=null ? paradaAlterada.getParadaId():null);
itemEditarCorridaTramo.setDescParada(paradaAlterada.getDescparada());
esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo);
carregarParadaSecuencia(lsEsquemaTramo);
cmbTramo.setSelectedItem(null);
@ -1520,9 +1603,37 @@ public class EditarCorridaController extends MyGenericForwardComposer {
args.put("paradaEsquema", pe);
args.put("esquemaTramoList", esquemaTramoList);
args.put("sequenciaSize", sequenciaSize);
ItemEditarCorridaTramo itemEditarCorridaTramo = new ItemEditarCorridaTramo();
args.put("itemEditarCorridaTramo", itemEditarCorridaTramo);
openWindow("/gui/esquema_operacional/tiempoEstanciaTramo.zul",
Labels.getLabel("editarCatalogoDeRutaController.lhTiempoEstancia"), args, MODAL);
try {
Window dialog = (Window)Executions.createComponents(
"/gui/esquema_operacional/tiempoEstanciaTramo.zul", null, args);
dialog.doModal();
} catch (SuspendNotAllowedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//openWindow("/gui/esquema_operacional/tiempoEstanciaTramo.zul",
// Labels.getLabel("editarCatalogoDeRutaController.lhTiempoEstancia"), args, MODAL);
itemEditarCorridaTramo = (ItemEditarCorridaTramo) args.get("itemEditarCorridaTramo");
if(itemEditarCorridaTramo!=null && itemEditarCorridaTramo.isTramoEditado()) {
itemEditarCorridaTramo.setParadaId(pe.getParada().getParadaId());
itemEditarCorridaTramo.setTramoEditado(true);
if(itemEditarCorridaTramoList ==null) {
itemEditarCorridaTramoList = new ArrayList<ItemEditarCorridaTramo>();
}
itemEditarCorridaTramoList.add(itemEditarCorridaTramo);
}
}
public void onChange$cmbRuta(Event ev) {
@ -1569,6 +1680,12 @@ public class EditarCorridaController extends MyGenericForwardComposer {
Messagebox.OK, Messagebox.EXCLAMATION);
}
lsEsquemaTramo = generaEsquemaTramoCorrecto(lsParadaEsquema, esquemaCorrida);
ItemEditarCorridaTramo itemEditarCorridaTramo = new ItemEditarCorridaTramo();
itemEditarCorridaTramo.setParadaId(pe.getParada().getParadaId());
itemEditarCorridaTramo.setDescParada(pe.getParada().getDescparada());
itemEditarCorridaTramo.setExcluido(true);
itemEditarCorridaTramoList.add(itemEditarCorridaTramo);
itemEditarCorridaTramo.setLsEsquemaTramoNova(lsEsquemaTramo);
selecionarRutaSequenciaForaEsqCorrida();
} catch (Exception e) {
@ -1643,6 +1760,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
List<ParadaEsquema> listParadaEsquemaComNovaParada = new ArrayList<ParadaEsquema>();
Short secuencia = 0;
boolean nuevoAgregado = false;
boolean noExisteTramoAsociado = listParadaEsquema.isEmpty();// es la
@ -1650,6 +1768,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
// vez
Integer indiceSecuencia = null;
for (int i = 0; i < lsRutaSecuencia.size(); i++) {
ItemEditarCorridaTramo itemEditarCorridaTramo = new ItemEditarCorridaTramo();
RutaSecuencia rutaSecuencia = lsRutaSecuencia.get(i);
if (rutaSecuencia.getTramo().getOrigem().equals(novaParada)) {
ParadaEsquema paradaEsquema = new ParadaEsquema();
@ -1659,7 +1778,10 @@ public class EditarCorridaController extends MyGenericForwardComposer {
paradaEsquema.setParada(novaParada);
paradaEsquema.setPlataforma(plataforma);
paradaEsquema.setTipoPassagem(tipoPassagem);
itemEditarCorridaTramo.setParadaId(novaParada.getParadaId());
itemEditarCorridaTramo.setDescParada(novaParada.getDescparada());
itemEditarCorridaTramo.setAdicionado(true);
itemEditarCorridaTramoList.add(itemEditarCorridaTramo);
listParadaEsquemaComNovaParada.add(paradaEsquema);
nuevoAgregado = true;
indiceSecuencia = i;
@ -1675,6 +1797,7 @@ public class EditarCorridaController extends MyGenericForwardComposer {
}
}
}
ItemEditarCorridaTramo itemEditarCorridaTramo = new ItemEditarCorridaTramo();
if (noExisteTramoAsociado) {
if (indiceSecuencia != null) {
if ((lsRutaSecuencia.size() - 1) > indiceSecuencia) {
@ -1686,6 +1809,9 @@ public class EditarCorridaController extends MyGenericForwardComposer {
paradaEsquema.setParada(rutaSecuencia.getTramo().getDestino());
paradaEsquema.setPlataforma(plataforma);
listParadaEsquemaComNovaParada.add(paradaEsquema);
itemEditarCorridaTramo.setParadaId(novaParada.getParadaId());
itemEditarCorridaTramo.setAdicionado(true);
itemEditarCorridaTramoList.add(itemEditarCorridaTramo);
}
}
}
@ -1699,6 +1825,9 @@ public class EditarCorridaController extends MyGenericForwardComposer {
paradaEsquema.setTipoPassagem(tipoPassagem);
listParadaEsquemaComNovaParada.add(paradaEsquema);
itemEditarCorridaTramo.setParadaId(novaParada.getParadaId());
itemEditarCorridaTramo.setAdicionado(true);
itemEditarCorridaTramoList.add(itemEditarCorridaTramo);
}
if (!listParadaEsquema.isEmpty()) {
secuencia++;

View File

@ -21,6 +21,7 @@ import org.zkoss.zul.api.Spinner;
import com.rjconsultores.ventaboletos.entidad.EsquemaTramo;
import com.rjconsultores.ventaboletos.entidad.ParadaEsquema;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.ItemEditarCorridaTramo;
import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer;
import com.rjconsultores.ventaboletos.web.utilerias.MyListbox;
@ -47,6 +48,7 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
private Radio emPe;
private Radio ambos;
private Radio naoVende;
public ItemEditarCorridaTramo itemEditarCorridaTramo;
// private Boolean primeraSequencia;
@ -98,6 +100,7 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
paradaEsquema = (ParadaEsquema) Executions.getCurrent().getArg().get("paradaEsquema");
esquemaTramoList = (MyListbox) Executions.getCurrent().getArg().get("esquemaTramoList");
sequenciaSize = (Short) Executions.getCurrent().getArg().get("sequenciaSize");
itemEditarCorridaTramo = (ItemEditarCorridaTramo) Executions.getCurrent().getArg().get("itemEditarCorridaTramo");
if (paradaEsquema.getNumsecuencia().equals(Short.valueOf("1"))) {
spHora.setDisabled(true);
@ -157,7 +160,6 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
public void onClick$btnSalvar(Event ev) {
Date dataHorInicioSistema = DateUtil.getFecInicio().getTime();
if (!paradaEsquema.getNumsecuencia().equals(Short.valueOf("1"))) {
Date tiempoEstancia = DateUtil.getFecInicio(spHora.getValue(), spMinuto.getValue()).getTime();
@ -168,6 +170,7 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
esquemaTramo.setTiempoEstancia(tiempoEstancia);
paradaEsquema.setTiempoEstancia(tiempoEstancia);
}
itemEditarCorridaTramo.setTempoEstancia(tiempoEstancia);
}
Date excepcionRecorrido = DateUtil.getFecInicio(spHoraExcepcion.getValue() == null? 0:spHoraExcepcion.getValue(), spMinutoExcepcion.getValue()== null? 0:spMinutoExcepcion.getValue()).getTime();
@ -178,9 +181,14 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
esquemaTramo.setExcepcionRecorrido(excepcionRecorrido);
paradaEsquema.setExcepcionRecorrido(excepcionRecorrido);
}
itemEditarCorridaTramo.setTempoExcecao(excepcionRecorrido);
if (!paradaEsquema.getNumsecuencia().equals(sequenciaSize)) {
String plataforma = txtPlataforma.getValue();
if(plataforma!=null && !plataforma.equals(paradaEsquema.getPlataforma()) ) {
itemEditarCorridaTramo.setPlataforma(plataforma);
itemEditarCorridaTramo.setTramoEditado(true);
}
esquemaTramo.setPlataforma(plataforma);
paradaEsquema.setPlataforma(plataforma);
@ -194,6 +202,10 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
} else {
tipoPassagem = "A";
}
if(tipoPassagem!=null && !tipoPassagem.equals(paradaEsquema.getTipoPassagem())) {
itemEditarCorridaTramo.setTipoPassagem(tipoPassagem);
itemEditarCorridaTramo.setTramoEditado(true);
}
esquemaTramo.setTipoPassagem(tipoPassagem);
paradaEsquema.setTipoPassagem(tipoPassagem);
}
@ -207,6 +219,9 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos
}
}
//Executions.getCurrent().getArg().clear();
//Executions.getCurrent().getArg().put("itemEditarCorridaTramo", itemEditarCorridaTramo);
closeWindow();
}
}