From 3a4932ba14131da69ae5f52693062472f73a3ff4 Mon Sep 17 00:00:00 2001 From: gleimar Date: Thu, 11 Apr 2013 18:30:03 +0000 Subject: [PATCH] =?UTF-8?q?-=20corre=C3=A7=C3=A3o=20na=20gera=C3=A7=C3=A3o?= =?UTF-8?q?=20de=20corridas:=20Valida=C3=A7=C3=A3o=20para=20n=C3=A3o=20per?= =?UTF-8?q?mitir=20gerar=20servi=C3=A7o=20que=20n=C3=A3o=20tenha=20vig?= =?UTF-8?q?=C3=AAncia=20v=C3=A1lida=20-=20melhoria=20nos=20logs=20de=20deb?= =?UTF-8?q?ug=20durante=20a=20gera=C3=A7=C3=A3o=20-=20remo=C3=A7=C3=A3o=20?= =?UTF-8?q?de=20classe/zul=20que=20n=C3=A3o=20=C3=A9=20mais=20usado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@25694 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../service/impl/CorridaServiceImpl.java | 471 +++++++++--------- 1 file changed, 249 insertions(+), 222 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index 273e53d4c..3793dac7d 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -249,7 +249,7 @@ public class CorridaServiceImpl implements CorridaService { } else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) { retorno = geraDiaSemana(diaSemana, esquemaCorrida); } - }else{ + } else { retorno = geraDiaSemana(diaSemana, esquemaCorrida); } @@ -265,8 +265,8 @@ public class CorridaServiceImpl implements CorridaService { for (TramoServicio ts : lsTramoServicio) { 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()); } @@ -286,10 +286,10 @@ public class CorridaServiceImpl implements CorridaService { log.debug("Tempo Recorrido : " + sdf.format(gHoraSaidaProximo.getTime())); if (tiempoEstanciaAnterior != null) { - + gHoraSaidaProximo.add(Calendar.MINUTE, tiempoEstanciaAnterior.getMinutes()); gHoraSaidaProximo.add(Calendar.HOUR_OF_DAY, tiempoEstanciaAnterior.getHours()); - + 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 - * informados. + * Indica si el esquemaCorrida informado tiene una vigencia válida para la data de generacion * - * 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.
+ * + * Cuando la corrida no es generada :
+ * - corrida ya existe : eso es checado por el numCorrida e dataGeneracion
+ * - la fecha de generacion no tiene una vigencia válida
+ * - el status del esquema corrida no es autorizado ("A")
+ * * * @param esquemaCorrida * @param diaSemana @@ -349,218 +368,228 @@ public class CorridaServiceImpl implements CorridaService { Integer diaSemana = calendario.get(Calendar.DAY_OF_WEEK); 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(); - - 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; - } + if (!vigenciaValida(esquemaCorrida, dataGeracao)) { + log.debug("vigencia invalida=" + dataGeracao); - //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); + return null; + } - // 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()); + if (!((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A")))) { + log.debug("status corrida invalido=" + esquemaCorrida.getStatusCorrida()); - corridaCtrl.setActivo(Boolean.TRUE); - corridaCtrl.setFecmodif(Calendar.getInstance().getTime()); - - if (UsuarioLogado.getUsuarioLogado() != null) { - corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - } + return null; + } - 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(null); - corrida.setClaseServicio(esquemaCorrida.getClaseServicio()); - corrida.setConductor(null); - corrida.setTipoServicio(new Short("1")); - Integer cantparados = esquemaCorrida.getCantparados(); - if (cantparados != null) { - corrida.setCantParados(cantparados.shortValue()); - } + if (!temCorridaDiaSemana(diaSemana, esquemaCorrida, isFeriado)) { + log.debug("dia semana no valido=" + diaSemana); - Parada destino = rutaService.getDestino(ruta); - if (destino == null) { - return null; - } - corrida.setDestino(destino); + return null; + } - corrida.setEmpresa(esquemaCorrida.getEmpresa()); - corrida.setEmpresa1(esquemaCorrida.getEmpresa1()); + 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.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida())); - corrida.setFechorSalidaOriginal(corrida.getFechorsalida()); - corrida.setIndstatuscorrida("H"); - corrida.setMarca(esquemaCorrida.getMarca()); - corrida.setNodo(corridaCtrl.getNodo()); - corrida.setDivision(esquemaCorrida.getDivision()); + Corrida.Id id = new Corrida.Id(); - Parada origem = rutaService.getOrigem(ruta); - if (origem == null) { - return null; - } - corrida.setOrigem(origem); + id.setCorridaId(numCorrida); + id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao)); - corrida.setRuta(esquemaCorrida.getRuta()); - corrida.setRolOperativo(esquemaCorrida.getRolOperativo()); - corrida.setZona(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; + } - 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) { - return null; - } + CorridaCtrl corridaCtrl = corridaCtrlService.obtenerID(numCorrida); - // corrida Tramo: - List lsCorridaTramo = new ArrayList(); - Integer numSec = 1; - List 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()); + boolean novoRegistro = false; - corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia()); + if (corridaCtrl == null) { + corridaCtrl = new CorridaCtrl(); + novoRegistro = true; + } - // numSec: 1-2, 2-3, 3-4... - corridaTramo.setNumsecorigen(numSec.shortValue()); - numSec = numSec + 1; - corridaTramo.setNumsecdestino(numSec.shortValue()); + corridaCtrl.setCorridaId(numCorrida); + corridaCtrl.setMarca(marca); + corridaCtrl.setRuta(ruta); + corridaCtrl.setClaseServicio(claseServicio); + corridaCtrl.setHorario(horario); - Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, tiempoInstanciaAnterior); - fecHorSalida.setSeconds(0); - corridaTramo.setFechorsalida(fecHorSalida); + // 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()); - Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida); - fecHorallegada.setSeconds(0); - corridaTramo.setFechorllegada(fecHorallegada); - horaChegadaAnterior = fecHorallegada; - tiempoInstanciaAnterior = esquemaTramo.getTiempoEstancia(); + corridaCtrl.setActivo(Boolean.TRUE); + corridaCtrl.setFecmodif(Calendar.getInstance().getTime()); - corridaTramo.setFechortarjetaviaje(null); - corridaTramo.setNodo(corridaCtrl.getNodo()); + if (UsuarioLogado.getUsuarioLogado() != null) { + corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + } - 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); + corridaCtrl.setPisoExtra(isPisoExtra); + if (novoRegistro) { + corridaCtrl = corridaCtrlService.suscribir(corridaCtrl); + } else { + corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl); + } - Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio()); - if (excepcionTiempo != null) { - corridaTramo.setFechorllegada(excepcionTiempo); - horaChegadaAnterior = excepcionTiempo; - } + 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()); + } - corridaTramo.setActivo(Boolean.TRUE); - corridaTramo.setFecmodif(Calendar.getInstance().getTime()); - if (UsuarioLogado.getUsuarioLogado() != null) { - corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - } - corridaTramo.setCorrida(corrida); - corridaTramo.setFechorSalidaOriginal(fecHorSalida); + Parada destino = rutaService.getDestino(ruta); + if (destino == null) { + return null; + } + corrida.setDestino(destino); - lsCorridaTramo.add(corridaTramo); - } - corrida.setCorridaTramoList(lsCorridaTramo); + corrida.setEmpresa(esquemaCorrida.getEmpresa()); + corrida.setEmpresa1(esquemaCorrida.getEmpresa1()); - 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.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida())); + corrida.setFechorSalidaOriginal(corrida.getFechorsalida()); + corrida.setIndstatuscorrida("H"); + corrida.setMarca(esquemaCorrida.getMarca()); + corrida.setNodo(corridaCtrl.getNodo()); + corrida.setDivision(esquemaCorrida.getDivision()); - corrida = corridaDAO.suscribir(corrida); - cantCorridaGenerada++; + Parada origem = rutaService.getOrigem(ruta); + if (origem == null) { + return null; + } + corrida.setOrigem(origem); - List 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()); - } + corrida.setRuta(esquemaCorrida.getRuta()); + corrida.setRolOperativo(esquemaCorrida.getRolOperativo()); + corrida.setZona(null); - asientoExclusivo.setActivo(Boolean.TRUE); - asientoExclusivo.setFecmodif(Calendar.getInstance().getTime()); - if (UsuarioLogado.getUsuarioLogado() != null) { - asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - } + boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra); - asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo); - } - - } catch (org.springframework.dao.DataIntegrityViolationException ex) { - log.error(ex); + if (hayCorrida) { + return null; + } + + // corrida Tramo: + List lsCorridaTramo = new ArrayList(); + Integer numSec = 1; + List 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)) - } // if (esquemaCorrida.getStatusCorrida().equals("A")) + corridaTramo.setTramo(tramo); + 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 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; } @@ -710,8 +739,7 @@ public class CorridaServiceImpl implements CorridaService { * * @param corridaTramo * @param claseServicio - * @return - Si existe una excepcion, regresa la nueva fecLlegada para el - * tramo, sino, regreso null + * @return - Si existe una excepcion, regresa la nueva fecLlegada para el tramo, sino, regreso null */ private Date arreglaExcepcionTiempo(CorridaTramo corridaTramo, ClaseServicio claseServicio) { Date nuevaFecLlegada = null; @@ -729,7 +757,7 @@ public class CorridaServiceImpl implements CorridaService { if (diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK))) { log.info("Hay Excepcione de tiempo"); - + Calendar fechorsalida = Calendar.getInstance(); fechorsalida.setTime(corridaTramo.getFechorsalida()); @@ -799,16 +827,16 @@ public class CorridaServiceImpl implements CorridaService { @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) public boolean generarCorridaAutomatica() { feriadoCache.limpar(); - + Date dataDe = Calendar.getInstance().getTime(); Date dataAteConstante = calcularDataFinalGeneracionCorrida(); Boolean hayErroConstante = !generarCorridaAutomaticaConstanteDias(dataDe, dataAteConstante); - + log.debug("corrida generadas por la constante. hayError=" + hayErroConstante); Boolean hayErroQtdeDias = !generarCorridaAutomaticaQtdeDias(dataDe); - + log.debug("corrida generadas por la cant de dias.hayError=" + hayErroQtdeDias); return hayErroConstante && hayErroQtdeDias; @@ -816,43 +844,43 @@ public class CorridaServiceImpl implements CorridaService { private boolean generarCorridaAutomaticaQtdeDias(Date dataDeOriginal) { 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); TransactionStatus status = transactionManager.getTransaction(def); List lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigenciaQtdeDiasNotNull(dataDeOriginal); for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida) { - log.debug("esquemaCorrida="+esquemaCorrida.getEsquemacorridaId()); - + log.debug("esquemaCorrida=" + esquemaCorrida.getEsquemacorridaId()); + Integer qtdeDiasGerar = esquemaCorrida.getCantDiasGeneracion(); - - if (qtdeDiasGerar <=0){ + + if (qtdeDiasGerar <= 0) { log.debug("cant dias <=0"); - + continue; } - - log.debug("cantDiasGenerar="+qtdeDiasGerar); + + log.debug("cantDiasGenerar=" + qtdeDiasGerar); Calendar calendarData = Calendar.getInstance(); calendarData.setTime(dataDeOriginal); - calendarData.add(Calendar.DATE, qtdeDiasGerar-1); - + calendarData.add(Calendar.DATE, qtdeDiasGerar - 1); + Date dataAte = calendarData.getTime(); Date dataDe = new Date(dataDeOriginal.getTime()); - + 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"); - + 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())); generarCorrida(esquemaCorrida, dataDe, false, isFeriado); @@ -915,8 +943,8 @@ public class CorridaServiceImpl implements CorridaService { calendarData.setTime(dataDe); Long cantInicio = corridaDAO.cantCorridaGeneradasHoy(); - - while (DateUtil.compareOnlyDate(dataDe,dataAte) <= 0) { + + while (DateUtil.compareOnlyDate(dataDe, dataAte) <= 0) { log.info("*** Data: " + sdfData.format(dataDe)); this.generarCorrida(dataDe, lsEsquemaCorrida); @@ -924,10 +952,9 @@ public class CorridaServiceImpl implements CorridaService { calendarData.add(Calendar.DATE, 1); dataDe = calendarData.getTime(); } - + Long cantFim = corridaDAO.cantCorridaGeneradasHoy(); - - + return cantFim - cantInicio; } }