From c4a164bb2e4e3721d3624775a15b606eb1475016 Mon Sep 17 00:00:00 2001 From: "thiago.penido" Date: Tue, 24 Nov 2015 17:32:10 +0000 Subject: [PATCH] =?UTF-8?q?Solu=C3=A7=C3=A3o=20mantis=205479=20fixes=20bug?= =?UTF-8?q?=205479?= 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@50537 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/SisdapHibernateDAO.java | 329 ++++++++---------- 1 file changed, 137 insertions(+), 192 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java index 3dd68086b..6d753d384 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java @@ -219,18 +219,24 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO @Override public List getMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) { - List list = consultaMovimentoSecoes(fecInicio, fecFinal, empresaId); - - List result = new ArrayList(); - - for (MovimentoSecoes ms : list) { - boolean insert = agrupaMovimentoSecoes(result, ms); - if (insert) - result.add(ms); + List listResultConsulta = consultaMovimentoSecoes(fecInicio, fecFinal, empresaId); + List listResultIdaVoltaInvertida = new ArrayList(); + + for (MovimentoSecoes ms : listResultConsulta) { + for (MovimentoSecoes ms2 : listResultConsulta) { + if(ms.getLocalOrigem().equals(ms2.getLocalDestino()) && ms2.getLocalOrigem().equals(ms.getLocalDestino()) && isIda(ms)) { + ms.setDescontoIdosoVolta(ms2.getDescontoIdosoVolta()); + ms.setGratuidadeIdosoVolta(ms2.getGratuidadeIdosoVolta()); + ms.setGratuidadePasseLivreVolta(ms2.getGratuidadePasseLivreVolta()); + ms.setPassageirosVolta(ms2.getPassageirosVolta()); + listResultIdaVoltaInvertida.add(ms); + break; + } + } } - + List periodos = new ArrayList(); - for (MovimentoSecoes ms : result) { + for (MovimentoSecoes ms : listResultIdaVoltaInvertida) { String periodo = ms.getAno() + HYPHEN + ms.getMes(); if (!periodos.contains(periodo)) { periodos.add(periodo); @@ -244,7 +250,7 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO periodosPrefixos.put(pd, prefixos); } - for (MovimentoSecoes ms : result) { + for (MovimentoSecoes ms : listResultIdaVoltaInvertida) { String periodo = ms.getAno() + HYPHEN + ms.getMes(); PrefixoAntt prefixoAntt = new PrefixoAntt(); @@ -282,11 +288,11 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO ms.setPassageirosIda(NumberUtils.INTEGER_ZERO); ms.setPassageirosVolta(NumberUtils.INTEGER_ZERO); - result.add(ms); + listResultIdaVoltaInvertida.add(ms); } } - Collections.sort(result, new Comparator() { + Collections.sort(listResultIdaVoltaInvertida, new Comparator() { public int compare(Object o1, Object o2) { MovimentoSecoes c1 = (MovimentoSecoes) o1; MovimentoSecoes c2 = (MovimentoSecoes) o2; @@ -315,13 +321,19 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO movimentosSecoes.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 "); - for (MovimentoSecoes ms : result) { + for (MovimentoSecoes ms : listResultIdaVoltaInvertida) { movimentosSecoes.add(ms.toString()); } return movimentosSecoes; } + private boolean isIda(MovimentoSecoes ms) { + Integer somaVolta = (ms.getDescontoIdosoVolta() + ms.getGratuidadeIdosoVolta() + ms.getGratuidadePasseLivreVolta() + ms.getPassageirosVolta()); + Integer somaIda = (ms.getDescontoIdosoIda() + ms.getGratuidadeIdosoIda() + ms.getGratuidadePasseLivreIda() + ms.getPassageirosIda()); + return (somaVolta.intValue() == 0) && (somaIda.intValue() > 0); + } + private List consultaMovimentoSecoes(Date fecInicio, Date fecFinal, Integer empresaId) { SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); @@ -333,133 +345,71 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO 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(" sum(subAlias.passageirosida) as passageirosida, "); + sb.append(" sum(subAlias.passageirosvolta) as passageirosvolta, "); + sb.append(" sum(subAlias.gratuidadepasselivreida) as gratuidadepasselivreida, "); + sb.append(" sum(subAlias.gratuidadepasselivrevolta) as gratuidadepasselivrevolta, "); + sb.append(" sum(subAlias.gratuidadeidosoida) as gratuidadeidosoida, "); + sb.append(" sum(subAlias.gratuidadeidosovolta) as gratuidadeidosovolta, "); + sb.append(" sum(subAlias.descontoidosoida) as descontoidosoida, "); + sb.append(" sum(subAlias.descontoidosovolta) as descontoidosovolta "); + + sb.append("FROM (SELECT distinct 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(" coalesce(ase.aliasorigen_id, subResp.localorigem) aliasorigen, "); + sb.append(" coalesce(ase.aliasdestino_id, subResp.localdestino) aliasdestino, "); + sb.append(" subResp.passageirosida passageirosida, "); + sb.append(" subResp.passageirosvolta passageirosvolta, "); + sb.append(" subResp.gratuidadepasselivreida gratuidadepasselivreida, "); + sb.append(" subResp.gratuidadepasselivrevolta gratuidadepasselivrevolta, "); + sb.append(" subResp.gratuidadeidosoida gratuidadeidosoida, "); + sb.append(" subResp.gratuidadeidosovolta gratuidadeidosovolta, "); + sb.append(" subResp.descontoidosoida descontoidosoida, "); + sb.append(" subResp.descontoidosovolta descontoidosovolta "); + + sb.append(" FROM (SELECT distinct r.ruta_id ruta_id, "); + sb.append(" 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(" po.parada_id localorigem, "); + sb.append(" pd.parada_id localdestino, "); + + sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IS NULL) THEN Count(*) END, 0) passageirosida, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IS NULL) THEN Count(*) END, 0) passageirosvolta, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 2 )) THEN Count(*) END, 0) gratuidadepasselivreida, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 2 )) THEN Count(*) END, 0) gratuidadepasselivrevolta, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 1 )) THEN Count(*) END, 0) gratuidadeidosoida, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 1 )) THEN Count(*) END, 0) gratuidadeidosovolta, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 1 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 3 )) THEN Count(*) END, 0) descontoidosoida, "); + sb.append(" Nvl(CASE WHEN r.indsentidoida = 0 AND b.categoria_id IN (SELECT categoria_id "); + sb.append(" FROM categoria "); + sb.append(" WHERE grupocategoria_id IN ( 3 )) THEN Count(*) 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(" 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 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 "); @@ -467,11 +417,7 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO 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(" AND c.feccorrida BETWEEN To_date(:fecInicio, 'DD/MM/YYYY') AND To_date (:fecFinal, 'DD/MM/YYYY') "); sb.append(" GROUP BY e.codantt, "); sb.append(" r.prefixo, "); sb.append(" To_char(c.feccorrida, 'MM'), "); @@ -479,34 +425,33 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO 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(" b.categoria_id, "); + sb.append(" r.ruta_id "); + sb.append( " ORDER BY e.codantt, "); + sb.append( " r.prefixo) subResp "); + + sb.append(" left join alias_servico ase ON ( subResp.localorigem = ase.origen_id AND subResp.localdestino = ase.destino_id and ase.ruta_id = subResp.ruta_id) "); + + sb.append( " ORDER BY subResp.antt,"); + sb.append( " subResp.prefixo"); + sb.append( " ) subAlias"); + + sb.append(" inner join parada po ON ( subAlias.aliasorigen = po.parada_id ) "); + sb.append(" inner join parada pd ON ( subAlias.aliasdestino = pd.parada_id ) "); + + sb.append("GROUP BY mes, "); + sb.append(" ano, "); + sb.append(" antt, "); + sb.append(" prefixo, "); + sb.append(" po.codantt, "); + sb.append(" pd.codantt "); + sb.append("ORDER BY mes, "); sb.append(" ano, "); sb.append(" antt, "); sb.append(" prefixo, "); - sb.append(" localorigem, "); - sb.append(" localdestino "); + sb.append(" localOrigem, "); + sb.append(" localDestino "); Query query = getSession().createSQLQuery(sb.toString()) .addScalar("antt", StringType.INSTANCE) @@ -670,34 +615,34 @@ public class SisdapHibernateDAO extends HibernateDaoSupport implements SisdapDAO } - private boolean agrupaMovimentoSecoes(List resul, MovimentoSecoes movimentoSecao) { - - if (resul.isEmpty()) { - return true; - } else { - for (MovimentoSecoes ms : resul) { - if (ms.getPrefixo().equals(movimentoSecao.getPrefixo()) && ms.getMes().equals(movimentoSecao.getMes()) - && ms.getAno().equals(movimentoSecao.getAno()) && ms.getLocalOrigem().equals(movimentoSecao.getLocalOrigem()) - && ms.getLocalDestino().equals(movimentoSecao.getLocalDestino())) { - - ms.setDescontoIdosoIda(ms.getDescontoIdosoIda() + movimentoSecao.getDescontoIdosoIda()); - ms.setDescontoIdosoVolta(ms.getDescontoIdosoVolta() + movimentoSecao.getDescontoIdosoVolta()); - - ms.setGratuidadeIdosoIda(ms.getGratuidadeIdosoIda() + movimentoSecao.getGratuidadeIdosoIda()); - ms.setGratuidadeIdosoVolta(ms.getGratuidadeIdosoVolta() + movimentoSecao.getGratuidadeIdosoVolta()); - - ms.setGratuidadePasseLivreIda(ms.getGratuidadePasseLivreIda() + movimentoSecao.getGratuidadePasseLivreIda()); - ms.setGratuidadePasseLivreVolta(ms.getGratuidadePasseLivreVolta() + movimentoSecao.getGratuidadePasseLivreVolta()); - - ms.setPassageirosIda(ms.getPassageirosIda() + movimentoSecao.getPassageirosIda()); - ms.setPassageirosVolta(ms.getPassageirosVolta() + movimentoSecao.getPassageirosVolta()); - - return false; - } - } - } - - return true; - } +// private boolean agrupaMovimentoSecoes(List resul, MovimentoSecoes movimentoSecao) { +// +// if (resul.isEmpty()) { +// return true; +// } else { +// for (MovimentoSecoes ms : resul) { +// if (ms.getPrefixo().equals(movimentoSecao.getPrefixo()) && ms.getMes().equals(movimentoSecao.getMes()) +// && ms.getAno().equals(movimentoSecao.getAno()) && ms.getLocalOrigem().equals(movimentoSecao.getLocalOrigem()) +// && ms.getLocalDestino().equals(movimentoSecao.getLocalDestino())) { +// +// ms.setDescontoIdosoIda(ms.getDescontoIdosoIda() + movimentoSecao.getDescontoIdosoIda()); +// ms.setDescontoIdosoVolta(ms.getDescontoIdosoVolta() + movimentoSecao.getDescontoIdosoVolta()); +// +// ms.setGratuidadeIdosoIda(ms.getGratuidadeIdosoIda() + movimentoSecao.getGratuidadeIdosoIda()); +// ms.setGratuidadeIdosoVolta(ms.getGratuidadeIdosoVolta() + movimentoSecao.getGratuidadeIdosoVolta()); +// +// ms.setGratuidadePasseLivreIda(ms.getGratuidadePasseLivreIda() + movimentoSecao.getGratuidadePasseLivreIda()); +// ms.setGratuidadePasseLivreVolta(ms.getGratuidadePasseLivreVolta() + movimentoSecao.getGratuidadePasseLivreVolta()); +// +// ms.setPassageirosIda(ms.getPassageirosIda() + movimentoSecao.getPassageirosIda()); +// ms.setPassageirosVolta(ms.getPassageirosVolta() + movimentoSecao.getPassageirosVolta()); +// +// return false; +// } +// } +// } +// +// return true; +// } }