fixes bug #AL-2734
parent
c4f16b4212
commit
b29ee7a47e
|
@ -443,332 +443,43 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado) {
|
private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado) {
|
||||||
|
|
||||||
GregorianCalendar calendario = new GregorianCalendar();
|
|
||||||
calendario.setTime(dataGeracao);
|
|
||||||
|
|
||||||
Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
|
|
||||||
Corrida corrida = null;
|
Corrida corrida = null;
|
||||||
|
|
||||||
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
|
||||||
log.info("vigencia invalida=" + dataGeracao);
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A") || esquemaCorrida.getStatusCorrida().equals("L")))) {
|
|
||||||
log.info("status corrida invalido=" + esquemaCorrida.getStatusCorrida());
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (esquemaCorrida.getIndDiaSimDiaNao() == null || esquemaCorrida.getIndDiaSimDiaNao() == Boolean.FALSE) {
|
|
||||||
if (!temCorridaDiaSemana(diaSemana, esquemaCorrida, isFeriado)) {
|
|
||||||
log.info("dia semana no valido=" + diaSemana);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!tramoServicioService.existenTiemposTramosEsquema(esquemaCorrida.getEsquemacorridaId())) {
|
|
||||||
log.info("nao foi cadastrado o tempo de todos os trechos do esquema corrida=" + esquemaCorrida.getEsquemacorridaId());
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
GregorianCalendar calendario = new GregorianCalendar();
|
||||||
|
calendario.setTime(dataGeracao);
|
||||||
|
Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
|
||||||
Ruta ruta = esquemaCorrida.getRuta();
|
Ruta ruta = esquemaCorrida.getRuta();
|
||||||
ClaseServicio claseServicio = esquemaCorrida.getClaseServicio();
|
ClaseServicio claseServicio = esquemaCorrida.getClaseServicio();
|
||||||
Marca marca = esquemaCorrida.getMarca();
|
Marca marca = esquemaCorrida.getMarca();
|
||||||
Date horario = esquemaCorrida.getHorasalida();
|
Date horario = esquemaCorrida.getHorasalida();
|
||||||
horario = DateUtil.normalizar(horario);
|
horario = DateUtil.normalizar(horario);
|
||||||
Integer numCorrida = esquemaCorrida.getNumCorrida();
|
Integer numCorrida = esquemaCorrida.getNumCorrida();
|
||||||
|
|
||||||
Corrida.Id id = new Corrida.Id();
|
Corrida.Id id = new Corrida.Id();
|
||||||
|
|
||||||
id.setCorridaId(numCorrida);
|
id.setCorridaId(numCorrida);
|
||||||
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
||||||
|
|
||||||
if (esquemaCorrida.getIndDiaSimDiaNao() != null && esquemaCorrida.getIndDiaSimDiaNao()) {
|
|
||||||
Calendar calendarData = Calendar.getInstance();
|
|
||||||
calendarData.setTime(dataGeracao);
|
|
||||||
calendarData.add(Calendar.DATE, -1);
|
|
||||||
|
|
||||||
Corrida.Id corridaOntem = new Corrida.Id();
|
|
||||||
|
|
||||||
corridaOntem.setCorridaId(numCorrida);
|
|
||||||
corridaOntem.setFeccorrida(DateUtil.normalizarToFecha(calendarData.getTime()));
|
|
||||||
|
|
||||||
if (corridaDAO.existe(corridaOntem)) {
|
|
||||||
log.info("Esquema configurado para gerar dia sim dia não e já possui corrida gerado no dia anterior, por isso não está data: " + DateUtil.getStringDate(dataGeracao));
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (corridaDAO.existe(id)) {
|
|
||||||
log.info("corrida existe = " + numCorrida + ";" + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, é chave primaria, temos que buscar somente por esse campo
|
|
||||||
// Caso o registro já exista, atualizamos os dados dele.
|
|
||||||
// Sendo assim, o que vai indicar a "duplicidade" de uma corrida será apenas o número dela e não mais o conjunto : clase + marca + horario + ruta
|
|
||||||
|
|
||||||
CorridaCtrl corridaCtrl = corridaCtrlService.obtenerID(numCorrida);
|
|
||||||
|
|
||||||
boolean novoRegistro = false;
|
|
||||||
|
|
||||||
if (corridaCtrl == null) {
|
|
||||||
corridaCtrl = new CorridaCtrl();
|
|
||||||
novoRegistro = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
corridaCtrl.setCorridaId(numCorrida);
|
|
||||||
corridaCtrl.setMarca(marca);
|
|
||||||
corridaCtrl.setRuta(ruta);
|
|
||||||
corridaCtrl.setClaseServicio(claseServicio);
|
|
||||||
corridaCtrl.setHorario(horario);
|
|
||||||
|
|
||||||
// parada origem
|
|
||||||
Parada origen = rutaService.getOrigem(ruta);
|
|
||||||
if (origen == null) {
|
|
||||||
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
|
|
||||||
}
|
|
||||||
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
|
|
||||||
|
|
||||||
corridaCtrl.setActivo(Boolean.TRUE);
|
|
||||||
corridaCtrl.setFecmodif(Calendar.getInstance().getTime());
|
|
||||||
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
}
|
|
||||||
|
|
||||||
corridaCtrl.setPisoExtra(isPisoExtra);
|
|
||||||
if (novoRegistro) {
|
|
||||||
corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
|
|
||||||
} else {
|
|
||||||
corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
corrida = new Corrida();
|
|
||||||
corrida.setId(id);
|
|
||||||
corrida.setEsquemaCorrida(esquemaCorrida);
|
|
||||||
corrida.setCorridaCtrl(corridaCtrl);
|
|
||||||
corrida.setAutobus(esquemaCorrida.getAutoBus()!= null ? esquemaCorrida.getAutoBus() : null);
|
|
||||||
corrida.setClaseServicio(corridaCtrl.getClaseServicio());
|
|
||||||
corrida.setConductor(null);
|
|
||||||
if (esquemaCorrida.getIndCorridaExtra()) {
|
|
||||||
corrida.setTipoServicio(new Short("2"));
|
|
||||||
} else {
|
|
||||||
corrida.setTipoServicio(new Short("1"));
|
|
||||||
}
|
|
||||||
corrida.setInfoCorrida(esquemaCorrida.getInfoCorrida());
|
|
||||||
Integer cantparados = esquemaCorrida.getCantparados();
|
|
||||||
if (cantparados != null) {
|
|
||||||
corrida.setCantParados(cantparados.shortValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
corrida.setEsquemaAgrupacionId(esquemaCorrida.getEsquemaAgrupacionId());
|
|
||||||
|
|
||||||
corrida.setEmpresa(esquemaCorrida.getEmpresa());
|
|
||||||
corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
|
|
||||||
|
|
||||||
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
|
||||||
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
|
||||||
|
|
||||||
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
|
||||||
corrida.setIndstatuscorrida("H");
|
|
||||||
corrida.setActivo(ActivoUtil.ATIVO);
|
|
||||||
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
|
||||||
corrida.setIndstatuscorrida("P");
|
|
||||||
corrida.setActivo(ActivoUtil.INATIVO);
|
|
||||||
}
|
|
||||||
|
|
||||||
corrida.setMarca(esquemaCorrida.getMarca());
|
|
||||||
corrida.setNodo(corridaCtrl.getNodo());
|
|
||||||
corrida.setDivision(esquemaCorrida.getDivision());
|
|
||||||
corrida.setRuta(esquemaCorrida.getRuta());
|
|
||||||
|
|
||||||
// corrida.setRuta(corridaCtrl.getRuta());
|
|
||||||
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
|
|
||||||
corrida.setZona(null);
|
|
||||||
|
|
||||||
// corrida Tramo:
|
|
||||||
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
|
|
||||||
Integer numSec = 1;
|
|
||||||
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
||||||
Date horaChegadaAnterior = null;
|
|
||||||
|
|
||||||
Date husoHorVeranoLlegadaAnterior = null;
|
|
||||||
|
|
||||||
if (lsEsquemaTramo == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
EsquemaTramo primeiro = lsEsquemaTramo.get(0);
|
|
||||||
Parada origem = primeiro.getTramo().getOrigem();
|
|
||||||
if (origem == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
corrida.setOrigem(origem);
|
|
||||||
|
|
||||||
EsquemaTramo ultimo = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
|
||||||
Parada destino = ultimo.getTramo().getDestino();
|
|
||||||
if (destino == null) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
corrida.setDestino(destino);
|
|
||||||
|
|
||||||
if(esquemaCorrida.getIsFlexBus()) {
|
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo)) {
|
||||||
corrida.setOcupacaoMinima(esquemaCorrida.getOcupacaoMinima());
|
return null;
|
||||||
corrida.setHorasParaConfirmacao(esquemaCorrida.getHorasParaConfirmacao());
|
|
||||||
corrida.setMinutosParaConfirmacao(esquemaCorrida.getMinutosParaConfirmacao());
|
|
||||||
corrida.setIsFlexBus(Boolean.TRUE);
|
|
||||||
|
|
||||||
corrida.setStatusFlexBus(StatusFlexBus.EM_RESERVA.getStatus());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
|
|
||||||
|
|
||||||
CorridaTramo corridaTramo = new CorridaTramo();
|
|
||||||
|
|
||||||
corridaTramo.setAutobus(esquemaCorrida.getAutoBus()!= null ? esquemaCorrida.getAutoBus() : null);
|
Parada origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem();
|
||||||
corridaTramo.setConductor(null);
|
|
||||||
corridaTramo.setConductor1(null);
|
Parada destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino();
|
||||||
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
|
|
||||||
corridaTramo.setTipoPassagem(esquemaTramo.getTipoPassagem());
|
|
||||||
|
|
||||||
corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia());
|
/* Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, é chave primaria, temos que buscar somente por esse campo
|
||||||
|
Caso o registro já exista, atualizamos os dados dele. Sendo assim, o que vai indicar a "duplicidade" de uma corrida será apenas o número dela e não mais o conjunto : clase + marca + horario + ruta*/
|
||||||
|
|
||||||
// numSec: 1-2, 2-3, 3-4...
|
CorridaCtrl corridaCtrl = criaCorridaCtrl(isPisoExtra, ruta, claseServicio, marca, horario, numCorrida);
|
||||||
corridaTramo.setNumsecorigen(numSec.shortValue());
|
|
||||||
numSec = numSec + 1;
|
|
||||||
corridaTramo.setNumsecdestino(numSec.shortValue());
|
|
||||||
|
|
||||||
Calendar salida = Calendar.getInstance();
|
corrida = criaCorrida(esquemaCorrida, dataGeracao, id, lsEsquemaTramo, origemCorrida, destinoCorrida,
|
||||||
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, esquemaTramo.getTiempoEstancia());
|
corridaCtrl);
|
||||||
salida.setTime(fecHorSalida);
|
|
||||||
salida.set(salida.get(Calendar.YEAR), salida.get(Calendar.MONTH), salida.get(Calendar.DATE),
|
|
||||||
salida.get(Calendar.HOUR_OF_DAY), salida.get(Calendar.MINUTE), NumberUtils.INTEGER_ZERO);
|
|
||||||
corridaTramo.setFechorsalida(salida.getTime());
|
|
||||||
|
|
||||||
Calendar llegada = Calendar.getInstance();
|
|
||||||
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
|
|
||||||
llegada.setTime(fecHorallegada);
|
|
||||||
llegada.set(llegada.get(Calendar.YEAR), llegada.get(Calendar.MONTH), llegada.get(Calendar.DATE),
|
|
||||||
llegada.get(Calendar.HOUR_OF_DAY), llegada.get(Calendar.MINUTE), NumberUtils.INTEGER_ZERO);
|
|
||||||
corridaTramo.setFechorllegada(llegada.getTime());
|
|
||||||
|
|
||||||
horaChegadaAnterior = fecHorallegada;
|
|
||||||
|
|
||||||
corridaTramo.setFechortarjetaviaje(null);
|
|
||||||
corridaTramo.setNodo(corridaCtrl.getNodo());
|
|
||||||
|
|
||||||
corridaTramo.setNumsecuencia(esquemaTramo.getNumsecuencia());
|
|
||||||
Tramo tramo = esquemaTramo.getTramo();
|
|
||||||
if (tramo != null) {
|
|
||||||
corridaTramo.setOrigem(tramo.getOrigem());
|
|
||||||
corridaTramo.setDestino(tramo.getDestino());
|
|
||||||
}
|
|
||||||
corridaTramo.setTramo(tramo);
|
|
||||||
corridaTramo.setUsuariotarjetaviajeId(null);
|
|
||||||
|
|
||||||
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
|
|
||||||
if (excepcionTiempo != null) {
|
|
||||||
corridaTramo.setFechorllegada(excepcionTiempo);
|
|
||||||
horaChegadaAnterior = excepcionTiempo;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
|
||||||
corridaTramo.setActivo(ActivoUtil.ATIVO);
|
|
||||||
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
|
||||||
corridaTramo.setActivo(ActivoUtil.INATIVO);
|
|
||||||
}
|
|
||||||
//
|
|
||||||
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
}
|
|
||||||
corridaTramo.setCorrida(corrida);
|
|
||||||
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
|
|
||||||
|
|
||||||
if (husoHorVeranoLlegadaAnterior == null) {
|
|
||||||
corridaTramo.setFechorsalidaH(corridaTramo.getFechorsalida());
|
|
||||||
} else {
|
|
||||||
|
|
||||||
// Ajusta tambem o tempo de instancia do calculo do horario de verao
|
|
||||||
if (esquemaTramo.getTiempoEstancia() != null) {
|
|
||||||
GregorianCalendar tmp = new GregorianCalendar();
|
|
||||||
tmp.setTime(husoHorVeranoLlegadaAnterior);
|
|
||||||
|
|
||||||
tmp.add(Calendar.MINUTE, esquemaTramo.getTiempoEstancia().getMinutes());
|
|
||||||
tmp.add(Calendar.HOUR_OF_DAY, esquemaTramo.getTiempoEstancia().getHours());
|
|
||||||
|
|
||||||
log.debug("Tempo Recorrido H + Estancia: " + sdf.format(tmp.getTime()));
|
|
||||||
|
|
||||||
husoHorVeranoLlegadaAnterior = tmp.getTime();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
corridaTramo.setFechorsalidaH(husoHorVeranoLlegadaAnterior);
|
|
||||||
}
|
|
||||||
|
|
||||||
husoHorVeranoLlegadaAnterior = calcularHusoHorVeranoLlegada(esquemaTramo, corridaTramo);
|
|
||||||
|
|
||||||
if (husoHorVeranoLlegadaAnterior != null) {
|
|
||||||
corridaTramo.setFechorllegadaH(husoHorVeranoLlegadaAnterior);
|
|
||||||
corridaTramo.setFechorSalidaOriginalH(husoHorVeranoLlegadaAnterior);
|
|
||||||
} else {
|
|
||||||
corridaTramo.setFechorllegadaH(corridaTramo.getFechorllegada());
|
|
||||||
corridaTramo.setFechorSalidaOriginalH(corridaTramo.getFechorSalidaOriginal());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (numSec == 1) {
|
|
||||||
corrida.setFechorSalidaOriginalH(corridaTramo.getFechorsalidaH());
|
|
||||||
}
|
|
||||||
|
|
||||||
lsCorridaTramo.add(corridaTramo);
|
|
||||||
}
|
|
||||||
corrida.setCorridaTramoList(lsCorridaTramo);
|
|
||||||
//
|
|
||||||
corrida.setFecmodif(Calendar.getInstance().getTime());
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
} else {
|
|
||||||
corrida.setUsuarioId(1);
|
|
||||||
}
|
|
||||||
corrida.setIndTipoVenta(null);
|
|
||||||
corrida.setCodProdutoFiscal(UtiliteriasFiscal.defineCodigoProduto(corrida.getOrigem().getParadaId(), corrida.getDestino().getParadaId(), corrida.getRuta().getRutaId()));
|
|
||||||
corrida = corridaDAO.suscribir(corrida);
|
|
||||||
|
|
||||||
cantCorridaGenerada++;
|
cantCorridaGenerada++;
|
||||||
|
|
||||||
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
criaAssentoExclusivo(esquemaCorrida, corrida);
|
||||||
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
|
||||||
DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(), ea.getNumasiento());
|
|
||||||
if (detDiagramaAutobus != null && detDiagramaAutobus.getVendible()) {
|
|
||||||
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
|
|
||||||
asientoExclusivo.setCorrida(corrida);
|
|
||||||
asientoExclusivo.setMotivobloqueo(null);
|
|
||||||
asientoExclusivo.setNodo(corrida.getNodo());
|
|
||||||
asientoExclusivo.setNumasiento(ea.getNumasiento());
|
|
||||||
asientoExclusivo.setVendible(ea.getIndvendible());
|
|
||||||
asientoExclusivo.setParada(ea.getParada());
|
|
||||||
asientoExclusivo.setTiempoLiberacion(ea.getTiempoLiberacion());
|
|
||||||
if (ea.getIndvendible()) {
|
|
||||||
asientoExclusivo.setMotivobloqueo(null);
|
|
||||||
} else {
|
|
||||||
asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo());
|
|
||||||
asientoExclusivo.setDestino(ea.getDestino());
|
|
||||||
}
|
|
||||||
|
|
||||||
asientoExclusivo.setActivo(Boolean.TRUE);
|
|
||||||
asientoExclusivo.setFecmodif(Calendar.getInstance().getTime());
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
}
|
|
||||||
|
|
||||||
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
log.error("", ex);
|
log.error("", ex);
|
||||||
|
@ -777,6 +488,354 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return corrida;
|
return corrida;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Corrida criaCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, Corrida.Id id,
|
||||||
|
List<EsquemaTramo> lsEsquemaTramo, Parada origemCorrida, Parada destinoCorrida, CorridaCtrl corridaCtrl) {
|
||||||
|
Corrida corrida;
|
||||||
|
corrida = new Corrida();
|
||||||
|
corrida.setId(id);
|
||||||
|
corrida.setEsquemaCorrida(esquemaCorrida);
|
||||||
|
corrida.setCorridaCtrl(corridaCtrl);
|
||||||
|
corrida.setAutobus(esquemaCorrida.getAutoBus()!= null ? esquemaCorrida.getAutoBus() : null);
|
||||||
|
corrida.setClaseServicio(corridaCtrl.getClaseServicio());
|
||||||
|
corrida.setConductor(null);
|
||||||
|
if (esquemaCorrida.getIndCorridaExtra()) {
|
||||||
|
corrida.setTipoServicio(new Short("2"));
|
||||||
|
} else {
|
||||||
|
corrida.setTipoServicio(new Short("1"));
|
||||||
|
}
|
||||||
|
corrida.setInfoCorrida(esquemaCorrida.getInfoCorrida());
|
||||||
|
Integer cantparados = esquemaCorrida.getCantparados();
|
||||||
|
if (cantparados != null) {
|
||||||
|
corrida.setCantParados(cantparados.shortValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
corrida.setEsquemaAgrupacionId(esquemaCorrida.getEsquemaAgrupacionId());
|
||||||
|
|
||||||
|
corrida.setEmpresa(esquemaCorrida.getEmpresa());
|
||||||
|
corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
|
||||||
|
|
||||||
|
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
||||||
|
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
||||||
|
|
||||||
|
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
||||||
|
corrida.setIndstatuscorrida("H");
|
||||||
|
corrida.setActivo(ActivoUtil.ATIVO);
|
||||||
|
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
||||||
|
corrida.setIndstatuscorrida("P");
|
||||||
|
corrida.setActivo(ActivoUtil.INATIVO);
|
||||||
|
}
|
||||||
|
|
||||||
|
corrida.setMarca(esquemaCorrida.getMarca());
|
||||||
|
corrida.setNodo(corridaCtrl.getNodo());
|
||||||
|
corrida.setDivision(esquemaCorrida.getDivision());
|
||||||
|
corrida.setRuta(esquemaCorrida.getRuta());
|
||||||
|
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
|
||||||
|
corrida.setZona(null);
|
||||||
|
corrida.setOrigem(origemCorrida);
|
||||||
|
corrida.setDestino(destinoCorrida);
|
||||||
|
|
||||||
|
validaFlexBus(esquemaCorrida, corrida);
|
||||||
|
|
||||||
|
List<CorridaTramo> lsCorridaTramo = criaCorridaTramoList(esquemaCorrida, dataGeracao, corrida, lsEsquemaTramo, corridaCtrl);
|
||||||
|
|
||||||
|
corrida.setCorridaTramoList(lsCorridaTramo);
|
||||||
|
|
||||||
|
corrida.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
} else {
|
||||||
|
corrida.setUsuarioId(1);
|
||||||
|
}
|
||||||
|
corrida.setIndTipoVenta(null);
|
||||||
|
corrida.setCodProdutoFiscal(UtiliteriasFiscal.defineCodigoProduto(corrida.getOrigem().getParadaId(), corrida.getDestino().getParadaId(), corrida.getRuta().getRutaId()));
|
||||||
|
corrida = corridaDAO.suscribir(corrida);
|
||||||
|
return corrida;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CorridaCtrl criaCorridaCtrl(boolean isPisoExtra, Ruta ruta, ClaseServicio claseServicio, Marca marca,
|
||||||
|
Date horario, Integer numCorrida) {
|
||||||
|
CorridaCtrl corridaCtrl = corridaCtrlService.obtenerID(numCorrida);
|
||||||
|
|
||||||
|
boolean novoRegistro = false;
|
||||||
|
|
||||||
|
if (corridaCtrl == null) {
|
||||||
|
corridaCtrl = new CorridaCtrl();
|
||||||
|
novoRegistro = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
corridaCtrl.setCorridaId(numCorrida);
|
||||||
|
corridaCtrl.setMarca(marca);
|
||||||
|
corridaCtrl.setRuta(ruta);
|
||||||
|
corridaCtrl.setClaseServicio(claseServicio);
|
||||||
|
corridaCtrl.setHorario(horario);
|
||||||
|
|
||||||
|
// parada origem
|
||||||
|
Parada origen = rutaService.getOrigem(ruta);
|
||||||
|
if (origen == null) {
|
||||||
|
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
|
||||||
|
}
|
||||||
|
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
|
||||||
|
|
||||||
|
corridaCtrl.setActivo(Boolean.TRUE);
|
||||||
|
corridaCtrl.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
}
|
||||||
|
|
||||||
|
corridaCtrl.setPisoExtra(isPisoExtra);
|
||||||
|
|
||||||
|
if (novoRegistro) {
|
||||||
|
corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
|
||||||
|
} else {
|
||||||
|
corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl);
|
||||||
|
}
|
||||||
|
return corridaCtrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<CorridaTramo> criaCorridaTramoList(EsquemaCorrida esquemaCorrida, Date dataGeracao, Corrida corrida,
|
||||||
|
List<EsquemaTramo> lsEsquemaTramo, CorridaCtrl corridaCtrl) {
|
||||||
|
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
|
||||||
|
Date horaChegadaAnterior = null;
|
||||||
|
Date husoHorVeranoLlegadaAnterior = null;
|
||||||
|
Integer numSec = 1;
|
||||||
|
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
|
||||||
|
|
||||||
|
CorridaTramo corridaTramo = new CorridaTramo();
|
||||||
|
|
||||||
|
corridaTramo.setAutobus(esquemaCorrida.getAutoBus()!= null ? esquemaCorrida.getAutoBus() : null);
|
||||||
|
corridaTramo.setConductor(null);
|
||||||
|
corridaTramo.setConductor1(null);
|
||||||
|
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
|
||||||
|
corridaTramo.setTipoPassagem(esquemaTramo.getTipoPassagem());
|
||||||
|
|
||||||
|
corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia());
|
||||||
|
|
||||||
|
// numSec: 1-2, 2-3, 3-4...
|
||||||
|
corridaTramo.setNumsecorigen(numSec.shortValue());
|
||||||
|
numSec = numSec + 1;
|
||||||
|
corridaTramo.setNumsecdestino(numSec.shortValue());
|
||||||
|
|
||||||
|
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, esquemaTramo.getTiempoEstancia());
|
||||||
|
corridaTramo.setFechorsalida( getCalendarFechorSalida(fecHorSalida).getTime());
|
||||||
|
|
||||||
|
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
|
||||||
|
corridaTramo.setFechorllegada(getCalendarFechorllegada(fecHorallegada).getTime());
|
||||||
|
|
||||||
|
horaChegadaAnterior = fecHorallegada;
|
||||||
|
|
||||||
|
corridaTramo.setFechortarjetaviaje(null);
|
||||||
|
corridaTramo.setNodo(corridaCtrl.getNodo());
|
||||||
|
|
||||||
|
corridaTramo.setNumsecuencia(esquemaTramo.getNumsecuencia());
|
||||||
|
Tramo tramo = esquemaTramo.getTramo();
|
||||||
|
if (tramo != null) {
|
||||||
|
corridaTramo.setOrigem(tramo.getOrigem());
|
||||||
|
corridaTramo.setDestino(tramo.getDestino());
|
||||||
|
}
|
||||||
|
corridaTramo.setTramo(tramo);
|
||||||
|
corridaTramo.setUsuariotarjetaviajeId(null);
|
||||||
|
|
||||||
|
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
|
||||||
|
if (excepcionTiempo != null) {
|
||||||
|
corridaTramo.setFechorllegada(excepcionTiempo);
|
||||||
|
horaChegadaAnterior = excepcionTiempo;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
||||||
|
corridaTramo.setActivo(ActivoUtil.ATIVO);
|
||||||
|
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
||||||
|
corridaTramo.setActivo(ActivoUtil.INATIVO);
|
||||||
|
}
|
||||||
|
//
|
||||||
|
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
}
|
||||||
|
corridaTramo.setCorrida(corrida);
|
||||||
|
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
|
||||||
|
|
||||||
|
if (husoHorVeranoLlegadaAnterior == null) {
|
||||||
|
corridaTramo.setFechorsalidaH(corridaTramo.getFechorsalida());
|
||||||
|
} else {
|
||||||
|
|
||||||
|
// Ajusta tambem o tempo de instancia do calculo do horario de verao
|
||||||
|
if (esquemaTramo.getTiempoEstancia() != null) {
|
||||||
|
GregorianCalendar tmp = new GregorianCalendar();
|
||||||
|
tmp.setTime(husoHorVeranoLlegadaAnterior);
|
||||||
|
|
||||||
|
tmp.add(Calendar.MINUTE, esquemaTramo.getTiempoEstancia().getMinutes());
|
||||||
|
tmp.add(Calendar.HOUR_OF_DAY, esquemaTramo.getTiempoEstancia().getHours());
|
||||||
|
|
||||||
|
log.debug("Tempo Recorrido H + Estancia: " + sdf.format(tmp.getTime()));
|
||||||
|
|
||||||
|
husoHorVeranoLlegadaAnterior = tmp.getTime();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
corridaTramo.setFechorsalidaH(husoHorVeranoLlegadaAnterior);
|
||||||
|
}
|
||||||
|
|
||||||
|
husoHorVeranoLlegadaAnterior = calcularHusoHorVeranoLlegada(esquemaTramo, corridaTramo);
|
||||||
|
|
||||||
|
if (husoHorVeranoLlegadaAnterior != null) {
|
||||||
|
corridaTramo.setFechorllegadaH(husoHorVeranoLlegadaAnterior);
|
||||||
|
corridaTramo.setFechorSalidaOriginalH(husoHorVeranoLlegadaAnterior);
|
||||||
|
} else {
|
||||||
|
corridaTramo.setFechorllegadaH(corridaTramo.getFechorllegada());
|
||||||
|
corridaTramo.setFechorSalidaOriginalH(corridaTramo.getFechorSalidaOriginal());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (numSec == 1) {
|
||||||
|
corrida.setFechorSalidaOriginalH(corridaTramo.getFechorsalidaH());
|
||||||
|
}
|
||||||
|
|
||||||
|
lsCorridaTramo.add(corridaTramo);
|
||||||
|
|
||||||
|
}
|
||||||
|
return lsCorridaTramo;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void validaFlexBus(EsquemaCorrida esquemaCorrida, Corrida corrida) {
|
||||||
|
if(esquemaCorrida.getIsFlexBus()) {
|
||||||
|
corrida.setOcupacaoMinima(esquemaCorrida.getOcupacaoMinima());
|
||||||
|
corrida.setHorasParaConfirmacao(esquemaCorrida.getHorasParaConfirmacao());
|
||||||
|
corrida.setMinutosParaConfirmacao(esquemaCorrida.getMinutosParaConfirmacao());
|
||||||
|
corrida.setIsFlexBus(Boolean.TRUE);
|
||||||
|
|
||||||
|
corrida.setStatusFlexBus(StatusFlexBus.EM_RESERVA.getStatus());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Boolean realizaValidacoesGerais(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer diaSemana, Boolean isFeriado,
|
||||||
|
Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra, List<EsquemaTramo> lsEsquemaTramo){
|
||||||
|
Integer corridaId = esquemaCorrida.getNumCorrida();
|
||||||
|
String fecCorrida = DateUtil.getStringDate(horario);
|
||||||
|
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + " vigencia invalida=" + dataGeracao);
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A") || esquemaCorrida.getStatusCorrida().equals("L")))) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + "status corrida invalido=" + esquemaCorrida.getStatusCorrida());
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (esquemaCorrida.getIndDiaSimDiaNao() == null || esquemaCorrida.getIndDiaSimDiaNao() == Boolean.FALSE) {
|
||||||
|
if (!temCorridaDiaSemana(diaSemana, esquemaCorrida, isFeriado)) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + "dia semana no valido=" + diaSemana);
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!tramoServicioService.existenTiemposTramosEsquema(esquemaCorrida.getEsquemacorridaId())) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida +". Nao foi cadastrado o tempo de todos os trechos do esquema corrida=" + esquemaCorrida.getEsquemacorridaId());
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!validaCorridaDiaSimDiaNao(esquemaCorrida, dataGeracao, numCorrida)) {
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corridaDAO.existe(id)) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". corrida existe = " + numCorrida + ";" + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0);
|
||||||
|
Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem();
|
||||||
|
if (origemCorrida == null) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Origem não preenchido (Primeiro trecho EsquemaTramo)");
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
||||||
|
Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino();
|
||||||
|
if (destinoCorrida == null) {
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Destino não preenchido (Último trecho EsquemaTramo)");
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(marca !=null && Boolean.FALSE.equals(marca.getActivo())){
|
||||||
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". MarcaId=" + marca.getMarcaId() +" inativa, corrida não pode ser gerada");
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Boolean validaCorridaDiaSimDiaNao(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer numCorrida ){
|
||||||
|
if (Boolean.TRUE.equals(esquemaCorrida.getIndDiaSimDiaNao())) {
|
||||||
|
Calendar calendarData = Calendar.getInstance();
|
||||||
|
calendarData.setTime(dataGeracao);
|
||||||
|
calendarData.add(Calendar.DATE, -1);
|
||||||
|
|
||||||
|
Corrida.Id corridaOntem = new Corrida.Id();
|
||||||
|
|
||||||
|
corridaOntem.setCorridaId(numCorrida);
|
||||||
|
corridaOntem.setFeccorrida(DateUtil.normalizarToFecha(calendarData.getTime()));
|
||||||
|
|
||||||
|
if (corridaDAO.existe(corridaOntem)) {
|
||||||
|
log.info("Esquema configurado para gerar dia sim dia não e já possui corrida gerado no dia anterior, por isso não está data: " + DateUtil.getStringDate(dataGeracao));
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Calendar getCalendarFechorllegada(Date fecHorallegada) {
|
||||||
|
Calendar llegada = Calendar.getInstance();
|
||||||
|
llegada.setTime(fecHorallegada);
|
||||||
|
llegada.set(llegada.get(Calendar.YEAR), llegada.get(Calendar.MONTH), llegada.get(Calendar.DATE),
|
||||||
|
llegada.get(Calendar.HOUR_OF_DAY), llegada.get(Calendar.MINUTE), NumberUtils.INTEGER_ZERO);
|
||||||
|
return llegada;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Calendar getCalendarFechorSalida(Date fecHorSalida) {
|
||||||
|
Calendar salida = Calendar.getInstance();
|
||||||
|
salida.setTime(fecHorSalida);
|
||||||
|
salida.set(salida.get(Calendar.YEAR), salida.get(Calendar.MONTH), salida.get(Calendar.DATE),
|
||||||
|
salida.get(Calendar.HOUR_OF_DAY), salida.get(Calendar.MINUTE), NumberUtils.INTEGER_ZERO);
|
||||||
|
return salida;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void criaAssentoExclusivo(EsquemaCorrida esquemaCorrida, Corrida corrida) {
|
||||||
|
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
||||||
|
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
||||||
|
DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(), ea.getNumasiento());
|
||||||
|
if (detDiagramaAutobus != null && detDiagramaAutobus.getVendible()) {
|
||||||
|
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
|
||||||
|
asientoExclusivo.setCorrida(corrida);
|
||||||
|
asientoExclusivo.setMotivobloqueo(null);
|
||||||
|
asientoExclusivo.setNodo(corrida.getNodo());
|
||||||
|
asientoExclusivo.setNumasiento(ea.getNumasiento());
|
||||||
|
asientoExclusivo.setVendible(ea.getIndvendible());
|
||||||
|
asientoExclusivo.setParada(ea.getParada());
|
||||||
|
asientoExclusivo.setTiempoLiberacion(ea.getTiempoLiberacion());
|
||||||
|
if (ea.getIndvendible()) {
|
||||||
|
asientoExclusivo.setMotivobloqueo(null);
|
||||||
|
} else {
|
||||||
|
asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo());
|
||||||
|
asientoExclusivo.setDestino(ea.getDestino());
|
||||||
|
}
|
||||||
|
|
||||||
|
asientoExclusivo.setActivo(Boolean.TRUE);
|
||||||
|
asientoExclusivo.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
}
|
||||||
|
|
||||||
|
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) {
|
private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) {
|
||||||
|
|
||||||
Ciudad ciudadOrigen = esquemaTramo.getTramo().getOrigem().getCiudad();
|
Ciudad ciudadOrigen = esquemaTramo.getTramo().getOrigem().getCiudad();
|
||||||
|
@ -898,9 +957,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
corridaPisoExtra = null;
|
corridaPisoExtra = null;
|
||||||
corridaPisoExtra2 = null;
|
corridaPisoExtra2 = null;
|
||||||
|
|
||||||
if (corrida == null) {// Si no genera la corrida, no va a
|
if (corrida == null) {
|
||||||
// generar el rebote
|
|
||||||
log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao);
|
|
||||||
corridaGerada = false;
|
corridaGerada = false;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -957,78 +1014,8 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
|
if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
|
||||||
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
|
criaCorridaRebote(dataGeracao, corrida, corridaPisoExtra, corridaPisoExtra2, esquemaCorrida,
|
||||||
|
isFeriado);
|
||||||
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
|
|
||||||
Corrida corridaPisoExtraRebote = null;
|
|
||||||
boolean generaReboteDiaSeguinte = false;
|
|
||||||
|
|
||||||
if (corridaRebote != null) {
|
|
||||||
EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote();
|
|
||||||
if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) {
|
|
||||||
|
|
||||||
EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(ecRebote.getNumCorridaPisoExtra());
|
|
||||||
|
|
||||||
log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",ecRebote.getEsquemacorridaId(),ecRebote.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() ));
|
|
||||||
|
|
||||||
corridaPisoExtraRebote = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado);
|
|
||||||
|
|
||||||
if (corridaRebote != null && corridaPisoExtraRebote != null) {
|
|
||||||
// Salvando Referencia da Corrida no piso extra
|
|
||||||
corridaPisoExtraRebote.setCorridaPiso(corridaRebote);
|
|
||||||
corridaPisoExtraRebote.setNumPiso(2);
|
|
||||||
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
|
|
||||||
|
|
||||||
// Referencia do Piso extra na Corrida
|
|
||||||
corridaRebote.setCorridaPiso(corridaPisoExtraRebote);
|
|
||||||
corridaRebote.setNumPiso(1);
|
|
||||||
corridaRebote = corridaDAO.actualizacion(corridaRebote);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// RebotePisoExtra
|
|
||||||
if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) {
|
|
||||||
generaReboteDiaSeguinte = true; // si fue generado
|
|
||||||
// con una
|
|
||||||
// fechamenor tienes
|
|
||||||
// que generar para
|
|
||||||
// el dia seguinte
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
generaReboteDiaSeguinte = true;// si no fue encontrado
|
|
||||||
// para el dia de
|
|
||||||
// hoy,genera para
|
|
||||||
// manhana
|
|
||||||
}
|
|
||||||
|
|
||||||
if (generaReboteDiaSeguinte) {
|
|
||||||
log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy");
|
|
||||||
|
|
||||||
corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
|
||||||
|
|
||||||
if (corridaPisoExtraRebote != null) {
|
|
||||||
corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (corridaRebote == null) {
|
|
||||||
log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (corridaRebote != null) {
|
|
||||||
log.info("Rebote generado=" + corridaRebote.getId());
|
|
||||||
corrida.setCorridaRebote(corridaRebote);
|
|
||||||
corridaDAO.actualizacion(corrida);
|
|
||||||
}
|
|
||||||
if (corridaPisoExtraRebote != null && corridaPisoExtra != null) {
|
|
||||||
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
|
||||||
corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote);
|
|
||||||
corridaDAO.actualizacion(corridaPisoExtra);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (corridaPisoExtraRebote != null && corridaPisoExtra2 != null) {
|
|
||||||
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
|
||||||
corridaPisoExtra2.setCorridaRebote(corridaPisoExtraRebote);
|
|
||||||
corridaDAO.actualizacion(corridaPisoExtra2);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1039,7 +1026,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
status = transactionManager.getTransaction(def);
|
status = transactionManager.getTransaction(def);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida)
|
}
|
||||||
} finally {
|
} finally {
|
||||||
if ((status != null) && (!status.isCompleted())) {
|
if ((status != null) && (!status.isCompleted())) {
|
||||||
transactionManager.commit(status);
|
transactionManager.commit(status);
|
||||||
|
@ -1055,6 +1042,76 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return corridaGerada;
|
return corridaGerada;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void criaCorridaRebote(Date dataGeracao, Corrida corrida, Corrida corridaPisoExtra,
|
||||||
|
Corrida corridaPisoExtra2, EsquemaCorrida esquemaCorrida, Boolean isFeriado) {
|
||||||
|
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
|
||||||
|
|
||||||
|
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
|
||||||
|
Corrida corridaPisoExtraRebote = null;
|
||||||
|
boolean generaReboteDiaSeguinte = false;
|
||||||
|
|
||||||
|
if (corridaRebote != null) {
|
||||||
|
EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote();
|
||||||
|
if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) {
|
||||||
|
|
||||||
|
EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(ecRebote.getNumCorridaPisoExtra());
|
||||||
|
|
||||||
|
log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",ecRebote.getEsquemacorridaId(),ecRebote.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() ));
|
||||||
|
|
||||||
|
corridaPisoExtraRebote = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado);
|
||||||
|
|
||||||
|
if (corridaRebote != null && corridaPisoExtraRebote != null) {
|
||||||
|
// Salvando Referencia da Corrida no piso extra
|
||||||
|
corridaPisoExtraRebote.setCorridaPiso(corridaRebote);
|
||||||
|
corridaPisoExtraRebote.setNumPiso(2);
|
||||||
|
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
|
||||||
|
|
||||||
|
// Referencia do Piso extra na Corrida
|
||||||
|
corridaRebote.setCorridaPiso(corridaPisoExtraRebote);
|
||||||
|
corridaRebote.setNumPiso(1);
|
||||||
|
corridaRebote = corridaDAO.actualizacion(corridaRebote);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// RebotePisoExtra
|
||||||
|
if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) {
|
||||||
|
generaReboteDiaSeguinte = true; // si fue generado con una fechamenor tienes que generar para el dia seguinte
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
generaReboteDiaSeguinte = true;// si no fue encontrado para el dia de hoy,genera para manhana
|
||||||
|
}
|
||||||
|
|
||||||
|
if (generaReboteDiaSeguinte) {
|
||||||
|
log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy");
|
||||||
|
|
||||||
|
corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||||
|
|
||||||
|
if (corridaPisoExtraRebote != null) {
|
||||||
|
corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corridaRebote == null) {
|
||||||
|
log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (corridaRebote != null) {
|
||||||
|
log.info("Rebote generado=" + corridaRebote.getId());
|
||||||
|
corrida.setCorridaRebote(corridaRebote);
|
||||||
|
corridaDAO.actualizacion(corrida);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corridaPisoExtraRebote != null && corridaPisoExtra != null) {
|
||||||
|
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
||||||
|
corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote);
|
||||||
|
corridaDAO.actualizacion(corridaPisoExtra);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (corridaPisoExtraRebote != null && corridaPisoExtra2 != null) {
|
||||||
|
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
||||||
|
corridaPisoExtra2.setCorridaRebote(corridaPisoExtraRebote);
|
||||||
|
corridaDAO.actualizacion(corridaPisoExtra2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void validaCriaReservaCliente(Corrida corrida, Integer unUsuarioId, Integer unPuntoVenta, Integer estacionId) {
|
private void validaCriaReservaCliente(Corrida corrida, Integer unUsuarioId, Integer unPuntoVenta, Integer estacionId) {
|
||||||
try {
|
try {
|
||||||
List<ReservaEspecialCliente> reservaEspecialClienteList = reservaEspecialClientService.bucarReservaEspecialByCorridaId(corrida.getId().getCorridaId().longValue()) ;
|
List<ReservaEspecialCliente> reservaEspecialClienteList = reservaEspecialClientService.bucarReservaEspecialByCorridaId(corrida.getId().getCorridaId().longValue()) ;
|
||||||
|
|
|
@ -304,7 +304,11 @@ public final class DateUtil {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
public static String getStringDate(java.util.Date d) {
|
public static String getStringDate(java.util.Date d) {
|
||||||
return getStringDate(d, "dd/MM/yyyy");
|
try {
|
||||||
|
return getStringDate(d, "dd/MM/yyyy");
|
||||||
|
}catch(Exception e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getStringDate(java.sql.Date d) {
|
public static String getStringDate(java.sql.Date d) {
|
||||||
|
|
Loading…
Reference in New Issue