From 1411f6fba2fb5b9863181e8772b6a9dc67069526 Mon Sep 17 00:00:00 2001 From: gleimar Date: Wed, 13 Feb 2013 20:03:46 +0000 Subject: [PATCH] =?UTF-8?q?-=20ajustes=20gera=C3=A7=C3=A3o=20de=20corrida?= 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@24279 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/CorridaDAO.java | 14 ++++-- .../dao/hibernate/CorridaHibernateDAO.java | 24 ++++++++++ .../entidad/CategoriaCorrida.java | 4 ++ .../ventaboletos/service/CorridaService.java | 7 ++- .../service/impl/CorridaServiceImpl.java | 45 ++++++++----------- .../ventaboletos/utilerias/DateUtil.java | 4 +- 6 files changed, 64 insertions(+), 34 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java b/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java index 241ba3492..0a2071954 100644 --- a/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/CorridaDAO.java @@ -57,7 +57,15 @@ public interface CorridaDAO extends GenericDAO { */ public List buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId); - boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, Marca marca, boolean pisoExtra); + public boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, Marca marca, boolean pisoExtra); - boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, boolean pisoExtra); -} + public boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, boolean pisoExtra); + + + /** + * Regresa la cantidad de corridas que fue generada hoy. + * + * @return + */ + public Long cantCorridaGeneradasHoy(); +} \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java index 7505d0473..37311b98f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/CorridaHibernateDAO.java @@ -302,4 +302,28 @@ public class CorridaHibernateDAO extends GenericHibernateDAO 0); } + + @Override + public Long cantCorridaGeneradasHoy() { + Calendar cTmp1 = Calendar.getInstance(); + Calendar cTmp2 = Calendar.getInstance(); + + cTmp1.set(Calendar.HOUR_OF_DAY, 0); + cTmp1.set(Calendar.MINUTE, 0); + cTmp1.set(Calendar.MILLISECOND, 0); + cTmp1.set(Calendar.SECOND, 0); + + cTmp2.set(Calendar.HOUR_OF_DAY, 23); + cTmp2.set(Calendar.MINUTE, 59); + cTmp2.set(Calendar.SECOND, 59); + cTmp2.set(Calendar.MILLISECOND, 99); + + Query query = getSession().createQuery("select count(c.fecmodif) from Corrida c where c.fecmodif between :inicio and :fim"); + query.setParameter("inicio", cTmp1.getTime()); + query.setParameter("fim", cTmp2.getTime()); + Long count = HibernateFix.count(query.uniqueResult()); + + + return count; + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/CategoriaCorrida.java b/src/com/rjconsultores/ventaboletos/entidad/CategoriaCorrida.java index cfcf36d34..d4fa8a21d 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/CategoriaCorrida.java +++ b/src/com/rjconsultores/ventaboletos/entidad/CategoriaCorrida.java @@ -19,6 +19,9 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.SequenceGenerator; +import org.hibernate.annotations.NotFound; +import org.hibernate.annotations.NotFoundAction; + /** * * @author Administrador @@ -46,6 +49,7 @@ public class CategoriaCorrida implements Serializable { private CorridaCtrl corridaCtrl; @JoinColumn(name = "CATEGORIACTRL_ID", referencedColumnName = "CATEGORIACTRL_ID") @ManyToOne + @NotFound(action=NotFoundAction.IGNORE) private CategoriaCtrl categoriaCtrl; public CategoriaCorrida() { diff --git a/src/com/rjconsultores/ventaboletos/service/CorridaService.java b/src/com/rjconsultores/ventaboletos/service/CorridaService.java index b4cba6f3f..b794b7cd1 100644 --- a/src/com/rjconsultores/ventaboletos/service/CorridaService.java +++ b/src/com/rjconsultores/ventaboletos/service/CorridaService.java @@ -53,15 +53,14 @@ public interface CorridaService extends GenericService { public List buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId); /** - * Gera corrida a partir dos servicos selecionados na tela de - * "Selecionar Servicos a Gerar". Menu->Esquema Operacional->Selecionar - * Servicos a Gerar + * Gera corrida a partir dos servicos selecionados e no intervalo de dias informados.
* * @param lsEsquemaCorrida * @param dataDe * @param dataAte + * @return A quantidade de corridas geradas */ - public void generarCorridasSelecionadas(List lsEsquemaCorrida, Date dataDe, Date dataAte); + public Long generarCorridasSelecionadas(List lsEsquemaCorrida, Date dataDe, Date dataAte); public boolean generarCorridaAutomaticaQtdeDias(Date dataDe); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index a3b4bc39c..5c0e3f0a6 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -245,6 +245,8 @@ public class CorridaServiceImpl implements CorridaService { } else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) { retorno = geraDiaSemana(diaSemana, esquemaCorrida); } + }else{ + retorno = geraDiaSemana(diaSemana, esquemaCorrida); } return retorno; @@ -359,7 +361,7 @@ public class CorridaServiceImpl implements CorridaService { horario = DateUtil.normalizar(horario); if (corridaDAO.existe(ruta, dataGeracao, horario, claseServicio, marca, isPisoExtra)) { - log.debug("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra); + log.info("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra); return null; } @@ -379,7 +381,7 @@ public class CorridaServiceImpl implements CorridaService { // parada origem Parada origen = rutaService.getOrigem(ruta); if (origen == null) { - log.debug("origen nao encontrado para a ruta = " + ruta.getRutaId()); + log.info("origen nao encontrado para a ruta = " + ruta.getRutaId()); } corridaCtrl.setNodo((origen == null) ? null : origen.getNodo()); @@ -718,7 +720,7 @@ public class CorridaServiceImpl implements CorridaService { fecCorrida.setTime(corridaTramo.getFechorllegada()); if (diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK)) || diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK))) { - log.debug("Hay Excepcione de tiempo"); + log.info("Hay Excepcione de tiempo"); Calendar fechorsalida = Calendar.getInstance(); fechorsalida.setTime(corridaTramo.getFechorsalida()); @@ -865,38 +867,29 @@ public class CorridaServiceImpl implements CorridaService { return hayError; } - /** - * Gera corrida a partir dos servicos selecionados na tela de - * "Selecionar Servicos a Gerar". Menu->Esquema Operacional->Selecionar - * Servicos a Gerar - * - * @param lsEsquemaCorrida - * @param dataDe - * @param dataAte - */ @Transactional(readOnly = true, propagation = Propagation.SUPPORTS) - public void generarCorridasSelecionadas(List lsEsquemaCorrida, Date dataDe, Date dataAte) { + public Long generarCorridasSelecionadas(List lsEsquemaCorrida, Date dataDe, Date dataAte) { SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy"); - log.debug("** SELECIONADOS - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte)); + log.info("** SELECIONADOS - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte)); Calendar calendarData = Calendar.getInstance(); - calendarData.setTime(dataAte); - calendarData.add(Calendar.DATE, 1); - dataAte = calendarData.getTime(); - while (dataDe.before(dataAte)) { - log.debug("*** Data: " + sdfData.format(dataDe)); + calendarData.setTime(dataDe); - Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty(); - if (dentroVigenciaEsquemaOperacional) { - this.generarCorrida(dataDe, lsEsquemaCorrida); - } else { - log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe)); - } + Long cantInicio = corridaDAO.cantCorridaGeneradasHoy(); + + while (DateUtil.compareOnlyDate(dataDe,dataAte) <= 0) { + log.info("*** Data: " + sdfData.format(dataDe)); + + this.generarCorrida(dataDe, lsEsquemaCorrida); - calendarData.setTime(dataDe); calendarData.add(Calendar.DATE, 1); dataDe = calendarData.getTime(); } + + Long cantFim = corridaDAO.cantCorridaGeneradasHoy(); + + + return cantFim - cantInicio; } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java index 0022875f5..4a94de835 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java @@ -189,7 +189,9 @@ public final class DateUtil { } /** - * Não leva em consideração os segundos + * Não leva em consideração os segundos/minutos. Só é considerado o dia/mes/ano
+ * + * Retorno igual a {@link #compareDate(Date, Date)} */ public static int compareOnlyDate(java.util.Date d1, java.util.Date d2) { java.util.Calendar cal = Calendar.getInstance();