fixes bug #AL-2734

master
valdevir 2023-08-02 15:31:13 -03:00
parent c4f16b4212
commit b29ee7a47e
2 changed files with 442 additions and 381 deletions

View File

@ -443,111 +443,54 @@ 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));
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
if (esquemaCorrida.getIndDiaSimDiaNao() != null && esquemaCorrida.getIndDiaSimDiaNao()) { if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo)) {
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; return null;
} }
// Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, é chave primaria, temos que buscar somente por esse campo Parada origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem();
// 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); Parada destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino();
boolean novoRegistro = false; /* 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*/
if (corridaCtrl == null) { CorridaCtrl corridaCtrl = criaCorridaCtrl(isPisoExtra, ruta, claseServicio, marca, horario, numCorrida);
corridaCtrl = new CorridaCtrl();
novoRegistro = true; corrida = criaCorrida(esquemaCorrida, dataGeracao, id, lsEsquemaTramo, origemCorrida, destinoCorrida,
corridaCtrl);
cantCorridaGenerada++;
criaAssentoExclusivo(esquemaCorrida, corrida);
} catch (Exception ex) {
log.error("", ex);
} }
corridaCtrl.setCorridaId(numCorrida); return corrida;
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);
} }
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 = new Corrida();
corrida.setId(id); corrida.setId(id);
corrida.setEsquemaCorrida(esquemaCorrida); corrida.setEsquemaCorrida(esquemaCorrida);
@ -586,46 +529,77 @@ public class CorridaServiceImpl implements CorridaService {
corrida.setNodo(corridaCtrl.getNodo()); corrida.setNodo(corridaCtrl.getNodo());
corrida.setDivision(esquemaCorrida.getDivision()); corrida.setDivision(esquemaCorrida.getDivision());
corrida.setRuta(esquemaCorrida.getRuta()); corrida.setRuta(esquemaCorrida.getRuta());
// corrida.setRuta(corridaCtrl.getRuta());
corrida.setRolOperativo(esquemaCorrida.getRolOperativo()); corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
corrida.setZona(null); corrida.setZona(null);
corrida.setOrigem(origemCorrida);
corrida.setDestino(destinoCorrida);
// corrida Tramo: 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>(); List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
Integer numSec = 1;
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
Date horaChegadaAnterior = null; Date horaChegadaAnterior = null;
Date husoHorVeranoLlegadaAnterior = null; Date husoHorVeranoLlegadaAnterior = null;
Integer numSec = 1;
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());
}
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) { for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
CorridaTramo corridaTramo = new CorridaTramo(); CorridaTramo corridaTramo = new CorridaTramo();
@ -643,19 +617,11 @@ public class CorridaServiceImpl implements CorridaService {
numSec = numSec + 1; numSec = numSec + 1;
corridaTramo.setNumsecdestino(numSec.shortValue()); corridaTramo.setNumsecdestino(numSec.shortValue());
Calendar salida = Calendar.getInstance();
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, esquemaTramo.getTiempoEstancia()); Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, esquemaTramo.getTiempoEstancia());
salida.setTime(fecHorSalida); corridaTramo.setFechorsalida( getCalendarFechorSalida(fecHorSalida).getTime());
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); Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
llegada.setTime(fecHorallegada); corridaTramo.setFechorllegada(getCalendarFechorllegada(fecHorallegada).getTime());
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; horaChegadaAnterior = fecHorallegada;
@ -726,21 +692,120 @@ public class CorridaServiceImpl implements CorridaService {
} }
lsCorridaTramo.add(corridaTramo); 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++; }
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); List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
for (EsquemaAsiento ea : lsEsquemaAsiento) { for (EsquemaAsiento ea : lsEsquemaAsiento) {
DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(), ea.getNumasiento()); DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(), ea.getNumasiento());
@ -769,12 +834,6 @@ public class CorridaServiceImpl implements CorridaService {
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo); asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
} }
} }
} catch (Exception ex) {
log.error("", ex);
}
return corrida;
} }
private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) { private Date calcularHusoHorVeranoLlegada(EsquemaTramo esquemaTramo, CorridaTramo corridaTramo) {
@ -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,6 +1014,36 @@ public class CorridaServiceImpl implements CorridaService {
} }
if (esquemaCorrida.getEsquemaCorridaRebote() != null) { if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
criaCorridaRebote(dataGeracao, corrida, corridaPisoExtra, corridaPisoExtra2, esquemaCorrida,
isFeriado);
}
if (cantCorridaGenerada >= cantCorridaCommit) {
cantCorridaGenerada = 0;
transactionManager.commit(status);
status = transactionManager.getTransaction(def);
}
}
} finally {
if ((status != null) && (!status.isCompleted())) {
transactionManager.commit(status);
}
}
//Valida se existe configuração de reserva para o cliente e crria Cria reserva
if(corrida !=null) {
if(unUsuarioId!=null && unPuntoVenta!=null && estacionId!=null) {
validaCriaReservaCliente(corrida, unUsuarioId, unPuntoVenta, estacionId);
}
}
return corridaGerada;
}
private void criaCorridaRebote(Date dataGeracao, Corrida corrida, Corrida corridaPisoExtra,
Corrida corridaPisoExtra2, EsquemaCorrida esquemaCorrida, Boolean isFeriado) {
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId()); log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado); Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
@ -987,17 +1074,10 @@ public class CorridaServiceImpl implements CorridaService {
} }
// RebotePisoExtra // RebotePisoExtra
if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) { if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) {
generaReboteDiaSeguinte = true; // si fue generado generaReboteDiaSeguinte = true; // si fue generado con una fechamenor tienes que generar para el dia seguinte
// con una
// fechamenor tienes
// que generar para
// el dia seguinte
} }
} else { } else {
generaReboteDiaSeguinte = true;// si no fue encontrado generaReboteDiaSeguinte = true;// si no fue encontrado para el dia de hoy,genera para manhana
// para el dia de
// hoy,genera para
// manhana
} }
if (generaReboteDiaSeguinte) { if (generaReboteDiaSeguinte) {
@ -1018,6 +1098,7 @@ public class CorridaServiceImpl implements CorridaService {
corrida.setCorridaRebote(corridaRebote); corrida.setCorridaRebote(corridaRebote);
corridaDAO.actualizacion(corrida); corridaDAO.actualizacion(corrida);
} }
if (corridaPisoExtraRebote != null && corridaPisoExtra != null) { if (corridaPisoExtraRebote != null && corridaPisoExtra != null) {
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId()); log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote); corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote);
@ -1031,30 +1112,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
} }
if (cantCorridaGenerada >= cantCorridaCommit) {
cantCorridaGenerada = 0;
transactionManager.commit(status);
status = transactionManager.getTransaction(def);
}
} // for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida)
} finally {
if ((status != null) && (!status.isCompleted())) {
transactionManager.commit(status);
}
}
//Valida se existe configuração de reserva para o cliente e crria Cria reserva
if(corrida !=null) {
if(unUsuarioId!=null && unPuntoVenta!=null && estacionId!=null) {
validaCriaReservaCliente(corrida, unUsuarioId, unPuntoVenta, estacionId);
}
}
return corridaGerada;
}
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()) ;

View File

@ -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) {
try {
return getStringDate(d, "dd/MM/yyyy"); 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) {