fixes bug #AL-2734
parent
c4f16b4212
commit
b29ee7a47e
|
@ -443,332 +443,43 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
@SuppressWarnings("deprecation")
|
||||
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;
|
||||
|
||||
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 {
|
||||
|
||||
|
||||
GregorianCalendar calendario = new GregorianCalendar();
|
||||
calendario.setTime(dataGeracao);
|
||||
Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
|
||||
Ruta ruta = esquemaCorrida.getRuta();
|
||||
ClaseServicio claseServicio = esquemaCorrida.getClaseServicio();
|
||||
Marca marca = esquemaCorrida.getMarca();
|
||||
Date horario = esquemaCorrida.getHorasalida();
|
||||
horario = DateUtil.normalizar(horario);
|
||||
Integer numCorrida = esquemaCorrida.getNumCorrida();
|
||||
|
||||
Corrida.Id id = new Corrida.Id();
|
||||
|
||||
id.setCorridaId(numCorrida);
|
||||
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);
|
||||
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()) {
|
||||
corrida.setOcupacaoMinima(esquemaCorrida.getOcupacaoMinima());
|
||||
corrida.setHorasParaConfirmacao(esquemaCorrida.getHorasParaConfirmacao());
|
||||
corrida.setMinutosParaConfirmacao(esquemaCorrida.getMinutosParaConfirmacao());
|
||||
corrida.setIsFlexBus(Boolean.TRUE);
|
||||
|
||||
corrida.setStatusFlexBus(StatusFlexBus.EM_RESERVA.getStatus());
|
||||
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
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());
|
||||
Parada origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem();
|
||||
|
||||
Parada destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino();
|
||||
|
||||
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...
|
||||
corridaTramo.setNumsecorigen(numSec.shortValue());
|
||||
numSec = numSec + 1;
|
||||
corridaTramo.setNumsecdestino(numSec.shortValue());
|
||||
CorridaCtrl corridaCtrl = criaCorridaCtrl(isPisoExtra, ruta, claseServicio, marca, horario, numCorrida);
|
||||
|
||||
Calendar salida = Calendar.getInstance();
|
||||
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, esquemaTramo.getTiempoEstancia());
|
||||
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);
|
||||
corrida = criaCorrida(esquemaCorrida, dataGeracao, id, lsEsquemaTramo, origemCorrida, destinoCorrida,
|
||||
corridaCtrl);
|
||||
|
||||
cantCorridaGenerada++;
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
criaAssentoExclusivo(esquemaCorrida, corrida);
|
||||
|
||||
} catch (Exception ex) {
|
||||
log.error("", ex);
|
||||
|
@ -777,6 +488,354 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
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) {
|
||||
|
||||
Ciudad ciudadOrigen = esquemaTramo.getTramo().getOrigem().getCiudad();
|
||||
|
@ -898,9 +957,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
corridaPisoExtra = null;
|
||||
corridaPisoExtra2 = null;
|
||||
|
||||
if (corrida == null) {// Si no genera la corrida, no va a
|
||||
// generar el rebote
|
||||
log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao);
|
||||
if (corrida == null) {
|
||||
corridaGerada = false;
|
||||
continue;
|
||||
}
|
||||
|
@ -957,78 +1014,8 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
}
|
||||
|
||||
if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
|
||||
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);
|
||||
}
|
||||
criaCorridaRebote(dataGeracao, corrida, corridaPisoExtra, corridaPisoExtra2, esquemaCorrida,
|
||||
isFeriado);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1039,7 +1026,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
status = transactionManager.getTransaction(def);
|
||||
}
|
||||
|
||||
} // for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida)
|
||||
}
|
||||
} finally {
|
||||
if ((status != null) && (!status.isCompleted())) {
|
||||
transactionManager.commit(status);
|
||||
|
@ -1055,6 +1042,76 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
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) {
|
||||
try {
|
||||
List<ReservaEspecialCliente> reservaEspecialClienteList = reservaEspecialClientService.bucarReservaEspecialByCorridaId(corrida.getId().getCorridaId().longValue()) ;
|
||||
|
|
|
@ -304,7 +304,11 @@ public final class DateUtil {
|
|||
return null;
|
||||
}
|
||||
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) {
|
||||
|
|
Loading…
Reference in New Issue