From 62ded94dc9b6893ccfccba5ca017df802530edba Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 7 Feb 2014 12:49:42 +0000 Subject: [PATCH] =?UTF-8?q?0004870:=20Relat=C3=B3rio=20de=20Aproveitamento?= 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@33508 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioAproveitamento.java | 177 ++++++++++-- .../templates/RelatorioAproveitamento.jasper | Bin 53560 -> 52341 bytes .../templates/RelatorioAproveitamento.jrxml | 269 ++++++++---------- .../RelatorioAproveitamentoBean.java | 58 ++++ .../RelatorioAproveitamentoController.java | 11 +- 5 files changed, 337 insertions(+), 178 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioAproveitamentoBean.java diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java index 18af217f3..c729a9dbb 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamento.java @@ -3,15 +3,22 @@ */ package com.rjconsultores.ventaboletos.relatorios.impl; +import java.math.BigDecimal; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.util.ArrayList; +import java.util.List; import java.util.Locale; import java.util.Map; -import com.rjconsultores.ventaboletos.relatorios.utilitarios.ProcessadorParametros; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + +import com.rjconsultores.ventaboletos.relatorios.utilitarios.DataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; -import com.rjconsultores.ventaboletos.relatorios.utilitarios.SaidaRelatorio; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioAproveitamentoBean; import com.rjconsultores.ventaboletos.web.utilerias.CurrencyUtil; +import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; /** * @author Bruno H. G. Gouvêa @@ -19,12 +26,14 @@ import com.rjconsultores.ventaboletos.web.utilerias.CurrencyUtil; */ public class RelatorioAproveitamento extends Relatorio { - public RelatorioAproveitamento(Map parametros, Connection conexao) { + private List lsDadosRelatorio; + + public RelatorioAproveitamento(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); - this.setProcessadorParametros(new ProcessadorParametros(this) { + this.setCustomDataSource(new DataSource(this) { @Override - public void processaParametros() throws Exception { + public void initDados() throws Exception { Connection conexao = this.relatorio.getConexao(); @@ -42,7 +51,6 @@ public class RelatorioAproveitamento extends Relatorio { if (rset.next()) { - // TODO Alterar para injeção de acordo com usuário logado ou outro meio para obter o Locale correto Locale locale = new Locale("pt", "BR"); parametros.put("P_NOMINAL_KM", CurrencyUtil.getCurrencyStrFromStr(rset.getString("NOMINAL_KM"), locale)); @@ -53,23 +61,141 @@ public class RelatorioAproveitamento extends Relatorio { parametros.put("P_TOTAL_NOMINAL", CurrencyUtil.getCurrencyStrFromStr(rset.getString("TOTAL_NOMINAL"), locale)); parametros.put("P_OCUPACAO_S_ARRECADACAO", CurrencyUtil.getPercentStrFromStr(rset.getString("OCUPACAO_S_ARRECADACAO"), locale)); } + + NamedParameterStatement nps = new NamedParameterStatement(conexao, getSqlDetail()); + + nps.setInt("CORRIDA_ID", Integer.valueOf((String) parametros.get("CORRIDA_ID"))); + nps.setDate("FECCORRIDA", (java.sql.Date) parametros.get("FECCORRIDA")); + + rset = nps.executeQuery(); + + lsDadosRelatorio = new ArrayList(); + + while (rset.next()) { + + RelatorioAproveitamentoBean aproveitamentoBean = new RelatorioAproveitamentoBean(); + aproveitamentoBean.setCveparada((String) rset.getObject("CVEPARADA")); + aproveitamentoBean.setAsiento((BigDecimal) rset.getObject("ASIENTO")); + aproveitamentoBean.setOcupado((BigDecimal) rset.getObject("OCUPADO")); + aproveitamentoBean.setOcupadoOperacao((BigDecimal) rset.getObject("OCUPADO_OPERACAO")); + aproveitamentoBean.setNumsecuencia((BigDecimal) rset.getObject("NUMSECUENCIA")); + + lsDadosRelatorio.add(aproveitamentoBean); + } + + Integer asiento = 1; + BigDecimal ocupado = null; + Integer secOcupado = 0; + + for (RelatorioAproveitamentoBean i : lsDadosRelatorio) { + if (asiento.equals(i.getAsiento().intValue())) { + if (i.getOcupado() != null) { + if (secOcupado.equals(0)) { + secOcupado++; + ocupado = i.getOcupado(); + i.setOcupado(new BigDecimal(secOcupado)); + } else { + if (!i.getOcupado().equals(ocupado)) { + secOcupado++; + ocupado = i.getOcupado(); + i.setOcupado(new BigDecimal(secOcupado)); + } else { + i.setOcupado(new BigDecimal(secOcupado)); + } + } + + } + } else { + secOcupado = 0; + if (i.getOcupado() != null) + i.setOcupado(BigDecimal.ONE); + } + + asiento = i.getAsiento().intValue(); + } + + setLsDadosRelatorio(lsDadosRelatorio); + } - } - - ); + }); } - /* - * (non-Javadoc) - * - * @see com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio#processaParametros() - */ - @Override - public void processaParametros() throws Exception { - this.getProcessadorParametros().processaParametros(); - } + private String getSqlDetail() { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT DISTINCT PR.CVEPARADA AS CVEPARADA, "); + sql.append(" TO_NUMBER(DD.ASIENTO) AS ASIENTO, "); + sql.append(" (SELECT BO.BOLETO_ID "); + sql.append(" FROM BOLETO BO, "); + sql.append(" CORRIDA_TRAMO CTD, "); + sql.append(" CORRIDA_TRAMO CTO "); + sql.append(" WHERE BO.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND BO.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND BO.NUMASIENTO = DD.ASIENTO "); + sql.append(" AND BO.ORIGEN_ID = CTO.ORIGEN_ID "); + sql.append(" AND BO.DESTINO_ID = CTD.DESTINO_ID "); + sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND CTO.ACTIVO = 1 "); + sql.append(" AND CTD.ACTIVO = 1 "); + sql.append(" AND VT.NUMSECUENCIA BETWEEN "); + sql.append(" CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA + 1 "); + sql.append(" AND BO.ACTIVO = 1 "); + sql.append(" AND ( BO.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" OR BO.MOTIVOCANCELACION_ID = 0 ) "); + sql.append(" AND ROWNUM = 1) OCUPADO, "); + sql.append(" (SELECT DECODE(AE.VENDIBLE, 1, 1, "); + sql.append(" 0, 2) "); + sql.append(" FROM ASIENTO_EXCLUSIVO AE, "); + sql.append(" CORRIDA_TRAMO CTD, "); + sql.append(" CORRIDA_TRAMO CTO "); + sql.append(" WHERE AE.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND AE.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND AE.NUMASIENTO = DD.ASIENTO "); + sql.append(" AND AE.PARADA_ID = CTO.ORIGEN_ID "); + sql.append(" AND NVL(AE.DESTINO_ID, CR.DESTINO_ID) = CTD.DESTINO_ID "); + sql.append(" AND CTD.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND CTD.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND CTO.CORRIDA_ID = CR.CORRIDA_ID "); + sql.append(" AND CTO.FECCORRIDA = CR.FECCORRIDA "); + sql.append(" AND CTO.ACTIVO = 1 "); + sql.append(" AND CTD.ACTIVO = 1 "); + sql.append(" AND VT.NUMSECUENCIA BETWEEN "); + sql.append(" CTO.NUMSECUENCIA AND CTD.NUMSECUENCIA + 1 "); + sql.append(" AND AE.ACTIVO = 1) OCUPADO_OPERACAO, "); + sql.append(" VT.NUMSECUENCIA AS NUMSECUENCIA "); + sql.append("FROM CORRIDA CR, "); + sql.append(" (SELECT CT.ORIGEN_ID PARADA_ID, "); + sql.append(" CT.NUMSECUENCIA "); + sql.append(" FROM CORRIDA_TRAMO CT "); + sql.append(" WHERE CT.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND TRUNC(CT.FECCORRIDA) = :FECCORRIDA "); + sql.append(" AND CT.ACTIVO = 1 "); + sql.append(" UNION "); + sql.append(" SELECT CT.DESTINO_ID, "); + sql.append(" CT.NUMSECUENCIA + 1 "); + sql.append(" FROM CORRIDA_TRAMO CT "); + sql.append(" WHERE CT.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND TRUNC(CT.FECCORRIDA) = :FECCORRIDA "); + sql.append(" AND CT.ACTIVO = 1 "); + sql.append(" ORDER BY 2) VT, "); + sql.append(" PARADA PR, "); + sql.append(" ROL_OPERATIVO RO, "); + sql.append(" DET_DIAGRAMA_AUTOBUS DD "); + sql.append("WHERE CR.CORRIDA_ID = :CORRIDA_ID "); + sql.append(" AND TRUNC(CR.FECCORRIDA) = :FECCORRIDA "); + sql.append(" AND VT.PARADA_ID = PR.PARADA_ID "); + sql.append(" AND CR.ROLOPERATIVO_ID = RO.ROLOPERATIVO_ID "); + sql.append(" AND RO.DIAGRAMAAUTOBUS_ID = DD.DIAGRAMAAUTOBUS_ID "); + sql.append(" AND DD.VENDIBLE = 1 "); + sql.append("ORDER BY TO_NUMBER(DD.ASIENTO), "); + sql.append(" VT.NUMSECUENCIA "); + + return sql.toString(); + } private String getSql() { @@ -281,10 +407,23 @@ public class RelatorioAproveitamento extends Relatorio { sql.append(" AND DD.ACTIVO = 1 "); sql.append(" AND CT.ACTIVO = 1) TOTAL_OCUPADOS_OPERACAO "); sql.append(" FROM CORRIDA CR "); - sql.append(" WHERE CR.CORRIDA_ID = ?"); + sql.append(" WHERE CR.CORRIDA_ID = ? "); sql.append(" AND CR.FECCORRIDA = ? ) TAB "); return sql.toString(); } + public List getLsDadosRelatorio() { + return lsDadosRelatorio; + } + + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + + @Override + protected void processaParametros() throws Exception { + } + } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamento.jasper index 844c0a83eedde47ee7eb5c331d7a8b26ed5234c1..da359b8235fea40fe91e13812c774d20c6a5c105 100644 GIT binary patch literal 52341 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 R&MR6?u}!gV^&(a3{{WSMLDT>M literal 53560 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 - +