diff --git a/pom.xml b/pom.xml index e14cc6e04..e1d43ecda 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.0.66 + 1.0.67 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java index 2c6196a99..38d10b73c 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorario.java @@ -1,14 +1,17 @@ package com.rjconsultores.ventaboletos.relatorios.impl; +import java.lang.reflect.Array; import java.math.BigDecimal; import java.sql.Connection; import java.sql.ResultSet; -import java.sql.Timestamp; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; import org.apache.log4j.Logger; @@ -50,10 +53,18 @@ public class RelatorioLinhasHorario extends Relatorio { parametros.put("LINHA_FILTRO", retornaFiltro(null, lsNumLinha)); Empresa empresa = (Empresa) parametros.get("EMPRESA"); + String corridaIds = "", rutaIds = ""; GrupoRuta grupoRuta = (GrupoRuta) parametros.get("GRUPORUTA"); Integer tipoServico = (Integer) parametros.get("TIPOSERVICIO_ID"); Boolean isPorData = parametros.get("ISPORDATA") == null ? false : true; - String sql = getSql(lsNumLinha, lsNumServico, empresa, tipoServico, grupoRuta, isPorData); + if (lsNumServico != null && !lsNumServico.isEmpty()) { + corridaIds = retornaFiltro(lsNumServico, null); + } + if (lsNumLinha != null && !lsNumLinha.isEmpty()) { + rutaIds = retornaFiltro(null, lsNumLinha); + } + String sql = getSql(corridaIds, rutaIds, empresa, tipoServico, grupoRuta, isPorData); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -75,14 +86,6 @@ public class RelatorioLinhasHorario extends Relatorio { if (grupoRuta != null) { stmt.setInt("GRUPORUTA_ID", grupoRuta.getGrupoRutaId()); } - if (lsNumServico != null && !lsNumServico.isEmpty()) { - String corridaIds = retornaFiltro(lsNumServico, null); - stmt.setString("CORRIDA_ID", corridaIds); - } - if (lsNumLinha != null && !lsNumLinha.isEmpty()) { - String rutaIds = retornaFiltro(null, lsNumLinha); - stmt.setString("RUTA_ID", rutaIds); - } if (tipoServico > 0) { stmt.setInt("TIPOSERVICIO_ID", tipoServico); } @@ -241,21 +244,21 @@ public class RelatorioLinhasHorario extends Relatorio { if (lsNumServico != null && !lsNumServico.isEmpty()) { for (Corrida corrida : lsNumServico) { if (lsNumServico.indexOf(corrida) == 0) { - filtro = "" + corrida.getId().getCorridaId(); + filtro = "'" + corrida.getId().getCorridaId(); } else { - filtro += ", " + corrida.getId().getCorridaId(); + filtro += "','" + corrida.getId().getCorridaId(); } } - return filtro; + return filtro.concat("'"); } else if (lsNumLinha != null && !lsNumLinha.isEmpty()) { for (Ruta ruta : lsNumLinha) { if (lsNumLinha.indexOf(ruta) == 0) { - filtro = "" + ruta.getRutaId(); + filtro = "'" + ruta.getRutaId(); } else { - filtro += ", " + ruta.getRutaId(); + filtro += "','" + ruta.getRutaId(); } } - return filtro; + return filtro.concat("'"); } else { return filtro; } @@ -376,7 +379,7 @@ public class RelatorioLinhasHorario extends Relatorio { protected void processaParametros() throws Exception { } - private String getSql(ArrayList lsNumLinha, ArrayList lsNumServico, Empresa empresa, Integer tipoServico, GrupoRuta grupoRuta, Boolean isPorData) { + private String getSql(String corridaIds,String rutaIds, Empresa empresa, Integer tipoServico, GrupoRuta grupoRuta, Boolean isPorData) { StringBuilder sql = new StringBuilder(); sql.append(" SELECT "); @@ -510,7 +513,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" INNER JOIN TARIFA TF ON ( TR.TRAMO_ID=TF.TRAMO_ID AND TF.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND TF.DESTINO_ID = C.DESTINO_ID AND TF.ORIGEN_ID = C.ORIGEN_ID AND TF.MARCA_ID = C.MARCA_ID AND TF.RUTA_ID = C.RUTA_ID AND R.ORGAOCONCEDENTE_ID= TF.ORGAOCONCEDENTE_ID AND TF.ACTIVO=1 AND ((TF.MONEDA_ID = B.MONEDA_ID) OR (B.MONEDA_ID IS NULL))) "); sql.append(" INNER JOIN VIGENCIA_TARIFA VT ON (VT.VIGENCIATARIFA_ID = TF.VIGENCIATARIFA_ID AND C.FECCORRIDA BETWEEN VT.FECINICIOVIGENCIA AND VT.FECFINVIGENCIA ) "); sql.append(" WHERE C.ACTIVO NOT IN (0,2) AND C.FECCORRIDA BETWEEN TO_TIMESTAMP(:DATA_INICIO, 'dd/mm/yyyy hh24:mi:ss') AND TO_TIMESTAMP(:DATA_FINAL, 'dd/mm/yyyy hh24:mi:ss') "); - sql.append(lsNumServico.isEmpty() ? "" : " AND B.CORRIDA_ID IN ( :CORRIDA_ID ) "); + sql.append(corridaIds.isEmpty() ? "" : " AND B.CORRIDA_ID IN (" + corridaIds + ") "); sql.append(" GROUP BY C.CORRIDA_ID,C.CORRIDA2_ID, c.ruta_id, C.ROLOPERATIVO_ID, "); sql.append(" C.DESTINO_ID, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI'),NVL(TF.PRECIO, 0) "); sql.append(" ) TB4 ON (TB4.CORRIDA_ID = C.CORRIDA_ID AND (TB4.CORRIDA2_ID=C.CORRIDA2_ID OR (TB4.CORRIDA2_ID IS NULL AND C.CORRIDA2_ID IS NULL)) and tb4.c_ruta_id = c.ruta_id "); @@ -557,7 +560,7 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" AND BO.CATEGORIA_ID <> :CRIANCA_ID"); sql.append(" AND BO.FECCORRIDA BETWEEN TO_TIMESTAMP(:DATA_INICIO, 'dd/mm/yyyy hh24:mi:ss') AND TO_TIMESTAMP(:DATA_FINAL, 'dd/mm/yyyy hh24:mi:ss') "); - sql.append(lsNumServico.isEmpty() ? "" : " AND BO.CORRIDA_ID IN ( :CORRIDA_ID ) "); + sql.append(corridaIds.isEmpty() ? "" : " AND BO.CORRIDA_ID IN (" + corridaIds + ") "); sql.append(" GROUP BY CO.FECCORRIDA, CO.CORRIDA_ID, CO.CORRIDA2_ID, CO.ROLOPERATIVO_ID, "); sql.append(" CO.RUTA_ID, CO.EMPRESACORRIDA_ID, BO.NUMKMVIAJE, BO.BOLETO_ID, T.CANTKMREAL, "); sql.append(" NVL(BO.IMPORTESEGURO, 0), NVL(BO.IMPORTETAXAEMBARQUE, 0), "); @@ -566,9 +569,10 @@ public class RelatorioLinhasHorario extends Relatorio { sql.append(" AND CJ.RUTA_ID = C.RUTA_ID AND CJ.EMPRESACORRIDA_ID = C.EMPRESACORRIDA_ID AND CJ.TARIFA=TF.PRECIO ) "); sql.append(" WHERE C.FECCORRIDA BETWEEN TO_TIMESTAMP(:DATA_INICIO, 'dd/mm/yyyy hh24:mi:ss') AND TO_TIMESTAMP(:DATA_FINAL, 'dd/mm/yyyy hh24:mi:ss') "); - sql.append(lsNumServico.isEmpty() ? "" : " AND C.CORRIDA_ID IN ( :CORRIDA_ID ) "); + sql.append(corridaIds.isEmpty() ? "" : " AND C.CORRIDA_ID IN (" + corridaIds + ")"); + sql.append(grupoRuta == null ? "" : " AND R.GRUPORUTA_ID IN ( :GRUPORUTA_ID ) "); - sql.append(lsNumLinha.isEmpty() ? "" : " AND R.RUTA_ID IN ( :RUTA_ID ) "); + sql.append(rutaIds.isEmpty() ? "" : " AND R.RUTA_ID IN (" + rutaIds + ")"); sql.append(tipoServico == 0 ? "" : " AND C.TIPOSERVICIO_ID = :TIPOSERVICIO_ID" ); sql.append(" AND C.ACTIVO <> 0 AND ORIGEM.ACTIVO = 1 AND DESTINO.ACTIVO = 1 AND TB2.ORIGEM = ORIGEM.CVEPARADA AND TB2.DESTINO = DESTINO.CVEPARADA "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java index ea3bac557..b9d7a7d5b 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioLinhasHorarioSimplificado.java @@ -53,10 +53,17 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { parametros.put("LINHA_FILTRO", retornaFiltro(null, lsNumLinha)); Empresa empresa = (Empresa) parametros.get("EMPRESA"); + String corridaIds = "", rutaIds = ""; GrupoRuta grupoRuta = (GrupoRuta) parametros.get("GRUPORUTA"); Integer tipoServico = (Integer) parametros.get("TIPOSERVICIO_ID"); Boolean isPorData = parametros.get("ISPORDATA") == null ? false : true; - String sql = getSql(lsNumLinha, lsNumServico, empresa, tipoServico, grupoRuta, (Boolean)parametros.get("ISSENTIDOIDA"), (Boolean)parametros.get("ISSENTIDOVOLTA"), isPorData); + if (lsNumServico != null && !lsNumServico.isEmpty()) { + corridaIds = retornaFiltro(lsNumServico, null); + } + if (lsNumLinha != null && !lsNumLinha.isEmpty()) { + rutaIds = retornaFiltro(null, lsNumLinha); + } + String sql = getSql(corridaIds, rutaIds, empresa, tipoServico, grupoRuta, (Boolean)parametros.get("ISSENTIDOIDA"), (Boolean)parametros.get("ISSENTIDOVOLTA"), isPorData); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -82,14 +89,6 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { if (grupoRuta != null) { stmt.setInt("GRUPORUTA_ID", grupoRuta.getGrupoRutaId()); } - if (lsNumServico != null && !lsNumServico.isEmpty()) { - String corridaIds = retornaFiltro(lsNumServico, null); - stmt.setString("CORRIDA_ID", corridaIds); - } - if (lsNumLinha != null && !lsNumLinha.isEmpty()) { - String rutaIds = retornaFiltro(null, lsNumLinha); - stmt.setString("RUTA_ID", rutaIds); - } if (tipoServico > 0) { stmt.setInt("TIPOSERVICIO_ID", tipoServico); } @@ -247,21 +246,21 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { if (lsNumServico != null && !lsNumServico.isEmpty()) { for (Corrida corrida : lsNumServico) { if (lsNumServico.indexOf(corrida) == 0) { - filtro = "" + corrida.getId().getCorridaId(); + filtro = "'" + corrida.getId().getCorridaId(); } else { - filtro += ", " + corrida.getId().getCorridaId(); + filtro += "','" + corrida.getId().getCorridaId(); } } - return filtro; + return filtro.concat("'"); } else if (lsNumLinha != null && !lsNumLinha.isEmpty()) { for (Ruta ruta : lsNumLinha) { if (lsNumLinha.indexOf(ruta) == 0) { - filtro = "" + ruta.getRutaId(); + filtro = "'" + ruta.getRutaId(); } else { - filtro += ", " + ruta.getRutaId(); + filtro += "','" + ruta.getRutaId(); } } - return filtro; + return filtro.concat("'"); } else { return filtro; } @@ -439,7 +438,7 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { protected void processaParametros() throws Exception { } - private String getSql(ArrayList lsNumLinha, ArrayList lsNumServico, Empresa empresa, Integer tipoServico, + private String getSql(String corridaIds, String rutaIds, Empresa empresa, Integer tipoServico, GrupoRuta grupoRuta, Boolean isSentidoIda, Boolean isSentidoVolta, Boolean isPorData) { StringBuilder sql = new StringBuilder(); @@ -541,7 +540,7 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { sql.append(" WHERE C.ACTIVO NOT IN (0,2) "); sql.append(" AND C.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); - sql.append(lsNumServico.isEmpty() ? "" : " AND B.CORRIDA_ID IN (:CORRIDA_ID) "); + sql.append(corridaIds.isEmpty() ? "" : " AND B.CORRIDA_ID IN ("+corridaIds+") "); sql.append(" GROUP BY C.CORRIDA_ID, c.ruta_id, C.ROLOPERATIVO_ID, C.DESTINO_ID, C.ORIGEN_ID, TO_CHAR(C.FECHORSALIDA, 'HH24:MI') "); sql.append(" ) TB4 ON ((TB4.CORRIDA_ID = C.CORRIDA_ID and tb4.c_ruta_id = c.ruta_id) "); @@ -579,7 +578,7 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { sql.append(" AND BO.CATEGORIA_ID <> :CRIANCA_ID"); sql.append(" AND BO.FECCORRIDA BETWEEN TO_DATE(:DATA_INICIO, 'DD/MM/YYYY hh24:mi:ss') AND TO_DATE(:DATA_FINAL, 'DD/MM/YYYY hh24:mi:ss') "); - sql.append(lsNumServico.isEmpty() ? "" : " AND B.CORRIDA_ID IN (:CORRIDA_ID) "); + sql.append(corridaIds.isEmpty() ? "" : " AND BO.CORRIDA_ID IN ("+corridaIds+") "); sql.append(" GROUP BY CO.FECCORRIDA, CO.CORRIDA_ID, CO.ROLOPERATIVO_ID, CO.RUTA_ID, CO.EMPRESACORRIDA_ID, BO.NUMKMVIAJE, BO.BOLETO_ID, T.CANTKMREAL, "); sql.append(" NVL(BO.IMPORTESEGURO, 0), NVL(BO.IMPORTETAXAEMBARQUE, 0), NVL(BO.IMPORTEPEDAGIO, 0), NVL(BO.PRECIOPAGADO, 0) "); @@ -610,9 +609,9 @@ public class RelatorioLinhasHorarioSimplificado extends Relatorio { sql.append(" AND (TF.TARIFA_ID IS NULL OR (TF.TARIFA_ID IS NOT NULL AND C.FECCORRIDA BETWEEN VTF.FECINICIOVIGENCIA AND VTF.FECFINVIGENCIA )) "); sql.append(" "); - sql.append(lsNumServico.isEmpty() ? "" : " AND B.CORRIDA_ID IN (:CORRIDA_ID) "); + sql.append(corridaIds.isEmpty() ? "" : " AND C.CORRIDA_ID IN ("+corridaIds+") "); sql.append(grupoRuta == null ? "" : " AND R.GRUPORUTA_ID IN (:GRUPORUTA_ID) "); - sql.append(lsNumLinha.isEmpty() ? "" : " AND R.RUTA_ID IN (:RUTA_ID) "); + sql.append(rutaIds.isEmpty() ? "" : " AND R.RUTA_ID IN ("+rutaIds+") "); sql.append(tipoServico == 0 ? "" : " AND C.TIPOSERVICIO_ID = :TIPOSERVICIO_ID" ); if(Boolean.TRUE.equals(isSentidoIda)) {