diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java index 256e8dbe8..85a5a6a80 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/SisdapHibernateDAO.java @@ -224,7 +224,7 @@ public class SisdapHibernateDAO implements SisdapDAO { List listResultConsulta = consultaMovimentoSecoes(fecInicio, fecFinal, empresaId); List listResultIdaVoltaInvertida = new ArrayList(); List listVoltasSemIda = new ArrayList(); - + for (MovimentoSecoes ms : listResultConsulta) { Boolean achou = Boolean.FALSE; @@ -297,7 +297,7 @@ public class SisdapHibernateDAO implements SisdapDAO { periodosPrefixos.get(periodo).remove(prefixoAntt); } } - + for (String key : periodosPrefixos.keySet()) { String[] periodo = key.split(HYPHEN); Integer ano = Integer.parseInt(periodo[0]); @@ -505,126 +505,65 @@ public class SisdapHibernateDAO implements SisdapDAO { private List buscaPrefixoEmpresaOrigenDestino(Integer empresaId) { StringBuilder sb = new StringBuilder(); - sb.append("SELECT subResp.antt, "); - sb.append(" subResp.prefixo, "); - sb.append(" po.codantt localOrigem, "); - sb.append(" pd.codantt localDestino "); - 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 = ? "); - 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.codantt "); + + sb.append(" SELECT DISTINCT "); + sb.append(" subAlias.antt, "); + sb.append(" subAlias.prefixo, "); + sb.append(" CASE WHEN subAlias.indIda = 1 THEN po.codantt ELSE pd.codantt END localOrigem, "); + sb.append(" CASE WHEN subAlias.indIda = 1 THEN pd.codantt ELSE po.codantt END localDestino "); + sb.append(" FROM (SELECT distinct subResp.antt antt, "); + sb.append(" subResp.prefixo prefixo, "); + sb.append(" ase.aliasorigen_id aliasorigen, "); + sb.append(" ase.aliasdestino_id aliasdestino, "); + sb.append(" subResp.indIda indIda "); + + sb.append(" FROM (SELECT distinct r.ruta_id ruta_id, "); + sb.append(" e.codantt antt, "); + sb.append(" r.prefixo prefixo, "); + sb.append(" po.parada_id localorigem, "); + sb.append(" pd.parada_id localdestino, "); + sb.append(" r.INDSENTIDOIDA indIda "); + sb.append(" FROM ruta_empresa re "); + sb.append(" join empresa e ON re.empresa_id = e.empresa_id "); + sb.append(" join ruta r ON re.ruta_id = r.ruta_id "); + sb.append(" join RUTA_COMBINACION rc on rc.RUTA_ID = r.ruta_id "); + sb.append(" join tramo tr on tr.TRAMO_ID = rc.TRAMO_ID "); + sb.append(" join parada po ON po.parada_id = tr.origen_id "); + sb.append(" join parada pd ON pd.parada_id = tr.destino_id "); + + sb.append(" WHERE e.empresa_id = ? "); + sb.append(" AND re.activo = 1 "); + sb.append(" AND r.activo = 1 "); + sb.append(" AND r.orgaoconcedente_id = 3 "); + sb.append(" AND e.codantt IS NOT NULL "); + sb.append(" GROUP BY e.codantt, "); + sb.append(" r.prefixo, "); + sb.append(" po.parada_id, "); + sb.append(" pd.parada_id, "); + sb.append(" r.ruta_id, "); + sb.append(" r.INDSENTIDOIDA "); + sb.append(" ORDER BY e.codantt, "); + sb.append(" r.prefixo) subResp "); + + sb.append(" 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 ) subAlias "); + + sb.append(" join parada po ON ( subAlias.aliasorigen = po.parada_id ) "); + sb.append(" join parada pd ON ( subAlias.aliasdestino = pd.parada_id ) "); + + sb.append(" WHERE po.codantt <> pd.codantt "); + + sb.append(" GROUP BY antt, "); + sb.append(" prefixo, "); + sb.append(" po.codantt, "); + sb.append(" pd.codantt , "); + sb.append(" indIda "); + sb.append(" ORDER BY antt, "); + sb.append(" prefixo, "); + sb.append(" localOrigem, "); + sb.append(" localDestino "); QueryRunner queryRunner = new QueryRunner(dataSourceRead); ResultSetHandler> handler = new BeanListHandler(PrefixoAntt.class);