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 e6c985326..977f2704d 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 @@ -1,2929 +1,2904 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional; - -import java.time.LocalDate; -import java.time.ZoneId; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Date; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang.BooleanUtils; -import org.apache.commons.lang.StringUtils; -import org.apache.commons.lang.math.NumberUtils; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Scope; -import org.springframework.dao.DataIntegrityViolationException; -import org.springframework.stereotype.Controller; -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; -import org.zkoss.zk.ui.event.InputEvent; -import org.zkoss.zkplus.databind.BindingListModelList; -import org.zkoss.zul.Button; -import org.zkoss.zul.Checkbox; -import org.zkoss.zul.Combobox; -import org.zkoss.zul.Comboitem; -import org.zkoss.zul.Datebox; -import org.zkoss.zul.Intbox; -import org.zkoss.zul.Label; -import org.zkoss.zul.Radio; -import org.zkoss.zul.Spinner; -import org.zkoss.zul.Textbox; -import org.zkoss.zul.Timebox; -import org.zkoss.zul.Window; - -import com.rjconsultores.ventaboletos.entidad.Autobus; -import com.rjconsultores.ventaboletos.entidad.ClaseServicio; -import com.rjconsultores.ventaboletos.entidad.Constante; -import com.rjconsultores.ventaboletos.entidad.Corrida; -import com.rjconsultores.ventaboletos.entidad.CorridaTramo; -import com.rjconsultores.ventaboletos.entidad.Division; -import com.rjconsultores.ventaboletos.entidad.Empresa; -import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; -import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; -import com.rjconsultores.ventaboletos.entidad.EsquemaCorridaEmbarqueDesembarque; -import com.rjconsultores.ventaboletos.entidad.EsquemaCorridaInfo; -import com.rjconsultores.ventaboletos.entidad.EsquemaOperacional; -import com.rjconsultores.ventaboletos.entidad.EsquemaTramo; -import com.rjconsultores.ventaboletos.entidad.Marca; -import com.rjconsultores.ventaboletos.entidad.Parada; -import com.rjconsultores.ventaboletos.entidad.ParadaEsquema; -import com.rjconsultores.ventaboletos.entidad.RolOperativo; -import com.rjconsultores.ventaboletos.entidad.Ruta; -import com.rjconsultores.ventaboletos.entidad.RutaEmbarqueDesembarque; -import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; -import com.rjconsultores.ventaboletos.entidad.Tramo; -import com.rjconsultores.ventaboletos.entidad.TramoServicio; -import com.rjconsultores.ventaboletos.service.AsientoExclusivoService; -import com.rjconsultores.ventaboletos.service.AutobusService; -import com.rjconsultores.ventaboletos.service.BoletoService; -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; -import com.rjconsultores.ventaboletos.service.EsquemaCorridaEmbarqueDesembarqueService; -import com.rjconsultores.ventaboletos.service.EsquemaCorridaInfoService; -import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; -import com.rjconsultores.ventaboletos.service.EsquemaTramoService; -import com.rjconsultores.ventaboletos.service.IntegracaoTotvsService; -import com.rjconsultores.ventaboletos.service.MarcaClaseServicioService; -import com.rjconsultores.ventaboletos.service.MarcaService; -import com.rjconsultores.ventaboletos.service.RolOperativoService; -import com.rjconsultores.ventaboletos.service.RutaCombinacionService; -import com.rjconsultores.ventaboletos.service.RutaEmbarqueDesembarqueService; -import com.rjconsultores.ventaboletos.service.RutaSecuenciaService; -import com.rjconsultores.ventaboletos.service.RutaService; -import com.rjconsultores.ventaboletos.service.TramoServicioService; -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.TarefaGeracaoCorridaVO; -import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; -import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; -import com.rjconsultores.ventaboletos.web.utilerias.render.MyComboRutaRenderer; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderConfiguracionCorridaTramo; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCorridaInfomacaoTramo; -import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEsquemaCorridaEmbarqueDesembarque; - -/** - * - * @author Rafius - */ -@Controller("editarCorridaController") -@Scope("prototype") -public class EditarCorridaController extends MyGenericForwardComposer { - - private static final int PERIODO_MAXIMO_90_DIAS = 90; - private static Logger log = LogManager.getLogger(EditarCorridaController.class); - private static final long serialVersionUID = 1L; - //Services - @Autowired - private EsquemaCorridaService esquemaCorridaService; - @Autowired - private EsquemaTramoService esquemaTramoService; - @Autowired - private MarcaService marcaService; - @Autowired - private ClaseServicioService claseService; - @Autowired - private RutaService rutaService; - @Autowired - private RutaCombinacionService rutaCombinacionService; - @Autowired - private RutaSecuenciaService rutaSecuenciaService; - @Autowired - private EmpresaService empresaService; - @Autowired - private MarcaClaseServicioService marcaClaseServicioService; - @Autowired - private AutobusService autobusService; - @Autowired - private RolOperativoService rolOperativoService; - @Autowired - private BusquedaCorridaController busquedaCorridaController; - @Autowired - private TramoServicioService tramoServicioService; - @Autowired - CorridaService corridaService; - @Autowired - private CorridaInfoService corridaInfoService; - @Autowired - private AsientoExclusivoService asientoExclusivoService; - @Autowired - private DisponibilidadService disponibilidadService; - @Autowired - private IntegracaoTotvsService integracaoTotvsService; - @Autowired - BoletoService boletoService; - @Autowired - private RutaEmbarqueDesembarqueService rutaEmbarqueDesembarqueService; - @Autowired - private EsquemaCorridaEmbarqueDesembarqueService esquemaCorridaEmbarqueDesembarqueService; - - private DivisionService divisionService; - @Autowired - private EsquemaCorridaInfoService esquemaCorridaInfoService; - - @Autowired - private ConstanteService constanteService; - @Autowired - private CorridaTramoService corridaTramoService; - - //Radio - private Radio porBloq; - private Radio latente; - private Radio autorizada; - private Radio cancelada; - private Radio sentado; - private Radio emPe; - private Radio naoVende; - private Radio fletes; - private Radio viajesEspeciales; - private Radio transportePasajeros; - private Radio rdImprimeBPE; - private Radio rdNaoImprimeBPE; - //MyListbox - private MyListbox esquemaCorridaList; - private MyListbox esquemaTramoList; - private MyListbox esquemaCorridaEmbarqueDesembarqueListbox; - private MyListbox lstTrechosInformacaoCorridaListbox; - //Datebox - private Datebox fecniciovigencia; - private Datebox fecfinvigencia; - //Spinner - private Spinner minutos; - private Spinner txtHorasParaConfirmacao; - private Spinner txtMinutosParaConfirmacao; - private Spinner txtHorasAutomacaoDE; - private Spinner txtMinutosAutomacaoDE; - private Spinner txtHorasAutomacaoATE; - private Spinner txtMinutosAutomacaoATE; - //Intbox - private Intbox txtNumCorrida; - private Intbox txtNumCorridaPisoExtra; - private Intbox txtNumCorridaPisoExtra2; - private Intbox txtQtdeDiasGeracao; - private Intbox txtOcupacaoMinima; - private Intbox txtOcupacaoHorarioExtra; - private Intbox txtNumCorridaExtraAuto; - //Combobox - private Combobox cmbClase; - private Combobox cmbMarca; - private Combobox cmbRuta; - private Combobox cmbEmpresaCorrida; - private Combobox cmbEmpresaIngresso; - private Combobox cmbRolOperativo; - private Combobox cmbStatus; - private Combobox cmbVia; - private Combobox cmbTramo; - private Combobox cmbDivision; - private Combobox cmbIndGeneraFeriado; - private Combobox cmbEmbarqueDesembarque; - private Combobox cmbLocalEmbarqueDesembarque; - private Combobox cmbRolOperativoServicoExtra; - private Combobox cmbParadaOrigem; - private Combobox cmbParadaDestino; - //Button - private Button btnAsientos; - private Button btnApagar; - //Timebox - private Timebox horasalida; - private Timebox de; - private Timebox hasta; - private Timebox horaIniNaoImpBpe; - private Timebox horaFimNaoImpBpe; - //Label - private Label horasalidaLabel; - private Label minutosLabel1; - private Label minutosLabel2; - private Label horaLabel1; - private Label horaLabel2; - private Label horaLabel21; - private Label horaLabel22; - private Label lbDivision; - private Label lbNumCorridaPisoExtra; - private Label lbNumCorridaPisoExtra2; - //Textbox - private Textbox txtIdCorridaRebote; - private Textbox txtPlataforma; - private Textbox txtInfoCorrida; - private Textbox txtMensagemTrecho; - //Checkbox - private Checkbox chkDoblePiso; - private Checkbox chkCorridaExtra; - private Checkbox lun; - private Checkbox mar; - private Checkbox mie; - private Checkbox jue; - private Checkbox vie; - private Checkbox sab; - private Checkbox dom; - private Checkbox cbEmbarque; - private Checkbox cbDesembarque; - private Checkbox cbVisualizaNaAPI; - private Checkbox chkBloqueiaCorridaWebAposSaida; - private Checkbox diaSimDiaNao; - //List - private List lsDivision; - private List lsEmpresa; - private List lsEmpresaIngresso; - private List lsMarca; - private List lsClase; - private List lsRuta; - private List lsRutaSecuencia; - private List lsEsquemaTramo; - private List lsEsquemaTramoOriginal; - private List lsAutoBus; - private List lsRolOperativo; - private List lsTramosRutaEsquemaCorrida; - private List lsTramos; - private List lsParadaEsquema; - private List lsParadaEsquemaOrignal; - private List lsRutaEmbarqueDesembarque = new ArrayList(); - private List lsEsquemaCorridaEmbarqueDesembarqueSelected = new ArrayList(); - private List lsEsquemaCorridaEmbarqueDesembarqueBorrar = new ArrayList(); - private List lsEsquemaCorridaInfoSelected; - private List lsEsquemaCorridaInfoBorrar; - private List lsEmbarqueDesembarque; - //boolean - private boolean isPrimeiraVez = true; - private Boolean embarqueDesembarqueDisabled = true; - private Boolean isAlteraCorridaJaGerada; - private Boolean embarque = Boolean.FALSE; - private Boolean desembarque = Boolean.FALSE; - private Boolean isVisualizarNaAPI = Boolean.FALSE; - //Outros objetos - private EsquemaCorrida esquemaCorrida; - private Date dataInicialFiltroCorridaExistente; - private Date dataFinalFiltroCorridaExistente; - - - private Button btnCancelarRetomar; - - @Override - public void doAfterCompose(Component comp) throws Exception { - super.doAfterCompose(comp); - lsEmbarqueDesembarque = new ArrayList(); - isPrimeiraVez = true; - salvar = true; - cmbRuta.setItemRenderer(new MyComboRutaRenderer()); - popularCombobox(cmbIndGeneraFeriado); - - esquemaCorridaEmbarqueDesembarqueListbox.setItemRenderer(new RenderEsquemaCorridaEmbarqueDesembarque()); - lstTrechosInformacaoCorridaListbox.setItemRenderer(new RenderCorridaInfomacaoTramo()); - - esquemaCorrida = (EsquemaCorrida) Executions.getCurrent().getArg().get("esquemaCorrida"); - if (esquemaCorrida.getEsquemacorridaId() != null) { - esquemaCorrida = esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); - esquemaCorrida.getEsquemaTramoList(); - } - esquemaCorridaList = (MyListbox) Executions.getCurrent().getArg().get("esquemaCorridaList"); - busquedaCorridaController = (BusquedaCorridaController) Executions.getCurrent().getArg().get("busquedaCorridaController"); - - Boolean ehEsquemaAgrupacion = (Boolean) Executions.getCurrent().getArg().get("ehEsquemaAgrupacion") == null ? Boolean.FALSE : (Boolean) Executions.getCurrent().getArg().get("ehEsquemaAgrupacion"); - - lsParadaEsquema = new ArrayList(); - - lsEmpresa = new ArrayList(); - lsEmpresa.addAll(UsuarioLogado.getUsuarioLogado().getEmpresa()); - - lsEmpresaIngresso = new ArrayList(); - lsEmpresaIngresso.addAll(UsuarioLogado.getUsuarioLogado().getEmpresa()); - - lsClase = claseService.buscarTodosExceto(-1); - - lsRolOperativo = rolOperativoService.obtenerTodos(); - - lsAutoBus = autobusService.obtenerTodos(); - - lsEsquemaCorridaInfoSelected = new ArrayList(); - lsEsquemaCorridaInfoBorrar = new ArrayList(); - - if (esquemaCorrida.getEsquemacorridaId() != null) { - - // 01 - não se pode mudar dados básicos da corrida. - // 02 - Segundo a Lety os campos CLASE, MARCA E EMPRESAS... - // Poderão ser editados pelo usuario. - // RUTA permanece inalterado. - - if (esquemaCorrida.getRuta() != null) { - lsRutaEmbarqueDesembarque = rutaEmbarqueDesembarqueService.obtenerPorRuta(esquemaCorrida.getRuta()); - } - lsEsquemaCorridaEmbarqueDesembarqueSelected = esquemaCorridaEmbarqueDesembarqueService.obtenerPorEsquemaCorrida(esquemaCorrida); - lsEsquemaCorridaInfoSelected = esquemaCorridaInfoService.obtenerPorEsquemaCorrida(esquemaCorrida); - - esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); - lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); - - if (esquemaCorrida.getRuta() != null) { - embarqueDesembarqueDisabled = false; - } - - if (ehEsquemaAgrupacion) { - fecniciovigencia.setDisabled(Boolean.TRUE); - fecfinvigencia.setDisabled(Boolean.TRUE); - txtQtdeDiasGeracao.setDisabled(Boolean.TRUE); - horasalida.setDisabled(Boolean.TRUE); - cmbIndGeneraFeriado.setDisabled(Boolean.TRUE); - chkDoblePiso.setDisabled(Boolean.TRUE); - - lun.setDisabled(Boolean.TRUE); - mar.setDisabled(Boolean.TRUE); - mie.setDisabled(Boolean.TRUE); - jue.setDisabled(Boolean.TRUE); - vie.setDisabled(Boolean.TRUE); - sab.setDisabled(Boolean.TRUE); - dom.setDisabled(Boolean.TRUE); - - } - - cmbClase.setDisabled(Boolean.TRUE); - cmbMarca.setDisabled(Boolean.TRUE); - cmbRuta.setDisabled(Boolean.TRUE); - cmbEmpresaCorrida.setDisabled(Boolean.TRUE); - cmbEmpresaIngresso.setDisabled(Boolean.TRUE); - txtNumCorrida.setDisabled(Boolean.TRUE); - chkCorridaExtra.setDisabled(Boolean.TRUE); - - if (esquemaCorrida.getIndGeneraFeriado() != null) { - if (esquemaCorrida.getIndGeneraFeriado().equals("S")) { - cmbIndGeneraFeriado.setSelectedIndex(0); - } else if (esquemaCorrida.getIndGeneraFeriado().equals("F")) { - cmbIndGeneraFeriado.setSelectedIndex(1); - } else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) { - cmbIndGeneraFeriado.setSelectedIndex(2); - } - } - - if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) { - chkDoblePiso.setChecked(true); - lbNumCorridaPisoExtra.setVisible(Boolean.TRUE); - txtNumCorridaPisoExtra.setVisible(Boolean.TRUE); - - lbNumCorridaPisoExtra2.setVisible(Boolean.TRUE); - txtNumCorridaPisoExtra2.setVisible(Boolean.TRUE); - } - - //FlexBus - txtHorasParaConfirmacao.setValue(esquemaCorrida.getHorasParaConfirmacao()); - txtMinutosParaConfirmacao.setValue(esquemaCorrida.getMinutosParaConfirmacao()); - txtOcupacaoMinima.setValue(esquemaCorrida.getOcupacaoMinima()); - - //Automatizacao de horario extra - txtOcupacaoHorarioExtra.setValue(esquemaCorrida.getTaxaOcupacao()); - txtHorasAutomacaoDE.setValue(esquemaCorrida.getHorasAutomacaoHEDe()); - txtMinutosAutomacaoDE.setValue(esquemaCorrida.getMinutosAutomacaoHEDe()); - txtHorasAutomacaoATE.setValue(esquemaCorrida.getHorasAutomacaoHEAte()); - txtMinutosAutomacaoATE.setValue(esquemaCorrida.getMinutosAutomacaoHEAte()); - } - - // Llena los valores de los combos - llenarRutasPorClase(); - llenarMarcaPorClaseServicio(); - - esquemaTramoList.setItemRenderer(new RenderConfiguracionCorridaTramo(esquemaCorrida.getHorasalida())); - esquemaTramoList.addEventListener("onDoubleClick", new EventListener() { - - @Override - public void onEvent(Event event) throws Exception { - ParadaEsquema pe = (ParadaEsquema) esquemaTramoList.getSelected(); - EsquemaTramo esquemaTramo = null; - - for (EsquemaTramo et : lsEsquemaTramo) { - Short numSec = et.getNumsecuencia(); - - if (numSec.equals(pe.getNumsecuencia())) { - esquemaTramo = et; - esquemaTramo.setPlataforma(pe.getPlataforma()); - } - } - - verTempoEstanciaTramo(esquemaTramo, pe, (short) esquemaTramoList.getItemCount()); - } - }); - - try { - lsEsquemaTramo = new ArrayList(); - - if (esquemaCorrida.getEsquemacorridaId() == null) { - EsquemaOperacional eo = new EsquemaOperacional(); - eo.setActivo(Boolean.TRUE); - eo.setFecmodif(Calendar.getInstance().getTime()); - eo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - esquemaCorrida.setEsquemaOperacional(eo); - - transportePasajeros.setChecked(Boolean.TRUE); - } else { - esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); - - esquemaCorrida.getEsquemaOperacional(); - - porBloq.setVisible(false); - - if (esquemaCorrida.getStatusCorrida() != null) { - if (esquemaCorrida.getStatusCorrida().equals("L")) { - latente.setChecked(true); - } else if (esquemaCorrida.getStatusCorrida().equals("A")) { - autorizada.setChecked(true); - } else { - cancelada.setChecked(true); - } - - if (esquemaCorrida.getTipocorrida().equals("F")) { - fletes.setChecked(true); - } else if (esquemaCorrida.getTipocorrida().equals("S")) { - viajesEspeciales.setChecked(true); - } else { - transportePasajeros.setChecked(true); - } - - } - lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida); - lsEsquemaTramoOriginal = new ArrayList(); - for (EsquemaTramo esquemaTramo : lsEsquemaTramoOriginal) { - lsEsquemaTramoOriginal.add(esquemaTramo.clone()); - } - //lsEsquemaTramoOriginal.addAll(lsEsquemaTramo); - carregarParadaSecuencia(lsEsquemaTramo); - lsParadaEsquemaOrignal = new ArrayList(); - for (ParadaEsquema paradaEsquema : lsParadaEsquema) { - lsParadaEsquemaOrignal.add(paradaEsquema.clone()); - } - //lsParadaEsquemaOrignal.addAll(lsParadaEsquema); - selecionarRutaSequenciaForaEsqCorrida(); - } - - fecniciovigencia.focus(); - - horasalida.setVisible(true); - horasalidaLabel.setVisible(true); - minutos.setVisible(false); - minutosLabel1.setVisible(false); - minutosLabel2.setVisible(false); - de.setVisible(false); - horaLabel1.setVisible(false); - horaLabel2.setVisible(false); - hasta.setVisible(false); - horaLabel21.setVisible(false); - horaLabel22.setVisible(false); - - if (esquemaCorrida.getEsquemacorridaId() == null) { - btnApagar.setVisible(Boolean.FALSE); - } - - if (esquemaCorrida.getEsquemaCorridaRebote() != null) { - txtIdCorridaRebote.setValue(esquemaCorrida.getEsquemaCorridaRebote().getEsquemacorridaId().toString()); - - } - - exibirDivision(); - setSelecaoCboBPE(); - alterarBotaoRetomarCancelar(); - - } catch (Exception ex) { - log.error("Error al editar una corrida", ex); - Messagebox.show(Labels.getLabel("MSG.Error"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - } - } - - public void selecionarHorarioNãoImpBPE() { - if (rdImprimeBPE.isChecked()) { - horaFimNaoImpBpe.setReadonly(true); - horaFimNaoImpBpe.setDisabled(true); - horaIniNaoImpBpe.setReadonly(true); - horaIniNaoImpBpe.setDisabled(true); - } else if (rdNaoImprimeBPE.isChecked()) { - horaFimNaoImpBpe.setReadonly(false); - horaFimNaoImpBpe.setDisabled(false); - horaIniNaoImpBpe.setReadonly(false); - horaIniNaoImpBpe.setDisabled(false); - } - } - - private void setSelecaoCboBPE() { - if (esquemaCorrida.getIndNaoImprimeBpe() == null || esquemaCorrida.getIndNaoImprimeBpe().equals("0")) { - rdImprimeBPE.setChecked(true); - } else { - rdNaoImprimeBPE.setChecked(true); - } - selecionarHorarioNãoImpBPE(); - } - - public void onClick$rdgNaoImprimeViaBPE(Event event) { - String option = rdImprimeBPE.isChecked() ? "0" : "1"; - - if (option.equals("0")) { - esquemaCorrida.setIndNaoImprimeBpe("0"); - } else if (option.equals("1")) { - esquemaCorrida.setIndNaoImprimeBpe("1"); - } - setSelecaoCboBPE(); - } - - public void onClick$btnCopiar(Event ev) { - try { - if (esquemaCorrida.getEsquemacorridaId() != null) { - // Carregar campos lazy - esquemaCorrida = esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); - esquemaCorrida.clonar(); - esquemaCorrida = esquemaCorrida.getCloneObject(); - - txtNumCorrida.setConstraint(""); - txtNumCorrida.setDisabled(false); - txtNumCorrida.setText(""); - txtNumCorrida.setConstraint("no empty"); - chkCorridaExtra.setDisabled(Boolean.FALSE); - - esquemaCorrida.setEsquemacorridaId(null); - esquemaCorrida.setNumCorrida(null); - for (EsquemaTramo esquemaTramo : esquemaCorrida.getEsquemaTramoList()) { - esquemaTramo.setEsquematramoId(null); - esquemaTramo.setEsquemaCorrida(esquemaCorrida); - } - - for (EsquemaAsiento esquemaAsiento : esquemaCorrida.getEsquemaAsientoList()) { - esquemaAsiento.setEsquemaasientoId(null); - esquemaAsiento.setEsquemaCorrida(esquemaCorrida); - } - - for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : esquemaCorrida.getLsEsquemaCorridaEmbarqueDesembarque()) { - esquemaCorridaEmbarqueDesembarque.setEsquemaCorridaEmbarqueDesembarqueId(null); - esquemaCorridaEmbarqueDesembarque.setEsquemaCorrida(esquemaCorrida); - } - - tratarEsquemaTramoList(); - } - } catch (Exception e) { - log.error(e.getMessage(), e); - } - } - - private void tratarEsquemaTramoList() { - lsEsquemaTramo.clear(); - lsEsquemaTramo.addAll(esquemaCorrida.getEsquemaTramoList()); - Collections.sort(lsEsquemaTramo); - esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); - } - - public void clearCombobox(Combobox combobox) { - - int size = combobox.getItemCount(); - - for (int i = size - 1; i >= 0; i--) { - combobox.removeItemAt(i); - } - } - - public void popularCombobox(Combobox cmb) throws Exception { - - clearCombobox(cmb); - for (EsquemaCorrida.GerarFeriado p : EsquemaCorrida.GerarFeriado.values()) { - Comboitem comboItem = new Comboitem(p.descricao()); - comboItem.setValue(p.valor()); - comboItem.setParent(cmb); - } - - cmb.setSelectedIndex(0); - - } - - private void exibirDivision() { - if (ApplicationProperties.getInstance().isCustomHabilitado(CustomEnum.EXIBIR_DIVISION_CONFIGURACION_CORRIDA.getDescricao())) { - - lsDivision = divisionService.obtenerTodos(); - - lbDivision.setVisible(Boolean.TRUE); - cmbDivision.setVisible(Boolean.TRUE); - - } - } - - private void addTramoPardaEsquema(Parada parada, Short numsecuencia, Date tiempoEstancia, String plataforma, Date excepcionRecorrido, Date defautRecorrido, String tipoPassagem) { - ParadaEsquema ps = new ParadaEsquema(); - ps.setParada(parada); - ps.setNumsecuencia(numsecuencia); - ps.setTiempoEstancia(tiempoEstancia); - ps.setPlataforma(plataforma); - ps.setExcepcionRecorrido(excepcionRecorrido); - ps.setPadraoRecorrido(defautRecorrido); - ps.setTipoPassagem(tipoPassagem); - - lsParadaEsquema.add(ps); - } - - @SuppressWarnings("unused") - private void carregarParadaSecuencia(List lsEsquemaTramo) { - - ClaseServicio clase = esquemaCorrida.getClaseServicio(); - - lsParadaEsquema.clear(); - if (!lsEsquemaTramo.isEmpty()) { - List lsEsquemaTramoTodos = new ArrayList(); - if (esquemaCorrida.getEsquemacorridaId() != null) { - lsEsquemaTramoTodos = esquemaTramoService.obtenerAtivosDesativosPorEsquemaCorrida(esquemaCorrida); - } - - Short numsecuencia = 0; - - for (int i = 0; i < lsEsquemaTramo.size(); i++) { - - EsquemaTramo rs = lsEsquemaTramo.get(i); - - Tramo tramo = rs.getTramo(); - numsecuencia = rs.getNumsecuencia(); - Date tiempoEstancia = null; - if ((i != 0) && (i != (lsEsquemaTramo.size()))) { - tiempoEstancia = lsEsquemaTramo.get(i).getTiempoEstancia(); - } - - Date excepcionRecorrido = null; - if (i != (lsEsquemaTramo.size())) { - excepcionRecorrido = lsEsquemaTramo.get(i).getExcepcionRecorrido(); - } - - Date defautRecorrido = null; - if (clase != null) { - List lsTramoServicio = tramoServicioService.buscarPorTramoServico(tramo, clase); - - if (i != (lsEsquemaTramo.size())) { - if (!lsTramoServicio.isEmpty()) { - // soh eh permitido gravar um por classe, get(0): - defautRecorrido = lsTramoServicio.get(0).getTiemporecorrido(); - } - } - } - String tipoPassagem =""; - - Parada paradaOrigem = tramo.getOrigem(); - tipoPassagem = rs.getTipoPassagem(); - String plataforma = rs.getPlataforma(); - // So adicionar a parada se o EsquemaTramo estiver ativo. - if (rs.getActivo()) { - addTramoPardaEsquema(paradaOrigem, numsecuencia, tiempoEstancia, plataforma, excepcionRecorrido, defautRecorrido, tipoPassagem); - } - } - - EsquemaTramo esquemaTramoFinal = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1); - - Parada paradaDestino = esquemaTramoFinal.getTramo().getDestino(); - String tipoPassagem = ""; - String plataforma = txtPlataforma.getValue(); - - if(!isPrimeiraVez){ - if (sentado.isChecked()) { - tipoPassagem = "S"; - } else if (emPe.isChecked()) { - tipoPassagem = "P"; - } else if (naoVende.isChecked()) { - tipoPassagem = "N"; - } else { - tipoPassagem = "A"; - } - } - isPrimeiraVez = false; - Integer num = numsecuencia.intValue() + 1; - - addTramoPardaEsquema(paradaDestino, num.shortValue(), null, plataforma, null, null,tipoPassagem); - } - - esquemaTramoList.setData(lsParadaEsquema); - } - - Boolean salvar = true; - - @SuppressWarnings({ "deprecation", "unchecked" }) - public void onClick$btnSalvar(Event ev) throws InterruptedException { - - if(!salvar){ - return; - } - - salvar = false; - txtNumCorrida.getValue(); - Date dataDeFecInicioVigencia = fecniciovigencia.getValue(); - Date dataAteFecfinvigencia = fecfinvigencia.getValue(); - - if(!realizaValidacoes()) { - return; - } - - for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : lsEsquemaCorridaEmbarqueDesembarqueBorrar) { - if (esquemaCorridaEmbarqueDesembarque.getEsquemaCorridaEmbarqueDesembarqueId() != null) { - esquemaCorridaEmbarqueDesembarqueService.borrar(esquemaCorridaEmbarqueDesembarque); - } - } - - for (EsquemaCorridaInfo esquemaCorridaInfo : lsEsquemaCorridaInfoBorrar) { - if (esquemaCorridaInfo.getEsquemaCorridaInfoId() != null) { - esquemaCorridaInfoService.borrar(esquemaCorridaInfo); - } - } - //Imprimir ou não recibo BPE na embarcada - validaNaoImprimeBpe(dataAteFecfinvigencia); - - - try { - - dataAteFecfinvigencia.setSeconds(59); - - if(!validaEsquemaTramo(dataDeFecInicioVigencia, dataAteFecfinvigencia)) { - return; - } else { - salvaEsquemaCorrida(dataDeFecInicioVigencia); - } - - } catch (WrongValueException ex) { - throw (WrongValueException) ex; - } catch (Exception ex) { - log.error("", ex); - Messagebox.show(Labels.getLabel("MSG.Error").concat(" - ").concat(ex.toString()), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - } - } - - private void validaNaoImprimeBpe(Date dataAteFecfinvigencia) { - boolean isNaoImprimeBPE = esquemaCorrida.getIndNaoImprimeBpe() == null ? false : esquemaCorrida.getIndNaoImprimeBpe().equals("1"); - if(isNaoImprimeBPE) { - Date dataDeNaoImpBpe = horaIniNaoImpBpe.getValue(); - Date dataAteNaoImpBpe = horaFimNaoImpBpe.getValue(); - boolean isHoraValida = horaIniNaoImpBpe.getValue() == null || horaFimNaoImpBpe.getValue() == null ? false : true; - if(isHoraValida) { - dataDeNaoImpBpe.setSeconds(59); - dataAteFecfinvigencia.setSeconds(59); - if(dataDeNaoImpBpe.after(dataAteNaoImpBpe)) { - esquemaCorrida.setHoraIniNaoImpBPE(buscarHora(dataAteNaoImpBpe)); - esquemaCorrida.setHoraFimNaoImpBPE(buscarHora(dataDeNaoImpBpe)); - } else if(dataDeNaoImpBpe.before(dataAteNaoImpBpe)) { - esquemaCorrida.setHoraIniNaoImpBPE(buscarHora(dataDeNaoImpBpe)); - esquemaCorrida.setHoraFimNaoImpBPE(buscarHora(dataAteNaoImpBpe)); - } else { - esquemaCorrida.setIndNaoImprimeBpe("0"); - setSelecaoCboBPE(); - } - } else { - esquemaCorrida.setIndNaoImprimeBpe("0"); - setSelecaoCboBPE(); - } - } - - if (chkDoblePiso.isChecked()) { - txtNumCorridaPisoExtra.getValue(); - txtNumCorridaPisoExtra2.getValue(); - } - } - - private boolean validaEsquemaTramo(Date dataDeFecInicioVigencia, Date dataAteFecfinvigencia ) throws InterruptedException { - Comboitem ciRuta = cmbRuta.getSelectedItem(); - Ruta ruta = null; - if (ciRuta != null) { - ruta = (Ruta) ciRuta.getValue(); - } - - if (chkDoblePiso.isChecked() && !validarPisoExtra()) { - salvar = true; - return false; - } - - if (dataDeFecInicioVigencia.after(dataAteFecfinvigencia)) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.busquedaPeriodo"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - return false; - } - - if(ruta==null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaVazia"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - return false; - } - - if(lsEsquemaTramo.isEmpty()) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaSemTramos"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - return false; - - } - - if (esquemaCorrida.getClaseServicio() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Clase"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } else if (esquemaCorrida.getMarca() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Marca"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } else if (esquemaCorrida.getRuta() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Ruta"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - } else if (esquemaCorrida.getEmpresa() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Empresa"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } else if (esquemaCorrida.getEmpresa1() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Empresa1"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } else if (esquemaCorrida.getRolOperativo() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Rol"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } - - return true; - } - - private void salvaEsquemaCorrida(Date dataDeFecInicioVigencia) throws InterruptedException { - //FlexBus - if(esquemaCorrida.getIsFlexBus()) { - esquemaCorrida.setHorasParaConfirmacao(txtHorasParaConfirmacao.getValue()); - esquemaCorrida.setMinutosParaConfirmacao(txtMinutosParaConfirmacao.getValue()); - esquemaCorrida.setOcupacaoMinima(txtOcupacaoMinima.getValue()); - } else { - esquemaCorrida.setHorasParaConfirmacao(null); - esquemaCorrida.setMinutosParaConfirmacao(null); - esquemaCorrida.setOcupacaoMinima(null); - } - - //Automacao Horario Extra - if(esquemaCorrida.getIsAutomacaoHorarioExtra()) { - esquemaCorrida.setHorasAutomacaoHEDe(txtHorasAutomacaoDE.getValue() == null ? 0 : txtHorasAutomacaoDE.getValue()); - esquemaCorrida.setMinutosAutomacaoHEDe(txtMinutosAutomacaoDE.getValue() == null ? 0 : txtMinutosAutomacaoDE.getValue()); - esquemaCorrida.setHorasAutomacaoHEAte(txtHorasAutomacaoATE.getValue() == null ? 0 : txtHorasAutomacaoATE.getValue()); - esquemaCorrida.setMinutosAutomacaoHEAte(txtMinutosAutomacaoATE.getValue() == null ? 0 : txtMinutosAutomacaoATE.getValue()); - esquemaCorrida.setTaxaOcupacao(txtOcupacaoHorarioExtra.getValue() == null ? 0 : txtOcupacaoHorarioExtra.getValue() ); - esquemaCorrida.setNumCorridaServicoExtra(txtNumCorridaExtraAuto.getValue()); - - esquemaCorrida.setHorasalidaExtra(buscarHora(esquemaCorrida.getHorasalidaExtra())); - } - - if (porBloq.isChecked()) { - de.getValue(); - hasta.getValue(); - minutos.getValue(); - } else { - horasalida.getValue(); - } - - esquemaCorrida.setInfoCorrida(txtInfoCorrida.getValue()); - esquemaCorrida.setIndCorridaExtra(chkCorridaExtra.isChecked()); - esquemaCorrida.setNumCorrida(txtNumCorrida.getValue()); - esquemaCorrida.setActivo(Boolean.TRUE); - esquemaCorrida.setFecmodif(Calendar.getInstance().getTime()); - esquemaCorrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - esquemaCorrida.setIndBloqueiaWebAposSaida(chkBloqueiaCorridaWebAposSaida.isChecked()); - - esquemaCorrida.setDiagramaAutobusId(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId().intValue()); - - if (cmbIndGeneraFeriado.getSelectedItem() != null) { - esquemaCorrida.setIndGeneraFeriado((String) cmbIndGeneraFeriado.getSelectedItem().getValue()); - } - - if (latente.isChecked()) { - esquemaCorrida.setStatusCorrida("L"); - } else if (autorizada.isChecked()) { - esquemaCorrida.setStatusCorrida("A"); - } else { - esquemaCorrida.setStatusCorrida("C"); - } - - if (fletes.isChecked()) { - esquemaCorrida.setTipocorrida("F"); - } else if (viajesEspeciales.isChecked()) { - esquemaCorrida.setTipocorrida("S"); - } else if (transportePasajeros.isChecked()) { - esquemaCorrida.setTipocorrida("P"); - } - - // nao gravar segundos: - esquemaCorrida.setHorasalida(buscarHora(esquemaCorrida.getHorasalida())); - - List lsEC = Collections.EMPTY_LIST; - - if (esquemaCorrida.getEsquemacorridaId() == null) { - salvaNovoEsquemaCorrida(dataDeFecInicioVigencia, lsEC); - } else { - atualizaDadosEsquemaCorrida(lsEC); - } - } - - private void atualizaDadosEsquemaCorrida(List lsEC) throws InterruptedException { - boolean podeSalvar = false; - if ((lsEC.isEmpty())) { - podeSalvar = true; - } else { - for (EsquemaCorrida ec : lsEC) { - if (ec.getEsquemacorridaId().equals(esquemaCorrida.getEsquemacorridaId())) { - podeSalvar = true; - } - } - } - if (podeSalvar) { - if (!chkDoblePiso.isChecked()) { - esquemaCorrida.setNumCorridaPisoExtra(null); - } - esquemaCorridaService.actualizacion(esquemaCorrida); - esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida); - if(Boolean.TRUE.equals(isAlteraCorridaJaGerada)) { - validaRealizaGeracaoCorrida(); - } - - esquemaCorridaList.updateItem(esquemaCorrida); - - } else { - Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - } - - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.suscribirOK"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.INFORMATION); - - closeWindow(); - } - - private void validaRealizaGeracaoCorrida() { - try { - LocalDate inicioLocalDate = dataInicialFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - LocalDate fimLocalDate = dataFinalFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1); - List tarefaSucesso = new ArrayList(); - List tarefaErros = new ArrayList(); - for (LocalDate date = inicioLocalDate; date.isBefore(fimLocalDate); date = date.plusDays(1)) { - Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); - try { - - List lsParadaEsquemaRemovidas = new ArrayList(); - List lsParadaEsquemaEditadas =new ArrayList(); - preencheParadaEsquemaRemovidaEEditada(lsParadaEsquemaRemovidas, lsParadaEsquemaEditadas); - - List lsParadaEsquemaAdicionadasRemovidasOuEditadas = new ArrayList() ; - if(lsParadaEsquemaEditadas!=null) { - lsParadaEsquemaAdicionadasRemovidasOuEditadas.addAll(lsParadaEsquemaEditadas); - } - if(lsParadaEsquemaRemovidas!=null) { - lsParadaEsquemaAdicionadasRemovidasOuEditadas.addAll(lsParadaEsquemaRemovidas); - } - - List localidadeComVenda =null; - for (ParadaEsquema paradaEsquema : lsParadaEsquemaAdicionadasRemovidasOuEditadas) { - if(boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorrida(), dataIter, paradaEsquema.getParada().getParadaId(), paradaEsquema.getParada().getParadaId())) { - if(localidadeComVenda == null) { - localidadeComVenda = new ArrayList(); - } - localidadeComVenda.add(paradaEsquema); - String msgErro = "Trecho com origem/destino: " + paradaEsquema.getParada().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); - } - - } - List corridaTramoList = null; - //Se nenhuma localidade editada tem venda, recria todos os corridas tramos da corrida - if(localidadeComVenda==null || localidadeComVenda.isEmpty()) { - corridaTramoList = corridaTramoService.recriaCorridaTramo(esquemaCorrida, dataIter, lsEsquemaTramo ); - String msgSucesso = "Corrida para a data " + DateUtil.getStringDate(dataIter) + " gerada com sucesso"; - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgSucesso, "OK", "OK" ); - tarefaSucesso.add(tarefa); - - }else { - List lsEsquemaTramoIter = new ArrayList(); - List localidadeComVendaIter = new ArrayList(); - localidadeComVendaIter.addAll(lsParadaEsquema); - for (ParadaEsquema paradaEsquemaComVenda : localidadeComVenda) { - List listParadaEsquemaComNovaParada = new ArrayList(); - lsEsquemaTramoIter = adicionarParadaEsquemaTramo(localidadeComVendaIter,paradaEsquemaComVenda.getParada() , esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), paradaEsquemaComVenda.getPlataforma(), paradaEsquemaComVenda.getTipoPassagem(), listParadaEsquemaComNovaParada); - localidadeComVendaIter = listParadaEsquemaComNovaParada; - } - corridaTramoList = corridaTramoService.recriaCorridaTramo(esquemaCorrida, dataIter, lsEsquemaTramoIter ); - } - - //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 esquemaCorridaList = new ArrayList(); - esquemaCorridaList.add(esquemaCorrida); - corridaService.generarCorrida(dataIter, esquemaCorridaList, false, corridaTramoList); - - - - }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); - TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - tarefaErros.add(tarefa); - } - } - - Map args = new HashMap(); - dataInicialFiltroCorridaExistente = new Date(); - dataFinalFiltroCorridaExistente = new Date(); - args.put("tarfaSucesso", tarefaSucesso); - args.put("tarefaErros", tarefaErros); - Window dialog = (Window)Executions.createComponents( - "/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul", null, args); - - dialog.doModal(); - }catch (InterruptedException e) { - log.error("Erro ao gerar corrida para a corrida: " + esquemaCorrida.getNumCorrida()); - } - } - - private List preencheParadaEsquemaNovas() { - List lsParadaEsquemaAdicionado = new ArrayList(); - for (ParadaEsquema paradaEsquemaNov : lsParadaEsquema) { - boolean isParadaEsquemaAntiga = false; - for (ParadaEsquema paradaEsquemaAntiga : lsParadaEsquemaOrignal) { - if(paradaEsquemaAntiga.equals(paradaEsquemaNov)) { - isParadaEsquemaAntiga = true; - break; - } - } - //Se isParadaEsquemaNaoRemovida=false a parada esquema foi removida, adiciona na lista. - if(!isParadaEsquemaAntiga) { - if(lsParadaEsquemaAdicionado == null) { - lsParadaEsquemaAdicionado = new ArrayList(); - } - lsParadaEsquemaAdicionado.add(paradaEsquemaNov); - } - } - return lsParadaEsquemaAdicionado; - } - - /** - * Preenche a lista de paradas removidas e a lista de paradas Editadas - * - * @param lsParadaEsquemaRemovidas - * @param lsParadaEsquemaEditadas - */ - private void preencheParadaEsquemaRemovidaEEditada(List lsParadaEsquemaRemovidas, List lsParadaEsquemaEditadas) { - for (ParadaEsquema paradaEsquemaAntiga : lsParadaEsquemaOrignal) { - boolean isParadaEsquemaNaoRemovida = false; - for (ParadaEsquema paradaEsquemaNova : lsParadaEsquema) { - if(paradaEsquemaNova.equals(paradaEsquemaAntiga)) { - isParadaEsquemaNaoRemovida = true; - ParadaEsquema paradaEsquemaEditada = validaParadaEsquemaEditada(paradaEsquemaAntiga, paradaEsquemaNova); - if(paradaEsquemaEditada !=null) { - if(lsParadaEsquemaEditadas==null) { - lsParadaEsquemaEditadas = new ArrayList(); - } - lsParadaEsquemaEditadas.add(paradaEsquemaEditada); - } - break; - } - } - //Se isParadaEsquemaNaoRemovida=false a parada esquema foi removida, adiciona na lista. - if(!isParadaEsquemaNaoRemovida) { - if(lsParadaEsquemaRemovidas == null) { - lsParadaEsquemaRemovidas = new ArrayList(); - } - lsParadaEsquemaRemovidas.add(paradaEsquemaAntiga); - } - } - } - - /** - * Se editou retorna a parada se não retorna nulo - * @param paradaEsquemaAntiga - * @param paradaEsquemaNova - * @return - */ - private ParadaEsquema validaParadaEsquemaEditada(ParadaEsquema paradaEsquemaAntiga, ParadaEsquema paradaEsquemaNova ) { - boolean isParadaEsquemaEditada = false; - //verifica se editou tiempoEstancia - if(paradaEsquemaAntiga.getTiempoEstancia()!=null && paradaEsquemaNova.getTiempoEstancia()!=null - && !paradaEsquemaAntiga.getTiempoEstancia().equals(paradaEsquemaNova.getTiempoEstancia())) { - isParadaEsquemaEditada = true; - } - //verifica se editou excepcionRecorrido - if(paradaEsquemaAntiga.getExcepcionRecorrido()!=null && paradaEsquemaNova.getExcepcionRecorrido()!=null - && !paradaEsquemaAntiga.getExcepcionRecorrido().equals(paradaEsquemaNova.getExcepcionRecorrido())) { - isParadaEsquemaEditada = true; - } - //Verifica se editou Tipo passagem - if(paradaEsquemaAntiga.getTipoPassagem()!=null && paradaEsquemaNova.getTipoPassagem()!=null - && !paradaEsquemaAntiga.getTipoPassagem().equals(paradaEsquemaNova.getTipoPassagem())) { - isParadaEsquemaEditada = true; - } - //Verifica se editou Tipo PLataforma - if(paradaEsquemaAntiga.getPlataforma()!=null && paradaEsquemaNova.getPlataforma()!=null - && !paradaEsquemaAntiga.getPlataforma().equals(paradaEsquemaNova.getPlataforma())) { - isParadaEsquemaEditada = true; - } - //Se editou retorna a parada se não retorna nulo - if(isParadaEsquemaEditada) { - return paradaEsquemaNova; - - } - return null; - } - - 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 ativa e habilitada:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter); - log.error("Geração de corrida via Conf. " + msgErro); - return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - } - - try { - inativaCorridaETabelasRelacionadas(corrida); - }catch (Exception e) { - String msgErro = "Erro ao inativar corrida e tabelas relacionadas. Favor verificar "; - log.error("Geração de corrida via Conf. " + msgErro, e); - return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); - - } - return null; - } - - /** - * Inativa a corrida e a realção dela com as seguintes tabelas: Corrida_Info, ASIENTO_EXCLUSIVO, Disponibilidad, INTEGRACAO_TOTVS_CORRIDA e corrida - * @param corrida - */ - private void inativaCorridaETabelasRelacionadas(Corrida corrida) { - corridaInfoService.borrarByCorrida(corrida); - asientoExclusivoService.borrarByCorrida(corrida); - disponibilidadService.borrarByCorrida(corrida); - integracaoTotvsService.borrarByCorrida(corrida); - corridaService.borrar(corrida); - } - - private void salvaNovoEsquemaCorrida(Date dataDeFecInicioVigencia, List lsEC) - throws InterruptedException { - Calendar agora = Calendar.getInstance(); - agora.set(agora.get(Calendar.YEAR), agora.get(Calendar.MONTH), agora.get(Calendar.DATE), - NumberUtils.INTEGER_ZERO, NumberUtils.INTEGER_ZERO, NumberUtils.INTEGER_ZERO); - - dataDeFecInicioVigencia.setSeconds(01); - if (dataDeFecInicioVigencia.before(agora.getTime())) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.fecha"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - } else { - if (lsEC.isEmpty()) { - Boolean existeNumCorrida = true; - - EsquemaCorrida ecor = esquemaCorridaService.buscarPeloNumCorrida(esquemaCorrida.getNumCorrida()); - existeNumCorrida = ecor != null; - - if ((!existeNumCorrida) && !(esquemaCorrida.getNumCorrida().equals(esquemaCorrida.getNumCorridaPisoExtra()))) { - if (porBloq.isChecked()) { - Date des = de.getValue(); - Date has = hasta.getValue(); - has.setSeconds(1); - EsquemaOperacional eo = new EsquemaOperacional(); - Integer numCorrida = esquemaCorrida.getNumCorrida(); - while (des.before(has)) { - EsquemaCorrida ec = new EsquemaCorrida(); - eo.setActivo(Boolean.TRUE); - eo.setFecmodif(Calendar.getInstance().getTime()); - eo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - - Date horaSalida = new Date(); - horaSalida.setHours(des.getHours()); - horaSalida.setMinutes(des.getMinutes()); - horaSalida.setSeconds(0); - - ec.setActivo(Boolean.TRUE); - ec.setFecmodif(Calendar.getInstance().getTime()); - ec.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - ec.setClaseServicio(esquemaCorrida.getClaseServicio()); - ec.setEmpresa(esquemaCorrida.getEmpresa()); - ec.setEmpresa1(esquemaCorrida.getEmpresa1()); - - eo.setFecniciovigencia(esquemaCorrida.getEsquemaOperacional().getFecniciovigencia()); - eo.setFecfinvigencia(esquemaCorrida.getEsquemaOperacional().getFecfinvigencia()); - - ec.setEsquemaOperacional(eo); - ec.setMarca(esquemaCorrida.getMarca()); - ec.setRolOperativo(esquemaCorrida.getRolOperativo()); - ec.setDiagramaAutobusId(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId().intValue()); - ec.setRuta(esquemaCorrida.getRuta()); - ec.setInddomingo(esquemaCorrida.getInddomingo()); - ec.setIndjueves(esquemaCorrida.getIndjueves()); - ec.setIndlunes(esquemaCorrida.getIndlunes()); - ec.setIndmartes(esquemaCorrida.getIndmartes()); - ec.setIndmiercoles(esquemaCorrida.getIndmiercoles()); - ec.setIndsabado(esquemaCorrida.getIndsabado()); - ec.setIndviernes(esquemaCorrida.getIndviernes()); - ec.setStatusCorrida(esquemaCorrida.getStatusCorrida()); - ec.setTipocorrida(esquemaCorrida.getTipocorrida()); - ec.setCantparados(esquemaCorrida.getCantparados()); - ec.setInfoCorrida(esquemaCorrida.getInfoCorrida()); - ec.setHorasalida(horaSalida); - ec.setIndGeneraFeriado(esquemaCorrida.getIndGeneraFeriado()); - - ec.setPisoExtra(esquemaCorrida.getPisoExtra()); - - - // Salva - Boolean existeNumCorridaBloco = true; - while (existeNumCorridaBloco) { - existeNumCorridaBloco = esquemaCorridaService.buscarNumCorrida(numCorrida, null,false); - ec.setNumCorrida(numCorrida); - numCorrida = numCorrida + 1; - } - ec = esquemaCorridaService.suscribir(ec); - esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, ec); - - // Acrescenta Minutos na Hora - des.setMinutes(des.getMinutes() + minutos.getValue()); - } - } else { - EsquemaOperacional eo = new EsquemaOperacional(); - eo.setFecmodif(new Date()); - eo.setUsuarioId(esquemaCorrida.getEsquemaOperacional().getUsuarioId()); - eo.setActivo(Boolean.TRUE); - eo.setFecniciovigencia(fecniciovigencia.getValue()); - eo.setFecfinvigencia(fecfinvigencia.getValue()); - esquemaCorrida.setEsquemaOperacional(eo); - esquemaCorridaService.suscribir(esquemaCorrida); - - esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida); - } - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.suscribirOK"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.INFORMATION); - busquedaCorridaController.refreshLista(); - closeWindow(); - } else { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.NumCorrida"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - salvar = true; - } - } else { - Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - } - } - } - - @SuppressWarnings("unchecked") - private boolean realizaValidacoes() throws InterruptedException { - - if(lsParadaEsquema!=null && !lsParadaEsquema.isEmpty()) { - int resp = Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); - - if (resp == Messagebox.YES) { - //chama poupup com filtro de data - try { - @SuppressWarnings("rawtypes") - Map args = new HashMap(); - dataInicialFiltroCorridaExistente = new Date(); - dataFinalFiltroCorridaExistente = new Date(); - args.put("dataInicial", dataInicialFiltroCorridaExistente); - args.put("dataFinal", dataFinalFiltroCorridaExistente); - - Window dialog = (Window)Executions.createComponents( - "/gui/esquema_operacional/filtroDataEdicaoCorrida.zul", null, args); - Button okBtn = (Button) dialog.getFellow("okBtn"); - - okBtn.addEventListener("onClick", new EventListener() { - @Override - public void onEvent(Event event) throws Exception { - try{ - Datebox fecInicial = (Datebox) dialog.getFellow("fecInicio"); - dataInicialFiltroCorridaExistente = fecInicial.getValue(); - Datebox fecFinal = (Datebox) dialog.getFellow("fecFinal"); - dataFinalFiltroCorridaExistente = fecFinal.getValue(); - if(DateUtil.diferencaEntreDatasEmdias(dataInicialFiltroCorridaExistente, dataFinalFiltroCorridaExistente) > PERIODO_MAXIMO_90_DIAS) { - String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo"); - Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);; - return; - } - if(DateUtil.isMenor(dataFinalFiltroCorridaExistente, dataInicialFiltroCorridaExistente)) { - String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataFinalMenorDataInicial"); - Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);; - return; - } - isAlteraCorridaJaGerada = Boolean.TRUE; - }catch(Exception e){ - log.error("Erro ao obter data", e); - } - dialog.detach(); - } - }); - dialog.doModal(); - - }catch (Exception e) { - String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes") + e.getMessage(); - Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); - log.error(msg, e); - isAlteraCorridaJaGerada = Boolean.FALSE; - } - }else { - isAlteraCorridaJaGerada = Boolean.FALSE; - } - - } - - //Linha Destaivada - if (esquemaCorrida.getRuta().getIndRutaCancelada()) { - Messagebox.show(Labels.getLabel("editarCatalogoDeRutaController.msg.rutaDesativadaId") - .concat(" " + esquemaCorrida.getRuta().getRutaId()+" ") - .concat(Labels.getLabel("editarCatalogoDeRutaController.msg.rutaDesativadaIdPt2"))); - salvar = true; - return false; - } - - - //FlexBus - if(esquemaCorrida.getIsFlexBus() && (txtHorasParaConfirmacao.getValue() == null || txtMinutosParaConfirmacao.getValue() == null || txtOcupacaoMinima.getValue() == null)) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.inserirInformacoesFlexBus"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); - salvar = true; - return false; - } - - //Automacao Horario Extra - if(esquemaCorrida.getIsAutomacaoHorarioExtra() && (txtHorasAutomacaoDE.getValue() == null || txtOcupacaoHorarioExtra.getValue() == null )) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.inserirInformacoesAutomacaoHorarioExtra"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); - salvar = true; - return false; - } - - String numCorridaString = txtNumCorrida.getValue().toString(); - Integer maxSizeNumCorrida = ApplicationProperties.getInstance().maxSizeNumCorrida(); - if (maxSizeNumCorrida != -1) { - if (numCorridaString.length() > maxSizeNumCorrida) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.maxSizeNumCorrida").replace("@size", maxSizeNumCorrida.toString()), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - salvar = true; - return false; - } - } - - if(esquemaCorrida.getIsAutomacaoHorarioExtra() && !validarCorridaExtraAutomatica()) { - salvar = true; - return false; - } - return true; - } - - private Date buscarHora(Date horasalidaExtra) { - if (horasalidaExtra != null) { - GregorianCalendar gHoraSalida = new GregorianCalendar(); - gHoraSalida.setTime(horasalidaExtra); - gHoraSalida.set(Calendar.SECOND, 0); - gHoraSalida.set(Calendar.MILLISECOND, 0); - gHoraSalida.set(Calendar.MONTH, 01); - gHoraSalida.set(Calendar.DAY_OF_MONTH, 01); - gHoraSalida.set(Calendar.YEAR, 1970); - - return gHoraSalida.getTime(); - } - - return null; - } - - public void onClick$btnApagar(Event ev) { - try { - int resp = Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.borrarPergunta"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); - - if (resp == Messagebox.YES) { - esquemaCorridaService.borrar(esquemaCorrida); - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.borrarOK"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.INFORMATION); - - esquemaCorridaList.removeItem(esquemaCorrida); - - closeWindow(); - } - } catch (Exception ex) { - log.error("", ex); - } - } - - public void onClick$btnAdicionarTramo(Event ev) { - try { - if (cmbTramo.getSelectedItem() != null) { - String plataforma = txtPlataforma.getValue(); - String tipoPassagem = null; - - if (sentado.isChecked()) { - tipoPassagem = "S"; - } else if (emPe.isChecked()) { - tipoPassagem = "P"; - } else if (naoVende.isChecked()) { - tipoPassagem = "N"; - } else { - tipoPassagem = "A"; - } - - - - // Ruta Secuencia - Parada paradaAlterada = (Parada) cmbTramo.getSelectedItem().getValue(); - List listParadaEsquemaComNovaParada = new ArrayList(); - lsEsquemaTramo = adicionarParadaEsquemaTramo(lsParadaEsquema,paradaAlterada , esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), plataforma, tipoPassagem, listParadaEsquemaComNovaParada); - 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); - selecionarRutaSequenciaForaEsqCorrida(); - - txtPlataforma.setValue(""); - - - } - } catch (Exception e) { - log.error("ESQ CORRIDA - Erro ao adicionar tramo: " + e, e); - e.printStackTrace(); - onClick$btnAdicionarTramo(null); - } - } - - /** - * Selecciona las paradas que no estan en la secuencia de la ruta - */ - @SuppressWarnings("unchecked") - private void selecionarRutaSequenciaForaEsqCorrida() { - if (lsTramosRutaEsquemaCorrida == null) { - lsTramosRutaEsquemaCorrida = new ArrayList(); - } - lsTramosRutaEsquemaCorrida.clear(); - - // Ruta Secuencia - Ruta ruta = esquemaCorrida.getRuta(); - ruta = rutaService.obtenerID(ruta.getRutaId()); - lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); - - // Selecciona solamente la secuencia de paradas de los tramos de la - // secuencia de la ruta - List lstPardasRuta = new ArrayList(); - for (RutaSecuencia rs : lsRutaSecuencia) { - Tramo tramoRS = rs.getTramo(); - lstPardasRuta.add(tramoRS.getOrigem()); - } - if (!lsRutaSecuencia.isEmpty()) { - lstPardasRuta.add(lsRutaSecuencia.get(lsRutaSecuencia.size() - 1).getTramo().getDestino()); - } - - // Selecciona solamente la secuencia de paradas de lo esquemTramo - List lstPardasTramos = new ArrayList(); - for (EsquemaTramo et : lsEsquemaTramo) { - if (et.getTramo() != null) { - Tramo tramoET = et.getTramo(); - lstPardasTramos.add(tramoET.getOrigem()); - } - } - - if (!lsEsquemaTramo.isEmpty()) { - lstPardasTramos.add(lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino()); - } - - if (lsTramos == null) { - lsTramos = new ArrayList(); - } - lsTramos.clear(); - - lsTramos.addAll(CollectionUtils.subtract(lstPardasRuta, lstPardasTramos)); - BindingListModelList listModelTramo = new BindingListModelList( - lsTramos, true); - cmbTramo.setModel(listModelTramo); - cmbParadaOrigem.setModel(new BindingListModelList( lstPardasRuta, true)); - cmbParadaDestino.setModel(new BindingListModelList( lstPardasRuta, true)); - } - - private void selecionarRuta() { - // Ruta Secuencia - Comboitem ciRuta = cmbRuta.getSelectedItem(); - Ruta ruta = null; - if (ciRuta != null) { - ruta = (Ruta) ciRuta.getValue(); - } - - try { - if (ruta != null) { - ruta = rutaService.obtenerID(ruta.getRutaId()); - lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); - - lsEsquemaTramo = new ArrayList(); - esquemaTramoList.setData(lsParadaEsquema); - - for (RutaSecuencia rs : lsRutaSecuencia) { - EsquemaTramo et = new EsquemaTramo(); - et.setActivo(Boolean.TRUE); - et.setFecmodif(Calendar.getInstance().getTime()); - et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - et.setNumsecuencia(rs.getNumsecuencia()); - et.setTramo(rs.getTramo()); - et.setEsquemaCorrida(esquemaCorrida); - - // Somente quando muda a seleção da Ruta. - lsEsquemaTramo.add(et); - } - - esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); - carregarParadaSecuencia(lsEsquemaTramo); - selecionarRutaSequenciaForaEsqCorrida(); - esquemaTramoList.setData(lsParadaEsquema); - - lsRutaEmbarqueDesembarque = rutaEmbarqueDesembarqueService.obtenerPorRuta(ruta); - if (esquemaCorrida.getEsquemacorridaId() == null) { - for (RutaEmbarqueDesembarque rutaEmbarqueDesembarque : lsRutaEmbarqueDesembarque) { - selectEsquemaCorridaEmbarqueDesembarque(rutaEmbarqueDesembarque); - } - } - BindingListModelList listModelParadaEmbarqueDesembarque = new BindingListModelList( - lsRutaEmbarqueDesembarque, true); - cmbEmbarqueDesembarque.setModel(listModelParadaEmbarqueDesembarque); - - } else { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaVazia"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - } - } catch (Exception ex) { - log.error("", ex); - } - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - private void verTempoEstanciaTramo(EsquemaTramo et, ParadaEsquema pe, Short sequenciaSize) { - if (et == null) { - return; - } - - Map args = new HashMap(); - args.put("esquemaTramo", et); - args.put("paradaEsquema", pe); - args.put("esquemaTramoList", esquemaTramoList); - args.put("sequenciaSize", sequenciaSize); - - openWindow("/gui/esquema_operacional/tiempoEstanciaTramo.zul", - Labels.getLabel("editarCatalogoDeRutaController.lhTiempoEstancia"), args, MODAL); - } - - public void onChange$cmbRuta(Event ev) { - selecionarRuta(); - } - - public void onClick$btnRemoverTramo(Event ev) { - try { - ParadaEsquema pe = new ParadaEsquema(); - try { - pe = (ParadaEsquema) esquemaTramoList.getSelected(); - } catch (Exception e) { - log.error("Erro ao aliminar ruta do esquemaTramo: " + e, e); - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.selectItem"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - } - if (pe != null) { - boolean podeExcluir = false; - if (lsParadaEsquema.size() > 2) { - for (int i = 0; i < lsParadaEsquema.size(); i++) { - if (lsParadaEsquema.get(i).getParada().equals(pe.getParada())) { - ParadaEsquema paradaEsquema = lsParadaEsquema.get(i); - lsParadaEsquema.remove(paradaEsquema); - log.debug("Esquema Tramo Removida: " + paradaEsquema.getNumsecuencia() + " - " + paradaEsquema.getParada().getCveparada()); - esquemaTramoList.setData(lsParadaEsquema); - podeExcluir = true; - break; - } - } - } - if (podeExcluir) { - String ok = esquemaTramoCorrecto(lsParadaEsquema); - if (ok != null) { - Messagebox.show(ok, - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - return; - } - } - } else { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.selectItem"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - } - lsEsquemaTramo = generaEsquemaTramoCorrecto(lsParadaEsquema, esquemaCorrida); - selecionarRutaSequenciaForaEsqCorrida(); - - } catch (Exception e) { - log.error("Erro ao remover secuencia da ruta " + e.getMessage(), e); - } - } - - /** - * Checo se el nuevo reajuste de secuencia quedo valido. O sea, checo se existe en tramo en la tabla ruta_combinacion - * - * @param lsParadaEsquema - * - La nueva lista de secuecia (ya con el cambio hecho) - * @return - True se esta correcto False se no esta correcto - */ - private String esquemaTramoCorrecto(List lsParadaEsquema) { - boolean hayTramo = true; - - Parada paradaOrigen = null; - Parada paradaDestino = null; - - for (int i = 0; (i < lsParadaEsquema.size() - 1) && hayTramo; i++) { - paradaOrigen = lsParadaEsquema.get(i).getParada(); - paradaDestino = lsParadaEsquema.get(i + 1).getParada(); - - Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); - - hayTramo = (t == null) ? false : true; - } - - return (hayTramo) ? null : "No existe el tramo: " - + paradaOrigen.getDescparada() + " - " - + paradaDestino.getDescparada(); - } - - /** - * Hago la combinacion correcta en esquemacorrida asi como esta en la lista de parada - * - * @param listParadaEsquema - * @param ec - */ - private List generaEsquemaTramoCorrecto( - List listParadaEsquema, EsquemaCorrida ec) { - List result = new ArrayList(); - - for (int i = 0; (i < listParadaEsquema.size() - 1); i++) { - Parada paradaOrigen = listParadaEsquema.get(i).getParada(); - Parada paradaDestino = listParadaEsquema.get(i + 1).getParada(); - - Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); - - EsquemaTramo et = new EsquemaTramo(); - et.setActivo(Boolean.TRUE); - et.setEsquemaCorrida(ec); - et.setFecmodif(Calendar.getInstance().getTime()); - et.setNumsecuencia((short) (i + 1)); - et.setTiempoEstancia(listParadaEsquema.get(i + 1).getTiempoEstancia()); - et.setTramo(t); - et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - - result.add(et); - } - - return result; - } - - private List adicionarParadaEsquemaTramo( - List listParadaEsquema, Parada novaParada, - EsquemaCorrida ec, Ruta ruta, String plataforma, String tipoPassagem, List listParadaEsquemaComNovaParada) { - List result = new ArrayList(); - - lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); - - - - - Short secuencia = 0; - boolean nuevoAgregado = false; - boolean noExisteTramoAsociado = listParadaEsquema.isEmpty();// es la - // primera - // vez - Integer indiceSecuencia = null; - for (int i = 0; i < lsRutaSecuencia.size(); i++) { - RutaSecuencia rutaSecuencia = lsRutaSecuencia.get(i); - if (rutaSecuencia.getTramo().getOrigem().equals(novaParada)) { - ParadaEsquema paradaEsquema = new ParadaEsquema(); - paradaEsquema.setActivo(Boolean.TRUE); - secuencia++; - paradaEsquema.setNumsecuencia(secuencia); - paradaEsquema.setParada(novaParada); - paradaEsquema.setPlataforma(plataforma); - paradaEsquema.setTipoPassagem(tipoPassagem); - listParadaEsquemaComNovaParada.add(paradaEsquema); - nuevoAgregado = true; - indiceSecuencia = i; - } else { - if (!listParadaEsquema.isEmpty()) { - if (rutaSecuencia.getTramo().getOrigem().equals(listParadaEsquema.get(0).getParada())) { - secuencia++; - listParadaEsquema.get(0).setNumsecuencia(secuencia); - listParadaEsquemaComNovaParada.add(listParadaEsquema.get(0)); - listParadaEsquema.remove(0); - - } - } - } - } - - if (noExisteTramoAsociado) { - if (indiceSecuencia != null) { - if ((lsRutaSecuencia.size() - 1) > indiceSecuencia) { - RutaSecuencia rutaSecuencia = lsRutaSecuencia.get(indiceSecuencia); - ParadaEsquema paradaEsquema = new ParadaEsquema(); - paradaEsquema.setActivo(Boolean.TRUE); - secuencia++; - paradaEsquema.setNumsecuencia(secuencia); - paradaEsquema.setParada(rutaSecuencia.getTramo().getDestino()); - paradaEsquema.setPlataforma(plataforma); - listParadaEsquemaComNovaParada.add(paradaEsquema); - } - } - } - if (!nuevoAgregado) { - ParadaEsquema paradaEsquema = new ParadaEsquema(); - paradaEsquema.setActivo(Boolean.TRUE); - secuencia++; - paradaEsquema.setNumsecuencia(secuencia); - paradaEsquema.setParada(novaParada); - paradaEsquema.setPlataforma(plataforma); - paradaEsquema.setTipoPassagem(tipoPassagem); - - listParadaEsquemaComNovaParada.add(paradaEsquema); - } - if (!listParadaEsquema.isEmpty()) { - secuencia++; - listParadaEsquema.get(0).setNumsecuencia(secuencia); - listParadaEsquemaComNovaParada.add(listParadaEsquema.get(0)); - listParadaEsquema.remove(0); - } - - for (int i = 0; (i < listParadaEsquemaComNovaParada.size() - 1); i++) { - Parada paradaOrigen = listParadaEsquemaComNovaParada.get(i).getParada(); - Parada paradaDestino = listParadaEsquemaComNovaParada.get(i + 1).getParada(); - - Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); - - if(t==null) { - List lsr = rutaSecuenciaService.buscarSecuenciaOrdenado((Ruta) cmbRuta.getSelectedItem().getValue()); - for(RutaSecuencia s : lsr) { - if(s.tieneOrigen(paradaOrigen.getParadaId()) && s.tieneDestino(paradaDestino.getParadaId())) { - t = s.getTramo(); - break; - } - } - } - - EsquemaTramo et = new EsquemaTramo(); - et.setActivo(Boolean.TRUE); - et.setEsquemaCorrida(ec); - et.setFecmodif(Calendar.getInstance().getTime()); - et.setNumsecuencia((short) (i + 1)); - et.setTiempoEstancia(listParadaEsquemaComNovaParada.get(i + 1).getTiempoEstancia()); - et.setTramo(t); - et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - et.setPlataforma(listParadaEsquemaComNovaParada.get(i).getPlataforma()); - et.setTipoPassagem(listParadaEsquemaComNovaParada.get(i).getTipoPassagem()); - - result.add(et); - } - - return result; - } - - public void onChange$cmbClase(InputEvent ev) { - - if (ev.isChangingBySelectBack()) { - return; - } - - llenarRutasPorClase(); - llenarMarcaPorClaseServicio(); - } - - private void llenarRutasPorClase() { - if (esquemaCorrida.getClaseServicio() == null) { - return; - } - cmbMarca.setConstraint(""); - if (cmbMarca.getSelectedItem() == null) { - lsRuta = rutaService.buscarPorClaseServicio(esquemaCorrida.getClaseServicio()); - } else { - lsRuta = rutaService.buscarPorClaseServicioEmpresa(esquemaCorrida.getClaseServicio(), ((Marca) cmbMarca.getSelectedItem().getValue()).getEmpresa()); - } - cmbMarca.setConstraint("no empty"); - - // caso o usuario tenha mudado a classeServicio da ruta - if (esquemaCorrida.getEsquemacorridaId() != null && esquemaCorrida.getRuta() != null && !lsRuta.contains(esquemaCorrida.getRuta())) { - lsRuta.add(esquemaCorrida.getRuta()); - } - - BindingListModelList l = new BindingListModelList(lsRuta, true); - cmbRuta.setModel(l); - } - - private void llenarMarcaPorClaseServicio() { - if (esquemaCorrida.getClaseServicio() == null) { - return; - } - lsMarca = marcaClaseServicioService.buscarPorEmpresasPermitidas(esquemaCorrida.getClaseServicio(), UsuarioLogado.getUsuarioLogado()); - BindingListModelList l = new BindingListModelList(lsMarca, true); - cmbMarca.setModel(l); - } - - public void onChange$cmbMarca(InputEvent ev) { - - if (ev.isChangingBySelectBack()) { - return; - } - llenarRutasPorClaseMarca(); - } - - public void llenarRutasPorClaseMarca() { - if (esquemaCorrida.getClaseServicio() == null - || esquemaCorrida.getMarca() == null) { - return; - } - lsRuta = rutaService.buscarPorClaseServicioEmpresa(esquemaCorrida.getClaseServicio(), esquemaCorrida.getMarca().getEmpresa()); - BindingListModelList l = new BindingListModelList(lsRuta, true); - cmbRuta.setModel(l); - lsEmpresa.clear(); - for (Empresa e : UsuarioLogado.getUsuarioLogado().getEmpresa()) { - if (e.getEmpresaId().equals(((Marca) cmbMarca.getSelectedItem().getValue()).getEmpresa().getEmpresaId())) { - lsEmpresa.add(e); - - break; - } - } - BindingListModelList lb = new BindingListModelList(lsEmpresa, true); - cmbEmpresaCorrida.setModel(lb); - - } - - public void onClick$porBloq(Event ev) { - horasalida.setVisible(false); - horasalidaLabel.setVisible(false); - minutos.setVisible(true); - minutosLabel1.setVisible(true); - minutosLabel2.setVisible(true); - de.setVisible(true); - horaLabel1.setVisible(true); - horaLabel2.setVisible(true); - hasta.setVisible(true); - horaLabel21.setVisible(true); - horaLabel22.setVisible(true); - } - - public void onClick$porHora(Event ev) { - horasalida.setVisible(true); - horasalidaLabel.setVisible(true); - minutos.setVisible(false); - minutosLabel1.setVisible(false); - minutosLabel2.setVisible(false); - de.setVisible(false); - horaLabel1.setVisible(false); - horaLabel2.setVisible(false); - hasta.setVisible(false); - horaLabel21.setVisible(false); - horaLabel22.setVisible(false); - } - - public void onClick$btnAsientos(Event ev) throws InterruptedException { - Map args = new HashMap(); - args.put("esquemaCorrida", esquemaCorrida); - - if (esquemaCorrida.getEsquemacorridaId() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.gravarServico"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - - return; - } - - openWindow("/gui/esquema_operacional/editarCorridaAsiento.zul", - Labels.getLabel("editarConfiguracionCorridaAsientoController.window.title"), - args, MODAL); - - } - - public void onClick$chkDoblePiso(Event ev) { - if (chkDoblePiso.isChecked()) { - esquemaCorrida.setPisoExtra(Boolean.TRUE); - lbNumCorridaPisoExtra.setVisible(Boolean.TRUE); - txtNumCorridaPisoExtra.setVisible(Boolean.TRUE); - - lbNumCorridaPisoExtra2.setVisible(Boolean.TRUE); - txtNumCorridaPisoExtra2.setVisible(Boolean.TRUE); - - } else { - esquemaCorrida.setPisoExtra(Boolean.FALSE); - lbNumCorridaPisoExtra.setVisible(Boolean.FALSE); - txtNumCorridaPisoExtra.setVisible(Boolean.FALSE); - - lbNumCorridaPisoExtra2.setVisible(Boolean.FALSE); - txtNumCorridaPisoExtra2.setVisible(Boolean.FALSE); - } - } - - public ClaseServicioService getClaseService() { - return claseService; - } - - public void setClaseService(ClaseServicioService claseService) { - this.claseService = claseService; - } - - public EsquemaCorridaService getEsquemaCorridaService() { - return esquemaCorridaService; - } - - public void setEsquemaCorridaService( - EsquemaCorridaService esquemaCorridaService) { - this.esquemaCorridaService = esquemaCorridaService; - } - - public EsquemaCorrida getEsquemaCorrida() { - return esquemaCorrida; - } - - public void setEsquemaCorrida(EsquemaCorrida esquemaCorrida) { - this.esquemaCorrida = esquemaCorrida; - } - - public MyListbox getEsquemaCorridaList() { - return esquemaCorridaList; - } - - public void setEsquemaCorridaList(MyListbox esquemaCorridaList) { - this.esquemaCorridaList = esquemaCorridaList; - } - - public List getLsClase() { - return lsClase; - } - - public void setLsClase(List lsClase) { - this.lsClase = lsClase; - } - - public List getLsMarca() { - return lsMarca; - } - - public void setLsMarca(List lsMarca) { - this.lsMarca = lsMarca; - } - - public List getLsRuta() { - return lsRuta; - } - - public void setLsRuta(List lsRuta) { - this.lsRuta = lsRuta; - } - - public MarcaService getMarcaService() { - return marcaService; - } - - public void setMarcaService(MarcaService marcaService) { - this.marcaService = marcaService; - } - - public RutaService getRutaService() { - return rutaService; - } - - public void setRutaService(RutaService rutaService) { - this.rutaService = rutaService; - } - - public Combobox getCmbClase() { - return cmbClase; - } - - public void setCmbClase(Combobox cmbClase) { - this.cmbClase = cmbClase; - } - - public Combobox getCmbMarca() { - return cmbMarca; - } - - public void setCmbMarca(Combobox cmbMarca) { - this.cmbMarca = cmbMarca; - } - - public Combobox getCmbRuta() { - return cmbRuta; - } - - public void setCmbRuta(Combobox cmbRuta) { - this.cmbRuta = cmbRuta; - } - - public Datebox getFecfinvigencia() { - return fecfinvigencia; - } - - public void setFecfinvigencia(Datebox fecfinvigencia) { - this.fecfinvigencia = fecfinvigencia; - } - - public Datebox getFecniciovigencia() { - return fecniciovigencia; - } - - public void setFecniciovigencia(Datebox fecniciovigencia) { - this.fecniciovigencia = fecniciovigencia; - } - - public Timebox getHora() { - return de; - } - - public void setHora(Timebox hora) { - this.de = hora; - } - - public Timebox getHora2() { - return hasta; - } - - public void setHora2(Timebox hora2) { - this.hasta = hora2; - } - - public Timebox getHorasalida() { - return horasalida; - } - - public void setHorasalida(Timebox horasalida) { - this.horasalida = horasalida; - } - - public Spinner getMinutos() { - return minutos; - } - - public void setMinutos(Spinner minutos) { - this.minutos = minutos; - } - - public Combobox getCmbEmpresaCorrida() { - return cmbEmpresaCorrida; - } - - public void setCmbEmpresaCorrida(Combobox cmbEmpresaCorrida) { - this.cmbEmpresaCorrida = cmbEmpresaCorrida; - } - - public Combobox getCmbEmpresaIngresso() { - return cmbEmpresaIngresso; - } - - public void setCmbEmpresaIngresso(Combobox cmbEmpresaIngresso) { - this.cmbEmpresaIngresso = cmbEmpresaIngresso; - } - - public Combobox getCmbRolOperativo() { - return cmbRolOperativo; - } - - public void setCmbRolOperativo(Combobox cmbRolOperativo) { - this.cmbRolOperativo = cmbRolOperativo; - } - - public Combobox getCmbStatus() { - return cmbStatus; - } - - public void setCmbStatus(Combobox cmbStatus) { - this.cmbStatus = cmbStatus; - } - - public EmpresaService getEmpresaService() { - return empresaService; - } - - public void setEmpresaService(EmpresaService empresaService) { - this.empresaService = empresaService; - } - - public List getLsEmpresa() { - return lsEmpresa; - } - - public void setLsEmpresa(List lsEmpresa) { - this.lsEmpresa = lsEmpresa; - } - - public List getLsRutaSecuencia() { - return lsRutaSecuencia; - } - - public void setLsRutaSecuencia(List lsRutaSecuencia) { - this.lsRutaSecuencia = lsRutaSecuencia; - } - - public MyListbox getRutaSecuenciaList() { - return esquemaTramoList; - } - - public void setRutaSecuenciaList(MyListbox rutaSecuenciaList) { - this.esquemaTramoList = rutaSecuenciaList; - } - - public List getLsRolOperativo() { - return lsRolOperativo; - } - - public void setLsRolOperativo(List lsRolOperativo) { - this.lsRolOperativo = lsRolOperativo; - } - - public RolOperativoService getRolOperativoService() { - return rolOperativoService; - } - - public void setRolOperativoService(RolOperativoService rolOperativoService) { - this.rolOperativoService = rolOperativoService; - } - - public Radio getAutorizada() { - return autorizada; - } - - public void setAutorizada(Radio autorizada) { - this.autorizada = autorizada; - } - - public Radio getCancelada() { - return cancelada; - } - - public void setCancelada(Radio cancelada) { - this.cancelada = cancelada; - } - - public Radio getLatente() { - return latente; - } - - public void setLatente(Radio latente) { - this.latente = latente; - } - - public Combobox getCmbVia() { - return cmbVia; - } - - public void setCmbVia(Combobox cmbVia) { - this.cmbVia = cmbVia; - } - - public Button getBtnAsientos() { - return btnAsientos; - } - - public void setBtnAsientos(Button btnAsientos) { - this.btnAsientos = btnAsientos; - } - - public Radio getFletes() { - return fletes; - } - - public void setFletes(Radio fletes) { - this.fletes = fletes; - } - - public Radio getTransportePasajeros() { - return transportePasajeros; - } - - public void setTransportePasajeros(Radio transportePasajeros) { - this.transportePasajeros = transportePasajeros; - } - - public Radio getViajesEspeciales() { - return viajesEspeciales; - } - - public void setViajesEspeciales(Radio viajesEspeciales) { - this.viajesEspeciales = viajesEspeciales; - } - - public Combobox getCmbTramo() { - return cmbTramo; - } - - public void setCmbTramo(Combobox cmbTramo) { - this.cmbTramo = cmbTramo; - } - - public Timebox getDe() { - return de; - } - - public void setDe(Timebox de) { - this.de = de; - } - - public MyListbox getEsquemaTramoList() { - return esquemaTramoList; - } - - public void setEsquemaTramoList(MyListbox esquemaTramoList) { - this.esquemaTramoList = esquemaTramoList; - } - - public EsquemaTramoService getEsquemaTramoService() { - return esquemaTramoService; - } - - public void setEsquemaTramoService(EsquemaTramoService esquemaTramoService) { - this.esquemaTramoService = esquemaTramoService; - } - - public Timebox getHasta() { - return hasta; - } - - public void setHasta(Timebox hasta) { - this.hasta = hasta; - } - - public List getLsEsquemaTramo() { - return lsEsquemaTramo; - } - - public void setLsEsquemaTramo(List lsEsquemaTramo) { - this.lsEsquemaTramo = lsEsquemaTramo; - } - - public List getLsTramos() { - return lsTramos; - } - - public void setLsTramos(List lsTramos) { - this.lsTramos = lsTramos; - } - - public List getLsDivision() { - return lsDivision; - } - - public void setLsDivision(List lsDivision) { - this.lsDivision = lsDivision; - } - - public Combobox getCmbDivision() { - return cmbDivision; - } - - public void setCmbDivision(Combobox cmbDivision) { - this.cmbDivision = cmbDivision; - } - - public Label getLbDivision() { - return lbDivision; - } - - public void setLbDivision(Label lbDivision) { - this.lbDivision = lbDivision; - } - - public List getLsTramosRutaEsquemaCorrida() { - return lsTramosRutaEsquemaCorrida; - } - - public void setLsTramosRutaEsquemaCorrida( - List lsTramosRutaEsquemaCorrida) { - this.lsTramosRutaEsquemaCorrida = lsTramosRutaEsquemaCorrida; - } - - public Radio getPorBloq() { - return porBloq; - } - - public void setPorBloq(Radio porBloq) { - this.porBloq = porBloq; - } - - public Button getBtnApagar() { - return btnApagar; - } - - public void setBtnApagar(Button btnApagar) { - this.btnApagar = btnApagar; - } - - public Checkbox getDiaSimDiaNao() { - return diaSimDiaNao; - } - - public void setDiaSimDiaNao(Checkbox diaSimDiaNao) { - this.diaSimDiaNao = diaSimDiaNao; - } - - public void onClick$btnApagarRebote(Event e) throws InterruptedException { - esquemaCorrida.setEsquemaCorridaRebote(null); - txtIdCorridaRebote.setValue(""); - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - public void onClick$btnAbrirEsquemaCorrida(Event e) - throws InterruptedException { - if (esquemaCorrida.getEsquemaCorridaRebote() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.btnAbrirEsquemaCorrida.error"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.EXCLAMATION); - - return; - - } - - closeWindow(); - - Map args = new HashMap(); - - args.put("esquemaCorrida", esquemaCorrida.getEsquemaCorridaRebote()); - args.put("esquemaCorridaList", esquemaCorridaList); - - openWindow( - "/gui/esquema_operacional/editarCorrida.zul", - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - args, MODAL); - } - - @SuppressWarnings({ "rawtypes", "unchecked" }) - public void onClick$btnBuscarEsquemaCorrida(Event e) { - Map argss = new HashMap(); - - argss.put("esquemaCorrida", esquemaCorrida); - argss.put("txtIdCorridaRebote", txtIdCorridaRebote); - - openWindow( - "/gui/esquema_operacional/busquedaCorridaRebote.zul", - Labels.getLabel("busquedaConfiguracionCorridaController.window.title"), - argss, MODAL); - } - - public void onChange$horasalida(Event e) { - ((RenderConfiguracionCorridaTramo) esquemaTramoList.getItemRenderer()).alterarDataPartida(horasalida.getValue()); - esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); - carregarParadaSecuencia(lsEsquemaTramo); - selecionarRutaSequenciaForaEsqCorrida(); - } - - - - public void onClick$diaSimDiaNao(Event e) throws InterruptedException { - habilitaDiasDaSemana(diaSimDiaNao.isChecked()); - } - - public void onClick$lun(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$mar(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$mie(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$jue(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$vie(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$sab(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - public void onClick$dom(Event e) throws InterruptedException { - habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); - } - - private Boolean validarCorridaExtraAutomatica() throws InterruptedException { - if(txtNumCorridaExtraAuto.getValue() == null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.necessarioInformarCorridaExtra"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.ERROR); - return false; - } - - EsquemaCorrida esquemaCorrida = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaExtraAuto.getValue()); - - if(esquemaCorrida != null) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.corridaJaExiste"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.ERROR); - return false; - } - - return true; - } - - private Boolean validarPisoExtra() throws InterruptedException { - Boolean returnValue = true; - EsquemaCorrida esquemaCorrida = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaPisoExtra.getValue()); - - EsquemaCorrida esquemaCorrida2 = null; - Boolean isPisoExtra2 = txtNumCorridaPisoExtra2.getValue() != null; - - if(txtNumCorridaPisoExtra2.getValue() != null) { - esquemaCorrida2 = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaPisoExtra2.getValue()); - } - - - if (esquemaCorrida == null || (isPisoExtra2 && esquemaCorrida2 == null)) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraExistente"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if (this.esquemaCorrida.equals(esquemaCorrida) || (isPisoExtra2 && this.esquemaCorrida.equals(esquemaCorrida2))) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraIgualServico"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if ((esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) || (isPisoExtra2 && esquemaCorrida2.getPisoExtra() != null && esquemaCorrida2.getPisoExtra())) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraJaEPisoExtra"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if (!esquemaCorrida.getMarca().equals(this.esquemaCorrida.getMarca()) || (isPisoExtra2 && !esquemaCorrida2.getMarca().equals(this.esquemaCorrida.getMarca()))) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraEmpresaDiferente"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if (!esquemaCorrida.getRuta().getOrgaoConcedente().equals(this.esquemaCorrida.getRuta().getOrgaoConcedente()) - || (isPisoExtra2 && !esquemaCorrida2.getRuta().getOrgaoConcedente().equals(this.esquemaCorrida.getRuta().getOrgaoConcedente()))) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraOrgaoDiferente"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if (validarEsquemaTramo(esquemaCorrida) || (isPisoExtra2 && validarEsquemaTramo(esquemaCorrida2))) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraLocalidadeDiferente"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } else if(esquemaCorrida.equals(esquemaCorrida2)) { - Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.pisoExtraIguais.label"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, Messagebox.ERROR); - returnValue = false; - } - - if (!returnValue) { - txtNumCorridaPisoExtra.setDisabled(false); - txtNumCorridaPisoExtra2.setDisabled(false); - } - - return returnValue; - } - - public void onChange$txtNumCorridaPisoExtra() throws InterruptedException { - validarPisoExtra(); - } - - public void onChange$txtNumCorridaPisoExtra2() throws InterruptedException { - validarPisoExtra(); - } - - private boolean validarEsquemaTramo(EsquemaCorrida esquemaCorrida) { - - if (this.esquemaCorrida.getEsquemaTramoList().size() != esquemaCorrida.getEsquemaTramoList().size()) { - return true; - } - for (int i = 0; i < this.esquemaCorrida.getEsquemaTramoList().size(); i++) { - if( this.esquemaCorrida.getEsquemacorridaId() != null ){ - if (!tramoIsEqual(this.esquemaCorrida.getEsquemaTramoList().get(i).getTramo(), esquemaCorrida.getEsquemaTramoList().get(i).getTramo())) { - return true; - } - }else{ - List ls = ordenaLista( esquemaCorrida.getEsquemaTramoList()); - if (!tramoIsEqual(this.esquemaCorrida.getEsquemaTramoList().get(i).getTramo(), ls.get(i).getTramo())) { - return true; - } - } - } - return false; - } - - private List ordenaLista(List ls){ - List myls = new ArrayList(); - for(int y = 1 ; y <= ls.size(); y++ ){ - for(int x = 1 ; x <= ls.size(); x++ ){ - if(ls.get(x-1).getNumsecuencia() == y ){ - myls.add(ls.get(x-1)); - break; - } - } - } - return myls; - } - - public boolean naoValidaEsquemaCorridaVia() { - Constante contante = constanteService.buscarPorNomeConstante("NAO_VALIDA_ESQUEMA_CORRIDA_VIA"); - String valorConstante = contante == null ? null : contante.getValorconstante(); - - if (StringUtils.isBlank(valorConstante)) { - return false; - } else { - if (BooleanUtils.toBoolean(valorConstante)) { - return true; - } - return false; - } - } - - private boolean tramoIsEqual(Tramo este, Tramo outro) { - if(este == null && outro == null){ - return true; - } - if(este == null && outro != null){ - return false; - } - if(este != null && outro == null){ - return false; - } - if (este.getDestino().equals(outro.getDestino()) - && este.getOrigem().equals(outro.getOrigem())) { - if (naoValidaEsquemaCorridaVia()) { - return true; - } else if (este.getDesctramo().equals(outro.getDesctramo()) && este.getKmReal().equals(outro.getKmReal()) - && este.getVia().equals(outro.getVia())) { - return true; - } - } - return false; - } - - private void habilitaDiasDaSemana(Boolean isChecked) { - if (isChecked) { - lun.setChecked(!isChecked); - mar.setChecked(!isChecked); - mie.setChecked(!isChecked); - jue.setChecked(!isChecked); - vie.setChecked(!isChecked); - sab.setChecked(!isChecked); - dom.setChecked(!isChecked); - - lun.setDisabled(isChecked); - mar.setDisabled(isChecked); - mie.setDisabled(isChecked); - jue.setDisabled(isChecked); - vie.setDisabled(isChecked); - sab.setDisabled(isChecked); - dom.setDisabled(isChecked); - } else { - lun.setChecked(Boolean.FALSE); - mar.setChecked(Boolean.FALSE); - mie.setChecked(Boolean.FALSE); - jue.setChecked(Boolean.FALSE); - vie.setChecked(Boolean.FALSE); - sab.setChecked(Boolean.FALSE); - dom.setChecked(Boolean.FALSE); - - lun.setDisabled(Boolean.FALSE); - mar.setDisabled(Boolean.FALSE); - mie.setDisabled(Boolean.FALSE); - jue.setDisabled(Boolean.FALSE); - vie.setDisabled(Boolean.FALSE); - sab.setDisabled(Boolean.FALSE); - dom.setDisabled(Boolean.FALSE); - } - } - - private void habilitarDiaSimDiaNao(Boolean isLun, Boolean isMar, Boolean isMie, Boolean isJue, Boolean isVie, Boolean isSab, Boolean isDom) { - if (isLun || isMar || isMie || isJue || isVie || isSab || isDom) { - diaSimDiaNao.setChecked(Boolean.FALSE); - diaSimDiaNao.setDisabled(Boolean.TRUE); - } else { - diaSimDiaNao.setChecked(Boolean.FALSE); - diaSimDiaNao.setDisabled(Boolean.FALSE); - } - } - - public List getLsEmpresaIngresso() { - return lsEmpresaIngresso; - } - - public void setLsEmpresaIngresso(List lsEmpresaIngresso) { - this.lsEmpresaIngresso = lsEmpresaIngresso; - } - - public List getLsAutoBus() { - return lsAutoBus; - } - - public void setLsAutoBus(List lsAutoBus) { - this.lsAutoBus = lsAutoBus; - } - - public void onClick$btnAdicionarEmbarqueDesembarque(Event ev) { - - Comboitem selectedItem = cmbEmbarqueDesembarque.getSelectedItem(); - if (selectedItem == null) { - return; - } - - RutaEmbarqueDesembarque rutaEmbarqueDesembarque = (RutaEmbarqueDesembarque) selectedItem.getValue(); - - for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : lsEsquemaCorridaEmbarqueDesembarqueSelected) { - if (esquemaCorridaEmbarqueDesembarque.getParada().equals(rutaEmbarqueDesembarque)) { - return; - } - } - - selectEsquemaCorridaEmbarqueDesembarque(rutaEmbarqueDesembarque); - - } - - private void selectEsquemaCorridaEmbarqueDesembarque(RutaEmbarqueDesembarque rutaEmbarqueDesembarque) { - EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque = new EsquemaCorridaEmbarqueDesembarque(); - esquemaCorridaEmbarqueDesembarque.setParada(rutaEmbarqueDesembarque.getParada()); - esquemaCorridaEmbarqueDesembarque.setActivo(true); - esquemaCorridaEmbarqueDesembarque.setEsquemaCorrida(esquemaCorrida); - esquemaCorridaEmbarqueDesembarque.setEmbarque(BooleanUtils.isTrue(rutaEmbarqueDesembarque.getEmbarque())); // null safe - esquemaCorridaEmbarqueDesembarque.setDesembarque(BooleanUtils.isTrue(rutaEmbarqueDesembarque.getDesembarque())); // null safe - esquemaCorridaEmbarqueDesembarque.setLocalDesembarqueEmbarque(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); - esquemaCorridaEmbarqueDesembarque.setIsVisualizarNaAPI(cbVisualizaNaAPI.isChecked()); - lsEsquemaCorridaEmbarqueDesembarqueSelected.add(esquemaCorridaEmbarqueDesembarque); - - esquemaCorrida.setLsEsquemaCorridaEmbarqueDesembarque(lsEsquemaCorridaEmbarqueDesembarqueSelected); - esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); - } - - public void onClick$btnRemoverEmbarqueDesembarque(Event ev) throws InterruptedException { - - EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque = (EsquemaCorridaEmbarqueDesembarque) esquemaCorridaEmbarqueDesembarqueListbox.getSelected(); - - if (esquemaCorridaEmbarqueDesembarque != null) { - lsEsquemaCorridaEmbarqueDesembarqueSelected.remove(esquemaCorridaEmbarqueDesembarque); - lsEsquemaCorridaEmbarqueDesembarqueBorrar.add(esquemaCorridaEmbarqueDesembarque); - - esquemaCorrida.setLsEsquemaCorridaEmbarqueDesembarque(lsEsquemaCorridaEmbarqueDesembarqueSelected); - esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); - } - - } - - public List getLsRutaEmbarqueDesembarque() { - return lsRutaEmbarqueDesembarque; - } - - public void setLsRutaEmbarqueDesembarque(List lsRutaEmbarqueDesembarque) { - this.lsRutaEmbarqueDesembarque = lsRutaEmbarqueDesembarque; - } - - public Boolean getEmbarqueDesembarqueDisabled() { - return embarqueDesembarqueDisabled; - } - - public Boolean getEmbarque() { - return embarque; - } - - public void setEmbarque(Boolean embarque) { - this.embarque = embarque; - } - - public Boolean getDesembarque() { - return desembarque; - } - - public void setDesembarque(Boolean desembarque) { - this.desembarque = desembarque; - } - - public List getLsEmbarqueDesembarque() { - return lsEmbarqueDesembarque; - } - - public void setLsEmbarqueDesembarque(List lsEmbarqueDesembarque) { - this.lsEmbarqueDesembarque = lsEmbarqueDesembarque; - } - - public void onSelect$cmbEmbarqueDesembarque(Event ev) { - Comboitem selectedItem = cmbEmbarqueDesembarque.getSelectedItem(); - if (selectedItem == null) { - return; - } - - preencherLocalEmbarqueDesembarque(); - - RutaEmbarqueDesembarque rutaEmbarqueDesembarque = (RutaEmbarqueDesembarque) selectedItem.getValue(); - Comboitem ci = new Comboitem(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque().toString()); - ci.setAttribute("value", rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); - ci.setValue(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); - ci.setParent(cmbLocalEmbarqueDesembarque); - cmbLocalEmbarqueDesembarque.setSelectedItem(ci); - - cbEmbarque.setChecked(rutaEmbarqueDesembarque.getEmbarque()); - cbDesembarque.setChecked(rutaEmbarqueDesembarque.getDesembarque()); - } - - private void preencherLocalEmbarqueDesembarque(){ - for (RutaEmbarqueDesembarque rutaEmbarqueDesembarque : lsRutaEmbarqueDesembarque) { - lsEmbarqueDesembarque.add(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); - } - } - - public Combobox getCmbRolOperativoServicoExtra() { - return cmbRolOperativoServicoExtra; - } - - public void setCmbRolOperativoServicoExtra(Combobox cmbRolOperativoServicoExtra) { - this.cmbRolOperativoServicoExtra = cmbRolOperativoServicoExtra; - } - - public Boolean getIsVisualizarNaAPI() { - return isVisualizarNaAPI; - } - - public void setIsVisualizarNaAPI(Boolean isVisualizarNaAPI) { - this.isVisualizarNaAPI = isVisualizarNaAPI; - } - - @SuppressWarnings("unchecked") - public void onClick$btnAdicionarTramoInformacaoCorrida(Event ev) { - - try { - cmbParadaOrigem.getValue(); - cmbParadaDestino.getValue(); - txtMensagemTrecho.getValue(); - - Parada origem = (Parada) cmbParadaOrigem.getSelectedItem().getValue(); - Parada destino = (Parada) cmbParadaDestino.getSelectedItem().getValue(); - - boolean existe = false; - for (EsquemaCorridaInfo esquemaCorridaInfo : (List)lstTrechosInformacaoCorridaListbox.getListData()) { - if(esquemaCorridaInfo.getOrigem().getDescparada().equals(origem.getDescparada()) && esquemaCorridaInfo.getDestino().getDescparada().equals(destino.getDescparada())) { - existe = true; - } - } - if(!existe) { - EsquemaCorridaInfo esquemaCorridaInfo = new EsquemaCorridaInfo(); - esquemaCorridaInfo.setOrigem(origem); - esquemaCorridaInfo.setDestino(destino); - esquemaCorridaInfo.setActivo(true); - esquemaCorridaInfo.setInfoCorrida(txtMensagemTrecho.getValue()); - esquemaCorridaInfo.setEsquemaCorrida(esquemaCorrida); - esquemaCorridaInfo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - esquemaCorridaInfo.setFecmodif(Calendar.getInstance().getTime()); - esquemaCorridaInfo.setActivo(Boolean.TRUE); - lsEsquemaCorridaInfoSelected.add(esquemaCorridaInfo); - esquemaCorrida.setLsEsquemaCorridaInfo(lsEsquemaCorridaInfoSelected); - lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); - - }else { - Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), - Labels.getLabel("editarConfiguracionCorridaController.window.title"), - Messagebox.OK, - Messagebox.EXCLAMATION); - } - - - } catch (Exception e) { - log.error("ESQ CORRIDA INFO TRMO - Erro ao adicionar tramo: " + e, e); - e.printStackTrace(); - onClick$btnAdicionarTramo(null); - } - } - - public void onClick$btnRemoverEsquemaCorridaInfoTramo(Event ev) throws InterruptedException { - - EsquemaCorridaInfo esquemaCorridaInfo = (EsquemaCorridaInfo) lstTrechosInformacaoCorridaListbox.getSelected(); - - if (esquemaCorridaInfo != null) { - lsEsquemaCorridaInfoSelected.remove(esquemaCorridaInfo); - lsEsquemaCorridaInfoBorrar.add(esquemaCorridaInfo); - esquemaCorrida.setLsEsquemaCorridaInfo(null); - lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); - } - - } - - public Button getBtnCancelarRetomar() { - return btnCancelarRetomar; - } - - public void setBtnCancelarRetomar(Button btnCancelarRetomar) { - this.btnCancelarRetomar = btnCancelarRetomar; - } - - private void alterarBotaoRetomarCancelar() { - if (esquemaCorrida.getIndCorridaDesativada()) { - btnCancelarRetomar.setTooltiptext(Labels.getLabel("editarCatalogoDeRutaController.btnRetomarCancelar.tooltipRetomar")); - btnCancelarRetomar.setImage("/gui/img/back.png"); - } else { - btnCancelarRetomar.setTooltiptext(Labels.getLabel("editarCatalogoDeRutaController.btnRetomarCancelar.tooltipCancelar")); - btnCancelarRetomar.setImage("/gui/img/forbidden.png"); - } - } - - public void onClick$btnCancelarRetomar(Event ev) throws Exception { - if (!esquemaCorrida.getIndCorridaDesativada()) { - esquemaCorrida.setIndCorridaDesativada(true);// cancelar - } else { - esquemaCorrida.setIndCorridaDesativada(false);// retomar - } - - if(esquemaCorrida.getEsquemacorridaId() != null) { - esquemaCorridaService.actualizacion(esquemaCorrida); - } - - alterarBotaoRetomarCancelar(); - } +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ +package com.rjconsultores.ventaboletos.web.gui.controladores.esquemaoperacional; + +import java.time.LocalDate; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Collections; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang.BooleanUtils; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.lang.math.NumberUtils; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Scope; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.stereotype.Controller; +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; +import org.zkoss.zk.ui.event.InputEvent; +import org.zkoss.zkplus.databind.BindingListModelList; +import org.zkoss.zul.Button; +import org.zkoss.zul.Checkbox; +import org.zkoss.zul.Combobox; +import org.zkoss.zul.Comboitem; +import org.zkoss.zul.Datebox; +import org.zkoss.zul.Intbox; +import org.zkoss.zul.Label; +import org.zkoss.zul.Radio; +import org.zkoss.zul.Spinner; +import org.zkoss.zul.Textbox; +import org.zkoss.zul.Timebox; +import org.zkoss.zul.Window; + +import com.rjconsultores.ventaboletos.entidad.Autobus; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Constante; +import com.rjconsultores.ventaboletos.entidad.Corrida; +import com.rjconsultores.ventaboletos.entidad.CorridaTramo; +import com.rjconsultores.ventaboletos.entidad.Division; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; +import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; +import com.rjconsultores.ventaboletos.entidad.EsquemaCorridaEmbarqueDesembarque; +import com.rjconsultores.ventaboletos.entidad.EsquemaCorridaInfo; +import com.rjconsultores.ventaboletos.entidad.EsquemaOperacional; +import com.rjconsultores.ventaboletos.entidad.EsquemaTramo; +import com.rjconsultores.ventaboletos.entidad.Marca; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.ParadaEsquema; +import com.rjconsultores.ventaboletos.entidad.RolOperativo; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.entidad.RutaEmbarqueDesembarque; +import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; +import com.rjconsultores.ventaboletos.entidad.Tramo; +import com.rjconsultores.ventaboletos.entidad.TramoServicio; +import com.rjconsultores.ventaboletos.service.AsientoExclusivoService; +import com.rjconsultores.ventaboletos.service.AutobusService; +import com.rjconsultores.ventaboletos.service.BoletoService; +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; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaEmbarqueDesembarqueService; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaInfoService; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; +import com.rjconsultores.ventaboletos.service.EsquemaTramoService; +import com.rjconsultores.ventaboletos.service.IntegracaoTotvsService; +import com.rjconsultores.ventaboletos.service.MarcaClaseServicioService; +import com.rjconsultores.ventaboletos.service.MarcaService; +import com.rjconsultores.ventaboletos.service.RolOperativoService; +import com.rjconsultores.ventaboletos.service.RutaCombinacionService; +import com.rjconsultores.ventaboletos.service.RutaEmbarqueDesembarqueService; +import com.rjconsultores.ventaboletos.service.RutaSecuenciaService; +import com.rjconsultores.ventaboletos.service.RutaService; +import com.rjconsultores.ventaboletos.service.TramoServicioService; +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.TarefaGeracaoCorridaVO; +import com.rjconsultores.ventaboletos.web.utilerias.MyGenericForwardComposer; +import com.rjconsultores.ventaboletos.web.utilerias.MyListbox; +import com.rjconsultores.ventaboletos.web.utilerias.render.MyComboRutaRenderer; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderConfiguracionCorridaTramo; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderCorridaInfomacaoTramo; +import com.rjconsultores.ventaboletos.web.utilerias.render.RenderEsquemaCorridaEmbarqueDesembarque; + +/** + * + * @author Rafius + */ +@Controller("editarCorridaController") +@Scope("prototype") +public class EditarCorridaController extends MyGenericForwardComposer { + + private static final int PERIODO_MAXIMO_90_DIAS = 90; + private static Logger log = LogManager.getLogger(EditarCorridaController.class); + private static final long serialVersionUID = 1L; + //Services + @Autowired + private EsquemaCorridaService esquemaCorridaService; + @Autowired + private EsquemaTramoService esquemaTramoService; + @Autowired + private MarcaService marcaService; + @Autowired + private ClaseServicioService claseService; + @Autowired + private RutaService rutaService; + @Autowired + private RutaCombinacionService rutaCombinacionService; + @Autowired + private RutaSecuenciaService rutaSecuenciaService; + @Autowired + private EmpresaService empresaService; + @Autowired + private MarcaClaseServicioService marcaClaseServicioService; + @Autowired + private AutobusService autobusService; + @Autowired + private RolOperativoService rolOperativoService; + @Autowired + private BusquedaCorridaController busquedaCorridaController; + @Autowired + private TramoServicioService tramoServicioService; + @Autowired + CorridaService corridaService; + @Autowired + private CorridaInfoService corridaInfoService; + @Autowired + private AsientoExclusivoService asientoExclusivoService; + @Autowired + private DisponibilidadService disponibilidadService; + @Autowired + private IntegracaoTotvsService integracaoTotvsService; + @Autowired + BoletoService boletoService; + @Autowired + private RutaEmbarqueDesembarqueService rutaEmbarqueDesembarqueService; + @Autowired + private EsquemaCorridaEmbarqueDesembarqueService esquemaCorridaEmbarqueDesembarqueService; + + private DivisionService divisionService; + @Autowired + private EsquemaCorridaInfoService esquemaCorridaInfoService; + + @Autowired + private ConstanteService constanteService; + @Autowired + private CorridaTramoService corridaTramoService; + + //Radio + private Radio porBloq; + private Radio latente; + private Radio autorizada; + private Radio cancelada; + private Radio sentado; + private Radio emPe; + private Radio naoVende; + private Radio fletes; + private Radio viajesEspeciales; + private Radio transportePasajeros; + private Radio rdImprimeBPE; + private Radio rdNaoImprimeBPE; + //MyListbox + private MyListbox esquemaCorridaList; + private MyListbox esquemaTramoList; + private MyListbox esquemaCorridaEmbarqueDesembarqueListbox; + private MyListbox lstTrechosInformacaoCorridaListbox; + //Datebox + private Datebox fecniciovigencia; + private Datebox fecfinvigencia; + //Spinner + private Spinner minutos; + private Spinner txtHorasParaConfirmacao; + private Spinner txtMinutosParaConfirmacao; + private Spinner txtHorasAutomacaoDE; + private Spinner txtMinutosAutomacaoDE; + private Spinner txtHorasAutomacaoATE; + private Spinner txtMinutosAutomacaoATE; + //Intbox + private Intbox txtNumCorrida; + private Intbox txtNumCorridaPisoExtra; + private Intbox txtNumCorridaPisoExtra2; + private Intbox txtQtdeDiasGeracao; + private Intbox txtOcupacaoMinima; + private Intbox txtOcupacaoHorarioExtra; + private Intbox txtNumCorridaExtraAuto; + //Combobox + private Combobox cmbClase; + private Combobox cmbMarca; + private Combobox cmbRuta; + private Combobox cmbEmpresaCorrida; + private Combobox cmbEmpresaIngresso; + private Combobox cmbRolOperativo; + private Combobox cmbStatus; + private Combobox cmbVia; + private Combobox cmbTramo; + private Combobox cmbDivision; + private Combobox cmbIndGeneraFeriado; + private Combobox cmbEmbarqueDesembarque; + private Combobox cmbLocalEmbarqueDesembarque; + private Combobox cmbRolOperativoServicoExtra; + private Combobox cmbParadaOrigem; + private Combobox cmbParadaDestino; + //Button + private Button btnAsientos; + private Button btnApagar; + //Timebox + private Timebox horasalida; + private Timebox de; + private Timebox hasta; + private Timebox horaIniNaoImpBpe; + private Timebox horaFimNaoImpBpe; + //Label + private Label horasalidaLabel; + private Label minutosLabel1; + private Label minutosLabel2; + private Label horaLabel1; + private Label horaLabel2; + private Label horaLabel21; + private Label horaLabel22; + private Label lbDivision; + private Label lbNumCorridaPisoExtra; + private Label lbNumCorridaPisoExtra2; + //Textbox + private Textbox txtIdCorridaRebote; + private Textbox txtPlataforma; + private Textbox txtInfoCorrida; + private Textbox txtMensagemTrecho; + //Checkbox + private Checkbox chkDoblePiso; + private Checkbox chkCorridaExtra; + private Checkbox lun; + private Checkbox mar; + private Checkbox mie; + private Checkbox jue; + private Checkbox vie; + private Checkbox sab; + private Checkbox dom; + private Checkbox cbEmbarque; + private Checkbox cbDesembarque; + private Checkbox cbVisualizaNaAPI; + private Checkbox chkBloqueiaCorridaWebAposSaida; + private Checkbox diaSimDiaNao; + //List + private List lsDivision; + private List lsEmpresa; + private List lsEmpresaIngresso; + private List lsMarca; + private List lsClase; + private List lsRuta; + private List lsRutaSecuencia; + private List lsEsquemaTramo; + private List lsEsquemaTramoOriginal; + private List lsAutoBus; + private List lsRolOperativo; + private List lsTramosRutaEsquemaCorrida; + private List lsTramos; + private List lsParadaEsquema; + private List lsParadaEsquemaOrignal; + private List lsRutaEmbarqueDesembarque = new ArrayList(); + private List lsEsquemaCorridaEmbarqueDesembarqueSelected = new ArrayList(); + private List lsEsquemaCorridaEmbarqueDesembarqueBorrar = new ArrayList(); + private List lsEsquemaCorridaInfoSelected; + private List lsEsquemaCorridaInfoBorrar; + private List lsEmbarqueDesembarque; + //boolean + private boolean isPrimeiraVez = true; + private Boolean embarqueDesembarqueDisabled = true; + private Boolean isAlteraCorridaJaGerada; + private Boolean embarque = Boolean.FALSE; + private Boolean desembarque = Boolean.FALSE; + private Boolean isVisualizarNaAPI = Boolean.FALSE; + //Outros objetos + private EsquemaCorrida esquemaCorrida; + private Date dataInicialFiltroCorridaExistente; + private Date dataFinalFiltroCorridaExistente; + + + private Button btnCancelarRetomar; + + @Override + public void doAfterCompose(Component comp) throws Exception { + super.doAfterCompose(comp); + lsEmbarqueDesembarque = new ArrayList(); + isPrimeiraVez = true; + salvar = true; + cmbRuta.setItemRenderer(new MyComboRutaRenderer()); + popularCombobox(cmbIndGeneraFeriado); + + esquemaCorridaEmbarqueDesembarqueListbox.setItemRenderer(new RenderEsquemaCorridaEmbarqueDesembarque()); + lstTrechosInformacaoCorridaListbox.setItemRenderer(new RenderCorridaInfomacaoTramo()); + + esquemaCorrida = (EsquemaCorrida) Executions.getCurrent().getArg().get("esquemaCorrida"); + if (esquemaCorrida.getEsquemacorridaId() != null) { + esquemaCorrida = esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); + esquemaCorrida.getEsquemaTramoList(); + } + esquemaCorridaList = (MyListbox) Executions.getCurrent().getArg().get("esquemaCorridaList"); + busquedaCorridaController = (BusquedaCorridaController) Executions.getCurrent().getArg().get("busquedaCorridaController"); + + Boolean ehEsquemaAgrupacion = (Boolean) Executions.getCurrent().getArg().get("ehEsquemaAgrupacion") == null ? Boolean.FALSE : (Boolean) Executions.getCurrent().getArg().get("ehEsquemaAgrupacion"); + + lsParadaEsquema = new ArrayList(); + + lsEmpresa = new ArrayList(); + lsEmpresa.addAll(UsuarioLogado.getUsuarioLogado().getEmpresa()); + + lsEmpresaIngresso = new ArrayList(); + lsEmpresaIngresso.addAll(UsuarioLogado.getUsuarioLogado().getEmpresa()); + + lsClase = claseService.buscarTodosExceto(-1); + + lsRolOperativo = rolOperativoService.obtenerTodos(); + + lsAutoBus = autobusService.obtenerTodos(); + + lsEsquemaCorridaInfoSelected = new ArrayList(); + lsEsquemaCorridaInfoBorrar = new ArrayList(); + + if (esquemaCorrida.getEsquemacorridaId() != null) { + + // 01 - não se pode mudar dados básicos da corrida. + // 02 - Segundo a Lety os campos CLASE, MARCA E EMPRESAS... + // Poderão ser editados pelo usuario. + // RUTA permanece inalterado. + + if (esquemaCorrida.getRuta() != null) { + lsRutaEmbarqueDesembarque = rutaEmbarqueDesembarqueService.obtenerPorRuta(esquemaCorrida.getRuta()); + } + lsEsquemaCorridaEmbarqueDesembarqueSelected = esquemaCorridaEmbarqueDesembarqueService.obtenerPorEsquemaCorrida(esquemaCorrida); + lsEsquemaCorridaInfoSelected = esquemaCorridaInfoService.obtenerPorEsquemaCorrida(esquemaCorrida); + + esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); + lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); + + if (esquemaCorrida.getRuta() != null) { + embarqueDesembarqueDisabled = false; + } + + if (ehEsquemaAgrupacion) { + fecniciovigencia.setDisabled(Boolean.TRUE); + fecfinvigencia.setDisabled(Boolean.TRUE); + txtQtdeDiasGeracao.setDisabled(Boolean.TRUE); + horasalida.setDisabled(Boolean.TRUE); + cmbIndGeneraFeriado.setDisabled(Boolean.TRUE); + chkDoblePiso.setDisabled(Boolean.TRUE); + + lun.setDisabled(Boolean.TRUE); + mar.setDisabled(Boolean.TRUE); + mie.setDisabled(Boolean.TRUE); + jue.setDisabled(Boolean.TRUE); + vie.setDisabled(Boolean.TRUE); + sab.setDisabled(Boolean.TRUE); + dom.setDisabled(Boolean.TRUE); + + } + + cmbClase.setDisabled(Boolean.TRUE); + cmbMarca.setDisabled(Boolean.TRUE); + cmbRuta.setDisabled(Boolean.TRUE); + cmbEmpresaCorrida.setDisabled(Boolean.TRUE); + cmbEmpresaIngresso.setDisabled(Boolean.TRUE); + txtNumCorrida.setDisabled(Boolean.TRUE); + chkCorridaExtra.setDisabled(Boolean.TRUE); + + if (esquemaCorrida.getIndGeneraFeriado() != null) { + if (esquemaCorrida.getIndGeneraFeriado().equals("S")) { + cmbIndGeneraFeriado.setSelectedIndex(0); + } else if (esquemaCorrida.getIndGeneraFeriado().equals("F")) { + cmbIndGeneraFeriado.setSelectedIndex(1); + } else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) { + cmbIndGeneraFeriado.setSelectedIndex(2); + } + } + + if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) { + chkDoblePiso.setChecked(true); + lbNumCorridaPisoExtra.setVisible(Boolean.TRUE); + txtNumCorridaPisoExtra.setVisible(Boolean.TRUE); + + lbNumCorridaPisoExtra2.setVisible(Boolean.TRUE); + txtNumCorridaPisoExtra2.setVisible(Boolean.TRUE); + } + + //FlexBus + txtHorasParaConfirmacao.setValue(esquemaCorrida.getHorasParaConfirmacao()); + txtMinutosParaConfirmacao.setValue(esquemaCorrida.getMinutosParaConfirmacao()); + txtOcupacaoMinima.setValue(esquemaCorrida.getOcupacaoMinima()); + + //Automatizacao de horario extra + txtOcupacaoHorarioExtra.setValue(esquemaCorrida.getTaxaOcupacao()); + txtHorasAutomacaoDE.setValue(esquemaCorrida.getHorasAutomacaoHEDe()); + txtMinutosAutomacaoDE.setValue(esquemaCorrida.getMinutosAutomacaoHEDe()); + txtHorasAutomacaoATE.setValue(esquemaCorrida.getHorasAutomacaoHEAte()); + txtMinutosAutomacaoATE.setValue(esquemaCorrida.getMinutosAutomacaoHEAte()); + } + + // Llena los valores de los combos + llenarRutasPorClase(); + llenarMarcaPorClaseServicio(); + + esquemaTramoList.setItemRenderer(new RenderConfiguracionCorridaTramo(esquemaCorrida.getHorasalida())); + esquemaTramoList.addEventListener("onDoubleClick", new EventListener() { + + @Override + public void onEvent(Event event) throws Exception { + ParadaEsquema pe = (ParadaEsquema) esquemaTramoList.getSelected(); + EsquemaTramo esquemaTramo = null; + + for (EsquemaTramo et : lsEsquemaTramo) { + Short numSec = et.getNumsecuencia(); + + if (numSec.equals(pe.getNumsecuencia())) { + esquemaTramo = et; + esquemaTramo.setPlataforma(pe.getPlataforma()); + } + } + + verTempoEstanciaTramo(esquemaTramo, pe, (short) esquemaTramoList.getItemCount()); + } + }); + + try { + lsEsquemaTramo = new ArrayList(); + + if (esquemaCorrida.getEsquemacorridaId() == null) { + EsquemaOperacional eo = new EsquemaOperacional(); + eo.setActivo(Boolean.TRUE); + eo.setFecmodif(Calendar.getInstance().getTime()); + eo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + esquemaCorrida.setEsquemaOperacional(eo); + + transportePasajeros.setChecked(Boolean.TRUE); + } else { + esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); + + esquemaCorrida.getEsquemaOperacional(); + + porBloq.setVisible(false); + + if (esquemaCorrida.getStatusCorrida() != null) { + if (esquemaCorrida.getStatusCorrida().equals("L")) { + latente.setChecked(true); + } else if (esquemaCorrida.getStatusCorrida().equals("A")) { + autorizada.setChecked(true); + } else { + cancelada.setChecked(true); + } + + if (esquemaCorrida.getTipocorrida().equals("F")) { + fletes.setChecked(true); + } else if (esquemaCorrida.getTipocorrida().equals("S")) { + viajesEspeciales.setChecked(true); + } else { + transportePasajeros.setChecked(true); + } + + } + lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida); + lsEsquemaTramoOriginal = new ArrayList(); + for (EsquemaTramo esquemaTramo : lsEsquemaTramoOriginal) { + lsEsquemaTramoOriginal.add(esquemaTramo.clone()); + } + //lsEsquemaTramoOriginal.addAll(lsEsquemaTramo); + carregarParadaSecuencia(lsEsquemaTramo); + lsParadaEsquemaOrignal = new ArrayList(); + for (ParadaEsquema paradaEsquema : lsParadaEsquema) { + lsParadaEsquemaOrignal.add(paradaEsquema.clone()); + } + //lsParadaEsquemaOrignal.addAll(lsParadaEsquema); + selecionarRutaSequenciaForaEsqCorrida(); + } + + fecniciovigencia.focus(); + + horasalida.setVisible(true); + horasalidaLabel.setVisible(true); + minutos.setVisible(false); + minutosLabel1.setVisible(false); + minutosLabel2.setVisible(false); + de.setVisible(false); + horaLabel1.setVisible(false); + horaLabel2.setVisible(false); + hasta.setVisible(false); + horaLabel21.setVisible(false); + horaLabel22.setVisible(false); + + if (esquemaCorrida.getEsquemacorridaId() == null) { + btnApagar.setVisible(Boolean.FALSE); + } + + if (esquemaCorrida.getEsquemaCorridaRebote() != null) { + txtIdCorridaRebote.setValue(esquemaCorrida.getEsquemaCorridaRebote().getEsquemacorridaId().toString()); + + } + + exibirDivision(); + setSelecaoCboBPE(); + alterarBotaoRetomarCancelar(); + + } catch (Exception ex) { + log.error("Error al editar una corrida", ex); + Messagebox.show(Labels.getLabel("MSG.Error"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + } + } + + public void selecionarHorarioNãoImpBPE() { + if (rdImprimeBPE.isChecked()) { + horaFimNaoImpBpe.setReadonly(true); + horaFimNaoImpBpe.setDisabled(true); + horaIniNaoImpBpe.setReadonly(true); + horaIniNaoImpBpe.setDisabled(true); + } else if (rdNaoImprimeBPE.isChecked()) { + horaFimNaoImpBpe.setReadonly(false); + horaFimNaoImpBpe.setDisabled(false); + horaIniNaoImpBpe.setReadonly(false); + horaIniNaoImpBpe.setDisabled(false); + } + } + + private void setSelecaoCboBPE() { + if (esquemaCorrida.getIndNaoImprimeBpe() == null || esquemaCorrida.getIndNaoImprimeBpe().equals("0")) { + rdImprimeBPE.setChecked(true); + } else { + rdNaoImprimeBPE.setChecked(true); + } + selecionarHorarioNãoImpBPE(); + } + + public void onClick$rdgNaoImprimeViaBPE(Event event) { + String option = rdImprimeBPE.isChecked() ? "0" : "1"; + + if (option.equals("0")) { + esquemaCorrida.setIndNaoImprimeBpe("0"); + } else if (option.equals("1")) { + esquemaCorrida.setIndNaoImprimeBpe("1"); + } + setSelecaoCboBPE(); + } + + public void onClick$btnCopiar(Event ev) { + try { + if (esquemaCorrida.getEsquemacorridaId() != null) { + // Carregar campos lazy + esquemaCorrida = esquemaCorridaService.obtenerID(esquemaCorrida.getEsquemacorridaId()); + esquemaCorrida.clonar(); + esquemaCorrida = esquemaCorrida.getCloneObject(); + + txtNumCorrida.setConstraint(""); + txtNumCorrida.setDisabled(false); + txtNumCorrida.setText(""); + txtNumCorrida.setConstraint("no empty"); + chkCorridaExtra.setDisabled(Boolean.FALSE); + + esquemaCorrida.setEsquemacorridaId(null); + esquemaCorrida.setNumCorrida(null); + for (EsquemaTramo esquemaTramo : esquemaCorrida.getEsquemaTramoList()) { + esquemaTramo.setEsquematramoId(null); + esquemaTramo.setEsquemaCorrida(esquemaCorrida); + } + + for (EsquemaAsiento esquemaAsiento : esquemaCorrida.getEsquemaAsientoList()) { + esquemaAsiento.setEsquemaasientoId(null); + esquemaAsiento.setEsquemaCorrida(esquemaCorrida); + } + + for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : esquemaCorrida.getLsEsquemaCorridaEmbarqueDesembarque()) { + esquemaCorridaEmbarqueDesembarque.setEsquemaCorridaEmbarqueDesembarqueId(null); + esquemaCorridaEmbarqueDesembarque.setEsquemaCorrida(esquemaCorrida); + } + + tratarEsquemaTramoList(); + } + } catch (Exception e) { + log.error(e.getMessage(), e); + } + } + + private void tratarEsquemaTramoList() { + lsEsquemaTramo.clear(); + lsEsquemaTramo.addAll(esquemaCorrida.getEsquemaTramoList()); + Collections.sort(lsEsquemaTramo); + esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); + } + + public void clearCombobox(Combobox combobox) { + + int size = combobox.getItemCount(); + + for (int i = size - 1; i >= 0; i--) { + combobox.removeItemAt(i); + } + } + + public void popularCombobox(Combobox cmb) throws Exception { + + clearCombobox(cmb); + for (EsquemaCorrida.GerarFeriado p : EsquemaCorrida.GerarFeriado.values()) { + Comboitem comboItem = new Comboitem(p.descricao()); + comboItem.setValue(p.valor()); + comboItem.setParent(cmb); + } + + cmb.setSelectedIndex(0); + + } + + private void exibirDivision() { + if (ApplicationProperties.getInstance().isCustomHabilitado(CustomEnum.EXIBIR_DIVISION_CONFIGURACION_CORRIDA.getDescricao())) { + + lsDivision = divisionService.obtenerTodos(); + + lbDivision.setVisible(Boolean.TRUE); + cmbDivision.setVisible(Boolean.TRUE); + + } + } + + private void addTramoPardaEsquema(Parada parada, Short numsecuencia, Date tiempoEstancia, String plataforma, Date excepcionRecorrido, Date defautRecorrido, String tipoPassagem) { + ParadaEsquema ps = new ParadaEsquema(); + ps.setParada(parada); + ps.setNumsecuencia(numsecuencia); + ps.setTiempoEstancia(tiempoEstancia); + ps.setPlataforma(plataforma); + ps.setExcepcionRecorrido(excepcionRecorrido); + ps.setPadraoRecorrido(defautRecorrido); + ps.setTipoPassagem(tipoPassagem); + + lsParadaEsquema.add(ps); + } + + @SuppressWarnings("unused") + private void carregarParadaSecuencia(List lsEsquemaTramo) { + + ClaseServicio clase = esquemaCorrida.getClaseServicio(); + + lsParadaEsquema.clear(); + if (!lsEsquemaTramo.isEmpty()) { + List lsEsquemaTramoTodos = new ArrayList(); + if (esquemaCorrida.getEsquemacorridaId() != null) { + lsEsquemaTramoTodos = esquemaTramoService.obtenerAtivosDesativosPorEsquemaCorrida(esquemaCorrida); + } + + Short numsecuencia = 0; + + for (int i = 0; i < lsEsquemaTramo.size(); i++) { + + EsquemaTramo rs = lsEsquemaTramo.get(i); + + Tramo tramo = rs.getTramo(); + numsecuencia = rs.getNumsecuencia(); + Date tiempoEstancia = null; + if ((i != 0) && (i != (lsEsquemaTramo.size()))) { + tiempoEstancia = lsEsquemaTramo.get(i).getTiempoEstancia(); + } + + Date excepcionRecorrido = null; + if (i != (lsEsquemaTramo.size())) { + excepcionRecorrido = lsEsquemaTramo.get(i).getExcepcionRecorrido(); + } + + Date defautRecorrido = null; + if (clase != null) { + List lsTramoServicio = tramoServicioService.buscarPorTramoServico(tramo, clase); + + if (i != (lsEsquemaTramo.size())) { + if (!lsTramoServicio.isEmpty()) { + // soh eh permitido gravar um por classe, get(0): + defautRecorrido = lsTramoServicio.get(0).getTiemporecorrido(); + } + } + } + String tipoPassagem =""; + + Parada paradaOrigem = tramo.getOrigem(); + tipoPassagem = rs.getTipoPassagem(); + String plataforma = rs.getPlataforma(); + // So adicionar a parada se o EsquemaTramo estiver ativo. + if (rs.getActivo()) { + addTramoPardaEsquema(paradaOrigem, numsecuencia, tiempoEstancia, plataforma, excepcionRecorrido, defautRecorrido, tipoPassagem); + } + } + + EsquemaTramo esquemaTramoFinal = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1); + + Parada paradaDestino = esquemaTramoFinal.getTramo().getDestino(); + String tipoPassagem = ""; + String plataforma = txtPlataforma.getValue(); + + if(!isPrimeiraVez){ + if (sentado.isChecked()) { + tipoPassagem = "S"; + } else if (emPe.isChecked()) { + tipoPassagem = "P"; + } else if (naoVende.isChecked()) { + tipoPassagem = "N"; + } else { + tipoPassagem = "A"; + } + } + isPrimeiraVez = false; + Integer num = numsecuencia.intValue() + 1; + + addTramoPardaEsquema(paradaDestino, num.shortValue(), null, plataforma, null, null,tipoPassagem); + } + + esquemaTramoList.setData(lsParadaEsquema); + } + + Boolean salvar = true; + + @SuppressWarnings({ "deprecation", "unchecked" }) + public void onClick$btnSalvar(Event ev) throws InterruptedException { + + if(!salvar){ + return; + } + + salvar = false; + txtNumCorrida.getValue(); + Date dataDeFecInicioVigencia = fecniciovigencia.getValue(); + Date dataAteFecfinvigencia = fecfinvigencia.getValue(); + + if(!realizaValidacoes()) { + return; + } + + for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : lsEsquemaCorridaEmbarqueDesembarqueBorrar) { + if (esquemaCorridaEmbarqueDesembarque.getEsquemaCorridaEmbarqueDesembarqueId() != null) { + esquemaCorridaEmbarqueDesembarqueService.borrar(esquemaCorridaEmbarqueDesembarque); + } + } + + for (EsquemaCorridaInfo esquemaCorridaInfo : lsEsquemaCorridaInfoBorrar) { + if (esquemaCorridaInfo.getEsquemaCorridaInfoId() != null) { + esquemaCorridaInfoService.borrar(esquemaCorridaInfo); + } + } + //Imprimir ou não recibo BPE na embarcada + validaNaoImprimeBpe(dataAteFecfinvigencia); + + + try { + + dataAteFecfinvigencia.setSeconds(59); + + if(!validaEsquemaTramo(dataDeFecInicioVigencia, dataAteFecfinvigencia)) { + return; + } else { + salvaEsquemaCorrida(dataDeFecInicioVigencia); + } + + } catch (WrongValueException ex) { + throw (WrongValueException) ex; + } catch (Exception ex) { + log.error("", ex); + Messagebox.show(Labels.getLabel("MSG.Error").concat(" - ").concat(ex.toString()), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + } + } + + private void validaNaoImprimeBpe(Date dataAteFecfinvigencia) { + boolean isNaoImprimeBPE = esquemaCorrida.getIndNaoImprimeBpe() == null ? false : esquemaCorrida.getIndNaoImprimeBpe().equals("1"); + if(isNaoImprimeBPE) { + Date dataDeNaoImpBpe = horaIniNaoImpBpe.getValue(); + Date dataAteNaoImpBpe = horaFimNaoImpBpe.getValue(); + boolean isHoraValida = horaIniNaoImpBpe.getValue() == null || horaFimNaoImpBpe.getValue() == null ? false : true; + if(isHoraValida) { + dataDeNaoImpBpe.setSeconds(59); + dataAteFecfinvigencia.setSeconds(59); + if(dataDeNaoImpBpe.after(dataAteNaoImpBpe)) { + esquemaCorrida.setHoraIniNaoImpBPE(buscarHora(dataAteNaoImpBpe)); + esquemaCorrida.setHoraFimNaoImpBPE(buscarHora(dataDeNaoImpBpe)); + } else if(dataDeNaoImpBpe.before(dataAteNaoImpBpe)) { + esquemaCorrida.setHoraIniNaoImpBPE(buscarHora(dataDeNaoImpBpe)); + esquemaCorrida.setHoraFimNaoImpBPE(buscarHora(dataAteNaoImpBpe)); + } else { + esquemaCorrida.setIndNaoImprimeBpe("0"); + setSelecaoCboBPE(); + } + } else { + esquemaCorrida.setIndNaoImprimeBpe("0"); + setSelecaoCboBPE(); + } + } + + if (chkDoblePiso.isChecked()) { + txtNumCorridaPisoExtra.getValue(); + txtNumCorridaPisoExtra2.getValue(); + } + } + + private boolean validaEsquemaTramo(Date dataDeFecInicioVigencia, Date dataAteFecfinvigencia ) throws InterruptedException { + Comboitem ciRuta = cmbRuta.getSelectedItem(); + Ruta ruta = null; + if (ciRuta != null) { + ruta = (Ruta) ciRuta.getValue(); + } + + if (chkDoblePiso.isChecked() && !validarPisoExtra()) { + salvar = true; + return false; + } + + if (dataDeFecInicioVigencia.after(dataAteFecfinvigencia)) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.busquedaPeriodo"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + return false; + } + + if(ruta==null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaVazia"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + return false; + } + + if(lsEsquemaTramo.isEmpty()) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaSemTramos"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + return false; + + } + + if (esquemaCorrida.getClaseServicio() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Clase"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } else if (esquemaCorrida.getMarca() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Marca"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } else if (esquemaCorrida.getRuta() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Ruta"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + } else if (esquemaCorrida.getEmpresa() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Empresa"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } else if (esquemaCorrida.getEmpresa1() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Empresa1"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } else if (esquemaCorrida.getRolOperativo() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.Rol"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } + + return true; + } + + private void salvaEsquemaCorrida(Date dataDeFecInicioVigencia) throws InterruptedException { + //FlexBus + if(esquemaCorrida.getIsFlexBus()) { + esquemaCorrida.setHorasParaConfirmacao(txtHorasParaConfirmacao.getValue()); + esquemaCorrida.setMinutosParaConfirmacao(txtMinutosParaConfirmacao.getValue()); + esquemaCorrida.setOcupacaoMinima(txtOcupacaoMinima.getValue()); + } else { + esquemaCorrida.setHorasParaConfirmacao(null); + esquemaCorrida.setMinutosParaConfirmacao(null); + esquemaCorrida.setOcupacaoMinima(null); + } + + //Automacao Horario Extra + if(esquemaCorrida.getIsAutomacaoHorarioExtra()) { + esquemaCorrida.setHorasAutomacaoHEDe(txtHorasAutomacaoDE.getValue() == null ? 0 : txtHorasAutomacaoDE.getValue()); + esquemaCorrida.setMinutosAutomacaoHEDe(txtMinutosAutomacaoDE.getValue() == null ? 0 : txtMinutosAutomacaoDE.getValue()); + esquemaCorrida.setHorasAutomacaoHEAte(txtHorasAutomacaoATE.getValue() == null ? 0 : txtHorasAutomacaoATE.getValue()); + esquemaCorrida.setMinutosAutomacaoHEAte(txtMinutosAutomacaoATE.getValue() == null ? 0 : txtMinutosAutomacaoATE.getValue()); + esquemaCorrida.setTaxaOcupacao(txtOcupacaoHorarioExtra.getValue() == null ? 0 : txtOcupacaoHorarioExtra.getValue() ); + esquemaCorrida.setNumCorridaServicoExtra(txtNumCorridaExtraAuto.getValue()); + + esquemaCorrida.setHorasalidaExtra(buscarHora(esquemaCorrida.getHorasalidaExtra())); + } + + if (porBloq.isChecked()) { + de.getValue(); + hasta.getValue(); + minutos.getValue(); + } else { + horasalida.getValue(); + } + + esquemaCorrida.setInfoCorrida(txtInfoCorrida.getValue()); + esquemaCorrida.setIndCorridaExtra(chkCorridaExtra.isChecked()); + esquemaCorrida.setNumCorrida(txtNumCorrida.getValue()); + esquemaCorrida.setActivo(Boolean.TRUE); + esquemaCorrida.setFecmodif(Calendar.getInstance().getTime()); + esquemaCorrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + esquemaCorrida.setIndBloqueiaWebAposSaida(chkBloqueiaCorridaWebAposSaida.isChecked()); + + esquemaCorrida.setDiagramaAutobusId(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId().intValue()); + + if (cmbIndGeneraFeriado.getSelectedItem() != null) { + esquemaCorrida.setIndGeneraFeriado((String) cmbIndGeneraFeriado.getSelectedItem().getValue()); + } + + if (latente.isChecked()) { + esquemaCorrida.setStatusCorrida("L"); + } else if (autorizada.isChecked()) { + esquemaCorrida.setStatusCorrida("A"); + } else { + esquemaCorrida.setStatusCorrida("C"); + } + + if (fletes.isChecked()) { + esquemaCorrida.setTipocorrida("F"); + } else if (viajesEspeciales.isChecked()) { + esquemaCorrida.setTipocorrida("S"); + } else if (transportePasajeros.isChecked()) { + esquemaCorrida.setTipocorrida("P"); + } + + // nao gravar segundos: + esquemaCorrida.setHorasalida(buscarHora(esquemaCorrida.getHorasalida())); + + List lsEC = Collections.EMPTY_LIST; + + if (esquemaCorrida.getEsquemacorridaId() == null) { + salvaNovoEsquemaCorrida(dataDeFecInicioVigencia, lsEC); + } else { + atualizaDadosEsquemaCorrida(lsEC); + } + } + + private void atualizaDadosEsquemaCorrida(List lsEC) throws InterruptedException { + boolean podeSalvar = false; + if ((lsEC.isEmpty())) { + podeSalvar = true; + } else { + for (EsquemaCorrida ec : lsEC) { + if (ec.getEsquemacorridaId().equals(esquemaCorrida.getEsquemacorridaId())) { + podeSalvar = true; + } + } + } + if (podeSalvar) { + if (!chkDoblePiso.isChecked()) { + esquemaCorrida.setNumCorridaPisoExtra(null); + } + esquemaCorridaService.actualizacion(esquemaCorrida); + esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida); + if(Boolean.TRUE.equals(isAlteraCorridaJaGerada)) { + validaRealizaGeracaoCorrida(); + } + + esquemaCorridaList.updateItem(esquemaCorrida); + + } else { + Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + } + + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.suscribirOK"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.INFORMATION); + + closeWindow(); + } + + private void validaRealizaGeracaoCorrida() { + try { + LocalDate inicioLocalDate = dataInicialFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + LocalDate fimLocalDate = dataFinalFiltroCorridaExistente.toInstant().atZone(ZoneId.systemDefault()).toLocalDate().plusDays(1); + List tarefaSucesso = new ArrayList(); + List tarefaErros = new ArrayList(); + for (LocalDate date = inicioLocalDate; date.isBefore(fimLocalDate); date = date.plusDays(1)) { + Date dataIter = Date.from(date.atStartOfDay(ZoneId.systemDefault()).toInstant()); + try { + + List lsParadaEsquemaRemovidas = new ArrayList(); + List lsParadaEsquemaEditadas =new ArrayList(); + preencheParadaEsquemaRemovidaEEditada(lsParadaEsquemaRemovidas, lsParadaEsquemaEditadas); + + List lsParadaEsquemaAdicionadasRemovidasOuEditadas = new ArrayList() ; + if(lsParadaEsquemaEditadas!=null) { + lsParadaEsquemaAdicionadasRemovidasOuEditadas.addAll(lsParadaEsquemaEditadas); + } + if(lsParadaEsquemaRemovidas!=null) { + lsParadaEsquemaAdicionadasRemovidasOuEditadas.addAll(lsParadaEsquemaRemovidas); + } + + List localidadeComVenda =null; + for (ParadaEsquema paradaEsquema : lsParadaEsquemaAdicionadasRemovidasOuEditadas) { + if(boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorrida(), dataIter, paradaEsquema.getParada().getParadaId(), paradaEsquema.getParada().getParadaId())) { + if(localidadeComVenda == null) { + localidadeComVenda = new ArrayList(); + } + localidadeComVenda.add(paradaEsquema); + String msgErro = "Trecho com origem/destino: " + paradaEsquema.getParada().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); + } + + } + List corridaTramoList = null; + //Se nenhuma localidade editada tem venda, recria todos os corridas tramos da corrida + if(localidadeComVenda==null || localidadeComVenda.isEmpty()) { + corridaTramoList = corridaTramoService.recriaCorridaTramo(esquemaCorrida, dataIter, lsEsquemaTramo ); + String msgSucesso = "Corrida para a data " + DateUtil.getStringDate(dataIter) + " gerada com sucesso"; + TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgSucesso, "OK", "OK" ); + tarefaSucesso.add(tarefa); + + }else { + List lsEsquemaTramoIter = new ArrayList(); + List localidadeComVendaIter = new ArrayList(); + localidadeComVendaIter.addAll(lsParadaEsquema); + for (ParadaEsquema paradaEsquemaComVenda : localidadeComVenda) { + List listParadaEsquemaComNovaParada = new ArrayList(); + lsEsquemaTramoIter = adicionarParadaEsquemaTramo(localidadeComVendaIter,paradaEsquemaComVenda.getParada() , esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), paradaEsquemaComVenda.getPlataforma(), paradaEsquemaComVenda.getTipoPassagem(), listParadaEsquemaComNovaParada); + localidadeComVendaIter = listParadaEsquemaComNovaParada; + } + corridaTramoList = corridaTramoService.recriaCorridaTramo(esquemaCorrida, dataIter, lsEsquemaTramoIter ); + } + + //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 esquemaCorridaList = new ArrayList(); + esquemaCorridaList.add(esquemaCorrida); + corridaService.generarCorrida(dataIter, esquemaCorridaList, false, corridaTramoList); + + + + }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); + TarefaGeracaoCorridaVO tarefa = new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + tarefaErros.add(tarefa); + } + } + + Map args = new HashMap(); + dataInicialFiltroCorridaExistente = new Date(); + dataFinalFiltroCorridaExistente = new Date(); + args.put("tarfaSucesso", tarefaSucesso); + args.put("tarefaErros", tarefaErros); + Window dialog = (Window)Executions.createComponents( + "/gui/esquema_operacional/logGeracaoCorridaViaConfServico.zul", null, args); + + dialog.doModal(); + }catch (InterruptedException e) { + log.error("Erro ao gerar corrida para a corrida: " + esquemaCorrida.getNumCorrida()); + } + } + + + /** + * Preenche a lista de paradas removidas e a lista de paradas Editadas + * + * @param lsParadaEsquemaRemovidas + * @param lsParadaEsquemaEditadas + */ + private void preencheParadaEsquemaRemovidaEEditada(List lsParadaEsquemaRemovidas, List lsParadaEsquemaEditadas) { + for (ParadaEsquema paradaEsquemaAntiga : lsParadaEsquemaOrignal) { + boolean isParadaEsquemaNaoRemovida = false; + for (ParadaEsquema paradaEsquemaNova : lsParadaEsquema) { + if(paradaEsquemaNova.equals(paradaEsquemaAntiga)) { + isParadaEsquemaNaoRemovida = true; + ParadaEsquema paradaEsquemaEditada = validaParadaEsquemaEditada(paradaEsquemaAntiga, paradaEsquemaNova); + if(paradaEsquemaEditada !=null) { + if(lsParadaEsquemaEditadas==null) { + lsParadaEsquemaEditadas = new ArrayList(); + } + lsParadaEsquemaEditadas.add(paradaEsquemaEditada); + } + break; + } + } + //Se isParadaEsquemaNaoRemovida=false a parada esquema foi removida, adiciona na lista. + if(!isParadaEsquemaNaoRemovida) { + if(lsParadaEsquemaRemovidas == null) { + lsParadaEsquemaRemovidas = new ArrayList(); + } + lsParadaEsquemaRemovidas.add(paradaEsquemaAntiga); + } + } + } + + /** + * Se editou retorna a parada se não retorna nulo + * @param paradaEsquemaAntiga + * @param paradaEsquemaNova + * @return + */ + private ParadaEsquema validaParadaEsquemaEditada(ParadaEsquema paradaEsquemaAntiga, ParadaEsquema paradaEsquemaNova ) { + boolean isParadaEsquemaEditada = false; + //verifica se editou tiempoEstancia + if(paradaEsquemaAntiga.getTiempoEstancia()!=null && paradaEsquemaNova.getTiempoEstancia()!=null + && !paradaEsquemaAntiga.getTiempoEstancia().equals(paradaEsquemaNova.getTiempoEstancia())) { + isParadaEsquemaEditada = true; + } + //verifica se editou excepcionRecorrido + if(paradaEsquemaAntiga.getExcepcionRecorrido()!=null && paradaEsquemaNova.getExcepcionRecorrido()!=null + && !paradaEsquemaAntiga.getExcepcionRecorrido().equals(paradaEsquemaNova.getExcepcionRecorrido())) { + isParadaEsquemaEditada = true; + } + //Verifica se editou Tipo passagem + if(paradaEsquemaAntiga.getTipoPassagem()!=null && paradaEsquemaNova.getTipoPassagem()!=null + && !paradaEsquemaAntiga.getTipoPassagem().equals(paradaEsquemaNova.getTipoPassagem())) { + isParadaEsquemaEditada = true; + } + //Verifica se editou Tipo PLataforma + if(paradaEsquemaAntiga.getPlataforma()!=null && paradaEsquemaNova.getPlataforma()!=null + && !paradaEsquemaAntiga.getPlataforma().equals(paradaEsquemaNova.getPlataforma())) { + isParadaEsquemaEditada = true; + } + //Se editou retorna a parada se não retorna nulo + if(isParadaEsquemaEditada) { + return paradaEsquemaNova; + + } + return null; + } + + 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 ativa e habilitada:" + esquemaCorrida.getNumCorrida() + " para a data:" + DateUtil.getStringDate(dataIter); + log.error("Geração de corrida via Conf. " + msgErro); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + } + + try { + inativaCorridaETabelasRelacionadas(corrida); + }catch (Exception e) { + String msgErro = "Erro ao inativar corrida e tabelas relacionadas. Favor verificar "; + log.error("Geração de corrida via Conf. " + msgErro, e); + return new TarefaGeracaoCorridaVO(msgErro, "ERRO", "ERRO"); + + } + return null; + } + + /** + * Inativa a corrida e a realção dela com as seguintes tabelas: Corrida_Info, ASIENTO_EXCLUSIVO, Disponibilidad, INTEGRACAO_TOTVS_CORRIDA e corrida + * @param corrida + */ + private void inativaCorridaETabelasRelacionadas(Corrida corrida) { + corridaInfoService.borrarByCorrida(corrida); + asientoExclusivoService.borrarByCorrida(corrida); + disponibilidadService.borrarByCorrida(corrida); + integracaoTotvsService.borrarByCorrida(corrida); + corridaService.borrar(corrida); + } + + private void salvaNovoEsquemaCorrida(Date dataDeFecInicioVigencia, List lsEC) + throws InterruptedException { + Calendar agora = Calendar.getInstance(); + agora.set(agora.get(Calendar.YEAR), agora.get(Calendar.MONTH), agora.get(Calendar.DATE), + NumberUtils.INTEGER_ZERO, NumberUtils.INTEGER_ZERO, NumberUtils.INTEGER_ZERO); + + dataDeFecInicioVigencia.setSeconds(01); + if (dataDeFecInicioVigencia.before(agora.getTime())) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.fecha"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + } else { + if (lsEC.isEmpty()) { + Boolean existeNumCorrida = true; + + EsquemaCorrida ecor = esquemaCorridaService.buscarPeloNumCorrida(esquemaCorrida.getNumCorrida()); + existeNumCorrida = ecor != null; + + if ((!existeNumCorrida) && !(esquemaCorrida.getNumCorrida().equals(esquemaCorrida.getNumCorridaPisoExtra()))) { + if (porBloq.isChecked()) { + Date des = de.getValue(); + Date has = hasta.getValue(); + has.setSeconds(1); + EsquemaOperacional eo = new EsquemaOperacional(); + Integer numCorrida = esquemaCorrida.getNumCorrida(); + while (des.before(has)) { + EsquemaCorrida ec = new EsquemaCorrida(); + eo.setActivo(Boolean.TRUE); + eo.setFecmodif(Calendar.getInstance().getTime()); + eo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + Date horaSalida = new Date(); + horaSalida.setHours(des.getHours()); + horaSalida.setMinutes(des.getMinutes()); + horaSalida.setSeconds(0); + + ec.setActivo(Boolean.TRUE); + ec.setFecmodif(Calendar.getInstance().getTime()); + ec.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + ec.setClaseServicio(esquemaCorrida.getClaseServicio()); + ec.setEmpresa(esquemaCorrida.getEmpresa()); + ec.setEmpresa1(esquemaCorrida.getEmpresa1()); + + eo.setFecniciovigencia(esquemaCorrida.getEsquemaOperacional().getFecniciovigencia()); + eo.setFecfinvigencia(esquemaCorrida.getEsquemaOperacional().getFecfinvigencia()); + + ec.setEsquemaOperacional(eo); + ec.setMarca(esquemaCorrida.getMarca()); + ec.setRolOperativo(esquemaCorrida.getRolOperativo()); + ec.setDiagramaAutobusId(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId().intValue()); + ec.setRuta(esquemaCorrida.getRuta()); + ec.setInddomingo(esquemaCorrida.getInddomingo()); + ec.setIndjueves(esquemaCorrida.getIndjueves()); + ec.setIndlunes(esquemaCorrida.getIndlunes()); + ec.setIndmartes(esquemaCorrida.getIndmartes()); + ec.setIndmiercoles(esquemaCorrida.getIndmiercoles()); + ec.setIndsabado(esquemaCorrida.getIndsabado()); + ec.setIndviernes(esquemaCorrida.getIndviernes()); + ec.setStatusCorrida(esquemaCorrida.getStatusCorrida()); + ec.setTipocorrida(esquemaCorrida.getTipocorrida()); + ec.setCantparados(esquemaCorrida.getCantparados()); + ec.setInfoCorrida(esquemaCorrida.getInfoCorrida()); + ec.setHorasalida(horaSalida); + ec.setIndGeneraFeriado(esquemaCorrida.getIndGeneraFeriado()); + + ec.setPisoExtra(esquemaCorrida.getPisoExtra()); + + + // Salva + Boolean existeNumCorridaBloco = true; + while (existeNumCorridaBloco) { + existeNumCorridaBloco = esquemaCorridaService.buscarNumCorrida(numCorrida, null,false); + ec.setNumCorrida(numCorrida); + numCorrida = numCorrida + 1; + } + ec = esquemaCorridaService.suscribir(ec); + esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, ec); + + // Acrescenta Minutos na Hora + des.setMinutes(des.getMinutes() + minutos.getValue()); + } + } else { + EsquemaOperacional eo = new EsquemaOperacional(); + eo.setFecmodif(new Date()); + eo.setUsuarioId(esquemaCorrida.getEsquemaOperacional().getUsuarioId()); + eo.setActivo(Boolean.TRUE); + eo.setFecniciovigencia(fecniciovigencia.getValue()); + eo.setFecfinvigencia(fecfinvigencia.getValue()); + esquemaCorrida.setEsquemaOperacional(eo); + esquemaCorridaService.suscribir(esquemaCorrida); + + esquemaCorridaService.actualizaEsquemaTramo(lsParadaEsquema, esquemaCorrida); + } + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.suscribirOK"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.INFORMATION); + busquedaCorridaController.refreshLista(); + closeWindow(); + } else { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.NumCorrida"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + salvar = true; + } + } else { + Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + } + } + } + + @SuppressWarnings("unchecked") + private boolean realizaValidacoes() throws InterruptedException { + + if(lsParadaEsquema!=null && !lsParadaEsquema.isEmpty()) { + int resp = Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.desajaAlterarCorridaJaGeradas"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); + + if (resp == Messagebox.YES) { + //chama poupup com filtro de data + try { + @SuppressWarnings("rawtypes") + Map args = new HashMap(); + dataInicialFiltroCorridaExistente = new Date(); + dataFinalFiltroCorridaExistente = new Date(); + args.put("dataInicial", dataInicialFiltroCorridaExistente); + args.put("dataFinal", dataFinalFiltroCorridaExistente); + + Window dialog = (Window)Executions.createComponents( + "/gui/esquema_operacional/filtroDataEdicaoCorrida.zul", null, args); + Button okBtn = (Button) dialog.getFellow("okBtn"); + + okBtn.addEventListener("onClick", new EventListener() { + @Override + public void onEvent(Event event) throws Exception { + try{ + Datebox fecInicial = (Datebox) dialog.getFellow("fecInicio"); + dataInicialFiltroCorridaExistente = fecInicial.getValue(); + Datebox fecFinal = (Datebox) dialog.getFellow("fecFinal"); + dataFinalFiltroCorridaExistente = fecFinal.getValue(); + if(DateUtil.diferencaEntreDatasEmdias(dataInicialFiltroCorridaExistente, dataFinalFiltroCorridaExistente) > PERIODO_MAXIMO_90_DIAS) { + String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoPeriodoMaximo"); + Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);; + return; + } + if(DateUtil.isMenor(dataFinalFiltroCorridaExistente, dataInicialFiltroCorridaExistente)) { + String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataFinalMenorDataInicial"); + Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION);; + return; + } + isAlteraCorridaJaGerada = Boolean.TRUE; + }catch(Exception e){ + log.error("Erro ao obter data", e); + } + dialog.detach(); + } + }); + dialog.doModal(); + + }catch (Exception e) { + String msg = Labels.getLabel("MSG.Error.editarConfiguracionCorridaController.erroValidacaoDataEdicaoCorridaExistentes") + e.getMessage(); + Messagebox.show(msg, Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); + log.error(msg, e); + isAlteraCorridaJaGerada = Boolean.FALSE; + } + }else { + isAlteraCorridaJaGerada = Boolean.FALSE; + } + + } + + //Linha Destaivada + if (esquemaCorrida.getRuta().getIndRutaCancelada()) { + Messagebox.show(Labels.getLabel("editarCatalogoDeRutaController.msg.rutaDesativadaId") + .concat(" " + esquemaCorrida.getRuta().getRutaId()+" ") + .concat(Labels.getLabel("editarCatalogoDeRutaController.msg.rutaDesativadaIdPt2"))); + salvar = true; + return false; + } + + + //FlexBus + if(esquemaCorrida.getIsFlexBus() && (txtHorasParaConfirmacao.getValue() == null || txtMinutosParaConfirmacao.getValue() == null || txtOcupacaoMinima.getValue() == null)) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.inserirInformacoesFlexBus"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); + salvar = true; + return false; + } + + //Automacao Horario Extra + if(esquemaCorrida.getIsAutomacaoHorarioExtra() && (txtHorasAutomacaoDE.getValue() == null || txtOcupacaoHorarioExtra.getValue() == null )) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.inserirInformacoesAutomacaoHorarioExtra"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.EXCLAMATION); + salvar = true; + return false; + } + + String numCorridaString = txtNumCorrida.getValue().toString(); + Integer maxSizeNumCorrida = ApplicationProperties.getInstance().maxSizeNumCorrida(); + if (maxSizeNumCorrida != -1) { + if (numCorridaString.length() > maxSizeNumCorrida) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.maxSizeNumCorrida").replace("@size", maxSizeNumCorrida.toString()), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + salvar = true; + return false; + } + } + + if(esquemaCorrida.getIsAutomacaoHorarioExtra() && !validarCorridaExtraAutomatica()) { + salvar = true; + return false; + } + return true; + } + + private Date buscarHora(Date horasalidaExtra) { + if (horasalidaExtra != null) { + GregorianCalendar gHoraSalida = new GregorianCalendar(); + gHoraSalida.setTime(horasalidaExtra); + gHoraSalida.set(Calendar.SECOND, 0); + gHoraSalida.set(Calendar.MILLISECOND, 0); + gHoraSalida.set(Calendar.MONTH, 01); + gHoraSalida.set(Calendar.DAY_OF_MONTH, 01); + gHoraSalida.set(Calendar.YEAR, 1970); + + return gHoraSalida.getTime(); + } + + return null; + } + + public void onClick$btnApagar(Event ev) { + try { + int resp = Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.borrarPergunta"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.YES | Messagebox.NO, Messagebox.QUESTION); + + if (resp == Messagebox.YES) { + esquemaCorridaService.borrar(esquemaCorrida); + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.borrarOK"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.INFORMATION); + + esquemaCorridaList.removeItem(esquemaCorrida); + + closeWindow(); + } + } catch (Exception ex) { + log.error("", ex); + } + } + + public void onClick$btnAdicionarTramo(Event ev) { + try { + if (cmbTramo.getSelectedItem() != null) { + String plataforma = txtPlataforma.getValue(); + String tipoPassagem = null; + + if (sentado.isChecked()) { + tipoPassagem = "S"; + } else if (emPe.isChecked()) { + tipoPassagem = "P"; + } else if (naoVende.isChecked()) { + tipoPassagem = "N"; + } else { + tipoPassagem = "A"; + } + + + + // Ruta Secuencia + Parada paradaAlterada = (Parada) cmbTramo.getSelectedItem().getValue(); + List listParadaEsquemaComNovaParada = new ArrayList(); + lsEsquemaTramo = adicionarParadaEsquemaTramo(lsParadaEsquema,paradaAlterada , esquemaCorrida, (Ruta) cmbRuta.getSelectedItem().getValue(), plataforma, tipoPassagem, listParadaEsquemaComNovaParada); + esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); + carregarParadaSecuencia(lsEsquemaTramo); + cmbTramo.setSelectedItem(null); + selecionarRutaSequenciaForaEsqCorrida(); + + txtPlataforma.setValue(""); + + + } + } catch (Exception e) { + log.error("ESQ CORRIDA - Erro ao adicionar tramo: " + e, e); + e.printStackTrace(); + onClick$btnAdicionarTramo(null); + } + } + + /** + * Selecciona las paradas que no estan en la secuencia de la ruta + */ + @SuppressWarnings("unchecked") + private void selecionarRutaSequenciaForaEsqCorrida() { + if (lsTramosRutaEsquemaCorrida == null) { + lsTramosRutaEsquemaCorrida = new ArrayList(); + } + lsTramosRutaEsquemaCorrida.clear(); + + // Ruta Secuencia + Ruta ruta = esquemaCorrida.getRuta(); + ruta = rutaService.obtenerID(ruta.getRutaId()); + lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); + + // Selecciona solamente la secuencia de paradas de los tramos de la + // secuencia de la ruta + List lstPardasRuta = new ArrayList(); + for (RutaSecuencia rs : lsRutaSecuencia) { + Tramo tramoRS = rs.getTramo(); + lstPardasRuta.add(tramoRS.getOrigem()); + } + if (!lsRutaSecuencia.isEmpty()) { + lstPardasRuta.add(lsRutaSecuencia.get(lsRutaSecuencia.size() - 1).getTramo().getDestino()); + } + + // Selecciona solamente la secuencia de paradas de lo esquemTramo + List lstPardasTramos = new ArrayList(); + for (EsquemaTramo et : lsEsquemaTramo) { + if (et.getTramo() != null) { + Tramo tramoET = et.getTramo(); + lstPardasTramos.add(tramoET.getOrigem()); + } + } + + if (!lsEsquemaTramo.isEmpty()) { + lstPardasTramos.add(lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino()); + } + + if (lsTramos == null) { + lsTramos = new ArrayList(); + } + lsTramos.clear(); + + lsTramos.addAll(CollectionUtils.subtract(lstPardasRuta, lstPardasTramos)); + BindingListModelList listModelTramo = new BindingListModelList( + lsTramos, true); + cmbTramo.setModel(listModelTramo); + cmbParadaOrigem.setModel(new BindingListModelList( lstPardasRuta, true)); + cmbParadaDestino.setModel(new BindingListModelList( lstPardasRuta, true)); + } + + private void selecionarRuta() { + // Ruta Secuencia + Comboitem ciRuta = cmbRuta.getSelectedItem(); + Ruta ruta = null; + if (ciRuta != null) { + ruta = (Ruta) ciRuta.getValue(); + } + + try { + if (ruta != null) { + ruta = rutaService.obtenerID(ruta.getRutaId()); + lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); + + lsEsquemaTramo = new ArrayList(); + esquemaTramoList.setData(lsParadaEsquema); + + for (RutaSecuencia rs : lsRutaSecuencia) { + EsquemaTramo et = new EsquemaTramo(); + et.setActivo(Boolean.TRUE); + et.setFecmodif(Calendar.getInstance().getTime()); + et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + et.setNumsecuencia(rs.getNumsecuencia()); + et.setTramo(rs.getTramo()); + et.setEsquemaCorrida(esquemaCorrida); + + // Somente quando muda a seleção da Ruta. + lsEsquemaTramo.add(et); + } + + esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); + carregarParadaSecuencia(lsEsquemaTramo); + selecionarRutaSequenciaForaEsqCorrida(); + esquemaTramoList.setData(lsParadaEsquema); + + lsRutaEmbarqueDesembarque = rutaEmbarqueDesembarqueService.obtenerPorRuta(ruta); + if (esquemaCorrida.getEsquemacorridaId() == null) { + for (RutaEmbarqueDesembarque rutaEmbarqueDesembarque : lsRutaEmbarqueDesembarque) { + selectEsquemaCorridaEmbarqueDesembarque(rutaEmbarqueDesembarque); + } + } + BindingListModelList listModelParadaEmbarqueDesembarque = new BindingListModelList( + lsRutaEmbarqueDesembarque, true); + cmbEmbarqueDesembarque.setModel(listModelParadaEmbarqueDesembarque); + + } else { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.RutaVazia"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } + } catch (Exception ex) { + log.error("", ex); + } + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + private void verTempoEstanciaTramo(EsquemaTramo et, ParadaEsquema pe, Short sequenciaSize) { + if (et == null) { + return; + } + + Map args = new HashMap(); + args.put("esquemaTramo", et); + args.put("paradaEsquema", pe); + args.put("esquemaTramoList", esquemaTramoList); + args.put("sequenciaSize", sequenciaSize); + + openWindow("/gui/esquema_operacional/tiempoEstanciaTramo.zul", + Labels.getLabel("editarCatalogoDeRutaController.lhTiempoEstancia"), args, MODAL); + } + + public void onChange$cmbRuta(Event ev) { + selecionarRuta(); + } + + public void onClick$btnRemoverTramo(Event ev) { + try { + ParadaEsquema pe = new ParadaEsquema(); + try { + pe = (ParadaEsquema) esquemaTramoList.getSelected(); + } catch (Exception e) { + log.error("Erro ao aliminar ruta do esquemaTramo: " + e, e); + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.selectItem"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } + if (pe != null) { + boolean podeExcluir = false; + if (lsParadaEsquema.size() > 2) { + for (int i = 0; i < lsParadaEsquema.size(); i++) { + if (lsParadaEsquema.get(i).getParada().equals(pe.getParada())) { + ParadaEsquema paradaEsquema = lsParadaEsquema.get(i); + lsParadaEsquema.remove(paradaEsquema); + log.debug("Esquema Tramo Removida: " + paradaEsquema.getNumsecuencia() + " - " + paradaEsquema.getParada().getCveparada()); + esquemaTramoList.setData(lsParadaEsquema); + podeExcluir = true; + break; + } + } + } + if (podeExcluir) { + String ok = esquemaTramoCorrecto(lsParadaEsquema); + if (ok != null) { + Messagebox.show(ok, + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + return; + } + } + } else { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.selectItem"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + } + lsEsquemaTramo = generaEsquemaTramoCorrecto(lsParadaEsquema, esquemaCorrida); + selecionarRutaSequenciaForaEsqCorrida(); + + } catch (Exception e) { + log.error("Erro ao remover secuencia da ruta " + e.getMessage(), e); + } + } + + /** + * Checo se el nuevo reajuste de secuencia quedo valido. O sea, checo se existe en tramo en la tabla ruta_combinacion + * + * @param lsParadaEsquema + * - La nueva lista de secuecia (ya con el cambio hecho) + * @return - True se esta correcto False se no esta correcto + */ + private String esquemaTramoCorrecto(List lsParadaEsquema) { + boolean hayTramo = true; + + Parada paradaOrigen = null; + Parada paradaDestino = null; + + for (int i = 0; (i < lsParadaEsquema.size() - 1) && hayTramo; i++) { + paradaOrigen = lsParadaEsquema.get(i).getParada(); + paradaDestino = lsParadaEsquema.get(i + 1).getParada(); + + Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); + + hayTramo = (t == null) ? false : true; + } + + return (hayTramo) ? null : "No existe el tramo: " + + paradaOrigen.getDescparada() + " - " + + paradaDestino.getDescparada(); + } + + /** + * Hago la combinacion correcta en esquemacorrida asi como esta en la lista de parada + * + * @param listParadaEsquema + * @param ec + */ + private List generaEsquemaTramoCorrecto( + List listParadaEsquema, EsquemaCorrida ec) { + List result = new ArrayList(); + + for (int i = 0; (i < listParadaEsquema.size() - 1); i++) { + Parada paradaOrigen = listParadaEsquema.get(i).getParada(); + Parada paradaDestino = listParadaEsquema.get(i + 1).getParada(); + + Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); + + EsquemaTramo et = new EsquemaTramo(); + et.setActivo(Boolean.TRUE); + et.setEsquemaCorrida(ec); + et.setFecmodif(Calendar.getInstance().getTime()); + et.setNumsecuencia((short) (i + 1)); + et.setTiempoEstancia(listParadaEsquema.get(i + 1).getTiempoEstancia()); + et.setTramo(t); + et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + + result.add(et); + } + + return result; + } + + private List adicionarParadaEsquemaTramo( + List listParadaEsquema, Parada novaParada, + EsquemaCorrida ec, Ruta ruta, String plataforma, String tipoPassagem, List listParadaEsquemaComNovaParada) { + List result = new ArrayList(); + + lsRutaSecuencia = rutaSecuenciaService.buscarSecuenciaOrdenado(ruta); + + + + + Short secuencia = 0; + boolean nuevoAgregado = false; + boolean noExisteTramoAsociado = listParadaEsquema.isEmpty();// es la + // primera + // vez + Integer indiceSecuencia = null; + for (int i = 0; i < lsRutaSecuencia.size(); i++) { + RutaSecuencia rutaSecuencia = lsRutaSecuencia.get(i); + if (rutaSecuencia.getTramo().getOrigem().equals(novaParada)) { + ParadaEsquema paradaEsquema = new ParadaEsquema(); + paradaEsquema.setActivo(Boolean.TRUE); + secuencia++; + paradaEsquema.setNumsecuencia(secuencia); + paradaEsquema.setParada(novaParada); + paradaEsquema.setPlataforma(plataforma); + paradaEsquema.setTipoPassagem(tipoPassagem); + listParadaEsquemaComNovaParada.add(paradaEsquema); + nuevoAgregado = true; + indiceSecuencia = i; + } else { + if (!listParadaEsquema.isEmpty()) { + if (rutaSecuencia.getTramo().getOrigem().equals(listParadaEsquema.get(0).getParada())) { + secuencia++; + listParadaEsquema.get(0).setNumsecuencia(secuencia); + listParadaEsquemaComNovaParada.add(listParadaEsquema.get(0)); + listParadaEsquema.remove(0); + + } + } + } + } + + if (noExisteTramoAsociado) { + if (indiceSecuencia != null) { + if ((lsRutaSecuencia.size() - 1) > indiceSecuencia) { + RutaSecuencia rutaSecuencia = lsRutaSecuencia.get(indiceSecuencia); + ParadaEsquema paradaEsquema = new ParadaEsquema(); + paradaEsquema.setActivo(Boolean.TRUE); + secuencia++; + paradaEsquema.setNumsecuencia(secuencia); + paradaEsquema.setParada(rutaSecuencia.getTramo().getDestino()); + paradaEsquema.setPlataforma(plataforma); + listParadaEsquemaComNovaParada.add(paradaEsquema); + } + } + } + if (!nuevoAgregado) { + ParadaEsquema paradaEsquema = new ParadaEsquema(); + paradaEsquema.setActivo(Boolean.TRUE); + secuencia++; + paradaEsquema.setNumsecuencia(secuencia); + paradaEsquema.setParada(novaParada); + paradaEsquema.setPlataforma(plataforma); + paradaEsquema.setTipoPassagem(tipoPassagem); + + listParadaEsquemaComNovaParada.add(paradaEsquema); + } + if (!listParadaEsquema.isEmpty()) { + secuencia++; + listParadaEsquema.get(0).setNumsecuencia(secuencia); + listParadaEsquemaComNovaParada.add(listParadaEsquema.get(0)); + listParadaEsquema.remove(0); + } + + for (int i = 0; (i < listParadaEsquemaComNovaParada.size() - 1); i++) { + Parada paradaOrigen = listParadaEsquemaComNovaParada.get(i).getParada(); + Parada paradaDestino = listParadaEsquemaComNovaParada.get(i + 1).getParada(); + + Tramo t = rutaCombinacionService.busqueda((Ruta) cmbRuta.getSelectedItem().getValue(), paradaOrigen, paradaDestino); + + if(t==null) { + List lsr = rutaSecuenciaService.buscarSecuenciaOrdenado((Ruta) cmbRuta.getSelectedItem().getValue()); + for(RutaSecuencia s : lsr) { + if(s.tieneOrigen(paradaOrigen.getParadaId()) && s.tieneDestino(paradaDestino.getParadaId())) { + t = s.getTramo(); + break; + } + } + } + + EsquemaTramo et = new EsquemaTramo(); + et.setActivo(Boolean.TRUE); + et.setEsquemaCorrida(ec); + et.setFecmodif(Calendar.getInstance().getTime()); + et.setNumsecuencia((short) (i + 1)); + et.setTiempoEstancia(listParadaEsquemaComNovaParada.get(i + 1).getTiempoEstancia()); + et.setTramo(t); + et.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + et.setPlataforma(listParadaEsquemaComNovaParada.get(i).getPlataforma()); + et.setTipoPassagem(listParadaEsquemaComNovaParada.get(i).getTipoPassagem()); + + result.add(et); + } + + return result; + } + + public void onChange$cmbClase(InputEvent ev) { + + if (ev.isChangingBySelectBack()) { + return; + } + + llenarRutasPorClase(); + llenarMarcaPorClaseServicio(); + } + + private void llenarRutasPorClase() { + if (esquemaCorrida.getClaseServicio() == null) { + return; + } + cmbMarca.setConstraint(""); + if (cmbMarca.getSelectedItem() == null) { + lsRuta = rutaService.buscarPorClaseServicio(esquemaCorrida.getClaseServicio()); + } else { + lsRuta = rutaService.buscarPorClaseServicioEmpresa(esquemaCorrida.getClaseServicio(), ((Marca) cmbMarca.getSelectedItem().getValue()).getEmpresa()); + } + cmbMarca.setConstraint("no empty"); + + // caso o usuario tenha mudado a classeServicio da ruta + if (esquemaCorrida.getEsquemacorridaId() != null && esquemaCorrida.getRuta() != null && !lsRuta.contains(esquemaCorrida.getRuta())) { + lsRuta.add(esquemaCorrida.getRuta()); + } + + BindingListModelList l = new BindingListModelList(lsRuta, true); + cmbRuta.setModel(l); + } + + private void llenarMarcaPorClaseServicio() { + if (esquemaCorrida.getClaseServicio() == null) { + return; + } + lsMarca = marcaClaseServicioService.buscarPorEmpresasPermitidas(esquemaCorrida.getClaseServicio(), UsuarioLogado.getUsuarioLogado()); + BindingListModelList l = new BindingListModelList(lsMarca, true); + cmbMarca.setModel(l); + } + + public void onChange$cmbMarca(InputEvent ev) { + + if (ev.isChangingBySelectBack()) { + return; + } + llenarRutasPorClaseMarca(); + } + + public void llenarRutasPorClaseMarca() { + if (esquemaCorrida.getClaseServicio() == null + || esquemaCorrida.getMarca() == null) { + return; + } + lsRuta = rutaService.buscarPorClaseServicioEmpresa(esquemaCorrida.getClaseServicio(), esquemaCorrida.getMarca().getEmpresa()); + BindingListModelList l = new BindingListModelList(lsRuta, true); + cmbRuta.setModel(l); + lsEmpresa.clear(); + for (Empresa e : UsuarioLogado.getUsuarioLogado().getEmpresa()) { + if (e.getEmpresaId().equals(((Marca) cmbMarca.getSelectedItem().getValue()).getEmpresa().getEmpresaId())) { + lsEmpresa.add(e); + + break; + } + } + BindingListModelList lb = new BindingListModelList(lsEmpresa, true); + cmbEmpresaCorrida.setModel(lb); + + } + + public void onClick$porBloq(Event ev) { + horasalida.setVisible(false); + horasalidaLabel.setVisible(false); + minutos.setVisible(true); + minutosLabel1.setVisible(true); + minutosLabel2.setVisible(true); + de.setVisible(true); + horaLabel1.setVisible(true); + horaLabel2.setVisible(true); + hasta.setVisible(true); + horaLabel21.setVisible(true); + horaLabel22.setVisible(true); + } + + public void onClick$porHora(Event ev) { + horasalida.setVisible(true); + horasalidaLabel.setVisible(true); + minutos.setVisible(false); + minutosLabel1.setVisible(false); + minutosLabel2.setVisible(false); + de.setVisible(false); + horaLabel1.setVisible(false); + horaLabel2.setVisible(false); + hasta.setVisible(false); + horaLabel21.setVisible(false); + horaLabel22.setVisible(false); + } + + public void onClick$btnAsientos(Event ev) throws InterruptedException { + Map args = new HashMap(); + args.put("esquemaCorrida", esquemaCorrida); + + if (esquemaCorrida.getEsquemacorridaId() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.gravarServico"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + + return; + } + + openWindow("/gui/esquema_operacional/editarCorridaAsiento.zul", + Labels.getLabel("editarConfiguracionCorridaAsientoController.window.title"), + args, MODAL); + + } + + public void onClick$chkDoblePiso(Event ev) { + if (chkDoblePiso.isChecked()) { + esquemaCorrida.setPisoExtra(Boolean.TRUE); + lbNumCorridaPisoExtra.setVisible(Boolean.TRUE); + txtNumCorridaPisoExtra.setVisible(Boolean.TRUE); + + lbNumCorridaPisoExtra2.setVisible(Boolean.TRUE); + txtNumCorridaPisoExtra2.setVisible(Boolean.TRUE); + + } else { + esquemaCorrida.setPisoExtra(Boolean.FALSE); + lbNumCorridaPisoExtra.setVisible(Boolean.FALSE); + txtNumCorridaPisoExtra.setVisible(Boolean.FALSE); + + lbNumCorridaPisoExtra2.setVisible(Boolean.FALSE); + txtNumCorridaPisoExtra2.setVisible(Boolean.FALSE); + } + } + + public ClaseServicioService getClaseService() { + return claseService; + } + + public void setClaseService(ClaseServicioService claseService) { + this.claseService = claseService; + } + + public EsquemaCorridaService getEsquemaCorridaService() { + return esquemaCorridaService; + } + + public void setEsquemaCorridaService( + EsquemaCorridaService esquemaCorridaService) { + this.esquemaCorridaService = esquemaCorridaService; + } + + public EsquemaCorrida getEsquemaCorrida() { + return esquemaCorrida; + } + + public void setEsquemaCorrida(EsquemaCorrida esquemaCorrida) { + this.esquemaCorrida = esquemaCorrida; + } + + public MyListbox getEsquemaCorridaList() { + return esquemaCorridaList; + } + + public void setEsquemaCorridaList(MyListbox esquemaCorridaList) { + this.esquemaCorridaList = esquemaCorridaList; + } + + public List getLsClase() { + return lsClase; + } + + public void setLsClase(List lsClase) { + this.lsClase = lsClase; + } + + public List getLsMarca() { + return lsMarca; + } + + public void setLsMarca(List lsMarca) { + this.lsMarca = lsMarca; + } + + public List getLsRuta() { + return lsRuta; + } + + public void setLsRuta(List lsRuta) { + this.lsRuta = lsRuta; + } + + public MarcaService getMarcaService() { + return marcaService; + } + + public void setMarcaService(MarcaService marcaService) { + this.marcaService = marcaService; + } + + public RutaService getRutaService() { + return rutaService; + } + + public void setRutaService(RutaService rutaService) { + this.rutaService = rutaService; + } + + public Combobox getCmbClase() { + return cmbClase; + } + + public void setCmbClase(Combobox cmbClase) { + this.cmbClase = cmbClase; + } + + public Combobox getCmbMarca() { + return cmbMarca; + } + + public void setCmbMarca(Combobox cmbMarca) { + this.cmbMarca = cmbMarca; + } + + public Combobox getCmbRuta() { + return cmbRuta; + } + + public void setCmbRuta(Combobox cmbRuta) { + this.cmbRuta = cmbRuta; + } + + public Datebox getFecfinvigencia() { + return fecfinvigencia; + } + + public void setFecfinvigencia(Datebox fecfinvigencia) { + this.fecfinvigencia = fecfinvigencia; + } + + public Datebox getFecniciovigencia() { + return fecniciovigencia; + } + + public void setFecniciovigencia(Datebox fecniciovigencia) { + this.fecniciovigencia = fecniciovigencia; + } + + public Timebox getHora() { + return de; + } + + public void setHora(Timebox hora) { + this.de = hora; + } + + public Timebox getHora2() { + return hasta; + } + + public void setHora2(Timebox hora2) { + this.hasta = hora2; + } + + public Timebox getHorasalida() { + return horasalida; + } + + public void setHorasalida(Timebox horasalida) { + this.horasalida = horasalida; + } + + public Spinner getMinutos() { + return minutos; + } + + public void setMinutos(Spinner minutos) { + this.minutos = minutos; + } + + public Combobox getCmbEmpresaCorrida() { + return cmbEmpresaCorrida; + } + + public void setCmbEmpresaCorrida(Combobox cmbEmpresaCorrida) { + this.cmbEmpresaCorrida = cmbEmpresaCorrida; + } + + public Combobox getCmbEmpresaIngresso() { + return cmbEmpresaIngresso; + } + + public void setCmbEmpresaIngresso(Combobox cmbEmpresaIngresso) { + this.cmbEmpresaIngresso = cmbEmpresaIngresso; + } + + public Combobox getCmbRolOperativo() { + return cmbRolOperativo; + } + + public void setCmbRolOperativo(Combobox cmbRolOperativo) { + this.cmbRolOperativo = cmbRolOperativo; + } + + public Combobox getCmbStatus() { + return cmbStatus; + } + + public void setCmbStatus(Combobox cmbStatus) { + this.cmbStatus = cmbStatus; + } + + public EmpresaService getEmpresaService() { + return empresaService; + } + + public void setEmpresaService(EmpresaService empresaService) { + this.empresaService = empresaService; + } + + public List getLsEmpresa() { + return lsEmpresa; + } + + public void setLsEmpresa(List lsEmpresa) { + this.lsEmpresa = lsEmpresa; + } + + public List getLsRutaSecuencia() { + return lsRutaSecuencia; + } + + public void setLsRutaSecuencia(List lsRutaSecuencia) { + this.lsRutaSecuencia = lsRutaSecuencia; + } + + public MyListbox getRutaSecuenciaList() { + return esquemaTramoList; + } + + public void setRutaSecuenciaList(MyListbox rutaSecuenciaList) { + this.esquemaTramoList = rutaSecuenciaList; + } + + public List getLsRolOperativo() { + return lsRolOperativo; + } + + public void setLsRolOperativo(List lsRolOperativo) { + this.lsRolOperativo = lsRolOperativo; + } + + public RolOperativoService getRolOperativoService() { + return rolOperativoService; + } + + public void setRolOperativoService(RolOperativoService rolOperativoService) { + this.rolOperativoService = rolOperativoService; + } + + public Radio getAutorizada() { + return autorizada; + } + + public void setAutorizada(Radio autorizada) { + this.autorizada = autorizada; + } + + public Radio getCancelada() { + return cancelada; + } + + public void setCancelada(Radio cancelada) { + this.cancelada = cancelada; + } + + public Radio getLatente() { + return latente; + } + + public void setLatente(Radio latente) { + this.latente = latente; + } + + public Combobox getCmbVia() { + return cmbVia; + } + + public void setCmbVia(Combobox cmbVia) { + this.cmbVia = cmbVia; + } + + public Button getBtnAsientos() { + return btnAsientos; + } + + public void setBtnAsientos(Button btnAsientos) { + this.btnAsientos = btnAsientos; + } + + public Radio getFletes() { + return fletes; + } + + public void setFletes(Radio fletes) { + this.fletes = fletes; + } + + public Radio getTransportePasajeros() { + return transportePasajeros; + } + + public void setTransportePasajeros(Radio transportePasajeros) { + this.transportePasajeros = transportePasajeros; + } + + public Radio getViajesEspeciales() { + return viajesEspeciales; + } + + public void setViajesEspeciales(Radio viajesEspeciales) { + this.viajesEspeciales = viajesEspeciales; + } + + public Combobox getCmbTramo() { + return cmbTramo; + } + + public void setCmbTramo(Combobox cmbTramo) { + this.cmbTramo = cmbTramo; + } + + public Timebox getDe() { + return de; + } + + public void setDe(Timebox de) { + this.de = de; + } + + public MyListbox getEsquemaTramoList() { + return esquemaTramoList; + } + + public void setEsquemaTramoList(MyListbox esquemaTramoList) { + this.esquemaTramoList = esquemaTramoList; + } + + public EsquemaTramoService getEsquemaTramoService() { + return esquemaTramoService; + } + + public void setEsquemaTramoService(EsquemaTramoService esquemaTramoService) { + this.esquemaTramoService = esquemaTramoService; + } + + public Timebox getHasta() { + return hasta; + } + + public void setHasta(Timebox hasta) { + this.hasta = hasta; + } + + public List getLsEsquemaTramo() { + return lsEsquemaTramo; + } + + public void setLsEsquemaTramo(List lsEsquemaTramo) { + this.lsEsquemaTramo = lsEsquemaTramo; + } + + public List getLsTramos() { + return lsTramos; + } + + public void setLsTramos(List lsTramos) { + this.lsTramos = lsTramos; + } + + public List getLsDivision() { + return lsDivision; + } + + public void setLsDivision(List lsDivision) { + this.lsDivision = lsDivision; + } + + public Combobox getCmbDivision() { + return cmbDivision; + } + + public void setCmbDivision(Combobox cmbDivision) { + this.cmbDivision = cmbDivision; + } + + public Label getLbDivision() { + return lbDivision; + } + + public void setLbDivision(Label lbDivision) { + this.lbDivision = lbDivision; + } + + public List getLsTramosRutaEsquemaCorrida() { + return lsTramosRutaEsquemaCorrida; + } + + public void setLsTramosRutaEsquemaCorrida( + List lsTramosRutaEsquemaCorrida) { + this.lsTramosRutaEsquemaCorrida = lsTramosRutaEsquemaCorrida; + } + + public Radio getPorBloq() { + return porBloq; + } + + public void setPorBloq(Radio porBloq) { + this.porBloq = porBloq; + } + + public Button getBtnApagar() { + return btnApagar; + } + + public void setBtnApagar(Button btnApagar) { + this.btnApagar = btnApagar; + } + + public Checkbox getDiaSimDiaNao() { + return diaSimDiaNao; + } + + public void setDiaSimDiaNao(Checkbox diaSimDiaNao) { + this.diaSimDiaNao = diaSimDiaNao; + } + + public void onClick$btnApagarRebote(Event e) throws InterruptedException { + esquemaCorrida.setEsquemaCorridaRebote(null); + txtIdCorridaRebote.setValue(""); + } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + public void onClick$btnAbrirEsquemaCorrida(Event e) + throws InterruptedException { + if (esquemaCorrida.getEsquemaCorridaRebote() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.btnAbrirEsquemaCorrida.error"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.EXCLAMATION); + + return; + + } + + closeWindow(); + + Map args = new HashMap(); + + args.put("esquemaCorrida", esquemaCorrida.getEsquemaCorridaRebote()); + args.put("esquemaCorridaList", esquemaCorridaList); + + openWindow( + "/gui/esquema_operacional/editarCorrida.zul", + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + args, MODAL); + } + + @SuppressWarnings({ "rawtypes", "unchecked" }) + public void onClick$btnBuscarEsquemaCorrida(Event e) { + Map argss = new HashMap(); + + argss.put("esquemaCorrida", esquemaCorrida); + argss.put("txtIdCorridaRebote", txtIdCorridaRebote); + + openWindow( + "/gui/esquema_operacional/busquedaCorridaRebote.zul", + Labels.getLabel("busquedaConfiguracionCorridaController.window.title"), + argss, MODAL); + } + + public void onChange$horasalida(Event e) { + ((RenderConfiguracionCorridaTramo) esquemaTramoList.getItemRenderer()).alterarDataPartida(horasalida.getValue()); + esquemaCorrida.setEsquemaTramoList(lsEsquemaTramo); + carregarParadaSecuencia(lsEsquemaTramo); + selecionarRutaSequenciaForaEsqCorrida(); + } + + + + public void onClick$diaSimDiaNao(Event e) throws InterruptedException { + habilitaDiasDaSemana(diaSimDiaNao.isChecked()); + } + + public void onClick$lun(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$mar(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$mie(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$jue(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$vie(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$sab(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + public void onClick$dom(Event e) throws InterruptedException { + habilitarDiaSimDiaNao(lun.isChecked(), mar.isChecked(), mie.isChecked(), jue.isChecked(), vie.isChecked(), sab.isChecked(), dom.isChecked()); + } + + private Boolean validarCorridaExtraAutomatica() throws InterruptedException { + if(txtNumCorridaExtraAuto.getValue() == null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.necessarioInformarCorridaExtra"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.ERROR); + return false; + } + + EsquemaCorrida esquemaCorrida = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaExtraAuto.getValue()); + + if(esquemaCorrida != null) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.corridaJaExiste"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), Messagebox.OK, Messagebox.ERROR); + return false; + } + + return true; + } + + private Boolean validarPisoExtra() throws InterruptedException { + Boolean returnValue = true; + EsquemaCorrida esquemaCorrida = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaPisoExtra.getValue()); + + EsquemaCorrida esquemaCorrida2 = null; + Boolean isPisoExtra2 = txtNumCorridaPisoExtra2.getValue() != null; + + if(txtNumCorridaPisoExtra2.getValue() != null) { + esquemaCorrida2 = esquemaCorridaService.obtenerByEsquemaCorrida(txtNumCorridaPisoExtra2.getValue()); + } + + + if (esquemaCorrida == null || (isPisoExtra2 && esquemaCorrida2 == null)) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraExistente"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if (this.esquemaCorrida.equals(esquemaCorrida) || (isPisoExtra2 && this.esquemaCorrida.equals(esquemaCorrida2))) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraIgualServico"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if ((esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) || (isPisoExtra2 && esquemaCorrida2.getPisoExtra() != null && esquemaCorrida2.getPisoExtra())) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraJaEPisoExtra"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if (!esquemaCorrida.getMarca().equals(this.esquemaCorrida.getMarca()) || (isPisoExtra2 && !esquemaCorrida2.getMarca().equals(this.esquemaCorrida.getMarca()))) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraEmpresaDiferente"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if (!esquemaCorrida.getRuta().getOrgaoConcedente().equals(this.esquemaCorrida.getRuta().getOrgaoConcedente()) + || (isPisoExtra2 && !esquemaCorrida2.getRuta().getOrgaoConcedente().equals(this.esquemaCorrida.getRuta().getOrgaoConcedente()))) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraOrgaoDiferente"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if (validarEsquemaTramo(esquemaCorrida) || (isPisoExtra2 && validarEsquemaTramo(esquemaCorrida2))) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.MSG.servicoPisoExtraLocalidadeDiferente"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } else if(esquemaCorrida.equals(esquemaCorrida2)) { + Messagebox.show(Labels.getLabel("editarConfiguracionCorridaController.pisoExtraIguais.label"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, Messagebox.ERROR); + returnValue = false; + } + + if (!returnValue) { + txtNumCorridaPisoExtra.setDisabled(false); + txtNumCorridaPisoExtra2.setDisabled(false); + } + + return returnValue; + } + + public void onChange$txtNumCorridaPisoExtra() throws InterruptedException { + validarPisoExtra(); + } + + public void onChange$txtNumCorridaPisoExtra2() throws InterruptedException { + validarPisoExtra(); + } + + private boolean validarEsquemaTramo(EsquemaCorrida esquemaCorrida) { + + if (this.esquemaCorrida.getEsquemaTramoList().size() != esquemaCorrida.getEsquemaTramoList().size()) { + return true; + } + for (int i = 0; i < this.esquemaCorrida.getEsquemaTramoList().size(); i++) { + if( this.esquemaCorrida.getEsquemacorridaId() != null ){ + if (!tramoIsEqual(this.esquemaCorrida.getEsquemaTramoList().get(i).getTramo(), esquemaCorrida.getEsquemaTramoList().get(i).getTramo())) { + return true; + } + }else{ + List ls = ordenaLista( esquemaCorrida.getEsquemaTramoList()); + if (!tramoIsEqual(this.esquemaCorrida.getEsquemaTramoList().get(i).getTramo(), ls.get(i).getTramo())) { + return true; + } + } + } + return false; + } + + private List ordenaLista(List ls){ + List myls = new ArrayList(); + for(int y = 1 ; y <= ls.size(); y++ ){ + for(int x = 1 ; x <= ls.size(); x++ ){ + if(ls.get(x-1).getNumsecuencia() == y ){ + myls.add(ls.get(x-1)); + break; + } + } + } + return myls; + } + + public boolean naoValidaEsquemaCorridaVia() { + Constante contante = constanteService.buscarPorNomeConstante("NAO_VALIDA_ESQUEMA_CORRIDA_VIA"); + String valorConstante = contante == null ? null : contante.getValorconstante(); + + if (StringUtils.isBlank(valorConstante)) { + return false; + } else { + if (BooleanUtils.toBoolean(valorConstante)) { + return true; + } + return false; + } + } + + private boolean tramoIsEqual(Tramo este, Tramo outro) { + if(este == null && outro == null){ + return true; + } + if(este == null && outro != null){ + return false; + } + if(este != null && outro == null){ + return false; + } + if (este.getDestino().equals(outro.getDestino()) + && este.getOrigem().equals(outro.getOrigem())) { + if (naoValidaEsquemaCorridaVia()) { + return true; + } else if (este.getDesctramo().equals(outro.getDesctramo()) && este.getKmReal().equals(outro.getKmReal()) + && este.getVia().equals(outro.getVia())) { + return true; + } + } + return false; + } + + private void habilitaDiasDaSemana(Boolean isChecked) { + if (isChecked) { + lun.setChecked(!isChecked); + mar.setChecked(!isChecked); + mie.setChecked(!isChecked); + jue.setChecked(!isChecked); + vie.setChecked(!isChecked); + sab.setChecked(!isChecked); + dom.setChecked(!isChecked); + + lun.setDisabled(isChecked); + mar.setDisabled(isChecked); + mie.setDisabled(isChecked); + jue.setDisabled(isChecked); + vie.setDisabled(isChecked); + sab.setDisabled(isChecked); + dom.setDisabled(isChecked); + } else { + lun.setChecked(Boolean.FALSE); + mar.setChecked(Boolean.FALSE); + mie.setChecked(Boolean.FALSE); + jue.setChecked(Boolean.FALSE); + vie.setChecked(Boolean.FALSE); + sab.setChecked(Boolean.FALSE); + dom.setChecked(Boolean.FALSE); + + lun.setDisabled(Boolean.FALSE); + mar.setDisabled(Boolean.FALSE); + mie.setDisabled(Boolean.FALSE); + jue.setDisabled(Boolean.FALSE); + vie.setDisabled(Boolean.FALSE); + sab.setDisabled(Boolean.FALSE); + dom.setDisabled(Boolean.FALSE); + } + } + + private void habilitarDiaSimDiaNao(Boolean isLun, Boolean isMar, Boolean isMie, Boolean isJue, Boolean isVie, Boolean isSab, Boolean isDom) { + if (isLun || isMar || isMie || isJue || isVie || isSab || isDom) { + diaSimDiaNao.setChecked(Boolean.FALSE); + diaSimDiaNao.setDisabled(Boolean.TRUE); + } else { + diaSimDiaNao.setChecked(Boolean.FALSE); + diaSimDiaNao.setDisabled(Boolean.FALSE); + } + } + + public List getLsEmpresaIngresso() { + return lsEmpresaIngresso; + } + + public void setLsEmpresaIngresso(List lsEmpresaIngresso) { + this.lsEmpresaIngresso = lsEmpresaIngresso; + } + + public List getLsAutoBus() { + return lsAutoBus; + } + + public void setLsAutoBus(List lsAutoBus) { + this.lsAutoBus = lsAutoBus; + } + + public void onClick$btnAdicionarEmbarqueDesembarque(Event ev) { + + Comboitem selectedItem = cmbEmbarqueDesembarque.getSelectedItem(); + if (selectedItem == null) { + return; + } + + RutaEmbarqueDesembarque rutaEmbarqueDesembarque = (RutaEmbarqueDesembarque) selectedItem.getValue(); + + for (EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque : lsEsquemaCorridaEmbarqueDesembarqueSelected) { + if (esquemaCorridaEmbarqueDesembarque.getParada().equals(rutaEmbarqueDesembarque)) { + return; + } + } + + selectEsquemaCorridaEmbarqueDesembarque(rutaEmbarqueDesembarque); + + } + + private void selectEsquemaCorridaEmbarqueDesembarque(RutaEmbarqueDesembarque rutaEmbarqueDesembarque) { + EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque = new EsquemaCorridaEmbarqueDesembarque(); + esquemaCorridaEmbarqueDesembarque.setParada(rutaEmbarqueDesembarque.getParada()); + esquemaCorridaEmbarqueDesembarque.setActivo(true); + esquemaCorridaEmbarqueDesembarque.setEsquemaCorrida(esquemaCorrida); + esquemaCorridaEmbarqueDesembarque.setEmbarque(BooleanUtils.isTrue(rutaEmbarqueDesembarque.getEmbarque())); // null safe + esquemaCorridaEmbarqueDesembarque.setDesembarque(BooleanUtils.isTrue(rutaEmbarqueDesembarque.getDesembarque())); // null safe + esquemaCorridaEmbarqueDesembarque.setLocalDesembarqueEmbarque(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); + esquemaCorridaEmbarqueDesembarque.setIsVisualizarNaAPI(cbVisualizaNaAPI.isChecked()); + lsEsquemaCorridaEmbarqueDesembarqueSelected.add(esquemaCorridaEmbarqueDesembarque); + + esquemaCorrida.setLsEsquemaCorridaEmbarqueDesembarque(lsEsquemaCorridaEmbarqueDesembarqueSelected); + esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); + } + + public void onClick$btnRemoverEmbarqueDesembarque(Event ev) throws InterruptedException { + + EsquemaCorridaEmbarqueDesembarque esquemaCorridaEmbarqueDesembarque = (EsquemaCorridaEmbarqueDesembarque) esquemaCorridaEmbarqueDesembarqueListbox.getSelected(); + + if (esquemaCorridaEmbarqueDesembarque != null) { + lsEsquemaCorridaEmbarqueDesembarqueSelected.remove(esquemaCorridaEmbarqueDesembarque); + lsEsquemaCorridaEmbarqueDesembarqueBorrar.add(esquemaCorridaEmbarqueDesembarque); + + esquemaCorrida.setLsEsquemaCorridaEmbarqueDesembarque(lsEsquemaCorridaEmbarqueDesembarqueSelected); + esquemaCorridaEmbarqueDesembarqueListbox.setData(lsEsquemaCorridaEmbarqueDesembarqueSelected); + } + + } + + public List getLsRutaEmbarqueDesembarque() { + return lsRutaEmbarqueDesembarque; + } + + public void setLsRutaEmbarqueDesembarque(List lsRutaEmbarqueDesembarque) { + this.lsRutaEmbarqueDesembarque = lsRutaEmbarqueDesembarque; + } + + public Boolean getEmbarqueDesembarqueDisabled() { + return embarqueDesembarqueDisabled; + } + + public Boolean getEmbarque() { + return embarque; + } + + public void setEmbarque(Boolean embarque) { + this.embarque = embarque; + } + + public Boolean getDesembarque() { + return desembarque; + } + + public void setDesembarque(Boolean desembarque) { + this.desembarque = desembarque; + } + + public List getLsEmbarqueDesembarque() { + return lsEmbarqueDesembarque; + } + + public void setLsEmbarqueDesembarque(List lsEmbarqueDesembarque) { + this.lsEmbarqueDesembarque = lsEmbarqueDesembarque; + } + + public void onSelect$cmbEmbarqueDesembarque(Event ev) { + Comboitem selectedItem = cmbEmbarqueDesembarque.getSelectedItem(); + if (selectedItem == null) { + return; + } + + preencherLocalEmbarqueDesembarque(); + + RutaEmbarqueDesembarque rutaEmbarqueDesembarque = (RutaEmbarqueDesembarque) selectedItem.getValue(); + Comboitem ci = new Comboitem(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque().toString()); + ci.setAttribute("value", rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); + ci.setValue(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); + ci.setParent(cmbLocalEmbarqueDesembarque); + cmbLocalEmbarqueDesembarque.setSelectedItem(ci); + + cbEmbarque.setChecked(rutaEmbarqueDesembarque.getEmbarque()); + cbDesembarque.setChecked(rutaEmbarqueDesembarque.getDesembarque()); + } + + private void preencherLocalEmbarqueDesembarque(){ + for (RutaEmbarqueDesembarque rutaEmbarqueDesembarque : lsRutaEmbarqueDesembarque) { + lsEmbarqueDesembarque.add(rutaEmbarqueDesembarque.getLocalDesembarqueEmbarque()); + } + } + + public Combobox getCmbRolOperativoServicoExtra() { + return cmbRolOperativoServicoExtra; + } + + public void setCmbRolOperativoServicoExtra(Combobox cmbRolOperativoServicoExtra) { + this.cmbRolOperativoServicoExtra = cmbRolOperativoServicoExtra; + } + + public Boolean getIsVisualizarNaAPI() { + return isVisualizarNaAPI; + } + + public void setIsVisualizarNaAPI(Boolean isVisualizarNaAPI) { + this.isVisualizarNaAPI = isVisualizarNaAPI; + } + + @SuppressWarnings("unchecked") + public void onClick$btnAdicionarTramoInformacaoCorrida(Event ev) { + + try { + cmbParadaOrigem.getValue(); + cmbParadaDestino.getValue(); + txtMensagemTrecho.getValue(); + + Parada origem = (Parada) cmbParadaOrigem.getSelectedItem().getValue(); + Parada destino = (Parada) cmbParadaDestino.getSelectedItem().getValue(); + + boolean existe = false; + for (EsquemaCorridaInfo esquemaCorridaInfo : (List)lstTrechosInformacaoCorridaListbox.getListData()) { + if(esquemaCorridaInfo.getOrigem().getDescparada().equals(origem.getDescparada()) && esquemaCorridaInfo.getDestino().getDescparada().equals(destino.getDescparada())) { + existe = true; + } + } + if(!existe) { + EsquemaCorridaInfo esquemaCorridaInfo = new EsquemaCorridaInfo(); + esquemaCorridaInfo.setOrigem(origem); + esquemaCorridaInfo.setDestino(destino); + esquemaCorridaInfo.setActivo(true); + esquemaCorridaInfo.setInfoCorrida(txtMensagemTrecho.getValue()); + esquemaCorridaInfo.setEsquemaCorrida(esquemaCorrida); + esquemaCorridaInfo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + esquemaCorridaInfo.setFecmodif(Calendar.getInstance().getTime()); + esquemaCorridaInfo.setActivo(Boolean.TRUE); + lsEsquemaCorridaInfoSelected.add(esquemaCorridaInfo); + esquemaCorrida.setLsEsquemaCorridaInfo(lsEsquemaCorridaInfoSelected); + lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); + + }else { + Messagebox.show(Labels.getLabel("MSG.Registro.Existe"), + Labels.getLabel("editarConfiguracionCorridaController.window.title"), + Messagebox.OK, + Messagebox.EXCLAMATION); + } + + + } catch (Exception e) { + log.error("ESQ CORRIDA INFO TRMO - Erro ao adicionar tramo: " + e, e); + e.printStackTrace(); + onClick$btnAdicionarTramo(null); + } + } + + public void onClick$btnRemoverEsquemaCorridaInfoTramo(Event ev) throws InterruptedException { + + EsquemaCorridaInfo esquemaCorridaInfo = (EsquemaCorridaInfo) lstTrechosInformacaoCorridaListbox.getSelected(); + + if (esquemaCorridaInfo != null) { + lsEsquemaCorridaInfoSelected.remove(esquemaCorridaInfo); + lsEsquemaCorridaInfoBorrar.add(esquemaCorridaInfo); + esquemaCorrida.setLsEsquemaCorridaInfo(null); + lstTrechosInformacaoCorridaListbox.setData(lsEsquemaCorridaInfoSelected); + } + + } + + public Button getBtnCancelarRetomar() { + return btnCancelarRetomar; + } + + public void setBtnCancelarRetomar(Button btnCancelarRetomar) { + this.btnCancelarRetomar = btnCancelarRetomar; + } + + private void alterarBotaoRetomarCancelar() { + if (esquemaCorrida.getIndCorridaDesativada()) { + btnCancelarRetomar.setTooltiptext(Labels.getLabel("editarCatalogoDeRutaController.btnRetomarCancelar.tooltipRetomar")); + btnCancelarRetomar.setImage("/gui/img/back.png"); + } else { + btnCancelarRetomar.setTooltiptext(Labels.getLabel("editarCatalogoDeRutaController.btnRetomarCancelar.tooltipCancelar")); + btnCancelarRetomar.setImage("/gui/img/forbidden.png"); + } + } + + public void onClick$btnCancelarRetomar(Event ev) throws Exception { + if (!esquemaCorrida.getIndCorridaDesativada()) { + esquemaCorrida.setIndCorridaDesativada(true);// cancelar + } else { + esquemaCorrida.setIndCorridaDesativada(false);// retomar + } + + if(esquemaCorrida.getEsquemacorridaId() != null) { + esquemaCorridaService.actualizacion(esquemaCorrida); + } + + alterarBotaoRetomarCancelar(); + } } \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/TiempoEstanciaEsquemaTramoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/TiempoEstanciaEsquemaTramoController.java index cac0ea140..b6e07eece 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/TiempoEstanciaEsquemaTramoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/esquemaoperacional/TiempoEstanciaEsquemaTramoController.java @@ -21,7 +21,6 @@ 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; @@ -48,7 +47,6 @@ public class TiempoEstanciaEsquemaTramoController extends MyGenericForwardCompos private Radio emPe; private Radio ambos; private Radio naoVende; - public ItemEditarCorridaTramo itemEditarCorridaTramo; // private Boolean primeraSequencia; @@ -100,8 +98,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); spMinuto.setDisabled(true); @@ -170,7 +167,6 @@ 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(); @@ -181,14 +177,9 @@ 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); @@ -202,10 +193,7 @@ 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); }