From 0bc35b3779f3cf35dea457e0f798d744406ee3f8 Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 2 May 2014 21:32:08 +0000 Subject: [PATCH] =?UTF-8?q?SISDAP=20Relat=C3=B3rio=20ANTT=20(fixed=20bug?= =?UTF-8?q?=20#5247)?= 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@35248 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/SisdapDAO.java | 2 - .../dao/hibernate/SisdapHibernateDAO.java | 361 ++++++++---------- 2 files changed, 163 insertions(+), 200 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/SisdapDAO.java b/src/com/rjconsultores/ventaboletos/dao/SisdapDAO.java index 3879e2367..1fa210b80 100644 --- a/src/com/rjconsultores/ventaboletos/dao/SisdapDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/SisdapDAO.java @@ -3,8 +3,6 @@ package com.rjconsultores.ventaboletos.dao; import java.util.Date; import java.util.List; -import com.rjconsultores.ventaboletos.entidad.Empresa; - public interface SisdapDAO { public List getMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId); public List getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java index 3bb0d0656..15dff595d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java @@ -14,110 +14,101 @@ import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.SisdapDAO; -import com.rjconsultores.ventaboletos.entidad.Empresa; @Repository("sisdapDAO") public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO { @Autowired - public SisdapHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } - + public SisdapHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + @Override public List getMovimentoLinhas(Date fecInicio, Date fecFinal, Integer empresaId) { + List movimentoLinhas = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - StringBuilder qry = new StringBuilder(); - qry.append("SELECT DISTINCT e.codantt, "); - qry.append(" r.prefixo, "); - qry.append(" (SELECT Count(DISTINCT bi.origen_id) "); - qry.append(" FROM boleto bi "); - qry.append(" join ruta ri "); - qry.append(" ON ri.ruta_id = bi.ruta_id "); - qry.append(" WHERE bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" AND bi.motivocancelacion_id IS NULL "); - qry.append(" AND NOT bi.numasiento IS NULL "); - qry.append(" AND ri.indsentidoida = 1 "); - qry.append(" AND bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS "); - qry.append(" viagens_ida, "); - qry.append(" (SELECT Count(DISTINCT bv.origen_id) "); - qry.append(" FROM boleto bv "); - qry.append(" join ruta rv "); - qry.append(" ON rv.ruta_id = bv.ruta_id "); - qry.append(" WHERE bv.empresacorrida_id = b.empresacorrida_id "); - qry.append(" AND bv.motivocancelacion_id IS NULL "); - qry.append(" AND NOT bv.numasiento IS NULL "); - qry.append(" AND rv.indsentidoida = 0 "); - qry.append(" AND bv.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS "); - qry.append(" viagens_volta, "); - qry.append(" (SELECT Nvl(SUM(d.cantasientos), SUM(d2.cantasientos)) "); - qry.append(" FROM boleto bi "); - qry.append(" join ruta rv "); - qry.append(" ON rv.ruta_id = bi.ruta_id "); - qry.append(" join corrida c "); - qry.append(" ON bi.corrida_id = c.corrida_id "); - qry.append(" left join diagrama_autobus d "); - qry.append(" ON d.diagramaautobus_id = c.diagramaautobus_id "); - qry.append(" left join rol_operativo ro "); - qry.append(" ON c.roloperativo_id = ro.roloperativo_id "); - qry.append(" left join diagrama_autobus d2 "); - qry.append(" ON d2.diagramaautobus_id = ro.diagramaautobus_id "); - qry.append(" WHERE bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" AND bi.motivocancelacion_id IS NULL "); - qry.append(" AND rv.indsentidoida = 1 "); - qry.append(" AND NOT bi.numasiento IS NULL "); - qry.append(" AND bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS "); - qry.append(" lugares_ida, "); - qry.append(" (SELECT Nvl(SUM(d.cantasientos), SUM(d2.cantasientos)) "); - qry.append(" FROM boleto bv "); - qry.append(" join ruta rv "); - qry.append(" ON rv.ruta_id = bv.ruta_id "); - qry.append(" join corrida c "); - qry.append(" ON bv.corrida_id = c.corrida_id "); - qry.append(" left join diagrama_autobus d "); - qry.append(" ON d.diagramaautobus_id = c.diagramaautobus_id "); - qry.append(" left join rol_operativo ro "); - qry.append(" ON c.roloperativo_id = ro.roloperativo_id "); - qry.append(" left join diagrama_autobus d2 "); - qry.append(" ON d2.diagramaautobus_id = ro.diagramaautobus_id "); - qry.append(" WHERE bv.empresacorrida_id = b.empresacorrida_id "); - qry.append(" AND bv.motivocancelacion_id IS NULL "); - qry.append(" AND NOT bv.numasiento IS NULL "); - qry.append(" AND rv.indsentidoida = 0 "); - qry.append(" AND bv.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) AS "); - qry.append(" lugares_volta "); - qry.append("FROM boleto b "); - qry.append(" join ruta r "); - qry.append(" ON r.ruta_id = b.ruta_id "); - qry.append(" join empresa e on e.empresa_id = b.empresacorrida_id "); - qry.append("WHERE b.motivocancelacion_id IS NULL "); - qry.append(" AND b.numasiento IS NOT NULL "); - qry.append(" AND e.codantt IS NOT NULL "); - qry.append(" AND e.empresa_id = :empresa_id "); - qry.append(" AND b.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - - Query query = getSession().createSQLQuery(qry.toString()) + + StringBuilder sb = new StringBuilder(); + sb.append("select e.codantt, "); + sb.append(" r.prefixo, "); + sb.append(" nvl(case subviagens.sentido "); + sb.append(" when 1 then count(subviagens.ruta) "); + sb.append(" end, 0) viagens_ida, "); + sb.append(" nvl(case subviagens.sentido "); + sb.append(" when 0 then count(subviagens.ruta) "); + sb.append(" end, 0) viagens_volta, "); + sb.append(" nvl(case subviagens.sentido "); + sb.append(" when 1 then ( da.cantasientos * count(subviagens.ruta) ) "); + sb.append(" end, 0) lugares_ida, "); + sb.append(" nvl(case subviagens.sentido "); + sb.append(" when 0 then ( da.cantasientos * count(subviagens.ruta) ) "); + sb.append(" end, 0) lugares_volta, "); + sb.append(" r.ruta_id, "); + sb.append(" e.empresa_id "); + sb.append("from corrida c "); + sb.append(" inner join ruta r "); + sb.append(" on r.ruta_id = c.ruta_id "); + sb.append(" inner join empresa e "); + sb.append(" on e.empresa_id = c.empresacorrida_id "); + sb.append(" left join rol_operativo ro "); + sb.append(" on c.roloperativo_id = ro.roloperativo_id "); + sb.append(" left join diagrama_autobus da "); + sb.append(" on da.diagramaautobus_id = ro.diagramaautobus_id, "); + sb.append(" (select ru.ruta_id as ruta, "); + sb.append(" bo.corrida_id as corrida, "); + sb.append(" bo.feccorrida as feccorrida, "); + sb.append(" bo.empresacorrida_id as empresacorrida, "); + sb.append(" ru.indsentidoida as sentido "); + sb.append(" from boleto bo "); + sb.append(" left join ruta ru "); + sb.append(" on ru.ruta_id = bo.ruta_id "); + sb.append(" where bo.numasiento is not null "); + sb.append(" and bo.motivocancelacion_id is null "); + sb.append(" and bo.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and "); + sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') "); + sb.append(" group by ru.ruta_id, "); + sb.append(" bo.corrida_id, "); + sb.append(" bo.feccorrida, "); + sb.append(" bo.empresacorrida_id, "); + sb.append(" ru.indsentidoida) subviagens "); + sb.append("where e.empresa_id = :empresa_id "); + sb.append(" and subviagens.ruta = r.ruta_id "); + sb.append(" and subviagens.corrida = c.corrida_id "); + sb.append(" and subviagens.feccorrida = c.feccorrida "); + sb.append(" and subviagens.empresacorrida = e.empresa_id "); + sb.append(" and e.codantt is not null "); + sb.append(" and c.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and "); + sb.append(" to_date(:fecFinal, 'DD/MM/YYYY') "); + sb.append("group by e.codantt, "); + sb.append(" r.prefixo, "); + sb.append(" da.cantasientos, "); + sb.append(" r.ruta_id, "); + sb.append(" e.empresa_id, "); + sb.append(" subviagens.sentido "); + sb.append("order by r.ruta_id "); + + Query query = getSession().createSQLQuery(sb.toString()) .setParameter("fecInicio", sdf.format(fecInicio)) .setParameter("fecFinal", sdf.format(fecFinal)) .setParameter("empresa_id", empresaId); List result = query.list(); - + movimentoLinhas.add("empresa;prefixo;mes;ano;viagem_ida;viagem_volta;lugar_ida;lugar_volta"); - + Calendar cal = Calendar.getInstance(); cal.setTime(fecInicio); int month = cal.get(Calendar.MONTH) + 1; // o mês na classe Calendar é zero based int year = cal.get(Calendar.YEAR); - - for (Object[] row : result){ + + for (Object[] row : result) { movimentoLinhas.add(row[0].toString() + ";" + row[1].toString() + ";" + - + month + ";" - + year + ";" - + row[2].toString() + ";" - + row[3].toString() + ";" - + row[4].toString() + ";" + +month + ";" + + year + ";" + + row[2].toString() + ";" + + row[3].toString() + ";" + + row[4].toString() + ";" + row[5].toString()); } return movimentoLinhas; @@ -127,134 +118,108 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO public List getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) { List movimentoSecoes = new ArrayList(); SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - StringBuilder qry = new StringBuilder(); - qry.append("select distinct e.codantt, "); - qry.append(" r.prefixo, "); - qry.append(" po.codantt as Local_Origem, "); - qry.append(" pd.codantt as Local_Destino, "); - qry.append(" (select count(bi.boleto_id) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 1 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) as passageiros_ida, "); - qry.append(" (select count(bi.boleto_id) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 0 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY')) as passageiros_volta, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 1 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 2) as gratuidade_passe_livre_ida, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 0 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 2) as gratuidade_passe_livre_volta, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 1 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 1) as gratuidade_idoso_ida, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 0 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 1) as gratuidade_idoso_volta, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 1 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 3) as desconto_idoso_ida, "); - qry.append(" (select nvl(sum(bi.categoria_id), 0) "); - qry.append(" from boleto bi "); - qry.append(" join ruta ri "); - qry.append(" on ri.ruta_id = bi.ruta_id "); - qry.append(" where bi.empresacorrida_id = b.empresacorrida_id "); - qry.append(" and bi.motivocancelacion_id is null "); - qry.append(" and not bi.numasiento is null "); - qry.append(" and ri.indsentidoida = 0 "); - qry.append(" and bi.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - qry.append(" and bi.categoria_id = 3) as desconto_idoso_volta "); - qry.append("from boleto b "); - qry.append(" join ruta r "); - qry.append(" on r.ruta_id = b.ruta_id "); - qry.append(" join parada po "); - qry.append(" on po.parada_id = b.origen_id "); - qry.append(" join parada pd "); - qry.append(" on pd.parada_id = b.destino_id "); - qry.append(" join empresa e on e.empresa_id = b.empresacorrida_id "); - qry.append("where b.motivocancelacion_id is null "); - qry.append(" and b.numasiento IS NOT NULL "); - qry.append(" AND e.codantt IS NOT NULL "); - qry.append(" AND e.empresa_id = :empresa_id "); - qry.append(" and b.feccorrida between To_date(:fecInicio, 'DD/MM/YYYY') AND To_date(:fecFinal, 'DD/MM/YYYY') "); - - Query query = getSession().createSQLQuery(qry.toString()) + + StringBuilder sb = new StringBuilder(); + sb.append("select distinct e.codantt, "); + sb.append(" r.ruta_id, "); + sb.append(" r.prefixo, "); + sb.append(" po.codantt as local_origem, "); + sb.append(" pd.codantt as local_destino, "); + sb.append(" nvl(case r.indsentidoida "); + sb.append(" when 1 then count(*) "); + sb.append(" end, 0) passageiros_ida, "); + sb.append(" nvl(case r.indsentidoida "); + sb.append(" when 0 then count(*) "); + sb.append(" end, 0) passageiros_volta, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 1 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id in ( 1, 2 )) then count(*) "); + sb.append(" end, 0) gratuidade_passe_livre_ida, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 0 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id in ( 1, 2 )) then count(*) "); + sb.append(" end, 0) gratuidade_passe_livre_volta, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 1 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id = 1) then count(*) "); + sb.append(" end, 0) gratuidade_idoso_ida, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 0 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id = 1) then count(*) "); + sb.append(" end, 0) gratuidade_idoso_volta, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 1 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id = 3) then count(*) "); + sb.append(" end, 0) desconto_idoso_ida, "); + sb.append(" nvl(case "); + sb.append(" when r.indsentidoida = 0 "); + sb.append(" and b.categoria_id in (select categoria_id "); + sb.append(" from categoria "); + sb.append(" where grupocategoria_id = 3) then count(*) "); + sb.append(" end, 0) desconto_idoso_volta "); + sb.append("from boleto b "); + sb.append(" join ruta r "); + sb.append(" on r.ruta_id = b.ruta_id "); + sb.append(" join parada po "); + sb.append(" on po.parada_id = b.origen_id "); + sb.append(" join parada pd "); + sb.append(" on pd.parada_id = b.destino_id "); + sb.append(" join empresa e "); + sb.append(" on e.empresa_id = b.empresacorrida_id "); + sb.append("where b.numasiento is not null "); + sb.append(" and b.motivocancelacion_id is null "); + sb.append(" and e.codantt is not null "); + sb.append(" and e.empresa_id = :empresa_id "); + sb.append(" and b.feccorrida between to_date(:fecInicio, 'DD/MM/YYYY') and to_date(:fecFinal, 'DD/MM/YYYY') "); + sb.append("group by e.codantt, "); + sb.append(" r.ruta_id, "); + sb.append(" r.prefixo, "); + sb.append(" po.codantt, "); + sb.append(" pd.codantt, "); + sb.append(" r.indsentidoida, "); + sb.append(" b.categoria_id "); + + Query query = getSession().createSQLQuery(sb.toString()) .setParameter("fecInicio", sdf.format(fecInicio)) .setParameter("fecFinal", sdf.format(fecFinal)) .setParameter("empresa_id", empresaId); - List result = query.list(); - - movimentoSecoes.add("empresa;prefixo;local_origem;local_destino;mes;ano;passageiro_ida;passageiro_volta;gratuidade_ida"+ + List result = query.list(); + + movimentoSecoes.add("empresa;prefixo;local_origem;local_destino;mes;ano;passageiro_ida;passageiro_volta;gratuidade_ida" + ";gratuidade_volta;idoso_ida;idoso_volta;desconto_ida;desconto_volta "); - + Calendar cal = Calendar.getInstance(); cal.setTime(fecInicio); int month = cal.get(Calendar.MONTH) + 1; // o mês na classe Calendar é zero based int year = cal.get(Calendar.YEAR); - - for (Object[] row : result){ + + for (Object[] row : result) { movimentoSecoes.add(row[0].toString() + ";" - + row[1].toString() + ";" - + row[2].toString() + ";" - + row[3].toString() + ";" - + month + ";" - + year + ";" - + row[4].toString() + ";" + + row[1].toString() + ";" + + row[2].toString() + ";" + + row[3].toString() + ";" + + month + ";" + + year + ";" + + row[4].toString() + ";" + row[5].toString() + ";" - + row[6].toString() + ";" + + row[6].toString() + ";" + row[7].toString() + ";" - + row[8].toString() + ";" + + row[8].toString() + ";" + row[9].toString() + ";" - + row[10].toString() + ";" + + row[10].toString() + ";" + row[11].toString()); } - + return movimentoSecoes; } }