From fd8bc077f9adcd6e567c620cb117a5bd44b091ae Mon Sep 17 00:00:00 2001 From: celio Date: Thu, 20 Apr 2023 18:17:26 -0300 Subject: [PATCH] fixes bug#AL-2361 --- pom.xml | 2 +- .../relatorios/impl/RelatorioIndiceIRK.java | 164 +++++++++++------- 2 files changed, 99 insertions(+), 67 deletions(-) diff --git a/pom.xml b/pom.xml index 0618c0fd8..85a3d8fe0 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.0.100 + 1.0.101 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java index e93c394d8..cb57be121 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioIndiceIRK.java @@ -160,72 +160,104 @@ public class RelatorioIndiceIRK extends Relatorio { sb.append(" (SUM(passagens) + SUM(pedagio) + SUM(txembarque) + SUM(seguro)) - (indiceirkminimo * extensao * qtdCorrida) AS diferencareceita,"); sb.append(" prefixo"); sb.append(" FROM"); - sb.append(" (SELECT cj.caja_id AS cajaId,"); - sb.append(" cj.corrida_id AS servico,"); - sb.append(" r.ruta_id AS rutaid,"); - sb.append(" r.descruta AS descruta,"); - sb.append(" r.indsentidoida AS sentido,"); - sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo,"); - sb.append(" nvl(gr.descgrupo, 'Nao Definido') AS gruporuta,"); - sb.append(" to_char(co.fechorsalida, 'HH24:MI') AS hora,"); - sb.append(" sum(tr.cantkmreal) AS extensao,"); - sb.append(" cj.importeseguro AS seguro,"); - sb.append(" cj.importetaxaembarque AS txembarque,"); - sb.append(" cj.importepedagio AS pedagio,"); - sb.append(" cj.preciopagado AS passagens,"); - sb.append(" r.prefixo AS prefixo,"); - sb.append(" (SELECT count(*)"); - sb.append(" FROM"); - sb.append(" (SELECT (cjj.feccorrida)"); - sb.append(" FROM caja cjj"); - sb.append(" WHERE cjj.activo = 1"); - sb.append(" AND cjj.motivocancelacion_id IS NULL"); - sb.append(" AND cjj.indstatusboleto = 'V'"); - sb.append(" and cjj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); - sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); - sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) "); - sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) "); - sb.append(" AND cjj.empresacorrida_id =:empresaId "); - sb.append(" AND cjj.corrida_id IN (cj.corrida_id)"); - sb.append(" GROUP BY cjj.feccorrida))AS qtdCorrida"); - sb.append(" FROM caja cj"); - sb.append(" INNER JOIN ruta r ON (cj.ruta_id = r.ruta_id)"); - sb.append(" LEFT JOIN grupo_ruta gr ON (r.gruporuta_id = gr.gruporuta_id)"); - sb.append(" INNER JOIN ruta_combinacion rc ON (rc.ruta_id = cj.ruta_id"); - sb.append(" AND rc.activo = 1)"); - sb.append(" INNER JOIN corrida co ON (co.corrida_id = cj.corrida_id"); - sb.append(" AND co.ruta_id = r.ruta_id"); - sb.append(" AND co.activo = 1"); - sb.append(" AND cj.feccorrida = co.feccorrida)"); - sb.append(" INNER JOIN tramo tr ON (tr.tramo_id = rc.tramo_id"); - sb.append(" AND tr.origen_id = co.origen_id"); - sb.append(" AND tr.destino_id = co.destino_id)"); - sb.append(" INNER JOIN marca m ON (cj.marca_id = m.marca_id"); - sb.append(" AND m.empresa_id =:empresaId )"); - sb.append(" INNER JOIN empresa e ON (e.empresa_id =:empresaId )"); - sb.append(" INNER JOIN parada origen ON (origen.parada_id = tr.origen_id)"); - sb.append(" INNER JOIN parada destino ON (destino.parada_id = tr.destino_id)"); - sb.append(" WHERE cj.activo = 1"); - sb.append(" AND cj.motivocancelacion_id IS NULL"); - sb.append(" AND cj.indstatusboleto = 'V'"); - sb.append(" and cj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); - sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); - sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) "); - sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) "); - sb.append(" GROUP BY cj.caja_id,"); - sb.append(" cj.corrida_id,"); - sb.append(" r.ruta_id,"); - sb.append(" r.descruta,"); - sb.append(" r.indsentidoida,"); - sb.append(" e.indiceirk,"); - sb.append(" gr.descgrupo,"); - sb.append(" co.fechorsalida,"); - sb.append(" cj.importeseguro,"); - sb.append(" cj.importetaxaembarque,"); - sb.append(" cj.importepedagio,"); - sb.append(" cj.preciopagado,"); - sb.append(" r.prefixo"); - sb.append(" ORDER BY r.descruta) dados_sem_agrupamento"); + + sb.append("( WITH corridas AS ( "); + sb.append(" SELECT "); + sb.append(" coi.fechorsalida AS feccorrida, "); + sb.append(" cjj.corrida_id "); + sb.append(" FROM "); + sb.append(" caja cjj "); + sb.append(" INNER JOIN ruta r ON ( cjj.ruta_id = r.ruta_id ) "); + sb.append(" INNER JOIN corrida coi ON ( coi.corrida_id = cjj.corrida_id "); + sb.append(" AND coi.ruta_id = r.ruta_id "); + sb.append(" AND coi.activo = 1 "); + sb.append(" AND cjj.feccorrida = coi.feccorrida ) "); + sb.append(" WHERE "); + sb.append(" cjj.activo = 1 "); + sb.append(" AND cjj.motivocancelacion_id IS NULL "); + sb.append(" AND cjj.indstatusboleto = 'V' "); + sb.append(" and cjj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); + sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); + sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cjj.corrida_id IN ( " + corridasIds + " ) "); + sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) "); + sb.append(" AND cjj.empresacorrida_id =:empresaId "); + sb.append(" GROUP BY "); + sb.append(" coi.fechorsalida, "); + sb.append(" cjj.corrida_id "); + sb.append("), corridas_count AS ( "); + sb.append(" SELECT "); + sb.append(" to_char(feccorrida, 'HH24') AS hora, "); + sb.append(" corrida_id, "); + sb.append(" COUNT(*) AS quantidade "); + sb.append(" FROM "); + sb.append(" corridas "); + sb.append(" GROUP BY "); + sb.append(" to_char(feccorrida, 'HH24'), "); + sb.append(" corrida_id "); + sb.append(") "); + sb.append("SELECT "); + sb.append(" cj.caja_id AS cajaid, "); + sb.append(" cj.corrida_id AS servico, "); + sb.append(" r.ruta_id AS rutaid, "); + sb.append(" r.descruta AS descruta, "); + sb.append(" r.indsentidoida AS sentido, "); + sb.append(" nvl(e.indiceirk, 0) AS indiceirkminimo, "); + sb.append(" nvl(gr.descgrupo, 'Nao Definido') AS gruporuta, "); + sb.append(" SUM(tr.cantkmreal) AS extensao, "); + sb.append(" cj.importeseguro AS seguro, "); + sb.append(" cj.importetaxaembarque AS txembarque, "); + sb.append(" cj.importepedagio AS pedagio, "); + sb.append(" cj.preciopagado AS passagens, "); + sb.append(" r.prefixo AS prefixo, "); + sb.append(" cos.hora, "); + sb.append(" cos.quantidade AS qtdcorrida "); + sb.append("FROM "); + sb.append(" caja cj "); + sb.append(" INNER JOIN ruta r ON ( cj.ruta_id = r.ruta_id ) "); + sb.append(" LEFT JOIN grupo_ruta gr ON ( r.gruporuta_id = gr.gruporuta_id ) "); + sb.append(" INNER JOIN ruta_combinacion rc ON ( rc.ruta_id = cj.ruta_id "); + sb.append(" AND rc.activo = 1 ) "); + sb.append(" INNER JOIN corrida co ON ( co.corrida_id = cj.corrida_id "); + sb.append(" AND co.ruta_id = r.ruta_id "); + sb.append(" AND co.activo = 1 "); + sb.append(" AND cj.feccorrida = co.feccorrida ) "); + sb.append(" INNER JOIN tramo tr ON ( tr.tramo_id = rc.tramo_id "); + sb.append(" AND tr.origen_id = co.origen_id "); + sb.append(" AND tr.destino_id = co.destino_id ) "); + sb.append(" INNER JOIN marca m ON ( cj.marca_id = m.marca_id "); + sb.append(" AND m.empresa_id = :empresaId ) "); + sb.append(" INNER JOIN empresa e ON ( e.empresa_id = :empresaId ) "); + sb.append(" INNER JOIN parada origen ON ( origen.parada_id = tr.origen_id ) "); + sb.append(" INNER JOIN parada destino ON ( destino.parada_id = tr.destino_id ) "); + sb.append(" INNER JOIN corridas_count cos ON ( cos.corrida_id = co.corrida_id "); + sb.append(" AND hora = to_char(co.fechorsalida, 'HH24') ) "); + sb.append("WHERE "); + sb.append(" cj.activo = 1 "); + sb.append(" AND cj.motivocancelacion_id IS NULL "); + sb.append(" AND cj.indstatusboleto = 'V' "); + sb.append(" and cj.feccorrida BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YY hh24:mi:ss') "); + sb.append(rutaIds == null ||TODOS.equals(rutaIds) ? "" : " AND r.ruta_id IN ( " + rutaIds + " ) "); + sb.append(corridasIds == null || TODOS.equals(corridasIds) ? "" : " AND cj.corrida_id IN ( " + corridasIds + " ) "); + sb.append(grupoRutaId == null || TODOS.equals(grupoRutaId) ? "" : " AND R.GRUPORUTA_ID IN ( " + grupoRutaId + " ) "); + sb.append("GROUP BY "); + sb.append(" cj.caja_id, "); + sb.append(" cj.corrida_id, "); + sb.append(" r.ruta_id, "); + sb.append(" r.descruta, "); + sb.append(" r.indsentidoida, "); + sb.append(" nvl(e.indiceirk, 0), "); + sb.append(" nvl(gr.descgrupo, 'Nao Definido'), "); + sb.append(" cj.importeseguro, "); + sb.append(" cj.importetaxaembarque, "); + sb.append(" cj.importepedagio, "); + sb.append(" cj.preciopagado, "); + sb.append(" r.prefixo, "); + sb.append(" cos.hora, "); + sb.append(" cos.quantidade "); + sb.append("ORDER BY "); + sb.append(" r.descruta "); + + sb.append(" ) dados_sem_agrupamento"); sb.append(" GROUP BY servico,"); sb.append(" rutaid,"); sb.append(" descruta,");