From 0c66ac077d78970d06b94403c10eb35058be939b Mon Sep 17 00:00:00 2001 From: carla Date: Fri, 25 Jan 2013 17:28:47 +0000 Subject: [PATCH] =?UTF-8?q?ajuste=20de=20gera=C3=A7=C3=A3o=20de=20corrida?= =?UTF-8?q?=20de=20acordo=20com=20feriado?= 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@23893 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/FeriadoDAO.java | 2 +- .../dao/hibernate/FeriadoHibernateDAO.java | 20 +- .../ventaboletos/entidad/EsquemaCorrida.java | 21 ++ .../ventaboletos/entidad/Feriado.java | 11 +- .../ventaboletos/service/FeriadoService.java | 2 +- .../service/impl/CorridaServiceImpl.java | 182 +++++++++++------- .../service/impl/FeriadoServiceImpl.java | 2 +- 7 files changed, 155 insertions(+), 85 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/FeriadoDAO.java b/src/com/rjconsultores/ventaboletos/dao/FeriadoDAO.java index bbdd0265c..283667452 100644 --- a/src/com/rjconsultores/ventaboletos/dao/FeriadoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/FeriadoDAO.java @@ -1,6 +1,6 @@ package com.rjconsultores.ventaboletos.dao; -import java.util.Date; +import java.sql.Date; import java.util.List; import com.rjconsultores.ventaboletos.entidad.Feriado; diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FeriadoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FeriadoHibernateDAO.java index d6354e4e3..c4cb81a0d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FeriadoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FeriadoHibernateDAO.java @@ -1,9 +1,11 @@ package com.rjconsultores.ventaboletos.dao.hibernate; -import java.util.Date; +import java.text.SimpleDateFormat; +import java.sql.Date; import java.util.List; import org.hibernate.Criteria; +import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; @@ -13,6 +15,7 @@ import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.FeriadoDAO; import com.rjconsultores.ventaboletos.entidad.Feriado; +import com.rjconsultores.ventaboletos.entidad.Marca; @Repository("feriadoDAO") @@ -35,12 +38,15 @@ public class FeriadoHibernateDAO extends GenericHibernateDAO } public List buscar(Date descferiado) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("fecferiado", descferiado)); - - - return c.list(); + String hql = " select new com.rjconsultores.ventaboletos.entidad.Feriado(feriado.feriadoId, feriado.fecferiado,feriado.descferiado) from Feriado feriado" + + " where feriado.activo = 1 and feriado.fecferiado =:data"; + + + + Query sq = getSession().createQuery(hql); + sq.setParameter("data", descferiado); + List lsMarca = sq.list(); + return lsMarca; } diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java index 10866a5ad..94f55309f 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java @@ -118,6 +118,17 @@ public class EsquemaCorrida implements Serializable { private Integer numCorridaPisoExtra; @Column(name = "INDGENERAFERIADO") private String indGeneraFeriado; + + + + private static List tpGeneraFeriadoList = new ArrayList(); + + static{ + + tpGeneraFeriadoList.add("GERAR SEMPRE"); + tpGeneraFeriadoList.add("GERAR SO QUANDO FOR FERIADO"); + tpGeneraFeriadoList.add("GERAR QUANDO NAO FOR FERIADO"); + } public String getTipocorrida() { return tipocorrida; @@ -407,6 +418,16 @@ public class EsquemaCorrida implements Serializable { this.indGeneraFeriado = indGeneraFeriado; } + + + public static List getTpGeneraFeriadoList() { + return tpGeneraFeriadoList; + } + + public static void setTpGeneraFeriadoList(List tpGeneraFeriadoList) { + EsquemaCorrida.tpGeneraFeriadoList = tpGeneraFeriadoList; + } + @Override public int hashCode() { int hash = 0; diff --git a/src/com/rjconsultores/ventaboletos/entidad/Feriado.java b/src/com/rjconsultores/ventaboletos/entidad/Feriado.java index 461b31da3..df52e64fd 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Feriado.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Feriado.java @@ -40,7 +40,7 @@ public class Feriado implements Serializable { @GeneratedValue(strategy = GenerationType.AUTO, generator = "FERIADO_SEQ") private Integer feriadoId; @Column(name = "FECFERIADO") - @Temporal(TemporalType.TIMESTAMP) + @Temporal(TemporalType.DATE) private Date fecferiado; @Column(name = "DESCFERIADO") private String descferiado; @@ -54,7 +54,14 @@ public class Feriado implements Serializable { - public Feriado() { + public Feriado(Integer feriadoId, Date fecferiado, String descferiado) { + super(); + this.feriadoId = feriadoId; + this.fecferiado = fecferiado; + this.descferiado = descferiado; + } + + public Feriado() { } public Feriado(Integer feriadoId) { diff --git a/src/com/rjconsultores/ventaboletos/service/FeriadoService.java b/src/com/rjconsultores/ventaboletos/service/FeriadoService.java index 6290b635a..5c075f5fa 100644 --- a/src/com/rjconsultores/ventaboletos/service/FeriadoService.java +++ b/src/com/rjconsultores/ventaboletos/service/FeriadoService.java @@ -1,6 +1,6 @@ package com.rjconsultores.ventaboletos.service; -import java.util.Date; +import java.sql.Date; import java.util.List; import com.rjconsultores.ventaboletos.entidad.Feriado; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index fbf86dab2..0b23157b3 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -36,6 +36,7 @@ import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.EsquemaTramo; +import com.rjconsultores.ventaboletos.entidad.Feriado; import com.rjconsultores.ventaboletos.entidad.Marca; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.RolOperativo; @@ -50,6 +51,7 @@ import com.rjconsultores.ventaboletos.service.CorridaService; import com.rjconsultores.ventaboletos.service.EsquemaAsientoService; import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; import com.rjconsultores.ventaboletos.service.EsquemaTramoService; +import com.rjconsultores.ventaboletos.service.FeriadoService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.service.TramoServicioService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; @@ -90,6 +92,8 @@ public class CorridaServiceImpl implements CorridaService { private int cantCorridaGenerada; @Transient private int cantCorridaCommit; + @Autowired + private FeriadoService feriadoService; @Autowired public CorridaServiceImpl(@Qualifier("transactionManager") PlatformTransactionManager transactionManager) { @@ -142,74 +146,92 @@ public class CorridaServiceImpl implements CorridaService { public List buscarFiltro(Parada ori, Parada des, Date hora, ClaseServicio cs) { return corridaDAO.buscarFiltro(ori, des, hora, cs); } + + + private Boolean geraDiaSemana (Integer diaSemana,EsquemaCorrida esquemaCorrida){ + Boolean retorno = Boolean.FALSE; + switch (diaSemana) { + case 1: { + // diaSemana = "Domingo"; + if (esquemaCorrida.getInddomingo() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getInddomingo()) { + retorno = Boolean.TRUE; + } + break; + } + case 2: { + // diaSemana = "Segunda"; + if (esquemaCorrida.getIndlunes() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndlunes()) { + retorno = Boolean.TRUE; + } + break; + } + case 3: { + // diaSemana = "Terca"; + if (esquemaCorrida.getIndmartes() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndmartes()) { + retorno = Boolean.TRUE; + } + break; + } + case 4: { + // diaSemana = "Quarta"; + if (esquemaCorrida.getIndmiercoles() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndmiercoles()) { + retorno = Boolean.TRUE; + } + break; + } + case 5: { + // diaSemana = "Quinta"; + if (esquemaCorrida.getIndjueves() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndjueves()) { + + retorno = Boolean.TRUE; + } + break; + } + case 6: { + // diaSemana = "Sexta"; + if (esquemaCorrida.getIndviernes() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndviernes()) { + retorno = Boolean.TRUE; + } + break; + } + case 7: { + // diaSemana = "Sabado"; + if (esquemaCorrida.getIndsabado() == null) { + retorno = Boolean.FALSE; + } else if (esquemaCorrida.getIndsabado()) { + retorno = Boolean.TRUE; + } + break; + } + } + return retorno; + } - private boolean temCorridaDiaSemana(Integer diaSemana, EsquemaCorrida esquemaCorrida) { + private boolean temCorridaDiaSemana(Integer diaSemana, EsquemaCorrida esquemaCorrida, Boolean isFeriado) { Boolean retorno = Boolean.FALSE; - - switch (diaSemana) { - case 1: { - // diaSemana = "Domingo"; - if (esquemaCorrida.getInddomingo() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getInddomingo()) { - retorno = Boolean.TRUE; - } - break; - } - case 2: { - // diaSemana = "Segunda"; - if (esquemaCorrida.getIndlunes() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndlunes()) { - retorno = Boolean.TRUE; - } - break; - } - case 3: { - // diaSemana = "Terca"; - if (esquemaCorrida.getIndmartes() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndmartes()) { - retorno = Boolean.TRUE; - } - break; - } - case 4: { - // diaSemana = "Quarta"; - if (esquemaCorrida.getIndmiercoles() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndmiercoles()) { - retorno = Boolean.TRUE; - } - break; - } - case 5: { - // diaSemana = "Quinta"; - if (esquemaCorrida.getIndjueves() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndjueves()) { - retorno = Boolean.TRUE; - } - break; - } - case 6: { - // diaSemana = "Sexta"; - if (esquemaCorrida.getIndviernes() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndviernes()) { - retorno = Boolean.TRUE; - } - break; - } - case 7: { - // diaSemana = "Sabado"; - if (esquemaCorrida.getIndsabado() == null) { - retorno = Boolean.FALSE; - } else if (esquemaCorrida.getIndsabado()) { - retorno = Boolean.TRUE; - } - break; - } + + if(esquemaCorrida.getIndGeneraFeriado() != null){ + if (esquemaCorrida.getIndGeneraFeriado().equals("S")){ + retorno = geraDiaSemana(diaSemana,esquemaCorrida); + }else if (isFeriado){ + if (esquemaCorrida.getIndGeneraFeriado().equals("F")){ + retorno = geraDiaSemana(diaSemana,esquemaCorrida); + } + }else if (esquemaCorrida.getIndGeneraFeriado().equals("N")){ + retorno = geraDiaSemana(diaSemana,esquemaCorrida); + } } return retorno; @@ -288,6 +310,16 @@ public class CorridaServiceImpl implements CorridaService { return dataCorreta; } + + public boolean isFeriado (java.sql.Date data){ + + List feriadoList = feriadoService.buscar(data); + if (feriadoList.isEmpty()){ + return false; + }else{ + return true; + } + } /** * Genera una corrida para el esquemaCorrida informado en el dia y fecha @@ -300,14 +332,14 @@ public class CorridaServiceImpl implements CorridaService { * @param dataGeracao * @return - La corrida generada o null si no fue generada. */ - public Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra) { + public 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 ((esquemaCorrida.getStatusCorrida() != null) && (esquemaCorrida.getStatusCorrida().equals("A"))) { - if (temCorridaDiaSemana(diaSemana, esquemaCorrida)) { + if (temCorridaDiaSemana(diaSemana, esquemaCorrida,isFeriado)) { try { Ruta ruta = esquemaCorrida.getRuta(); ClaseServicio claseServicio = esquemaCorrida.getClaseServicio(); @@ -521,13 +553,15 @@ public class CorridaServiceImpl implements CorridaService { TransactionStatus status = transactionManager.getTransaction(def); cantCorridaGenerada = 0; cantCorridaCommit = 1; + java.sql.Date data = new java.sql.Date(dataGeracao.getTime()); + Boolean isFeriado = this.isFeriado(data); for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida) { log.info("esquema=" + esquemaCorrida.getEsquemacorridaId() + " numCorrida=" + esquemaCorrida.getNumCorrida()); if (!esquemaCorridaDAO.esHijoRebote(esquemaCorrida)) { - Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false); + Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado); Corrida corridaPisoExtra = null; if (corrida == null) {// Si no gener� la corrida, no va a @@ -546,7 +580,7 @@ public class CorridaServiceImpl implements CorridaService { esquemaCorrida.setRolOperativo(esquemaCorrida.getRolOperativo2()); esquemaCorrida.setClaseServicio(esquemaCorrida.getClaseServicio2()); - corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true); + corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado); if (corrida != null && corridaPisoExtra != null) { // Voltando RolOperativo e Classe de Servi�o esquemaCorrida.setRolOperativo(ro); @@ -568,7 +602,7 @@ public class CorridaServiceImpl implements CorridaService { log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId()); - Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false); + Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado); Corrida corridaPisoExtraRebote = null; boolean generaReboteDiaSeguinte = false; @@ -584,7 +618,7 @@ public class CorridaServiceImpl implements CorridaService { ecRebote.setRolOperativo(ecRebote.getRolOperativo2()); ecRebote.setClaseServicio(ecRebote.getClaseServicio2()); - corridaPisoExtraRebote = generarCorrida(ecRebote, dataGeracao, true); + corridaPisoExtraRebote = generarCorrida(ecRebote, dataGeracao, true, isFeriado); if (corridaRebote != null && corridaPisoExtraRebote != null) { // Salvando Referencia da Corrida no piso extra corridaPisoExtraRebote.setCorridaPiso(corridaRebote); @@ -698,7 +732,9 @@ public class CorridaServiceImpl implements CorridaService { Calendar tmp = Calendar.getInstance(); tmp.setTime(dataGeracao); tmp.add(Calendar.DAY_OF_MONTH, 1); - return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false); + java.sql.Date data = new java.sql.Date(dataGeracao.getTime()); + Boolean isFeriado = this.isFeriado(data) ; + return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false, isFeriado); } private List getDiaDeLaSemana(TramoTiempo tramoTiempo) { diff --git a/src/com/rjconsultores/ventaboletos/service/impl/FeriadoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/FeriadoServiceImpl.java index 78eca92db..56b0381d6 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/FeriadoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/FeriadoServiceImpl.java @@ -1,7 +1,7 @@ package com.rjconsultores.ventaboletos.service.impl; import java.util.Calendar; -import java.util.Date; +import java.sql.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired;