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;
import java.math.BigDecimal;
import java.math.MathContext;
import java.math.RoundingMode;
import java.sql.Connection;
import java.sql.ResultSet;
@ -31,6 +32,7 @@ public class RelatorioLinhasHorario extends Relatorio {
private static Logger log = Logger.getLogger(RelatorioLinhasHorario.class);
private List<RelatorioLinhasHorarioBean> lsDadosRelatorio;
private static String CONSTANTE_GRATUIDADE_CRIANCA;
private BigDecimal CENTO = BigDecimal.TEN.multiply(BigDecimal.TEN);
public RelatorioLinhasHorario(Map<String, Object> parametros, Connection conexao) throws Exception {
super(parametros, conexao);
@ -295,111 +297,74 @@ public class RelatorioLinhasHorario extends Relatorio {
}
private RelatorioLinhasHorarioBean calcKmRodado(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal kmRodado = horarioBean.getTotalViagem().multiply(horarioBean.getExtensao());
horarioBean.setKmRodado(kmRodado);
horarioBean.setKmRodado( calculaMultiplicacao(horarioBean.getTotalViagem(), horarioBean.getExtensao()));
return horarioBean;
}
private RelatorioLinhasHorarioBean calcEquivalente(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal equivalente = new BigDecimal(0);
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);
horarioBean.setEquivalente( calculaDivisao( horarioBean.getSomaExtensaoTrecho(), horarioBean.getExtensao() ) );
return horarioBean;
}
private RelatorioLinhasHorarioBean calcMpa(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal mpa = new BigDecimal(0);
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);
horarioBean.setMpa( calculaDivisao( horarioBean.getAbsol(), horarioBean.getTotalViagem() ) );
return horarioBean;
}
private RelatorioLinhasHorarioBean calcMpe(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal mpe = horarioBean.getEquivalente().divide(horarioBean.getTotalViagem(), 2, 4);
horarioBean.setMpe(mpe);
horarioBean.setMpe( calculaDivisao( horarioBean.getEquivalente(), horarioBean.getTotalViagem() ));
return horarioBean;
}
private RelatorioLinhasHorarioBean calcRsKm(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal rsKm = horarioBean.getTotal().divide(horarioBean.getKmRodado(), 2, 4);
horarioBean.setRsKm(rsKm);
horarioBean.setRsKm( calculaDivisao( horarioBean.getTotal(), horarioBean.getKmRodado() ) );
return horarioBean;
}
private RelatorioLinhasHorarioBean calcEq(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal eq = null;
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);
horarioBean.setEq( calculaDivisao(horarioBean.getMediaReceitaViagem(), horarioBean.getTarifa()) );
return horarioBean;
}
private RelatorioLinhasHorarioBean calcRsViagem(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal RSViagem = horarioBean.getPassagens().divide(horarioBean.getTotalViagem(), 2, 4);
horarioBean.setRsViagem(RSViagem);
horarioBean.setRsViagem( calculaDivisao(horarioBean.getPassagens(), horarioBean.getTotalViagem()));
return horarioBean;
}
private RelatorioLinhasHorarioBean calcPaxKmOfertado(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal paxKmOfertado = horarioBean.getLot().multiply(horarioBean.getTotalViagem());
paxKmOfertado = paxKmOfertado.multiply(horarioBean.getExtensao());
horarioBean.setPaxKmOfertado(paxKmOfertado);
BigDecimal paxKmOfertado = calculaMultiplicacao( horarioBean.getLot(), horarioBean.getTotalViagem());
horarioBean.setPaxKmOfertado( calculaMultiplicacao( paxKmOfertado, horarioBean.getExtensao()) );
return horarioBean;
}
private RelatorioLinhasHorarioBean calcIap(RelatorioLinhasHorarioBean horarioBean) {
BigDecimal iap = null;
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);
horarioBean.setIap( calculaDivisao(horarioBean.getPaxKmTransportado().multiply(CENTO), horarioBean.getPaxKmOfertado() ));
return horarioBean;
}
private BigDecimal calcTotalIap(BigDecimal totalPaxKMTransportado, BigDecimal totalPaxKMOfertado) {
BigDecimal iap = null;
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 calculaMultiplicacao(totalPaxKMTransportado.multiply(CENTO), totalPaxKMOfertado);
}
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

View File

@ -1,7 +1,7 @@
<?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">
<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"/>
<parameter name="NOMBEMPRESA" class="java.lang.String"/>
<parameter name="DATA_INICIO" class="java.util.Date">
@ -132,7 +132,7 @@
<variableExpression><![CDATA[$F{rsViagem}]]></variableExpression>
</variable>
<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 name="media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupRuta">
<variableExpression><![CDATA[$V{mpa_group}]]></variableExpression>
@ -201,7 +201,7 @@
<variableExpression><![CDATA[$F{rsViagem}]]></variableExpression>
</variable>
<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 name="linha_media_mpa_group" class="java.math.BigDecimal" resetType="Group" resetGroup="groupTipoLinha" calculation="Sum">
<variableExpression><![CDATA[$F{mpa}]]></variableExpression>
@ -213,7 +213,7 @@
<variableExpression><![CDATA[$V{pedagio_group}]]></variableExpression>
</variable>
<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 name="TOTAL_IAP" class="java.math.BigDecimal" calculation="Average">
<variableExpression><![CDATA[$F{iap}]]></variableExpression>
@ -231,11 +231,11 @@
<variableExpression><![CDATA[$F{mpe}]]></variableExpression>
</variable>
<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 name="variable1" class="java.lang.String"/>
<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>
<group name="groupTipoLinha">
<groupExpression><![CDATA[$F{tipoLinha}]]></groupExpression>