diff --git a/src/com/rjconsultores/ventaboletos/dao/TramoDAO.java b/src/com/rjconsultores/ventaboletos/dao/TramoDAO.java index 0011ad7fd..abb090e6e 100644 --- a/src/com/rjconsultores/ventaboletos/dao/TramoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/TramoDAO.java @@ -12,6 +12,7 @@ import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.Via; +import com.rjconsultores.ventaboletos.vo.tramo.TramoVO; /** * @@ -49,5 +50,7 @@ public interface TramoDAO extends GenericDAO { public List obtenerTramosServiciosPorTramo(Tramo t); public List buscarListaPorIds(List tramoIds); + + public List buscarListaPorIds(List tramoIds, String chaveCorrida) throws Exception; } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/OperadorEmbarcadaServicoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/OperadorEmbarcadaServicoHibernateDAO.java index f086cc2dc..b30ad227b 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/OperadorEmbarcadaServicoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/OperadorEmbarcadaServicoHibernateDAO.java @@ -266,7 +266,7 @@ public class OperadorEmbarcadaServicoHibernateDAO extends GenericHibernateDAO list = query.list(); + List list = query.list(); if( retornaTramos ) { List corridas = new ArrayList(); - for (String chave : list) { + for (Object[] chave : list) { CorridaVO co = new CorridaVO(); - co.setChaveCorrida(chave); - co.setListTramos( obterListaTramo(chave) ); + co.setChaveCorrida((String)chave[0]); + co.setRutaId((Integer)chave[1] ); + co.setListTramos( obterListaTramo((String)chave[0]) ); corridas.add(co); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TramoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TramoHibernateDAO.java index 2a0df2cbc..68b222755 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/TramoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TramoHibernateDAO.java @@ -8,10 +8,15 @@ import java.util.List; import org.hibernate.Criteria; import org.hibernate.FetchMode; +import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.transform.Transformers; +import org.hibernate.type.BigDecimalType; +import org.hibernate.type.IntegerType; +import org.hibernate.type.StringType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -23,6 +28,8 @@ import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.Via; +import com.rjconsultores.ventaboletos.utilerias.DateUtil; +import com.rjconsultores.ventaboletos.vo.tramo.TramoVO; /** * @@ -191,4 +198,79 @@ public class TramoHibernateDAO extends GenericHibernateDAO return c.list(); } + + @Override + public List buscarListaPorIds(List tramoIds, String chaveCorrida ) throws Exception { + StringBuilder sql = new StringBuilder(); + + sql.append(" SELECT "); + sql.append(" trm.tramo_id AS tramoid, "); + sql.append(" trm.desctramo AS desctramo, "); + sql.append(" trm.origen_id AS origemId, "); + sql.append(" trm.destino_id AS destinoId, "); + sql.append(" coalesce(ta.importetaxaembarque, 0) AS valorTaxa, "); + sql.append(" coalesce(ta.importepedagio, 0) AS valorPedagio, "); + sql.append(" coalesce(ta.importeoutros, 0) AS valorOutros, "); + sql.append(" coalesce(ta.importeseguro, 0) AS valorSeguro, "); + sql.append(" coalesce(ta.precio, 0) AS valorTarifa "); +// sql.append(" , co.ruta_id AS rutaId "); + sql.append(" FROM "); + sql.append(" ruta_combinacion rc "); + sql.append(" JOIN tramo trm ON trm.tramo_id = rc.tramo_id AND trm.activo = 1 "); + sql.append(" JOIN corrida_tramo crt ON crt.destino_id = trm.destino_id "); + sql.append(" AND crt.corrida_id = :corridaId "); + sql.append(" AND crt.feccorrida = :fecCorrida "); + sql.append(" AND crt.activo = 1 "); + sql.append(" JOIN corrida co ON co.corrida_id = crt.corrida_id "); + sql.append(" AND crt.feccorrida = co.feccorrida "); + sql.append(" and rc.ruta_id = co.ruta_id "); + sql.append(" JOIN empresa emp ON emp.empresa_id = co.empresacorrida_id "); + sql.append(" JOIN marca mar ON mar.empresa_id = emp.empresa_id AND mar.activo = 1 "); + sql.append(" JOIN tarifa ta ON ta.marca_id = mar.marca_id "); + sql.append(" AND ta.tramo_id = trm.tramo_id "); + sql.append(" AND ta.ruta_id = rc.ruta_id "); + sql.append(" AND ta.activo = 1 "); + sql.append(" JOIN vigencia_tarifa vt ON vt.vigenciatarifa_id = ta.vigenciatarifa_id AND vt.activo = 1 "); + sql.append(" WHERE "); + sql.append(" rc.activo = 1 "); + sql.append(" AND coalesce(rc.indventa, 0) = 1 "); + sql.append(" AND trm.origen_id IN ( "); + sql.append(" SELECT x.origen_id "); + sql.append(" FROM corrida_tramo x "); + sql.append(" WHERE x.corrida_id = co.corrida_id "); + sql.append(" AND x.feccorrida = co.feccorrida "); + sql.append(" ) "); + sql.append(" AND trm.destino_id IN ( "); + sql.append(" SELECT x.destino_id "); + sql.append(" FROM corrida_tramo x "); + sql.append(" WHERE x.corrida_id = co.corrida_id "); + sql.append(" AND x.feccorrida = co.feccorrida "); + sql.append(" ) "); + sql.append(" AND ( sysdate BETWEEN vt.feciniciovigencia AND vt.fecfinvigencia "); + sql.append(" AND vt.activo = 1 ) "); + sql.append(" and trm.tramo_id in ( :tramoIds ) "); + + Query query = getSession().createSQLQuery(sql.toString()) + .addScalar("tramoId", IntegerType.INSTANCE) + .addScalar("desctramo", StringType.INSTANCE) + .addScalar("origemId", IntegerType.INSTANCE) + .addScalar("destinoId", IntegerType.INSTANCE) +// .addScalar("rutaId", IntegerType.INSTANCE) + .addScalar("valorTaxa", BigDecimalType.INSTANCE) + .addScalar("valorPedagio", BigDecimalType.INSTANCE) + .addScalar("valorOutros", BigDecimalType.INSTANCE) + .addScalar("valorSeguro", BigDecimalType.INSTANCE) + .addScalar("valorTarifa", BigDecimalType.INSTANCE) + .setResultTransformer(Transformers.aliasToBean(TramoVO.class)); + + String[] split = chaveCorrida.split(";"); + String corridaId = split[0].trim(); + String fecha = split[1].trim(); + + query.setParameter("corridaId", Integer.parseInt(corridaId) ); + query.setParameter("fecCorrida", DateUtil.getDateFromString(fecha, "ddMMyyyy") ); + query.setParameterList("tramoIds", tramoIds); + + return query.list(); + } } diff --git a/src/com/rjconsultores/ventaboletos/vo/tramo/TramoVO.java b/src/com/rjconsultores/ventaboletos/vo/tramo/TramoVO.java index f15b3a010..d1f012f41 100644 --- a/src/com/rjconsultores/ventaboletos/vo/tramo/TramoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/tramo/TramoVO.java @@ -25,6 +25,7 @@ public class TramoVO { //campos usados nas consultas resumidas private Integer origemId; private Integer destinoId; + private Integer rutaId; public TramoVO() { //construtor default @@ -197,4 +198,12 @@ public class TramoVO { this.destinoId = destinoId; } + public Integer getRutaId() { + return rutaId; + } + + public void setRutaId(Integer rutaId) { + this.rutaId = rutaId; + } + }