From f2ecb4d01abe4704999fd23dfbe26827f16f7c7d Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 8 Aug 2014 13:27:04 +0000 Subject: [PATCH] =?UTF-8?q?B6=20-=20Agrupar=20ida/volta=20de=20acordo=20co?= =?UTF-8?q?m=20=C3=81lias=20no=20relat=C3=B3rio=20SISDAP=20(fixed=20bug=20?= =?UTF-8?q?#5479)=20Tempo:=206=20horas?= 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@37123 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/SisdapHibernateDAO.java | 419 ++++++++++++------ 1 file changed, 293 insertions(+), 126 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java index 7f7ce50e5..3dd68086b 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java @@ -327,66 +327,184 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); StringBuilder sb = new StringBuilder(); - sb.append("select e.codantt antt, "); - sb.append(" r.prefixo prefixo, "); - sb.append(" to_char(c.feccorrida, 'MM') mes, "); - sb.append(" to_char(c.feccorrida, 'yyyy') ano, "); - sb.append(" case r.indsentidoida when 1 then po.codantt else pd.codantt end localorigem, "); - sb.append(" case r.indsentidoida when 1 then pd.codantt else po.codantt end localdestino, "); - sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id is null) "); - sb.append(" then count(*) end, 0) passageirosida, "); - sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id is null) "); - sb.append(" then count(*) end, 0) passageirosvolta, "); - sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 2 )) "); - sb.append(" then count(*) end, 0) gratuidadepasselivreida, "); - sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 2 )) "); - sb.append(" then count(*) end, 0) gratuidadepasselivrevolta, "); - sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 1 )) "); - sb.append(" then count(*) end, 0) gratuidadeidosoida, "); - sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 1 )) "); - sb.append(" then count(*) end, 0) gratuidadeidosovolta, "); - sb.append(" nvl(case when r.indsentidoida = 1 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 3 )) "); - sb.append(" then count(*) end, 0) descontoidosoida, "); - sb.append(" nvl(case when r.indsentidoida = 0 and b.categoria_id in "); - sb.append(" (select categoria_id from categoria where grupocategoria_id in ( 3 )) "); - sb.append(" then count(*) end, 0) descontoidosovolta "); - sb.append("from ruta_empresa re "); - sb.append(" left join marca m on m.marca_id = re.empresa_id "); - sb.append(" left join empresa e on m.empresa_id = e.empresa_id "); - sb.append(" left join ruta r on re.ruta_id = r.ruta_id "); - sb.append(" left join corrida c on c.ruta_id = r.ruta_id "); - sb.append(" left outer join boleto b on c.corrida_id = b.corrida_id "); - sb.append(" and c.feccorrida = b.feccorrida "); - sb.append(" left outer join parada po on po.parada_id = b.origen_id "); - sb.append(" left outer join parada pd on pd.parada_id = b.destino_id "); - sb.append("where m.marca_id = :empresaId "); - sb.append(" and re.activo = 1 "); - sb.append(" and r.activo = 1 "); - sb.append(" and r.orgaoconcedente_id = 3 "); - sb.append(" and b.numasiento is not null "); - sb.append(" and b.motivocancelacion_id is null "); - 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(" to_char(c.feccorrida, 'MM'), "); - sb.append(" to_char(c.feccorrida, 'yyyy'), "); - sb.append(" po.codantt, "); - sb.append(" pd.codantt, "); - sb.append(" r.indsentidoida, "); - sb.append(" b.categoria_id "); - sb.append("order by mes, "); + sb.append("SELECT subAlias.antt, "); + sb.append(" subAlias.prefixo, "); + sb.append(" subAlias.mes, "); + sb.append(" subAlias.ano, "); + sb.append(" po.codantt localOrigem, "); + sb.append(" pd.codantt localDestino, "); + sb.append(" subAlias.passageirosida, "); + sb.append(" subAlias.passageirosvolta, "); + sb.append(" subAlias.gratuidadepasselivreida, "); + sb.append(" subAlias.gratuidadepasselivrevolta, "); + sb.append(" subAlias.gratuidadeidosoida, "); + sb.append(" subAlias.gratuidadeidosovolta, "); + sb.append(" subAlias.descontoidosoida, "); + sb.append(" subAlias.descontoidosovolta "); + sb.append("FROM (SELECT subResp.antt antt, "); + sb.append(" subResp.prefixo prefixo, "); + sb.append(" subResp.mes mes, "); + sb.append(" subResp.ano ano, "); + sb.append(" Nvl(ase.aliasorigen_id, subResp.localorigem) aliasorigen, "); + sb.append(" Nvl(ase.aliasdestino_id, subResp.localdestino) aliasdestino, "); + sb.append(" subResp.passageirosida passageirosida, "); + sb.append(" subResp.passageirosvolta passageirosvolta, "); + sb.append(" subResp.gratuidadepasselivreida "); + sb.append(" gratuidadepasselivreida, "); + sb.append(" subResp.gratuidadepasselivrevolta "); + sb.append(" gratuidadepasselivrevolta "); + sb.append(" , "); + sb.append(" subResp.gratuidadeidosoida "); + sb.append(" gratuidadeidosoida, "); + sb.append(" subResp.gratuidadeidosovolta "); + sb.append(" gratuidadeidosovolta, "); + sb.append(" subResp.descontoidosoida descontoidosoida, "); + sb.append(" subResp.descontoidosovolta descontoidosovolta "); + sb.append(" FROM (SELECT e.codantt antt, "); + sb.append(" r.prefixo prefixo, "); + sb.append(" To_char(c.feccorrida, 'MM') mes, "); + sb.append(" To_char(c.feccorrida, 'yyyy') ano, "); + sb.append(" CASE r.indsentidoida "); + sb.append(" WHEN 1 THEN po.parada_id "); + sb.append(" ELSE pd.parada_id "); + sb.append(" END localorigem, "); + sb.append(" CASE r.indsentidoida "); + sb.append(" WHEN 1 THEN pd.parada_id "); + sb.append(" ELSE po.parada_id "); + sb.append(" END localdestino, "); + 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 "); + sb.append(" grupocategoria_id IS NULL) THEN "); + sb.append(" Count(* "); + sb.append(" ) "); + sb.append(" END, 0) passageirosida, "); + 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 "); + sb.append(" grupocategoria_id IS NULL) THEN "); + sb.append(" Count(* "); + sb.append(" ) "); + sb.append(" END, 0) passageirosvolta, "); + 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 "); + sb.append(" grupocategoria_id IN ( 2 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) gratuidadepasselivreida, "); + 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 "); + sb.append(" grupocategoria_id IN ( 2 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) gratuidadepasselivrevolta, "); + 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 "); + sb.append(" grupocategoria_id IN ( 1 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) gratuidadeidosoida, "); + 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 "); + sb.append(" grupocategoria_id IN ( 1 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) gratuidadeidosovolta, "); + 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 "); + sb.append(" grupocategoria_id IN ( 3 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) descontoidosoida, "); + 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 "); + sb.append(" grupocategoria_id IN ( 3 )) "); + sb.append(" THEN Count( "); + sb.append(" *) "); + sb.append(" END, 0) descontoidosovolta "); + sb.append(" FROM ruta_empresa re "); + sb.append(" left join marca m "); + sb.append(" ON m.marca_id = re.empresa_id "); + sb.append(" left join empresa e "); + sb.append(" ON m.empresa_id = e.empresa_id "); + sb.append(" left join ruta r "); + sb.append(" ON re.ruta_id = r.ruta_id "); + sb.append(" left join corrida c "); + sb.append(" ON c.ruta_id = r.ruta_id "); + sb.append(" left outer join boleto b "); + sb.append(" ON c.corrida_id = b.corrida_id "); + sb.append(" AND c.feccorrida = b.feccorrida "); + sb.append(" left outer join parada po "); + sb.append(" ON po.parada_id = b.origen_id "); + sb.append(" left outer join parada pd "); + sb.append(" ON pd.parada_id = b.destino_id "); + sb.append(" WHERE m.marca_id = :empresaId "); + sb.append(" AND re.activo = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND r.orgaoconcedente_id = 3 "); + sb.append(" AND b.numasiento IS NOT NULL "); + sb.append(" AND b.motivocancelacion_id IS NULL "); + sb.append(" AND e.codantt IS NOT NULL "); + sb.append(" AND c.feccorrida BETWEEN To_date(:fecInicio, "); + sb.append(" 'DD/MM/YYYY') AND "); + sb.append(" To_date "); + sb.append(" ( "); + sb.append(" :fecFinal, 'DD/MM/YYYY') "); + sb.append(" GROUP BY e.codantt, "); + sb.append(" r.prefixo, "); + sb.append(" To_char(c.feccorrida, 'MM'), "); + sb.append(" To_char(c.feccorrida, 'yyyy'), "); + sb.append(" po.parada_id, "); + sb.append(" pd.parada_id, "); + sb.append(" r.indsentidoida, "); + sb.append(" b.categoria_id) subResp "); + sb.append(" left join alias_servico ase "); + sb.append(" ON ( subResp.localorigem = ase.origen_id "); + sb.append(" AND subResp.localdestino = ase.destino_id ) "); + sb.append(" GROUP BY subResp.antt, "); + sb.append(" subResp.prefixo, "); + sb.append(" subResp.mes, "); + sb.append(" subResp.ano, "); + sb.append(" Nvl(ase.aliasorigen_id, subResp.localorigem), "); + sb.append(" Nvl(ase.aliasdestino_id, subResp.localdestino), "); + sb.append(" subResp.passageirosida, "); + sb.append(" subResp.passageirosvolta, "); + sb.append(" subResp.gratuidadepasselivreida, "); + sb.append(" subResp.gratuidadepasselivrevolta, "); + sb.append(" subResp.gratuidadeidosoida, "); + sb.append(" subResp.gratuidadeidosovolta, "); + sb.append(" subResp.descontoidosoida, "); + sb.append(" subResp.descontoidosovolta) subAlias "); + sb.append(" inner join parada po "); + sb.append(" ON ( subAlias.aliasorigen = po.parada_id ) "); + sb.append(" inner join parada pd "); + sb.append(" ON ( subAlias.aliasdestino = pd.parada_id ) "); + sb.append("ORDER BY mes, "); sb.append(" ano, "); - sb.append(" e.codantt, "); - sb.append(" r.prefixo, "); + sb.append(" antt, "); + sb.append(" prefixo, "); sb.append(" localorigem, "); sb.append(" localdestino "); @@ -418,77 +536,126 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO private List buscaPrefixoEmpresaOrigenDestino(Integer empresaId) { StringBuilder sb = new StringBuilder(); - sb.append("SELECT e.codantt antt, "); - sb.append(" ru.prefixo prefixo, "); + sb.append("SELECT subResp.antt, "); + sb.append(" subResp.prefixo, "); sb.append(" po.codantt localOrigem, "); sb.append(" pd.codantt localDestino "); - sb.append("FROM ruta_empresa re "); - sb.append(" left join marca m ON m.marca_id = re.empresa_id "); - sb.append(" left join empresa e ON m.empresa_id = e.empresa_id "); - sb.append(" left join ruta ru ON re.ruta_id = ru.ruta_id, "); - sb.append(" parada po, "); - sb.append(" parada pd "); - sb.append("WHERE re.empresa_id = :empresaId "); - sb.append(" AND ru.orgaoconcedente_id = 3 "); - sb.append(" AND re.activo = 1 AND ru.activo = 1 "); - sb.append(" AND po.parada_id = (SELECT t.origen_id FROM tramo t "); - sb.append(" WHERE t.tramo_id = "); - sb.append(" (SELECT rs.tramo_id FROM ruta r "); - sb.append(" left join ruta_secuencia rs ON rs.ruta_id = r.ruta_id "); - sb.append(" WHERE r.prefixo IN ( ru.prefixo ) "); - sb.append(" AND r.indsentidoida = 1 "); - sb.append(" AND r.activo = 1 "); - sb.append(" AND rs.activo = 1 "); - sb.append(" AND ROWNUM <= 1 "); - sb.append(" AND rs.numsecuencia IN "); - sb.append(" (SELECT Min(rs.numsecuencia) "); - sb.append(" FROM ruta r "); - sb.append(" left join ruta_secuencia rs "); - sb.append(" ON rs.ruta_id = "); - sb.append(" r.ruta_id "); - sb.append(" WHERE "); - sb.append(" r.prefixo IN ( ru.prefixo ) "); - sb.append(" AND r.indsentidoida = 1 "); - sb.append(" AND r.activo = 1 "); - sb.append(" AND rs.activo = 1) "); - sb.append(" GROUP BY rs.tramo_id) "); - sb.append(" AND ROWNUM <= 1) "); - sb.append(" AND pd.parada_id = (SELECT t.destino_id "); - sb.append(" FROM tramo t "); - sb.append(" WHERE t.tramo_id = (SELECT rs.tramo_id "); - sb.append(" FROM ruta r "); - sb.append(" left join ruta_secuencia "); - sb.append(" rs "); - sb.append(" ON rs.ruta_id = "); - sb.append(" r.ruta_id "); - sb.append(" WHERE r.prefixo IN "); - sb.append(" ( ru.prefixo ) "); - sb.append(" AND r.indsentidoida = 1 "); - sb.append(" AND r.activo = 1 "); - sb.append(" AND rs.activo = 1 "); - sb.append(" AND ROWNUM <= 1 "); - sb.append(" AND rs.numsecuencia IN "); - sb.append(" (SELECT Max(rs.numsecuencia) "); - sb.append(" FROM ruta r "); - sb.append(" left join ruta_secuencia rs "); - sb.append(" ON rs.ruta_id = "); - sb.append(" r.ruta_id "); - sb.append(" WHERE "); - sb.append(" r.prefixo IN ( ru.prefixo ) "); - sb.append(" AND r.indsentidoida = 1 "); - sb.append(" AND r.activo = 1 "); - sb.append(" AND rs.activo = 1) "); - sb.append(" GROUP BY rs.tramo_id)) "); - sb.append("GROUP BY e.codantt, "); - sb.append(" ru.prefixo, "); - sb.append(" po.descparada, "); + sb.append("FROM (SELECT subAlias.antt antt, "); + sb.append(" ru.prefixo prefixo, "); + sb.append(" subAlias.localorigem localOrigem, "); + sb.append(" subAlias.localdestino localDestino "); + sb.append(" FROM ruta ru, "); + sb.append(" (SELECT subSelect.antt antt, "); + sb.append(" subSelect.ruta_id rutaId, "); + sb.append(" subSelect.prefixo prefixo, "); + sb.append(" Nvl(asr.aliasorigen_id, subSelect.localorigem) AS "); + sb.append(" localOrigem, "); + sb.append(" Nvl(asr.aliasdestino_id, subSelect.localdestino) AS "); + sb.append(" localDestino "); + sb.append(" FROM (SELECT e.codantt antt, "); + sb.append(" ru.ruta_id, "); + sb.append(" po.parada_id localOrigem, "); + sb.append(" pd.parada_id localDestino, "); + sb.append(" ru.prefixo prefixo "); + sb.append(" FROM ruta_empresa re "); + sb.append(" left join marca m "); + sb.append(" ON m.marca_id = re.empresa_id "); + sb.append(" left join empresa e "); + sb.append(" ON m.empresa_id = e.empresa_id "); + sb.append(" left join ruta ru "); + sb.append(" ON re.ruta_id = ru.ruta_id, "); + sb.append(" parada po, "); + sb.append(" parada pd "); + sb.append(" WHERE re.empresa_id = :empresaId "); + sb.append(" AND ru.orgaoconcedente_id = 3 "); + sb.append(" AND re.activo = 1 "); + sb.append(" AND ru.activo = 1 "); + sb.append(" AND po.parada_id = (SELECT t.origen_id "); + sb.append(" FROM tramo t "); + sb.append(" WHERE t.tramo_id = "); + sb.append(" (SELECT rs.tramo_id "); + sb.append(" FROM ruta r "); + sb.append(" left join ruta_secuencia "); + sb.append(" rs "); + sb.append(" ON rs.ruta_id = "); + sb.append(" r.ruta_id "); + sb.append(" WHERE "); + sb.append(" r.ruta_id IN ( ru.ruta_id ) "); + sb.append(" AND r.indsentidoida = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND rs.activo = 1 "); + sb.append(" AND ROWNUM <= 1 "); + sb.append(" AND rs.numsecuencia IN "); + sb.append(" (SELECT "); + sb.append(" Min(rs.numsecuencia) + 1 "); + sb.append(" FROM "); + sb.append(" ruta r "); + sb.append(" left join ruta_secuencia "); + sb.append(" rs "); + sb.append(" ON rs.ruta_id = "); + sb.append(" r.ruta_id "); + sb.append(" WHERE "); + sb.append(" r.prefixo IN ( ru.prefixo "); + sb.append(" ) "); + sb.append(" AND r.indsentidoida = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND rs.activo = 1) "); + sb.append(" GROUP BY "); + sb.append(" rs.tramo_id) "); + sb.append(" AND ROWNUM <= 1) "); + sb.append(" AND pd.parada_id = (SELECT t.destino_id "); + sb.append(" FROM tramo t "); + sb.append(" WHERE t.tramo_id = "); + sb.append(" (SELECT rs.tramo_id "); + sb.append(" FROM ruta r "); + sb.append(" left join ruta_secuencia "); + sb.append(" rs "); + sb.append(" ON rs.ruta_id = "); + sb.append(" r.ruta_id "); + sb.append(" WHERE "); + sb.append(" r.ruta_id IN ( ru.ruta_id ) "); + sb.append(" AND r.indsentidoida = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND rs.activo = 1 "); + sb.append(" AND ROWNUM <= 1 "); + sb.append(" AND rs.numsecuencia IN "); + sb.append(" (SELECT Max(rs.numsecuencia) "); + sb.append(" FROM ruta r "); + sb.append(" left join ruta_secuencia rs "); + sb.append(" ON rs.ruta_id = "); + sb.append(" r.ruta_id "); + sb.append(" WHERE "); + sb.append(" r.prefixo IN ( ru.prefixo ) "); + sb.append(" AND r.indsentidoida = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND rs.activo = 1) "); + sb.append(" GROUP BY "); + sb.append(" rs.tramo_id)) "); + sb.append(" ) "); + sb.append(" subSelect "); + sb.append(" left join alias_servico asr "); + sb.append(" ON ( asr.origen_id = subSelect.localorigem "); + sb.append(" AND asr.destino_id = subSelect.localdestino "); + sb.append(" AND asr.ruta_id = subSelect.ruta_id ) "); + sb.append(" GROUP BY subSelect.antt, "); + sb.append(" subSelect.ruta_id, "); + sb.append(" subSelect.prefixo, "); + sb.append(" Nvl(asr.aliasorigen_id, subSelect.localorigem), "); + sb.append(" Nvl(asr.aliasdestino_id, subSelect.localdestino)) "); + sb.append(" subAlias "); + sb.append(" WHERE ru.ruta_id IN ( subAlias.rutaid ) "); + sb.append(" GROUP BY subAlias.antt, "); + sb.append(" subAlias.localorigem, "); + sb.append(" subAlias.localdestino, "); + sb.append(" ru.prefixo) subResp "); + sb.append(" inner join parada po "); + sb.append(" ON ( subResp.localorigem = po.parada_id ) "); + sb.append(" inner join parada pd "); + sb.append(" ON ( subResp.localdestino = pd.parada_id ) "); + sb.append("ORDER BY subResp.antt, "); + sb.append(" subResp.prefixo, "); sb.append(" po.codantt, "); - sb.append(" pd.descparada, "); sb.append(" pd.codantt "); - sb.append("ORDER BY e.codantt, "); - sb.append(" ru.prefixo, "); - sb.append(" po.descparada, "); - sb.append(" po.codantt "); Query query = getSession().createSQLQuery(sb.toString()) .addScalar("antt", StringType.INSTANCE)