From 3a99b090bd8410c185b15a18c4f4a6d4d90472b3 Mon Sep 17 00:00:00 2001 From: "thiago.clemente" Date: Wed, 25 Sep 2019 21:18:34 +0000 Subject: [PATCH] fixes bug#15600 dev: qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@97841 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioOrigemDestino.java | 73 ++++-- .../templates/RelatorioOrigemDestino.jasper | Bin 77941 -> 77208 bytes .../templates/RelatorioOrigemDestino.jrxml | 215 ++++++++------- .../RelatorioOrigemDestinoBean.java | 245 ++++++++++++++++++ 4 files changed, 418 insertions(+), 115 deletions(-) create mode 100644 src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java index c7362e4dd..5cd488e5e 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java @@ -17,22 +17,25 @@ import org.apache.log4j.Logger; import com.rjconsultores.ventaboletos.entidad.Constante; 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.web.utilerias.NamedParameterStatement; import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + public class RelatorioOrigemDestino extends Relatorio { private static Logger log = Logger.getLogger(RelatorioOrigemDestino.class); private static String CONSTANTE_GRATUIDADE_CRIANCA; + private List listaBean = new ArrayList(); public RelatorioOrigemDestino(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); - } - - @Override - protected void processaParametros() throws Exception { + + // 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"); @@ -44,15 +47,48 @@ public class RelatorioOrigemDestino extends Relatorio { Boolean trechosSemMovimento = (Boolean) getParametros().get("TRECHOS_SEM_MOVIMENTO"); String sql = getSQL(empresaIds, corridasIds, dataDe, dataAte, bilhetesGratuitos, trechosSemMovimento); - log.info(sql); - List lsPesoOperacionalRelatorio = getPesoOperacional(corridasIds, dataDe, dataAte, bilhetesGratuitos, empresaIds, trechosSemMovimento); - getParametros().put("lsPesoOperacionalRelatorio", lsPesoOperacionalRelatorio); - getParametros().put("SQL", sql); + NamedParameterStatement npst = new NamedParameterStatement(conexao, sql); + npst.setFetchSize(1000); + ResultSet rs = npst.executeQuery(); + + while (rs.next()) { + RelatorioOrigemDestinoBean bean = new RelatorioOrigemDestinoBean(); + bean.setNombempresa(rs.getString("nombempresa")); + bean.setCorrida_1(rs.getBigDecimal("corrida_1")); + bean.setFechorsalida(rs.getTimestamp("fechorsalida")); + bean.setOrigem(rs.getString("origem")); + bean.setDestino(rs.getString("destino")); + bean.setKm_tramo(rs.getBigDecimal("km_tramo")); + bean.setDescruta(rs.getString("descruta")); + bean.setIndsentidoida(rs.getInt("indsentidoida")); + bean.setKm_corrida(rs.getBigDecimal("km_corrida")); + bean.setAbsolutos(rs.getBigDecimal("absolutos")); + bean.setReceita(rs.getBigDecimal("receita")); + bean.setPreciobase(rs.getBigDecimal("preciobase")); + bean.setEquivalente_total_corrida(rs.getBigDecimal("equivalente_total_corrida")); + bean.setDisponibilidade(rs.getInt("disponibilidade")); + bean.setViagens(rs.getInt("viagens")); + bean.setAbsoluto_total_corrida(rs.getInt("absoluto_total_corrida")); + bean.setImportetaxaembarque(rs.getBigDecimal("importetaxaembarque")); + bean.setImportepedagio(rs.getBigDecimal("importepedagio")); + + listaBean.add(bean); + } + + List listaSqlPesoOperacional = getPesoOperacional(conexao, corridasIds, dataDe, dataAte, bilhetesGratuitos, empresaIds, trechosSemMovimento); + + getParametros().put("lsPesoOperacionalRelatorio", listaSqlPesoOperacional); + + this.setCollectionDataSource(new JRBeanCollectionDataSource(listaBean)); } - private List getPesoOperacional(String corridasIds, String dataDe, String dataAte, + @Override + protected void processaParametros() throws Exception { + } + + private List getPesoOperacional(Connection conexao, String corridasIds, String dataDe, String dataAte, Boolean bilhetesGratuitos, String empresaIds, Boolean mostratTrechosSemMovimento) throws SQLException { StringBuilder sql = new StringBuilder(); @@ -183,10 +219,11 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" ORDER BY CA.CORRIDA_ID,SECD "); } - Connection conexao = getConexao(); + log.info(sql); PreparedStatement stmt = null; stmt = conexao.prepareStatement(sql.toString()); + stmt.setFetchSize(1000); ResultSet rset = null; rset = stmt.executeQuery(); @@ -436,18 +473,18 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" AND CA.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') "); sql.append(" AND CA.motivocancelacion_id IS NULL "); - if(StringUtils.isNotBlank(CONSTANTE_GRATUIDADE_CRIANCA)) { + if (StringUtils.isNotBlank(CONSTANTE_GRATUIDADE_CRIANCA)) { sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA); } sql.append(" AND CA.preciobase IS NOT NULL "); sql.append(" AND CA.preciobase = RESULTADO.preciobase "); - sql.append(" AND PO.DESCPARADA = RESULTADO.origem "); - sql.append(" AND PD.DESCPARADA = RESULTADO.destino) "); + sql.append(" AND PO.parada_id = RESULTADO.origem "); + sql.append(" AND PD.parada_id = RESULTADO.destino) "); sql.append(" EQUIVALENTE "); sql.append(" FROM (SELECT CO.corrida_id CORRIDA_ID, "); - sql.append(" ORI.DESCPARADA ORIGEM, "); - sql.append(" DES.DESCPARADA DESTINO, "); + sql.append(" ORI.parada_id ORIGEM, "); + sql.append(" DES.parada_id DESTINO, "); sql.append(" CA.numkmviaje KM_TRAMO, "); sql.append(" RU.ruta_id, "); sql.append(" CA.preciobase, "); @@ -465,7 +502,7 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" AND CA.FECCORRIDA BETWEEN to_date('" + dataDe + "','dd/mm/yyyy HH24:mi:ss') AND to_date('" + dataAte + "','dd/mm/yyyy HH24:mi:ss') "); sql.append(" AND CA.motivocancelacion_id IS NULL "); - if(StringUtils.isNotBlank(CONSTANTE_GRATUIDADE_CRIANCA)) { + if (StringUtils.isNotBlank(CONSTANTE_GRATUIDADE_CRIANCA)) { sql.append(" AND CA.CATEGORIA_ID <> ").append(CONSTANTE_GRATUIDADE_CRIANCA); } @@ -473,8 +510,8 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append((bilhetesGratuitos ? " AND CA.PRECIOBASE >= 0 " : " AND CA.PRECIOBASE > 0 ")); sql.append(" GROUP BY RU.ruta_id, "); sql.append(" EM.nombempresa, "); - sql.append(" ORI.DESCPARADA, "); - sql.append(" DES.DESCPARADA, "); + sql.append(" ORI.parada_id, "); + sql.append(" DES.parada_id, "); sql.append(" CA.numkmviaje, "); sql.append(" CO.corrida_id, "); sql.append(" RU.descruta, "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper index 9d8197bb4ed0a73dc295061767498bacfbcc6c00..e0f61c7d9c08c9403df11eb967520f433e7898f2 100644 GIT binary patch literal 77208 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 t*7JOv^&%f{y~QV3@9+bxkN6bp6FxO?7@ro% z=Z6Q*<@OpbPUt%B58|?z#WS8+~yOJMgpT^tmReYI!5jG{cl%HT<%TKg#;HTPm@YC$O z`5E@Z{7ic*Ki7VipJ#997ui4Xi|wEJ>fi)^d2lknD%i@`2HW{{!7KRn!K?VX;CjA3 zxPjjq+{kYWKFIG1KFjY8Zs!|=Z}9trZ}ZK;5BWpEkNMW%m;BM-SN!qd&-{sy#h(d{ z<a(;AUwhfhxfK3 z;r*;=c%s!ee1J7DJlz@;F0_V)%dMTlM_9XrkG6IV*IGH@rPiL|W^12tm$h&B1ZzzA zOlxfT94jxp+By(A-z$)Z|J4BhpVt6iH#9(cQhf~?IC@Ib0Ld#w10+v0HP9es2u%Zg z!;A2AK}Iv{rvW0MqNM6Djs{3^c^aU4QW_v7>}h~bs!1B4%$=tJ(zBMFqkbt3P$uAL zfHDC`15{5+1EeRTTT>ABzQj%zlm_TT3~-a!VQPT%o@A6(oFolU7RS*5wV2WQ;>qQU zrU9mTNtN)L)UZkeq_Ca_sGgJtsGgJth$l@0#FM50Dw@&&@q}!qXn@MwUjtOdRvMsu zax_5oq%=VFq%=VFq%=T!k{nK}0jfYs1I#24G(Z(dX@E{3u>1PJ0m>vD4NyI$(*OZ6xanws>PcyUD!9@B)sxZy=?Nu)>O^j0d%by(6MIngRD6`A39o*Rmsb&BY34XmoKp9@uQ)y z#jK-vqgBg~vwq1FRs%oDit$seI6uc)%Fnl2_~lkBUt@Lf8?6LiZ*}o|pwDfzPU0U~ zC-YCN(=BGLv;x*yR;hKiRbicPEwnDMeqmi=HCmTi$68ld%d9J{71q_(7V8@8G3y5F zdFw{&MeAnkE$bHR9qV@MBkK<96YHM9Vb;BYeCvV0xz>Y$3#^9&Yph2CS6hz-9<_cI z*k(N$__y^`;0NnDJ8V5~XIU@VL#w2Cy{y;leXY0b3D(>8Wb60#;npAQ0_%@< zne~BPX?<*;X8qY-W&O>*$oka2)cV4{*80-E!TOhdhxN66xAmR>hkDFf#aT zV6Wizz<$9u0;7U&2gU_I4D28LI4~jjWng0PtH6}t&w&F&R$y9aY~YYkZeV)o;6Q%p zkU(*0W?)8Wc3^g>DljKBH&78;8K?}M8K?$KCm!!Q{b4;qk-Dcwm^O8 z-9SU=kAcR}r-69r^FVXxyFg3m$3S~H66gqL2bPD21-il`0w;#|4xAL;FK}9TV&L@f z0f95a(*tLP3j^nc%LC_!j|f~GK00toxHfQkcxm8@aC2a7xGQjV_=Ldq;WGm_gwF}A z53df~2@UYg|J4BhcMedhCNz(TJ2i)B%mMxuBu^iblQ@1Fphrp7VH^#R;_@^=_2fGT z=%kvY0a8B2R9r@LfHDC`1EjEJ8ypQ#J^jBl2Pli&m;+SBRvMsuax_5oq%=VFq%=VFq%=T!q9XS& z2dDxm4KR~H&;V5+r2#sDqy|Vx^=1xG3$13=b8De(S--GDRwHz^W9@8fnH{xO*aNIB_CV_~ z=xxv2!>kwWouRYsV!dPUVSQxhSfAK?2M)9M3FO@s_@eT03uT?OhqJk7T& z?W63|?4#{f_Al*=>^l2WJ7!;NFSc*6m)dvO$J%$>t@guqo4wUe*w5OX_I7)P{eykH z{j+^?aDshGaI(EJ*lMo|w%cb1udvSvUS(epTyI|(++bfC+-P4Ge9*o!_^iDqxZS=c z_=bIL@NN6X;D`22!H?}*f?wJjf?wHp1b?>g3|aQQp|SRTp{9Cp_%rU z&}{oxp(=Y@Xs-QKXr=vh=uG?h&?WZv&}#eFq3iA6gl@853q5MT9@=KV9eUUPZRn5o zA3~qn?}k3NKL~wie;E4F{&P5De-h5NKMfDFKMRkrzYOnf|0BGg{dIVv{Z04)`}^>8 z`-gC05bKjc9zG%%3?Cf~g=>RZ;ibXsaC5MKxGOjyd_r(Y_{`wY@HxQ|;nl%Cp#i=_ dOSBA=!bALa2~Mzy8SSY&8=GI&t9_B%|35Jp%nkqm literal 77941 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%0Ay8_NOtiy!;)z!dHK%lnLW2AE+eN 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 DfBxc* diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml index cd35f2eac..5f30124a3 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml @@ -1,8 +1,8 @@ - - + + @@ -30,7 +30,7 @@ - + @@ -106,166 +106,172 @@ - + - + - + - + - + - + - + - + - + - + - + - + - + - + + - + + - + + - + - + - + - + - + + - + + - + + - + - + - + - + - + @@ -276,182 +282,184 @@ - + - + - + - + - + - + 0?new BigDecimal("100.00"):$V{sum_por_equivalente}]]> - + 0?new BigDecimal("100.00"):$V{sum_porc_abs}]]> - + - + - + - + - + - + - + - + - + - + - + + - + + - + - + - + - + - + - + - + - + - + @@ -461,79 +469,90 @@ - + + - + + - + + - + + - + + - + - + + - + + - + - + + - + + - + + - + - + + @@ -545,47 +564,47 @@ <band height="80" splitType="Stretch"> <staticText> - <reportElement x="0" y="0" width="661" height="20" uuid="58b5b133-43e0-42f0-a904-5cc3645d3df3"/> + <reportElement uuid="58b5b133-43e0-42f0-a904-5cc3645d3df3" x="0" y="0" width="661" height="20"/> <textElement verticalAlignment="Middle"> <font size="15" isBold="true"/> </textElement> <text><![CDATA[ORIGEM/DESTINO OD]]></text> </staticText> <textField pattern="dd/MM/yyyy HH:mm"> - <reportElement x="661" y="0" width="104" height="20" uuid="4d1bcd65-c9a6-44b4-8dca-cc3c4c20c9a5"/> + <reportElement uuid="4d1bcd65-c9a6-44b4-8dca-cc3c4c20c9a5" x="661" y="0" width="104" height="20"/> <textElement textAlignment="Right" verticalAlignment="Middle"> <font isBold="true"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <staticText> - <reportElement x="0" y="61" width="74" height="19" uuid="bb8d0dec-2060-456e-bca1-c69d7c272fa3"/> + <reportElement uuid="bb8d0dec-2060-456e-bca1-c69d7c272fa3" x="0" y="61" width="74" height="19"/> <textElement verticalAlignment="Middle"> <font isBold="true"/> </textElement> <text><![CDATA[Serviço(s):]]></text> </staticText> <textField> - <reportElement x="0" y="20" width="765" height="20" uuid="a16eb33b-78ca-4fb4-80c2-f5c85a0d09c3"/> + <reportElement uuid="a16eb33b-78ca-4fb4-80c2-f5c85a0d09c3" x="0" y="20" width="765" height="20"/> <textElement verticalAlignment="Middle"> <font isBold="true"/> </textElement> <textFieldExpression><![CDATA["Período: " + $P{DATA_DE} + " a " + $P{DATA_ATE}]]></textFieldExpression> </textField> <staticText> - <reportElement x="0" y="39" width="74" height="23" uuid="3857502f-b69a-4362-97fe-6f7a7f6ee32b"/> + <reportElement uuid="3857502f-b69a-4362-97fe-6f7a7f6ee32b" x="0" y="39" width="74" height="23"/> <textElement verticalAlignment="Middle"> <font isBold="true"/> </textElement> <text><![CDATA[Empresa(s):]]></text> </staticText> <textField> - <reportElement x="74" y="39" width="691" height="23" isPrintWhenDetailOverflows="true" uuid="7f31cdf0-886d-4eef-b64c-28bc94c05b77"/> + <reportElement uuid="7f31cdf0-886d-4eef-b64c-28bc94c05b77" x="74" y="39" width="691" height="23" isPrintWhenDetailOverflows="true"/> <textElement verticalAlignment="Middle"/> <textFieldExpression><![CDATA[$P{EMPRESAS}]]></textFieldExpression> </textField> <textField> - <reportElement x="74" y="61" width="691" height="19" isPrintWhenDetailOverflows="true" uuid="44b1c344-61df-4dd0-b661-cae5f2f8e699"/> + <reportElement uuid="44b1c344-61df-4dd0-b661-cae5f2f8e699" x="74" y="61" width="691" height="19" isPrintWhenDetailOverflows="true"/> <textElement verticalAlignment="Middle"> <font isBold="false" isUnderline="false" isStrikeThrough="false"/> </textElement> @@ -599,22 +618,22 @@ <pageHeader> <band height="21" splitType="Stretch"> <line> - <reportElement x="0" y="20" width="763" height="1" uuid="4f39b5b4-849a-4fe2-9365-06930866fbaa"/> + <reportElement uuid="4f39b5b4-849a-4fe2-9365-06930866fbaa" x="0" y="20" width="763" height="1"/> </line> <staticText> - <reportElement x="661" y="0" width="57" height="20" uuid="5f39d93c-51d4-41cd-88af-10407d4f9968"/> + <reportElement uuid="5f39d93c-51d4-41cd-88af-10407d4f9968" x="661" y="0" width="57" height="20"/> <textElement verticalAlignment="Top" markup="none"> <font isBold="true"/> </textElement> <text><![CDATA[Página]]></text> </staticText> <textField evaluationTime="Report"> - <reportElement x="743" y="1" width="22" height="20" uuid="0b68046e-8819-470c-8da5-43f2a16aba7e"/> + <reportElement uuid="0b68046e-8819-470c-8da5-43f2a16aba7e" x="743" y="1" width="22" height="20"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> </textField> <textField> - <reportElement x="719" y="1" width="24" height="20" uuid="0e678318-ffaf-4459-a5c0-e69e6162fcf4"/> + <reportElement uuid="0e678318-ffaf-4459-a5c0-e69e6162fcf4" x="719" y="1" width="24" height="20"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{PAGE_NUMBER}+" de"]]></textFieldExpression> </textField> @@ -626,65 +645,67 @@ <detail> <band height="21" splitType="Stretch"> <textField> - <reportElement x="430" y="0" width="57" height="21" uuid="c45c70fb-1c4e-46a8-9a39-f804605e85b5"/> + <reportElement uuid="c45c70fb-1c4e-46a8-9a39-f804605e85b5" x="430" y="0" width="57" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{ABSOLUTOS}]]></textFieldExpression> </textField> <textField> - <reportElement x="239" y="0" width="41" height="21" uuid="87a6161e-e6ed-4330-bbff-34a87a5fb1a6"/> + <reportElement uuid="87a6161e-e6ed-4330-bbff-34a87a5fb1a6" x="239" y="0" width="41" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{KM_TRAMO}]]></textFieldExpression> </textField> <textField pattern="#,##0.00"> - <reportElement x="699" y="0" width="32" height="21" uuid="22d22d0b-ed49-44a7-8725-c4a62b7fbb41"/> + <reportElement uuid="22d22d0b-ed49-44a7-8725-c4a62b7fbb41" x="699" y="0" width="32" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{porc_abs}]]></textFieldExpression> </textField> <textField pattern="#,##0.00"> - <reportElement x="731" y="0" width="34" height="21" uuid="5ecd33c0-2648-482f-b87a-d5197d2f193e"/> + <reportElement uuid="5ecd33c0-2648-482f-b87a-d5197d2f193e" x="731" y="0" width="34" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{por_equivalente}]]></textFieldExpression> </textField> <textField> - <reportElement x="661" y="0" width="38" height="21" uuid="0de4edf8-49c8-49d2-b2d6-0476fb8ab3ed"/> + <reportElement uuid="0de4edf8-49c8-49d2-b2d6-0476fb8ab3ed" x="661" y="0" width="38" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{pax_km}]]></textFieldExpression> </textField> <textField pattern="#,##0.00"> - <reportElement x="487" y="0" width="64" height="21" uuid="c88714a3-010d-4e26-801d-8982acc15a19"/> + <reportElement uuid="c88714a3-010d-4e26-801d-8982acc15a19" x="487" y="0" width="64" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{RECEITA}]]></textFieldExpression> </textField> <textField pattern="###0.00;-###0.00" isBlankWhenNull="true"> - <reportElement x="315" y="0" width="66" height="21" uuid="3a76b131-6ebf-4234-a367-ba5e1527886a"/> + <reportElement uuid="3a76b131-6ebf-4234-a367-ba5e1527886a" x="315" y="0" width="66" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{IMPORTETAXAEMBARQUE}]]></textFieldExpression> </textField> <textField pattern="###0.00;-###0.00" isBlankWhenNull="true"> - <reportElement x="381" y="0" width="49" height="21" uuid="32534bbc-2bf6-4786-b5cd-e68c4062d3ec"/> + <reportElement uuid="32534bbc-2bf6-4786-b5cd-e68c4062d3ec" x="381" y="0" width="49" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{IMPORTEPEDAGIO}]]></textFieldExpression> </textField> <textField pattern="#,##0.00"> - <reportElement x="551" y="0" width="51" height="21" uuid="0fe8352f-f787-46b6-adcb-e8dda60b4d9d"/> + <reportElement uuid="0fe8352f-f787-46b6-adcb-e8dda60b4d9d" x="551" y="0" width="51" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{rec_abs}]]></textFieldExpression> </textField> <textField pattern="#,##0.00"> - <reportElement x="602" y="0" width="59" height="21" uuid="5ad372c0-5127-4441-aae3-be6ca2949a93"/> + <reportElement uuid="5ad372c0-5127-4441-aae3-be6ca2949a93" x="602" y="0" width="59" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$V{equivalente}]]></textFieldExpression> </textField> <textField> - <reportElement x="1" y="0" width="131" height="21" uuid="b3bae3e1-ad19-4ed0-8188-b4700f493c28"/> + <reportElement uuid="b3bae3e1-ad19-4ed0-8188-b4700f493c28" x="1" y="0" width="131" height="21"/> + <textElement/> <textFieldExpression><![CDATA[$F{ORIGEM}]]></textFieldExpression> </textField> <textField> - <reportElement x="132" y="0" width="107" height="21" uuid="e3a13390-06e7-4bda-bb55-8afbfb15d6fb"/> + <reportElement uuid="e3a13390-06e7-4bda-bb55-8afbfb15d6fb" x="132" y="0" width="107" height="21"/> + <textElement/> <textFieldExpression><![CDATA[$F{DESTINO}]]></textFieldExpression> </textField> <textField pattern="###0.00;-###0.00"> - <reportElement x="280" y="0" width="35" height="21" uuid="9fef3b4f-3c79-4b11-8702-0f4c5757b81e"/> + <reportElement uuid="9fef3b4f-3c79-4b11-8702-0f4c5757b81e" x="280" y="0" width="35" height="21"/> <textElement textAlignment="Right"/> <textFieldExpression><![CDATA[$F{PRECIOBASE}]]></textFieldExpression> </textField> diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java new file mode 100644 index 000000000..1b9d1d5a8 --- /dev/null +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioOrigemDestinoBean.java @@ -0,0 +1,245 @@ +package com.rjconsultores.ventaboletos.relatorios.utilitarios; + +import java.math.BigDecimal; +import java.sql.Timestamp; + +//Mantis 15600 +public class RelatorioOrigemDestinoBean { + + private String nombempresa; + private BigDecimal corrida_1; + private Timestamp fechorsalida; + private String origem; + private String destino; + private BigDecimal km_tramo; + private String descruta; + private Integer indsentidoida; + private BigDecimal km_corrida; + private BigDecimal absolutos; + private BigDecimal receita; + private BigDecimal preciobase; + private BigDecimal equivalente_total_corrida; + private Integer disponibilidade; + private Integer viagens; + private Integer absoluto_total_corrida; + private BigDecimal importetaxaembarque; + private BigDecimal importepedagio; + + public String getNombempresa() { + return nombempresa; + } + + public BigDecimal getCorrida_1() { + return corrida_1; + } + + public Timestamp getFechorsalida() { + return fechorsalida; + } + + public String getOrigem() { + return origem; + } + + public String getDestino() { + return destino; + } + + public BigDecimal getKm_tramo() { + return km_tramo; + } + + public String getDescruta() { + return descruta; + } + + public Integer getIndsentidoida() { + return indsentidoida; + } + + public BigDecimal getKm_corrida() { + return km_corrida; + } + + public BigDecimal getAbsolutos() { + return absolutos; + } + + public BigDecimal getReceita() { + return receita; + } + + public BigDecimal getPreciobase() { + return preciobase; + } + + public BigDecimal getEquivalente_total_corrida() { + return equivalente_total_corrida; + } + + public Integer getDisponibilidade() { + return disponibilidade; + } + + public Integer getViagens() { + return viagens; + } + + public Integer getAbsoluto_total_corrida() { + return absoluto_total_corrida; + } + + public BigDecimal getImportetaxaembarque() { + return importetaxaembarque; + } + + public BigDecimal getImportepedagio() { + return importepedagio; + } + + public void setNombempresa(String nombempresa) { + this.nombempresa = nombempresa; + } + + public void setCorrida_1(BigDecimal corrida_1) { + this.corrida_1 = corrida_1; + } + + public void setFechorsalida(Timestamp fechorsalida) { + this.fechorsalida = fechorsalida; + } + + public void setOrigem(String origem) { + this.origem = origem; + } + + public void setDestino(String destino) { + this.destino = destino; + } + + public void setKm_tramo(BigDecimal km_tramo) { + this.km_tramo = km_tramo; + } + + public void setDescruta(String descruta) { + this.descruta = descruta; + } + + public void setIndsentidoida(Integer indsentidoida) { + this.indsentidoida = indsentidoida; + } + + public void setKm_corrida(BigDecimal km_corrida) { + this.km_corrida = km_corrida; + } + + public void setAbsolutos(BigDecimal absolutos) { + this.absolutos = absolutos; + } + + public void setReceita(BigDecimal receita) { + this.receita = receita; + } + + public void setPreciobase(BigDecimal preciobase) { + this.preciobase = preciobase; + } + + public void setEquivalente_total_corrida(BigDecimal equivalente_total_corrida) { + this.equivalente_total_corrida = equivalente_total_corrida; + } + + public void setDisponibilidade(Integer disponibilidade) { + this.disponibilidade = disponibilidade; + } + + public void setViagens(Integer viagens) { + this.viagens = viagens; + } + + public void setAbsoluto_total_corrida(Integer absoluto_total_corrida) { + this.absoluto_total_corrida = absoluto_total_corrida; + } + + public void setImportetaxaembarque(BigDecimal importetaxaembarque) { + this.importetaxaembarque = importetaxaembarque; + } + + public void setImportepedagio(BigDecimal importepedagio) { + this.importepedagio = importepedagio; + } + + // Gets criados por causa do 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. + // Os fields estão com nome em maiúsculo no jasper. + public String getNOMBEMPRESA() { + return getNombempresa(); + } + + public BigDecimal getCORRIDA_1() { + return getCorrida_1(); + } + + public Timestamp getFECHORSALIDA() { + return getFechorsalida(); + } + + public String getORIGEM() { + return getOrigem(); + } + + public String getDESTINO() { + return getDestino(); + } + + public BigDecimal getKM_TRAMO() { + return getKm_tramo(); + } + + public String getDESCRUTA() { + return getDescruta(); + } + + public Integer getINDSENTIDOIDA() { + return getIndsentidoida(); + } + + public BigDecimal getKM_CORRIDA() { + return getKm_corrida(); + } + + public BigDecimal getABSOLUTOS() { + return getAbsolutos(); + } + + public BigDecimal getRECEITA() { + return getReceita(); + } + + public BigDecimal getPRECIOBASE() { + return getPreciobase(); + } + + public BigDecimal getEQUIVALENTE_TOTAL_CORRIDA() { + return getEquivalente_total_corrida(); + } + + public Integer getDISPONIBILIDADE() { + return getDisponibilidade(); + } + + public Integer getVIAGENS() { + return getViagens(); + } + + public Integer getABSOLUTO_TOTAL_CORRIDA() { + return getAbsoluto_total_corrida(); + } + + public BigDecimal getIMPORTETAXAEMBARQUE() { + return getImportetaxaembarque(); + } + + public BigDecimal getIMPORTEPEDAGIO() { + return getImportepedagio(); + } +} \ No newline at end of file