fixes bug#22581

dev: Celio
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@108032 d1611594-4594-4d17-8e1d-87c2c4800839
master
fabio 2021-07-27 11:57:34 +00:00
parent 90ac42760e
commit aafb615963
3 changed files with 37 additions and 72 deletions

View File

@ -1,6 +1,7 @@
package com.rjconsultores.ventaboletos.relatorios.impl; package com.rjconsultores.ventaboletos.relatorios.impl;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.sql.Connection; import java.sql.Connection;
import java.sql.ResultSet; import java.sql.ResultSet;
@ -31,6 +32,7 @@ public class RelatorioLinhasHorario extends Relatorio {
private static Logger log = Logger.getLogger(RelatorioLinhasHorario.class); private static Logger log = Logger.getLogger(RelatorioLinhasHorario.class);
private List<RelatorioLinhasHorarioBean> lsDadosRelatorio; private List<RelatorioLinhasHorarioBean> lsDadosRelatorio;
private static String CONSTANTE_GRATUIDADE_CRIANCA; private static String CONSTANTE_GRATUIDADE_CRIANCA;
private BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN);
public RelatorioLinhasHorario(Map<String, Object> parametros, Connection conexao) throws Exception { public RelatorioLinhasHorario(Map<String, Object> parametros, Connection conexao) throws Exception {
super(parametros, conexao); super(parametros, conexao);
@ -295,111 +297,74 @@ public class RelatorioLinhasHorario extends Relatorio {
} }
private RelatorioLinhasHorarioBean calcKmRodado(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcKmRodado(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal kmRodado = horarioBean.getTotalViagem().multiply(horarioBean.getExtensao()); horarioBean.setKmRodado( calculaMultiplicacao(horarioBean.getTotalViagem(), horarioBean.getExtensao()));
horarioBean.setKmRodado(kmRodado);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcEquivalente(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcEquivalente(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal equivalente = new BigDecimal(0); horarioBean.setEquivalente( calculaDivisao( horarioBean.getSomaExtensaoTrecho(), horarioBean.getExtensao() ) );
try {
equivalente = horarioBean.getSomaExtensaoTrecho().divide(horarioBean.getExtensao(), 2, RoundingMode.HALF_UP);
} catch (ArithmeticException e) {
equivalente = BigDecimal.ZERO;
} catch (NullPointerException nex) {
equivalente = BigDecimal.ZERO;
} catch (Exception ex) {
log.error("", ex);
}
horarioBean.setEquivalente(equivalente);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcMpa(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcMpa(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal mpa = new BigDecimal(0); horarioBean.setMpa( calculaDivisao( horarioBean.getAbsol(), horarioBean.getTotalViagem() ) );
try {
mpa = horarioBean.getAbsol().divide(horarioBean.getTotalViagem(), 2, 4);
} catch (ArithmeticException e) {
mpa = BigDecimal.ZERO;
} catch (NullPointerException nex) {
mpa = BigDecimal.ZERO;
} catch (Exception ex) {
log.error("", ex);
}
horarioBean.setMpa(mpa);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcMpe(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcMpe(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal mpe = horarioBean.getEquivalente().divide(horarioBean.getTotalViagem(), 2, 4); horarioBean.setMpe( calculaDivisao( horarioBean.getEquivalente(), horarioBean.getTotalViagem() ));
horarioBean.setMpe(mpe);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcRsKm(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcRsKm(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal rsKm = horarioBean.getTotal().divide(horarioBean.getKmRodado(), 2, 4); horarioBean.setRsKm( calculaDivisao( horarioBean.getTotal(), horarioBean.getKmRodado() ) );
horarioBean.setRsKm(rsKm);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcEq(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcEq(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal eq = null; horarioBean.setEq( calculaDivisao(horarioBean.getMediaReceitaViagem(), horarioBean.getTarifa()) );
try {
eq = horarioBean.getMediaReceitaViagem().divide(horarioBean.getTarifa(), 2, 4);
} catch (ArithmeticException e) {
eq = BigDecimal.ZERO;
} catch (NullPointerException nex) {
eq = BigDecimal.ZERO;
} catch (Exception ex) {
log.error("", ex);
}
horarioBean.setEq(eq);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcRsViagem(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcRsViagem(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal RSViagem = horarioBean.getPassagens().divide(horarioBean.getTotalViagem(), 2, 4); horarioBean.setRsViagem( calculaDivisao(horarioBean.getPassagens(), horarioBean.getTotalViagem()));
horarioBean.setRsViagem(RSViagem);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcPaxKmOfertado(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcPaxKmOfertado(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal paxKmOfertado = horarioBean.getLot().multiply(horarioBean.getTotalViagem()); BigDecimal paxKmOfertado = calculaMultiplicacao( horarioBean.getLot(), horarioBean.getTotalViagem());
paxKmOfertado = paxKmOfertado.multiply(horarioBean.getExtensao()); horarioBean.setPaxKmOfertado( calculaMultiplicacao( paxKmOfertado, horarioBean.getExtensao()) );
horarioBean.setPaxKmOfertado(paxKmOfertado);
return horarioBean; return horarioBean;
} }
private RelatorioLinhasHorarioBean calcIap(RelatorioLinhasHorarioBean horarioBean) { private RelatorioLinhasHorarioBean calcIap(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal iap = null; horarioBean.setIap( calculaDivisao(horarioBean.getPaxKmTransportado().multiply(CENTO), horarioBean.getPaxKmOfertado() ));
BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN);
try {
iap = (horarioBean.getPaxKmTransportado().multiply(CENTO)).divide(horarioBean.getPaxKmOfertado(), 2, 4);
} catch (ArithmeticException e) {
iap = BigDecimal.ZERO;
} catch (NullPointerException nex) {
iap = BigDecimal.ZERO;
} catch (Exception ex) {
log.error("", ex);
}
horarioBean.setIap(iap);
return horarioBean; return horarioBean;
} }
private BigDecimal calcTotalIap(BigDecimal totalPaxKMTransportado, BigDecimal totalPaxKMOfertado) { private BigDecimal calcTotalIap(BigDecimal totalPaxKMTransportado, BigDecimal totalPaxKMOfertado) {
BigDecimal iap = null; return calculaMultiplicacao(totalPaxKMTransportado.multiply(CENTO), totalPaxKMOfertado);
BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN);
try {
iap = (totalPaxKMTransportado.multiply(CENTO)).divide(totalPaxKMOfertado, 2, 4);
} catch (ArithmeticException e) {
iap = BigDecimal.ZERO;
} catch (NullPointerException nex) {
iap = BigDecimal.ZERO;
} catch (Exception ex) {
log.error("", ex);
} }
return iap;
private BigDecimal calculaDivisao( BigDecimal valor1, BigDecimal valor2){
BigDecimal resultado = BigDecimal.ZERO;
try {
resultado = valor1.multiply(valor2);
resultado.setScale(2, 4);
} catch (Exception ex) {
log.error("Erro ao calcular mutiplicacao no Relatorio de linhas por horario", ex);
}
return resultado;
}
private BigDecimal calculaMultiplicacao( BigDecimal valor1, BigDecimal valor2){
BigDecimal resultado = BigDecimal.ZERO;
try {
resultado = valor1.divide(valor2, 2, 4);
} catch (Exception ex) {
log.error("Erro ao calcular divisão no Relatorio de linhas por horario", ex);
}
return resultado;
} }
@Override @Override

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RelatorioLinhasHorario" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="822" leftMargin="10" rightMargin="10" topMargin="20" bottomMargin="20" uuid="ae2cbb01-bc79-4d18-8206-3b59273fe793"> <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="RelatorioLinhasHorario" pageWidth="842" pageHeight="595" orientation="Landscape" whenNoDataType="NoDataSection" columnWidth="822" leftMargin="10" rightMargin="10" topMargin="20" bottomMargin="20" uuid="ae2cbb01-bc79-4d18-8206-3b59273fe793">
<property name="ireport.zoom" value="2.0526324729228285"/> <property name="ireport.zoom" value="2.0526324729228285"/>
<property name="ireport.x" value="468"/> <property name="ireport.x" value="448"/>
<property name="ireport.y" value="112"/> <property name="ireport.y" value="112"/>
<parameter name="NOMBEMPRESA" class="java.lang.String"/> <parameter name="NOMBEMPRESA" class="java.lang.String"/>
<parameter name="DATA_INICIO" class="java.util.Date"> <parameter name="DATA_INICIO" class="java.util.Date">
@ -132,7 +132,7 @@
<variableExpression><![CDATA[$F{rsViagem}]]></variableExpression> <variableExpression><![CDATA[$F{rsViagem}]]></variableExpression>
</variable> </variable>
<variable name="media_rsKm_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta"> <variable name="media_rsKm_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta">
<variableExpression><![CDATA[!BigDecimal.ZERO.equals($P{TOTAL_KM_RODADO}) ? $P{TOTAL_TOTAL}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression> <variableExpression><![CDATA[BigDecimal.ZERO.compareTo($P{TOTAL_KM_RODADO})!= 0 ? $P{TOTAL_TOTAL}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression>
</variable> </variable>
<variable name="media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta"> <variable name="media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta">
<variableExpression><![CDATA[$V{mpa_group}]]></variableExpression> <variableExpression><![CDATA[$V{mpa_group}]]></variableExpression>
@ -201,7 +201,7 @@
<variableExpression><![CDATA[$F{rsViagem}]]></variableExpression> <variableExpression><![CDATA[$F{rsViagem}]]></variableExpression>
</variable> </variable>
<variable name="linha_media_rsKm_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha"> <variable name="linha_media_rsKm_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha">
<variableExpression><![CDATA[!BigDecimal.ZERO.equals($P{TOTAL_KM_RODADO}) ? $P{TOTAL_PASSAGENS}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression> <variableExpression><![CDATA[BigDecimal.ZERO.compareTo($P{TOTAL_KM_RODADO}) != 0 ? $P{TOTAL_PASSAGENS}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression>
</variable> </variable>
<variable name="linha_media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha" calculation="Sum"> <variable name="linha_media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha" calculation="Sum">
<variableExpression><![CDATA[$F{mpa}]]></variableExpression> <variableExpression><![CDATA[$F{mpa}]]></variableExpression>
@ -213,7 +213,7 @@
<variableExpression><![CDATA[$V{pedagio_group}]]></variableExpression> <variableExpression><![CDATA[$V{pedagio_group}]]></variableExpression>
</variable> </variable>
<variable name="TOTAL_RSKM" class="java.math.BigDecimal"> <variable name="TOTAL_RSKM" class="java.math.BigDecimal">
<variableExpression><![CDATA[!BigDecimal.ZERO.equals($P{TOTAL_KM_RODADO}) ? $P{TOTAL_PASSAGENS}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression> <variableExpression><![CDATA[BigDecimal.ZERO.compareTo($P{TOTAL_KM_RODADO}) != 0 ? $P{TOTAL_PASSAGENS}.divide( $P{TOTAL_KM_RODADO}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression>
</variable> </variable>
<variable name="TOTAL_IAP" class="java.math.BigDecimal" calculation="Average"> <variable name="TOTAL_IAP" class="java.math.BigDecimal" calculation="Average">
<variableExpression><![CDATA[$F{iap}]]></variableExpression> <variableExpression><![CDATA[$F{iap}]]></variableExpression>
@ -231,11 +231,11 @@
<variableExpression><![CDATA[$F{mpe}]]></variableExpression> <variableExpression><![CDATA[$F{mpe}]]></variableExpression>
</variable> </variable>
<variable name="media_group_rsKm" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta"> <variable name="media_group_rsKm" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta">
<variableExpression><![CDATA[!BigDecimal.ZERO.equals($V{kmRodado_group}) ? $V{total_group}.divide( $V{kmRodado_group}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression> <variableExpression><![CDATA[BigDecimal.ZERO.compareTo($V{kmRodado_group}) != 0 ? $V{total_group}.divide( $V{kmRodado_group}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression>
</variable> </variable>
<variable name="variable1" class="java.lang.String"/> <variable name="variable1" class="java.lang.String"/>
<variable name="linha_media_group_rsKm" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha"> <variable name="linha_media_group_rsKm" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha">
<variableExpression><![CDATA[!BigDecimal.ZERO.equals($V{linha_kmRodado_group}) ? $V{linha_total_group}.divide( $V{linha_kmRodado_group}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression> <variableExpression><![CDATA[BigDecimal.ZERO.compareTo($V{linha_kmRodado_group}) != 0 ? $V{linha_total_group}.divide( $V{linha_kmRodado_group}, 2, BigDecimal.ROUND_HALF_UP ) : BigDecimal.ZERO]]></variableExpression>
</variable> </variable>
<group name="groupTipoLinha"> <group name="groupTipoLinha">
<groupExpression><![CDATA[$F{tipoLinha}]]></groupExpression> <groupExpression><![CDATA[$F{tipoLinha}]]></groupExpression>