fixes bug#AL-2233

master
Célio de Souza Ribeiro JR 2023-03-06 10:48:57 -03:00
parent ba30705ee7
commit 0a33931625
3 changed files with 45 additions and 42 deletions

View File

@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ventaboletosadm</artifactId>
<version>1.0.66</version>
<version>1.0.67</version>
<packaging>war</packaging>
<properties>

View File

@ -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<Ruta> lsNumLinha, ArrayList<Corrida> 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 ");

View File

@ -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<Ruta> lsNumLinha, ArrayList<Corrida> 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)) {