From 74efcabeabef6bc1960f2deddf541929dd45aedf Mon Sep 17 00:00:00 2001 From: valdir Date: Thu, 7 Jan 2021 20:32:22 +0000 Subject: [PATCH] =?UTF-8?q?0019880:=20Melhoria=20Relat=C3=B3rio=20Origem/D?= =?UTF-8?q?estino=20bug#19880=20dev:valdevir=20qua:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@104967 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioOrigemDestino.java | 65 ++++++++++++++++--- .../RelatorioOrigemDestinoBean.java | 61 ++++++++++++++++- .../RelatorioOrigemDestinoController.java | 9 ++- 3 files changed, 125 insertions(+), 10 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java index fc7295a4f..d4659f8f7 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java @@ -16,10 +16,13 @@ import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.rjconsultores.ventaboletos.entidad.Constante; +import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioOrigemDestinoBean; import com.rjconsultores.ventaboletos.relatorios.utilitarios.beans.PesoOperacional; import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; +import com.rjconsultores.ventaboletos.service.RutaSecuenciaService; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; @@ -31,10 +34,17 @@ public class RelatorioOrigemDestino extends Relatorio { private static String CONSTANTE_GRATUIDADE_CRIANCA; private List listaBean = new ArrayList(); + + private RutaSecuenciaService rutaSecuenciaService; + + private EsquemaCorridaService esquemaCorridaService; - public RelatorioOrigemDestino(Map parametros, Connection conexao) throws Exception { + public RelatorioOrigemDestino(Map parametros, Connection conexao, RutaSecuenciaService rutaSecuenciaService, EsquemaCorridaService esquemaCorridaService ) throws Exception { super(parametros, conexao); + this.rutaSecuenciaService = rutaSecuenciaService; + this.esquemaCorridaService = esquemaCorridaService; + // Mantis 15600 - O relatório não tinha um Bean, a consulta SQL era executada dentro do jasper e o relatório não era gerado (ou demorava muito) para o usuário. CONSTANTE_GRATUIDADE_CRIANCA = buscarConstante("GRATUIDADE_CRIANCA"); @@ -73,9 +83,15 @@ public class RelatorioOrigemDestino extends Relatorio { bean.setAbsoluto_total_corrida(rs.getInt("absoluto_total_corrida")); bean.setImportetaxaembarque(rs.getBigDecimal("importetaxaembarque")); bean.setImportepedagio(rs.getBigDecimal("importepedagio")); - + + bean.setOrigemId(rs.getInt("origen_id")); + bean.setDestinoId(rs.getInt("destino_id")); + bean.setRutaId(rs.getInt("ruta_id")); + listaBean.add(bean); } + + ordenarLista(listaBean); List listaSqlPesoOperacional = getPesoOperacional(conexao, corridasIds, dataDe, dataAte, bilhetesGratuitos, empresaIds, trechosSemMovimento); @@ -84,6 +100,35 @@ public class RelatorioOrigemDestino extends Relatorio { this.setCollectionDataSource(new JRBeanCollectionDataSource(listaBean)); } + private void ordenarLista(List listaBean2) { + try { + Integer rutaId = null; + Integer numCorrida = null; + EsquemaCorrida esquema = null; + + for(RelatorioOrigemDestinoBean listaRel : listaBean2) { + + if((rutaId == null || numCorrida == null)|| (!rutaId.equals(listaRel.getRutaId()) || !numCorrida.equals(listaRel.getCorrida_1().intValue()))) { + rutaId = listaRel.getRutaId(); + numCorrida = listaRel.getCORRIDA_1().intValue(); + esquema = esquemaCorridaService.buscaEsquemaPorRutaSemVigencia(rutaId, numCorrida); + } + + List numSequencias = rutaSecuenciaService.obtenerNumRutaSecuenciaPorCorridaOrigemDestinoId(esquema, listaRel.getOrigemId(), listaRel.getDestinoId()); + + if(numSequencias != null && !numSequencias.isEmpty() ) { + + listaRel.setNumSequencia(new Integer(numSequencias.get(0))); + + listaRel.setNumSequencia2(numSequencias.size() > 1 ? new Integer(numSequencias.get(1)) : 0); + } + } + Collections.sort(listaBean2); + } catch (Exception e) { + log.error("Erro ao ordenar lista: ", e); + } + } + @Override protected void processaParametros() throws Exception { } @@ -341,7 +386,9 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" RESULTADO_2.disponibilidade, "); sql.append(" RESULTADO_2.absoluto_total_corrida,"); sql.append(" RESULTADO_2.importetaxaembarque, "); - sql.append(" RESULTADO_2.importepedagio "); + sql.append(" RESULTADO_2.importepedagio, "); + sql.append(" RESULTADO_2.origen_id, "); + sql.append(" RESULTADO_2.destino_id "); sql.append(" FROM (SELECT RESULTADO.*, "); sql.append(" (SELECT Count(*) "); sql.append(" FROM corrida CO "); @@ -378,8 +425,8 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" CO.corrida_id CORRIDA_ID, "); sql.append(" Max(CO.fechorsalida) FECHORSALIDA, "); sql.append(" ORI.DESCPARADA ORIGEM, "); - sql.append(" CO.origen_id ORIGEN_ID, "); - sql.append(" CO.destino_id DESTINO_ID, "); + sql.append(" ORI.parada_id ORIGEN_ID, "); + sql.append(" DES.parada_id DESTINO_ID, "); sql.append(" DES.DESCPARADA DESTINO, "); sql.append(" CA.numkmviaje KM_TRAMO, "); sql.append(" RU.ruta_id, "); @@ -411,8 +458,8 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" EM.nombempresa, "); sql.append(" ORI.DESCPARADA, "); sql.append(" DES.DESCPARADA, "); - sql.append(" CO.origen_id, "); - sql.append(" CO.destino_id, "); + sql.append(" ORI.parada_id, "); + sql.append(" DES.parada_id, "); sql.append(" CA.numkmviaje, "); sql.append(" CO.corrida_id, "); sql.append(" RU.descruta, "); @@ -455,7 +502,9 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" RESULTADO_2.disponibilidade, "); sql.append(" RESULTADO_2.absoluto_total_corrida, "); sql.append(" RESULTADO_2.IMPORTETAXAEMBARQUE, "); - sql.append(" RESULTADO_2.IMPORTEPEDAGIO "); + sql.append(" RESULTADO_2.IMPORTEPEDAGIO, "); + sql.append(" RESULTADO_2.origen_id, "); + sql.append(" RESULTADO_2.destino_id "); sql.append(" ORDER BY RESULTADO_2.corrida_id) T1 "); sql.append(" INNER JOIN (SELECT RESULTADO_2.corrida_id CORRIDA_2, "); sql.append(" Sum(RESULTADO_2.equivalente) EQUIVALENTE_TOTAL_CORRIDA "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java index 1b9d1d5a8..7e20fc5ae 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java @@ -4,7 +4,7 @@ import java.math.BigDecimal; import java.sql.Timestamp; //Mantis 15600 -public class RelatorioOrigemDestinoBean { +public class RelatorioOrigemDestinoBean implements Comparable { private String nombempresa; private BigDecimal corrida_1; @@ -24,6 +24,11 @@ public class RelatorioOrigemDestinoBean { private Integer absoluto_total_corrida; private BigDecimal importetaxaembarque; private BigDecimal importepedagio; + private Integer numSequencia; + private Integer numSequencia2; + private Integer origemId; + private Integer destinoId; + private Integer rutaId; public String getNombempresa() { return nombempresa; @@ -242,4 +247,58 @@ public class RelatorioOrigemDestinoBean { public BigDecimal getIMPORTEPEDAGIO() { return getImportepedagio(); } + + public Integer getNumSequencia() { + return numSequencia == null ? 0 : numSequencia; + } + + public void setNumSequencia(Integer numSequencia) { + this.numSequencia = numSequencia; + } + + public Integer getOrigemId() { + return origemId; + } + + public void setOrigemId(Integer origemId) { + this.origemId = origemId; + } + + public Integer getDestinoId() { + return destinoId; + } + + public void setDestinoId(Integer destinoId) { + this.destinoId = destinoId; + } + + public Integer getRutaId() { + return rutaId; + } + + public void setRutaId(Integer rutaId) { + this.rutaId = rutaId; + } + + public Integer getNumSequencia2() { + return numSequencia2 == null ? 0 : numSequencia2; + } + + public void setNumSequencia2(Integer numSequencia2) { + this.numSequencia2 = numSequencia2 ; + } + + @Override + public int compareTo(RelatorioOrigemDestinoBean o) { + if(this.getCorrida_1().equals(o.getCorrida_1())){ + if(this.getNumSequencia().equals(o.getNumSequencia())) { + return this.getNumSequencia2() - o.getNumSequencia2(); + } else { + return this.getNumSequencia() - o.getNumSequencia(); + } + }else{ + return this.getCorrida_1().compareTo(o.getCorrida_1()); + } + } + } \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java index ff7714d99..3e1c4e9f9 100644 --- a/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java +++ b/src/java/com/rjconsultores/ventaboletos/web/gui/controladores/relatorios/RelatorioOrigemDestinoController.java @@ -33,6 +33,8 @@ import com.rjconsultores.ventaboletos.relatorios.impl.RelatorioOrigemDestino; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.service.CorridaService; import com.rjconsultores.ventaboletos.service.EmpresaService; +import com.rjconsultores.ventaboletos.service.EsquemaCorridaService; +import com.rjconsultores.ventaboletos.service.RutaSecuenciaService; import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -73,6 +75,11 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer { private MyComboboxParadaCve cmbParadaOrigemCve; private MyComboboxParada cmbParadaDestino; private MyComboboxParadaCve cmbParadaDestinoCve; + + @Autowired + private RutaSecuenciaService rutaSecuenciaService; + @Autowired + private EsquemaCorridaService esquemaCorridaService; public List getLsRuta() { return lsRuta; @@ -241,7 +248,7 @@ public class RelatorioOrigemDestinoController extends MyGenericForwardComposer { } parametros.put("CORRIDAS_SELECIONADAS", corridaIds.substring(1, corridaIds.length())); - Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSourceRead.getConnection()); + Relatorio relatorio = new RelatorioOrigemDestino(parametros, dataSourceRead.getConnection(), rutaSecuenciaService, esquemaCorridaService); Map args = new HashMap(); args.put("relatorio", relatorio);