- correção na geração de corridas: Validação para não permitir gerar serviço que não tenha vigência válida
- melhoria nos logs de debug durante a geração - remoção de classe/zul que não é mais usado git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@25694 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
f0fb7ae218
commit
3a4932ba14
|
@ -249,7 +249,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
} else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) {
|
} else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) {
|
||||||
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
|
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
|
||||||
}
|
}
|
||||||
}else{
|
} else {
|
||||||
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
|
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -265,8 +265,8 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
for (TramoServicio ts : lsTramoServicio) {
|
for (TramoServicio ts : lsTramoServicio) {
|
||||||
HoraSistema hs = new HoraSistema(ts.getTiemporecorrido());
|
HoraSistema hs = new HoraSistema(ts.getTiemporecorrido());
|
||||||
|
|
||||||
gHoraChegada.add(Calendar.HOUR_OF_DAY, hs.getHora());
|
gHoraChegada.add(Calendar.HOUR_OF_DAY, hs.getHora());
|
||||||
gHoraChegada.add(Calendar.MINUTE, hs.getMinuto());
|
gHoraChegada.add(Calendar.MINUTE, hs.getMinuto());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -286,10 +286,10 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
log.debug("Tempo Recorrido : " + sdf.format(gHoraSaidaProximo.getTime()));
|
log.debug("Tempo Recorrido : " + sdf.format(gHoraSaidaProximo.getTime()));
|
||||||
|
|
||||||
if (tiempoEstanciaAnterior != null) {
|
if (tiempoEstanciaAnterior != null) {
|
||||||
|
|
||||||
gHoraSaidaProximo.add(Calendar.MINUTE, tiempoEstanciaAnterior.getMinutes());
|
gHoraSaidaProximo.add(Calendar.MINUTE, tiempoEstanciaAnterior.getMinutes());
|
||||||
gHoraSaidaProximo.add(Calendar.HOUR_OF_DAY, tiempoEstanciaAnterior.getHours());
|
gHoraSaidaProximo.add(Calendar.HOUR_OF_DAY, tiempoEstanciaAnterior.getHours());
|
||||||
|
|
||||||
log.debug("Tempo Recorrido + Estancia: " + sdf.format(gHoraSaidaProximo.getTime()));
|
log.debug("Tempo Recorrido + Estancia: " + sdf.format(gHoraSaidaProximo.getTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,10 +333,29 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Genera una corrida para el esquemaCorrida informado en el dia y fecha
|
* Indica si el esquemaCorrida informado tiene una vigencia válida para la data de generacion
|
||||||
* informados.
|
|
||||||
*
|
*
|
||||||
* Es validado si la corrida ya existe
|
* @param esquemaCorrida
|
||||||
|
* @param dataGeracao
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private boolean vigenciaValida(EsquemaCorrida esquemaCorrida, Date dataGeracao) {
|
||||||
|
if ((DateUtil.compareOnlyDate(dataGeracao, esquemaCorrida.getEsquemaOperacional().getFecfinvigencia()) <= 0) &&
|
||||||
|
(DateUtil.compareOnlyDate(dataGeracao, esquemaCorrida.getEsquemaOperacional().getFecniciovigencia()) >= 0)) {
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Genera una corrida para el esquemaCorrida informado en el dia y fecha informados.<br/>
|
||||||
|
*
|
||||||
|
* Cuando la corrida no es generada : <br/>
|
||||||
|
* - corrida ya existe : eso es checado por el numCorrida e dataGeneracion <br/>
|
||||||
|
* - la fecha de generacion no tiene una vigencia válida <br/>
|
||||||
|
* - el status del esquema corrida no es autorizado ("A") <br/>
|
||||||
|
*
|
||||||
*
|
*
|
||||||
* @param esquemaCorrida
|
* @param esquemaCorrida
|
||||||
* @param diaSemana
|
* @param diaSemana
|
||||||
|
@ -349,218 +368,228 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
|
Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK);
|
||||||
Corrida corrida = null;
|
Corrida corrida = null;
|
||||||
if ((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A"))) {
|
|
||||||
if (temCorridaDiaSemana(diaSemana, esquemaCorrida, isFeriado)) {
|
|
||||||
try {
|
|
||||||
Ruta ruta = esquemaCorrida.getRuta();
|
|
||||||
ClaseServicio claseServicio = esquemaCorrida.getClaseServicio();
|
|
||||||
Marca marca = esquemaCorrida.getMarca();
|
|
||||||
Date horario = esquemaCorrida.getHorasalida();
|
|
||||||
horario = DateUtil.normalizar(horario);
|
|
||||||
Integer numCorrida = (!isPisoExtra)?esquemaCorrida.getNumCorrida():esquemaCorrida.getNumCorridaPisoExtra();
|
|
||||||
|
|
||||||
Corrida.Id id = new Corrida.Id();
|
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
||||||
|
log.debug("vigencia invalida=" + dataGeracao);
|
||||||
id.setCorridaId(numCorrida);
|
|
||||||
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
|
||||||
|
|
||||||
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
|
return null;
|
||||||
//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
|
if (!((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A")))) {
|
||||||
Parada origen = rutaService.getOrigem(ruta);
|
log.debug("status corrida invalido=" + esquemaCorrida.getStatusCorrida());
|
||||||
if (origen == null) {
|
|
||||||
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
|
|
||||||
}
|
|
||||||
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
|
|
||||||
|
|
||||||
corridaCtrl.setActivo(Boolean.TRUE);
|
return null;
|
||||||
corridaCtrl.setFecmodif(Calendar.getInstance().getTime());
|
}
|
||||||
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
}
|
|
||||||
|
|
||||||
corridaCtrl.setPisoExtra(isPisoExtra);
|
if (!temCorridaDiaSemana(diaSemana, esquemaCorrida, isFeriado)) {
|
||||||
if (novoRegistro){
|
log.debug("dia semana no valido=" + diaSemana);
|
||||||
corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
|
|
||||||
}else{
|
|
||||||
corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
corrida = new Corrida();
|
|
||||||
corrida.setId(id);
|
|
||||||
corrida.setEsquemaCorrida(esquemaCorrida);
|
|
||||||
corrida.setCorridaCtrl(corridaCtrl);
|
|
||||||
corrida.setAutobus(null);
|
|
||||||
corrida.setClaseServicio(esquemaCorrida.getClaseServicio());
|
|
||||||
corrida.setConductor(null);
|
|
||||||
corrida.setTipoServicio(new Short("1"));
|
|
||||||
Integer cantparados = esquemaCorrida.getCantparados();
|
|
||||||
if (cantparados != null) {
|
|
||||||
corrida.setCantParados(cantparados.shortValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
Parada destino = rutaService.getDestino(ruta);
|
return null;
|
||||||
if (destino == null) {
|
}
|
||||||
return null;
|
|
||||||
}
|
|
||||||
corrida.setDestino(destino);
|
|
||||||
|
|
||||||
corrida.setEmpresa(esquemaCorrida.getEmpresa());
|
try {
|
||||||
corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
|
Ruta ruta = esquemaCorrida.getRuta();
|
||||||
|
ClaseServicio claseServicio = esquemaCorrida.getClaseServicio();
|
||||||
|
Marca marca = esquemaCorrida.getMarca();
|
||||||
|
Date horario = esquemaCorrida.getHorasalida();
|
||||||
|
horario = DateUtil.normalizar(horario);
|
||||||
|
Integer numCorrida = (!isPisoExtra) ? esquemaCorrida.getNumCorrida() : esquemaCorrida.getNumCorridaPisoExtra();
|
||||||
|
|
||||||
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
Corrida.Id id = new Corrida.Id();
|
||||||
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
|
||||||
corrida.setIndstatuscorrida("H");
|
|
||||||
corrida.setMarca(esquemaCorrida.getMarca());
|
|
||||||
corrida.setNodo(corridaCtrl.getNodo());
|
|
||||||
corrida.setDivision(esquemaCorrida.getDivision());
|
|
||||||
|
|
||||||
Parada origem = rutaService.getOrigem(ruta);
|
id.setCorridaId(numCorrida);
|
||||||
if (origem == null) {
|
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
||||||
return null;
|
|
||||||
}
|
|
||||||
corrida.setOrigem(origem);
|
|
||||||
|
|
||||||
corrida.setRuta(esquemaCorrida.getRuta());
|
if (corridaDAO.existe(id)) {
|
||||||
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
|
log.info("corrida existe = " + numCorrida + ";" + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
|
||||||
corrida.setZona(null);
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
|
// 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 (hayCorrida) {
|
CorridaCtrl corridaCtrl = corridaCtrlService.obtenerID(numCorrida);
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// corrida Tramo:
|
boolean novoRegistro = false;
|
||||||
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
|
|
||||||
Integer numSec = 1;
|
|
||||||
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
|
||||||
Date horaChegadaAnterior = null;
|
|
||||||
Date tiempoInstanciaAnterior = null; // indica o tempo
|
|
||||||
// de instancia
|
|
||||||
// que fica no
|
|
||||||
// tramo
|
|
||||||
// anterior ao
|
|
||||||
// atual
|
|
||||||
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
|
|
||||||
CorridaTramo corridaTramo = new CorridaTramo();
|
|
||||||
corridaTramo.setAutobus(null);
|
|
||||||
corridaTramo.setConductor(null);
|
|
||||||
corridaTramo.setConductor1(null);
|
|
||||||
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
|
|
||||||
|
|
||||||
corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia());
|
if (corridaCtrl == null) {
|
||||||
|
corridaCtrl = new CorridaCtrl();
|
||||||
|
novoRegistro = true;
|
||||||
|
}
|
||||||
|
|
||||||
// numSec: 1-2, 2-3, 3-4...
|
corridaCtrl.setCorridaId(numCorrida);
|
||||||
corridaTramo.setNumsecorigen(numSec.shortValue());
|
corridaCtrl.setMarca(marca);
|
||||||
numSec = numSec + 1;
|
corridaCtrl.setRuta(ruta);
|
||||||
corridaTramo.setNumsecdestino(numSec.shortValue());
|
corridaCtrl.setClaseServicio(claseServicio);
|
||||||
|
corridaCtrl.setHorario(horario);
|
||||||
|
|
||||||
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, tiempoInstanciaAnterior);
|
// parada origem
|
||||||
fecHorSalida.setSeconds(0);
|
Parada origen = rutaService.getOrigem(ruta);
|
||||||
corridaTramo.setFechorsalida(fecHorSalida);
|
if (origen == null) {
|
||||||
|
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
|
||||||
|
}
|
||||||
|
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
|
||||||
|
|
||||||
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
|
corridaCtrl.setActivo(Boolean.TRUE);
|
||||||
fecHorallegada.setSeconds(0);
|
corridaCtrl.setFecmodif(Calendar.getInstance().getTime());
|
||||||
corridaTramo.setFechorllegada(fecHorallegada);
|
|
||||||
horaChegadaAnterior = fecHorallegada;
|
|
||||||
tiempoInstanciaAnterior = esquemaTramo.getTiempoEstancia();
|
|
||||||
|
|
||||||
corridaTramo.setFechortarjetaviaje(null);
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
corridaTramo.setNodo(corridaCtrl.getNodo());
|
corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
}
|
||||||
|
|
||||||
corridaTramo.setNumsecuencia(esquemaTramo.getNumsecuencia());
|
corridaCtrl.setPisoExtra(isPisoExtra);
|
||||||
Tramo tramo = esquemaTramo.getTramo();
|
if (novoRegistro) {
|
||||||
if (tramo != null) {
|
corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
|
||||||
corridaTramo.setOrigem(tramo.getOrigem());
|
} else {
|
||||||
corridaTramo.setDestino(tramo.getDestino());
|
corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl);
|
||||||
}
|
}
|
||||||
corridaTramo.setTramo(tramo);
|
|
||||||
corridaTramo.setUsuariotarjetaviajeId(null);
|
|
||||||
|
|
||||||
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
|
corrida = new Corrida();
|
||||||
if (excepcionTiempo != null) {
|
corrida.setId(id);
|
||||||
corridaTramo.setFechorllegada(excepcionTiempo);
|
corrida.setEsquemaCorrida(esquemaCorrida);
|
||||||
horaChegadaAnterior = excepcionTiempo;
|
corrida.setCorridaCtrl(corridaCtrl);
|
||||||
}
|
corrida.setAutobus(null);
|
||||||
|
corrida.setClaseServicio(esquemaCorrida.getClaseServicio());
|
||||||
|
corrida.setConductor(null);
|
||||||
|
corrida.setTipoServicio(new Short("1"));
|
||||||
|
Integer cantparados = esquemaCorrida.getCantparados();
|
||||||
|
if (cantparados != null) {
|
||||||
|
corrida.setCantParados(cantparados.shortValue());
|
||||||
|
}
|
||||||
|
|
||||||
corridaTramo.setActivo(Boolean.TRUE);
|
Parada destino = rutaService.getDestino(ruta);
|
||||||
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
if (destino == null) {
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
return null;
|
||||||
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
}
|
||||||
}
|
corrida.setDestino(destino);
|
||||||
corridaTramo.setCorrida(corrida);
|
|
||||||
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
|
|
||||||
|
|
||||||
lsCorridaTramo.add(corridaTramo);
|
corrida.setEmpresa(esquemaCorrida.getEmpresa());
|
||||||
}
|
corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
|
||||||
corrida.setCorridaTramoList(lsCorridaTramo);
|
|
||||||
|
|
||||||
corrida.setActivo(Boolean.TRUE);
|
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
||||||
corrida.setFecmodif(Calendar.getInstance().getTime());
|
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
corrida.setIndstatuscorrida("H");
|
||||||
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
corrida.setMarca(esquemaCorrida.getMarca());
|
||||||
} else {
|
corrida.setNodo(corridaCtrl.getNodo());
|
||||||
corrida.setUsuarioId(1);
|
corrida.setDivision(esquemaCorrida.getDivision());
|
||||||
}
|
|
||||||
corrida.setIndTipoVenta(null);
|
|
||||||
|
|
||||||
corrida = corridaDAO.suscribir(corrida);
|
Parada origem = rutaService.getOrigem(ruta);
|
||||||
cantCorridaGenerada++;
|
if (origem == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
corrida.setOrigem(origem);
|
||||||
|
|
||||||
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
corrida.setRuta(esquemaCorrida.getRuta());
|
||||||
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
|
||||||
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
|
corrida.setZona(null);
|
||||||
asientoExclusivo.setCorrida(corrida);
|
|
||||||
asientoExclusivo.setMotivobloqueo(null);
|
|
||||||
asientoExclusivo.setNodo(corrida.getNodo());
|
|
||||||
asientoExclusivo.setNumasiento(ea.getNumasiento());
|
|
||||||
asientoExclusivo.setVendible(ea.getIndvendible());
|
|
||||||
asientoExclusivo.setParada(ea.getParada());
|
|
||||||
if (ea.getIndvendible()) {
|
|
||||||
asientoExclusivo.setMotivobloqueo(null);
|
|
||||||
} else {
|
|
||||||
asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo());
|
|
||||||
asientoExclusivo.setDestino(ea.getDestino());
|
|
||||||
}
|
|
||||||
|
|
||||||
asientoExclusivo.setActivo(Boolean.TRUE);
|
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
|
||||||
asientoExclusivo.setFecmodif(Calendar.getInstance().getTime());
|
|
||||||
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
||||||
asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
||||||
}
|
|
||||||
|
|
||||||
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
|
if (hayCorrida) {
|
||||||
}
|
return null;
|
||||||
|
}
|
||||||
} catch (org.springframework.dao.DataIntegrityViolationException ex) {
|
|
||||||
log.error(ex);
|
// corrida Tramo:
|
||||||
|
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
|
||||||
|
Integer numSec = 1;
|
||||||
|
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
||||||
|
Date horaChegadaAnterior = null;
|
||||||
|
Date tiempoInstanciaAnterior = null; // indica o tempo de instancia que fica no tramo anterior ao atual
|
||||||
|
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
|
||||||
|
CorridaTramo corridaTramo = new CorridaTramo();
|
||||||
|
corridaTramo.setAutobus(null);
|
||||||
|
corridaTramo.setConductor(null);
|
||||||
|
corridaTramo.setConductor1(null);
|
||||||
|
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
|
||||||
|
|
||||||
|
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, tiempoInstanciaAnterior);
|
||||||
|
fecHorSalida.setSeconds(0);
|
||||||
|
corridaTramo.setFechorsalida(fecHorSalida);
|
||||||
|
|
||||||
|
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
|
||||||
|
fecHorallegada.setSeconds(0);
|
||||||
|
corridaTramo.setFechorllegada(fecHorallegada);
|
||||||
|
horaChegadaAnterior = fecHorallegada;
|
||||||
|
tiempoInstanciaAnterior = esquemaTramo.getTiempoEstancia();
|
||||||
|
|
||||||
|
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());
|
||||||
}
|
}
|
||||||
} // if (temCorridaDiaSemana(diaSemana, esquemaCorrida))
|
corridaTramo.setTramo(tramo);
|
||||||
} // if (esquemaCorrida.getStatusCorrida().equals("A"))
|
corridaTramo.setUsuariotarjetaviajeId(null);
|
||||||
|
|
||||||
|
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
|
||||||
|
if (excepcionTiempo != null) {
|
||||||
|
corridaTramo.setFechorllegada(excepcionTiempo);
|
||||||
|
horaChegadaAnterior = excepcionTiempo;
|
||||||
|
}
|
||||||
|
|
||||||
|
corridaTramo.setActivo(Boolean.TRUE);
|
||||||
|
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
}
|
||||||
|
corridaTramo.setCorrida(corrida);
|
||||||
|
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
|
||||||
|
|
||||||
|
lsCorridaTramo.add(corridaTramo);
|
||||||
|
}
|
||||||
|
corrida.setCorridaTramoList(lsCorridaTramo);
|
||||||
|
|
||||||
|
corrida.setActivo(Boolean.TRUE);
|
||||||
|
corrida.setFecmodif(Calendar.getInstance().getTime());
|
||||||
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
||||||
|
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
||||||
|
} else {
|
||||||
|
corrida.setUsuarioId(1);
|
||||||
|
}
|
||||||
|
corrida.setIndTipoVenta(null);
|
||||||
|
|
||||||
|
corrida = corridaDAO.suscribir(corrida);
|
||||||
|
cantCorridaGenerada++;
|
||||||
|
|
||||||
|
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
||||||
|
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
||||||
|
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());
|
||||||
|
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 (org.springframework.dao.DataIntegrityViolationException ex) {
|
||||||
|
log.error(ex);
|
||||||
|
}
|
||||||
|
|
||||||
return corrida;
|
return corrida;
|
||||||
}
|
}
|
||||||
|
@ -710,8 +739,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
*
|
*
|
||||||
* @param corridaTramo
|
* @param corridaTramo
|
||||||
* @param claseServicio
|
* @param claseServicio
|
||||||
* @return - Si existe una excepcion, regresa la nueva fecLlegada para el
|
* @return - Si existe una excepcion, regresa la nueva fecLlegada para el tramo, sino, regreso null
|
||||||
* tramo, sino, regreso null
|
|
||||||
*/
|
*/
|
||||||
private Date arreglaExcepcionTiempo(CorridaTramo corridaTramo, ClaseServicio claseServicio) {
|
private Date arreglaExcepcionTiempo(CorridaTramo corridaTramo, ClaseServicio claseServicio) {
|
||||||
Date nuevaFecLlegada = null;
|
Date nuevaFecLlegada = null;
|
||||||
|
@ -729,7 +757,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
if (diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK))) {
|
if (diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK))) {
|
||||||
log.info("Hay Excepcione de tiempo");
|
log.info("Hay Excepcione de tiempo");
|
||||||
|
|
||||||
Calendar fechorsalida = Calendar.getInstance();
|
Calendar fechorsalida = Calendar.getInstance();
|
||||||
fechorsalida.setTime(corridaTramo.getFechorsalida());
|
fechorsalida.setTime(corridaTramo.getFechorsalida());
|
||||||
|
|
||||||
|
@ -799,16 +827,16 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
|
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
|
||||||
public boolean generarCorridaAutomatica() {
|
public boolean generarCorridaAutomatica() {
|
||||||
feriadoCache.limpar();
|
feriadoCache.limpar();
|
||||||
|
|
||||||
Date dataDe = Calendar.getInstance().getTime();
|
Date dataDe = Calendar.getInstance().getTime();
|
||||||
|
|
||||||
Date dataAteConstante = calcularDataFinalGeneracionCorrida();
|
Date dataAteConstante = calcularDataFinalGeneracionCorrida();
|
||||||
Boolean hayErroConstante = !generarCorridaAutomaticaConstanteDias(dataDe, dataAteConstante);
|
Boolean hayErroConstante = !generarCorridaAutomaticaConstanteDias(dataDe, dataAteConstante);
|
||||||
|
|
||||||
log.debug("corrida generadas por la constante. hayError=" + hayErroConstante);
|
log.debug("corrida generadas por la constante. hayError=" + hayErroConstante);
|
||||||
|
|
||||||
Boolean hayErroQtdeDias = !generarCorridaAutomaticaQtdeDias(dataDe);
|
Boolean hayErroQtdeDias = !generarCorridaAutomaticaQtdeDias(dataDe);
|
||||||
|
|
||||||
log.debug("corrida generadas por la cant de dias.hayError=" + hayErroQtdeDias);
|
log.debug("corrida generadas por la cant de dias.hayError=" + hayErroQtdeDias);
|
||||||
|
|
||||||
return hayErroConstante && hayErroQtdeDias;
|
return hayErroConstante && hayErroQtdeDias;
|
||||||
|
@ -816,43 +844,43 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
private boolean generarCorridaAutomaticaQtdeDias(Date dataDeOriginal) {
|
private boolean generarCorridaAutomaticaQtdeDias(Date dataDeOriginal) {
|
||||||
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
|
||||||
log.debug(" Generacion cant dias "+ sdf.format(dataDeOriginal));
|
log.debug(" Generacion cant dias " + sdf.format(dataDeOriginal));
|
||||||
|
|
||||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||||
TransactionStatus status = transactionManager.getTransaction(def);
|
TransactionStatus status = transactionManager.getTransaction(def);
|
||||||
|
|
||||||
List<EsquemaCorrida> lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigenciaQtdeDiasNotNull(dataDeOriginal);
|
List<EsquemaCorrida> lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigenciaQtdeDiasNotNull(dataDeOriginal);
|
||||||
for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida) {
|
for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida) {
|
||||||
log.debug("esquemaCorrida="+esquemaCorrida.getEsquemacorridaId());
|
log.debug("esquemaCorrida=" + esquemaCorrida.getEsquemacorridaId());
|
||||||
|
|
||||||
Integer qtdeDiasGerar = esquemaCorrida.getCantDiasGeneracion();
|
Integer qtdeDiasGerar = esquemaCorrida.getCantDiasGeneracion();
|
||||||
|
|
||||||
if (qtdeDiasGerar <=0){
|
if (qtdeDiasGerar <= 0) {
|
||||||
log.debug("cant dias <=0");
|
log.debug("cant dias <=0");
|
||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
log.debug("cantDiasGenerar="+qtdeDiasGerar);
|
log.debug("cantDiasGenerar=" + qtdeDiasGerar);
|
||||||
|
|
||||||
Calendar calendarData = Calendar.getInstance();
|
Calendar calendarData = Calendar.getInstance();
|
||||||
calendarData.setTime(dataDeOriginal);
|
calendarData.setTime(dataDeOriginal);
|
||||||
calendarData.add(Calendar.DATE, qtdeDiasGerar-1);
|
calendarData.add(Calendar.DATE, qtdeDiasGerar - 1);
|
||||||
|
|
||||||
Date dataAte = calendarData.getTime();
|
Date dataAte = calendarData.getTime();
|
||||||
Date dataDe = new Date(dataDeOriginal.getTime());
|
Date dataDe = new Date(dataDeOriginal.getTime());
|
||||||
|
|
||||||
log.debug("Periodo generacion = " + sdf.format(dataDe) + " hasta " + sdf.format(dataAte));
|
log.debug("Periodo generacion = " + sdf.format(dataDe) + " hasta " + sdf.format(dataAte));
|
||||||
|
|
||||||
if(DateUtil.compareOnlyDate(dataAte, esquemaCorrida.getEsquemaOperacional().getFecfinvigencia()) > 0){
|
if (DateUtil.compareOnlyDate(dataAte, esquemaCorrida.getEsquemaOperacional().getFecfinvigencia()) > 0) {
|
||||||
log.info("Cant dias excede final de la vigencia");
|
log.info("Cant dias excede final de la vigencia");
|
||||||
|
|
||||||
dataAte = esquemaCorrida.getEsquemaOperacional().getFecfinvigencia();
|
dataAte = esquemaCorrida.getEsquemaOperacional().getFecfinvigencia();
|
||||||
}
|
}
|
||||||
|
|
||||||
while (DateUtil.compareOnlyDate(dataDe,dataAte) <= 0) {
|
while (DateUtil.compareOnlyDate(dataDe, dataAte) <= 0) {
|
||||||
|
|
||||||
Boolean isFeriado = this.isFeriado(new java.sql.Date(dataDe.getTime()));
|
Boolean isFeriado = this.isFeriado(new java.sql.Date(dataDe.getTime()));
|
||||||
|
|
||||||
generarCorrida(esquemaCorrida, dataDe, false, isFeriado);
|
generarCorrida(esquemaCorrida, dataDe, false, isFeriado);
|
||||||
|
@ -915,8 +943,8 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
calendarData.setTime(dataDe);
|
calendarData.setTime(dataDe);
|
||||||
|
|
||||||
Long cantInicio = corridaDAO.cantCorridaGeneradasHoy();
|
Long cantInicio = corridaDAO.cantCorridaGeneradasHoy();
|
||||||
|
|
||||||
while (DateUtil.compareOnlyDate(dataDe,dataAte) <= 0) {
|
while (DateUtil.compareOnlyDate(dataDe, dataAte) <= 0) {
|
||||||
log.info("*** Data: " + sdfData.format(dataDe));
|
log.info("*** Data: " + sdfData.format(dataDe));
|
||||||
|
|
||||||
this.generarCorrida(dataDe, lsEsquemaCorrida);
|
this.generarCorrida(dataDe, lsEsquemaCorrida);
|
||||||
|
@ -924,10 +952,9 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
calendarData.add(Calendar.DATE, 1);
|
calendarData.add(Calendar.DATE, 1);
|
||||||
dataDe = calendarData.getTime();
|
dataDe = calendarData.getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
Long cantFim = corridaDAO.cantCorridaGeneradasHoy();
|
Long cantFim = corridaDAO.cantCorridaGeneradasHoy();
|
||||||
|
|
||||||
|
|
||||||
return cantFim - cantInicio;
|
return cantFim - cantInicio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue