diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java index d7a0ffbf1..2c238c2cd 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java @@ -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 "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioQuadroDemonstrativoMovimentoPassageiros.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioQuadroDemonstrativoMovimentoPassageiros.java index 964a64d46..8b02bc201 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioQuadroDemonstrativoMovimentoPassageiros.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioQuadroDemonstrativoMovimentoPassageiros.java @@ -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 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> dados, String linhasIds) { + + List listOrigemDestino = this.buscarSequenciaOrigemDestinoIda(linhasIds); + + if (listOrigemDestino.isEmpty()){ + return; + } + + + List> dadosOrdenados = new ArrayList>(); + + + for(Map dado : dados){ + + Map dataResult = new HashMap(); + + 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 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 listOrigemDestino = new ArrayList(); + + 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, ");