fixes bug#21655

dev:aristides
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@105558 d1611594-4594-4d17-8e1d-87c2c4800839
master
changelogweb 2021-02-26 16:03:51 +00:00
parent b6088bccc1
commit 65030fe371
2 changed files with 94 additions and 17 deletions

View File

@ -311,7 +311,6 @@ public class RelatorioAproveitamento extends Relatorio {
sql.append(" INNER JOIN CORRIDA CR ON BO.CORRIDA_ID = CR.CORRIDA_ID AND BO.FECCORRIDA = CR.FECCORRIDA ");
sql.append(" INNER JOIN ROL_OPERATIVO RO ON RO.ROLOPERATIVO_ID = CR.ROLOPERATIVO_ID ");
sql.append(" INNER JOIN DIAGRAMA_AUTOBUS DA ON RO.DIAGRAMAAUTOBUS_ID = DA.DIAGRAMAAUTOBUS_ID ");
sql.append(" INNER JOIN DET_DIAGRAMA_AUTOBUS DD ON RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID ");
sql.append(" WHERE ");
sql.append(" BO.CORRIDA_ID = :CORRIDA_ID ");
sql.append(" AND BO.FECCORRIDA = :FECCORRIDA ");
@ -321,15 +320,6 @@ public class RelatorioAproveitamento extends Relatorio {
sql.append(" AND BO.CATEGORIA_ID <> ");
sql.append(constanteService.buscarPorNomeConstante("GRATUIDADE_CRIANCA").getValorconstante());
sql.append(" AND BO.MOTIVOCANCELACION_ID IS NULL ");
sql.append(" GROUP BY ");
sql.append(" BO.PRECIOPAGADO, ");
sql.append(" BO.BOLETO_ID, ");
sql.append(" BO.ORIGEN_ID, ");
sql.append(" BO.DESTINO_ID, ");
sql.append(" BO.NUMKMVIAJE, ");
sql.append(" (CASE WHEN BO.PRECIOBASE = 0 THEN 1 ELSE 0 END), ");
sql.append(" (CASE WHEN BO.PRECIOBASE > 0 THEN 1 ELSE 0 END), ");
sql.append(" DA.CANTASIENTOSVENDIBLES ");
sql.append(" ORDER BY ");
sql.append(" BO.ORIGEN_ID, ");
sql.append(" BO.DESTINO_ID ) TRECHOS_VG ");

View File

@ -3,8 +3,11 @@ package com.rjconsultores.ventaboletos.relatorios.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
@ -24,9 +27,9 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageiros extends Relatorio
Map<String, Object> parametros = this.relatorio.getParametros();
String dataDe = (String) parametros.get("DATA_DE");
dataDe = dataDe + " 00:00:00";
String dataAte = (String) parametros.get("DATA_ATE");
dataAte = dataAte + " 23:59:59";
String linhasIds = (String) parametros.get("LINHAS");
String empresaId = (String) parametros.get("EMPRESA_IDS");
@ -73,9 +76,92 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageiros extends Relatorio
}
}
this.ordenarTrechosSentidoIda(this.dados,linhasIds);
this.resultSet = rset;
}
private void ordenarTrechosSentidoIda(List<Map<String, Object>> dados, String linhasIds) {
List<String> listOrigemDestino = this.buscarSequenciaOrigemDestinoIda(linhasIds);
if (listOrigemDestino.isEmpty()){
return;
}
List<Map<String, Object>> dadosOrdenados = new ArrayList<Map<String,Object>>();
for(Map<String, Object> dado : dados){
Map<String, Object> dataResult = new HashMap<String, Object>();
String origemAtual = dado.get("origem").toString();
String destinoAtual = dado.get("destino").toString();
String trecho = origemAtual.concat("|").concat(destinoAtual);
if (!listOrigemDestino.contains(trecho) ){
origemAtual = dado.get("destino").toString();
destinoAtual = dado.get("origem").toString();
}
dataResult.put("origem", origemAtual);
dataResult.put("destino", destinoAtual);
dataResult.put("km", dado.get("km"));
dataResult.put("totalida", dado.get("totalida"));
dataResult.put("totalvolta", dado.get("totalvolta"));
dadosOrdenados.add(dataResult);
}
dados.clear();
dados.addAll(dadosOrdenados);
}
private List<String> buscarSequenciaOrigemDestinoIda(String linhasIds) {
StringBuilder query = new StringBuilder();
query.append("SELECT ");
query.append("ori.DESCPARADA || '|' || des.DESCPARADA AS trecho ");
query.append("FROM ");
query.append("ruta r ");
query.append("JOIN RUTA_COMBINACION rc ON rc.ruta_id = r.ruta_id ");
query.append("INNER JOIN tramo tr ON tr.TRAMO_ID =rc.TRAMO_ID AND tr.ACTIVO = 1 ");
query.append("JOIN parada ori ON\tori.parada_id = tr.origen_id ");
query.append("JOIN parada des ON\tdes.parada_id = tr.destino_id ");
query.append(" ");
query.append("WHERE ");
query.append(" r.NUMRUTA = '").append(linhasIds).append("' ");
query.append("AND r.INDSENTIDOIDA =1 ");
query.append("AND rc.ACTIVO =1 ");
query.append("AND r.ACTIVO =1 ");
query.append("ORDER BY 1 ");
List<String> listOrigemDestino = new ArrayList<String>();
try {
Connection conexao = this.relatorio.getConexao();
PreparedStatement ps= conexao.prepareStatement(query.toString());
ResultSet rset = ps.executeQuery();
while (rset.next()) {
listOrigemDestino.add(rset.getString("trecho"));
}
rset.close();
ps.close();
} catch (SQLException e) {
throw new RuntimeException("Erro ao buscar sequencia da linha",e);
}
return listOrigemDestino;
}
});
}
@ -113,17 +199,18 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageiros extends Relatorio
sql.append(" JOIN parada ori ON ori.parada_id = b.origen_id ");
sql.append(" JOIN parada des ON des.parada_id = b.destino_id ");
sql.append(" JOIN ruta r ON r.ruta_id = b.ruta_id ");
sql.append(" JOIN tramo tr ON tr.ORIGEN_ID = ori.PARADA_ID and tr.DESTINO_ID = des.PARADA_ID AND tr.ACTIVO = 1 ");
sql.append(" JOIN RUTA_COMBINACION rc ON rc.ruta_id = r.ruta_id ");
sql.append(" INNER JOIN tramo tr ON tr.TRAMO_ID =rc.TRAMO_ID AND tr.ORIGEN_ID = ori.PARADA_ID AND tr.DESTINO_ID = des.PARADA_ID AND tr.ACTIVO = 1 ");
sql.append(" WHERE b.empresacorrida_id IN (").append(empresaId).append(") ");
sql.append(" AND b.indstatusboleto <> 'C' ");
sql.append(" AND b.motivocancelacion_id is null ");
if (!StringUtils.isBlank(linhasIds)) {
sql.append(" AND r.NUMRUTA = '").append(linhasIds).append("' ");
}
sql.append(" AND b.feccorrida BETWEEN To_date('").append(dataDe).append("', 'dd/mm/yyyy HH24:mi:ss') ");
sql.append(" AND To_date('").append(dataAte).append("', 'dd/mm/yyyy HH24:mi:ss') ");
sql.append(" AND b.feccorrida BETWEEN To_date('").append(dataDe).append("', 'dd/mm/yyyy') ");
sql.append(" AND To_date('").append(dataAte).append("', 'dd/mm/yyyy') ");
sql.append(" GROUP BY ");
sql.append(" r.cantasientos, ");