fixes bug#24234

dev: Wallace
qua: 

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@112148 d1611594-4594-4d17-8e1d-87c2c4800839
master
celio 2022-05-05 22:12:19 +00:00
parent 6ceffa7143
commit d1c145306d
1 changed files with 92 additions and 9 deletions

View File

@ -2,10 +2,14 @@ package com.rjconsultores.ventaboletos.relatorios.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.List;
import java.util.Map; import java.util.Map;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource;
@ -98,12 +102,95 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
} }
} }
this.ordenarTrechosSentidoIda(this.dados,linhasIds);
this.resultSet = rset; 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;
}
}); });
} }
@Override @Override
protected void processaParametros() throws Exception { protected void processaParametros() throws Exception {
} }
@ -132,8 +219,8 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
sql.append(" ELSE NULL "); sql.append(" ELSE NULL ");
sql.append(" END "); sql.append(" END ");
sql.append(" ) AS totalvolta, "); sql.append(" ) AS totalvolta, ");
sql.append(" rc.rutacombinacion_id AS rutaCombinacionId, "); sql.append(" rc.rutacombinacion_id AS rutaCombinacionId ");
sql.append(" ct.numsecuencia ");
sql.append(" FROM "); sql.append(" FROM ");
sql.append(" boleto b "); sql.append(" boleto b ");
sql.append(" JOIN empresa e ON ( e.empresa_id = b.empresacorrida_id ) "); sql.append(" JOIN empresa e ON ( e.empresa_id = b.empresacorrida_id ) ");
@ -159,9 +246,7 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
sql.append(" AND tar.destino_id = b.destino_id "); sql.append(" AND tar.destino_id = b.destino_id ");
sql.append(" AND tar.TRAMO_ID = tr.TRAMO_ID "); sql.append(" AND tar.TRAMO_ID = tr.TRAMO_ID ");
sql.append(" AND tar.activo = 1 ) "); sql.append(" AND tar.activo = 1 ) ");
sql.append(" INNER JOIN corrida_tramo ct ON (tr.tramo_id = ct.tramo_id ");
sql.append(" AND b.corrida_id = ct.corrida_id ");
sql.append(" AND ct.activo =1 ) ");
sql.append(" WHERE b.empresacorrida_id IN :empresa_id "); sql.append(" WHERE b.empresacorrida_id IN :empresa_id ");
sql.append(" AND b.motivocancelacion_id is null "); sql.append(" AND b.motivocancelacion_id is null ");
@ -179,10 +264,8 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
sql.append(" r.numruta, "); sql.append(" r.numruta, ");
sql.append(" ori.descparada, "); sql.append(" ori.descparada, ");
sql.append(" des.descparada, "); sql.append(" des.descparada, ");
sql.append(" rc.rutacombinacion_id, "); sql.append(" rc.rutacombinacion_id ");
sql.append(" ct.numsecuencia ");
sql.append(" ORDER BY "); sql.append(" ORDER BY ");
sql.append(" ct.numsecuencia, ");
sql.append(" r.descruta, "); sql.append(" r.descruta, ");
sql.append(" rc.rutacombinacion_id "); sql.append(" rc.rutacombinacion_id ");