rodrigo 2013-08-02 21:47:04 +00:00
parent b9c3065ef9
commit 1677ebe983
5 changed files with 111 additions and 35 deletions

View File

@ -11,6 +11,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import com.rjconsultores.ventaboletos.entidad.Corrida;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
import com.rjconsultores.ventaboletos.relatorios.utilitarios.beans.PesoOperacional; import com.rjconsultores.ventaboletos.relatorios.utilitarios.beans.PesoOperacional;
@ -39,7 +40,8 @@ public class RelatorioOrigemDestino extends Relatorio {
private List<PesoOperacional> getPesoOperacional(String corridasIds, String dataDe, String dataAte) throws SQLException { private List<PesoOperacional> getPesoOperacional(String corridasIds, String dataDe, String dataAte) throws SQLException {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" SELECT "); sql.append(" SELECT ");
sql.append(" CA.CORRIDA_ID, "); sql.append(" CA.CORRIDA_ID CORRIDA_ID, ");
sql.append(" CA.FECCORRIDA FECCORRIDA, ");
sql.append(" O.CVEPARADA CVE_ORIGEM, "); sql.append(" O.CVEPARADA CVE_ORIGEM, ");
sql.append(" O.DESCPARADA ORIGEM, "); sql.append(" O.DESCPARADA ORIGEM, ");
sql.append(" D.CVEPARADA CVE_DESTINO, "); sql.append(" D.CVEPARADA CVE_DESTINO, ");
@ -51,13 +53,15 @@ public class RelatorioOrigemDestino extends Relatorio {
if (!corridasIds.equals("Todas")) { if (!corridasIds.equals("Todas")) {
sql.append(" AND CA.CORRIDA_ID IN (").append(corridasIds).append(")"); sql.append(" AND CA.CORRIDA_ID IN (").append(corridasIds).append(")");
} }
sql.append(" AND CA.FECHORVENTA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') "); sql.append(" AND CA.FECCORRIDA BETWEEN TO_DATE('").append(dataDe).append("','DD/MM/YYYY HH24:MI:SS') AND TO_DATE('").append(dataAte).append("','DD/MM/YYYY HH24:MI:SS') ");
sql.append(" GROUP BY "); sql.append(" GROUP BY ");
sql.append(" CA.CORRIDA_ID, "); sql.append(" CA.CORRIDA_ID, ");
sql.append(" CA.FECCORRIDA, ");
sql.append(" O.CVEPARADA, "); sql.append(" O.CVEPARADA, ");
sql.append(" O.DESCPARADA, "); sql.append(" O.DESCPARADA, ");
sql.append(" D.CVEPARADA, "); sql.append(" D.CVEPARADA, ");
sql.append(" D.DESCPARADA "); sql.append(" D.DESCPARADA ");
sql.append(" ORDER BY CA.CORRIDA_ID ");
Connection conexao = getConexao(); Connection conexao = getConexao();
@ -67,13 +71,37 @@ public class RelatorioOrigemDestino extends Relatorio {
ResultSet rset = null; ResultSet rset = null;
rset = stmt.executeQuery(); rset = stmt.executeQuery();
Map<String, BigDecimal> mapReceitaSaida = new HashMap<String, BigDecimal>(); Map<Corrida.Id, Map<String, BigDecimal>> mapPorCorridaReceitaSaida = new HashMap<Corrida.Id, Map<String, BigDecimal>>();
Map<String, BigDecimal> mapReceitaChegada = new HashMap<String, BigDecimal>(); Map<Corrida.Id, Map<String, BigDecimal>> mapPorCorridaReceitaChegada = new HashMap<Corrida.Id, Map<String, BigDecimal>>();
List<String> lsParadas = new ArrayList<String>(); Map<Corrida.Id, BigDecimal> mapTotalReceitaCorrida = new HashMap<Corrida.Id, BigDecimal>();
BigDecimal totalReceita = BigDecimal.ZERO; List<Corrida.Id> lsCorridaIds = new ArrayList<Corrida.Id>();
while (rset.next()) { while (rset.next()) {
Corrida.Id id = new Corrida.Id();
id.setCorridaId(rset.getInt("CORRIDA_ID"));
id.setFeccorrida(rset.getDate("FECCORRIDA"));
if (!lsCorridaIds.contains(id)) {
lsCorridaIds.add(id);
}
Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(id);
Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(id);
if (mapReceitaSaida == null) {
mapReceitaSaida = new HashMap<String, BigDecimal>();
}
if (mapReceitaChegada == null) {
mapReceitaChegada = new HashMap<String, BigDecimal>();
}
BigDecimal receita = rset.getBigDecimal("RECEITA"); BigDecimal receita = rset.getBigDecimal("RECEITA");
BigDecimal totalReceita = mapTotalReceitaCorrida.get(id);
if (totalReceita == null) {
totalReceita = BigDecimal.ZERO;
}
totalReceita = totalReceita.add(receita); totalReceita = totalReceita.add(receita);
mapTotalReceitaCorrida.put(id, totalReceita);
String cveOrigem = rset.getString("CVE_ORIGEM"); String cveOrigem = rset.getString("CVE_ORIGEM");
String origem = rset.getString("ORIGEM"); String origem = rset.getString("ORIGEM");
@ -83,14 +111,6 @@ public class RelatorioOrigemDestino extends Relatorio {
String destino = rset.getString("DESTINO"); String destino = rset.getString("DESTINO");
String chaveDestino = cveDestino + " - " + destino; String chaveDestino = cveDestino + " - " + destino;
if (!lsParadas.contains(chaveOrigem)) {
lsParadas.add(chaveOrigem);
}
if (!lsParadas.contains(chaveDestino)) {
lsParadas.add(chaveDestino);
}
BigDecimal receitaSaida = mapReceitaSaida.get(chaveOrigem); BigDecimal receitaSaida = mapReceitaSaida.get(chaveOrigem);
if (receitaSaida != null) { if (receitaSaida != null) {
mapReceitaSaida.put(chaveOrigem, receita.add(receitaSaida)); mapReceitaSaida.put(chaveOrigem, receita.add(receitaSaida));
@ -104,16 +124,36 @@ public class RelatorioOrigemDestino extends Relatorio {
} else { } else {
mapReceitaChegada.put(chaveDestino, receita); mapReceitaChegada.put(chaveDestino, receita);
} }
mapPorCorridaReceitaSaida.put(id, mapReceitaSaida);
mapPorCorridaReceitaChegada.put(id, mapReceitaChegada);
} }
List<PesoOperacional> lsPesoOperacionalRelatorio = new ArrayList<PesoOperacional>(); List<PesoOperacional> lsPesoOperacionalRelatorio = new ArrayList<PesoOperacional>();
for (String parada : lsParadas) { for (Corrida.Id id : lsCorridaIds) {
Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(id);
Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(id);
List<String> lsTodasParadas = new ArrayList<String>();
for (String parada : mapReceitaChegada.keySet()) {
lsTodasParadas.add(parada);
}
for (String parada : mapReceitaSaida.keySet()) {
if (!lsTodasParadas.contains(parada)) {
lsTodasParadas.add(parada);
}
}
BigDecimal totalReceita = mapTotalReceitaCorrida.get(id);
for (String parada : lsTodasParadas) {
BigDecimal receitaSaida = mapReceitaSaida.get(parada) == null ? BigDecimal.ZERO : mapReceitaSaida.get(parada); BigDecimal receitaSaida = mapReceitaSaida.get(parada) == null ? BigDecimal.ZERO : mapReceitaSaida.get(parada);
BigDecimal receitaChegada = mapReceitaChegada.get(parada) == null ? BigDecimal.ZERO : mapReceitaChegada.get(parada); BigDecimal receitaChegada = mapReceitaChegada.get(parada) == null ? BigDecimal.ZERO : mapReceitaChegada.get(parada);
BigDecimal soma = receitaSaida.add(receitaChegada); BigDecimal soma = receitaSaida.add(receitaChegada);
BigDecimal peso = soma.divide(totalReceita, 2, RoundingMode.HALF_EVEN); BigDecimal peso = totalReceita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : soma.divide(totalReceita, 2, RoundingMode.HALF_EVEN);
PesoOperacional pesoOperacional = new PesoOperacional(); PesoOperacional pesoOperacional = new PesoOperacional();
pesoOperacional.setCorridaId(id.getCorridaId());
pesoOperacional.setFecCorrida(id.getFeccorrida());
pesoOperacional.setLocalidade(parada); pesoOperacional.setLocalidade(parada);
pesoOperacional.setReceitaSaida(receitaSaida); pesoOperacional.setReceitaSaida(receitaSaida);
pesoOperacional.setReceitaChegada(receitaChegada); pesoOperacional.setReceitaChegada(receitaChegada);
@ -122,6 +162,7 @@ public class RelatorioOrigemDestino extends Relatorio {
lsPesoOperacionalRelatorio.add(pesoOperacional); lsPesoOperacionalRelatorio.add(pesoOperacional);
} }
}
return lsPesoOperacionalRelatorio; return lsPesoOperacionalRelatorio;
} }
@ -194,6 +235,7 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" WHERE RS.ACTIVO = 1 "); sql.append(" WHERE RS.ACTIVO = 1 ");
sql.append(" AND TR.ACTIVO = 1 "); sql.append(" AND TR.ACTIVO = 1 ");
sql.append(" GROUP BY resultado.NOMBEMPRESA, resultado.CORRIDA_ID, resultado.FECHORSALIDA, resultado.ORIGEM, resultado.DESTINO, resultado.KM_TRAMO, resultado.RUTA_ID, resultado.DESCRUTA, resultado.INDSENTIDOIDA, resultado.ABSOLUTOS, resultado.RECEITA, resultado.PRECIOBASE "); sql.append(" GROUP BY resultado.NOMBEMPRESA, resultado.CORRIDA_ID, resultado.FECHORSALIDA, resultado.ORIGEM, resultado.DESTINO, resultado.KM_TRAMO, resultado.RUTA_ID, resultado.DESCRUTA, resultado.INDSENTIDOIDA, resultado.ABSOLUTOS, resultado.RECEITA, resultado.PRECIOBASE ");
sql.append(" ORDER BY resultado.CORRIDA_ID ");
return sql.toString(); return sql.toString();
} }

View File

@ -4,11 +4,13 @@
<property name="ireport.x" value="0"/> <property name="ireport.x" value="0"/>
<property name="ireport.y" value="0"/> <property name="ireport.y" value="0"/>
<subDataset name="peso_operacional" uuid="6107709b-669e-4e25-b14f-19ae373fd33c"> <subDataset name="peso_operacional" uuid="6107709b-669e-4e25-b14f-19ae373fd33c">
<parameter name="corrida_id_relatorio" class="java.math.BigDecimal"/>
<field name="localidade" class="java.lang.String"/> <field name="localidade" class="java.lang.String"/>
<field name="receitaSaida" class="java.math.BigDecimal"/> <field name="receitaSaida" class="java.math.BigDecimal"/>
<field name="receitaChegada" class="java.math.BigDecimal"/> <field name="receitaChegada" class="java.math.BigDecimal"/>
<field name="soma" class="java.math.BigDecimal"/> <field name="soma" class="java.math.BigDecimal"/>
<field name="peso" class="java.math.BigDecimal"/> <field name="peso" class="java.math.BigDecimal"/>
<field name="corridaId" class="java.lang.Integer"/>
</subDataset> </subDataset>
<parameter name="SQL" class="java.lang.String"/> <parameter name="SQL" class="java.lang.String"/>
<parameter name="DATA_DE" class="java.lang.String"/> <parameter name="DATA_DE" class="java.lang.String"/>
@ -442,34 +444,47 @@
<text><![CDATA[Peso]]></text> <text><![CDATA[Peso]]></text>
</staticText> </staticText>
<componentElement> <componentElement>
<reportElement uuid="fc473644-667d-480e-adf3-0b7abdc99aa5" x="0" y="190" width="436" height="20"/> <reportElement uuid="fc473644-667d-480e-adf3-0b7abdc99aa5" x="0" y="190" width="436" height="20" isRemoveLineWhenBlank="true"/>
<jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd"> <jr:list xmlns:jr="http://jasperreports.sourceforge.net/jasperreports/components" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports/components http://jasperreports.sourceforge.net/xsd/components.xsd" printOrder="Vertical">
<datasetRun subDataset="peso_operacional" uuid="3a1016b0-b7f0-420b-9988-a08178b15c62"> <datasetRun subDataset="peso_operacional" uuid="cceb69bf-5b20-4d36-b039-25196730651a">
<datasetParameter name="corrida_id_relatorio">
<datasetParameterExpression><![CDATA[$F{CORRIDA_ID}]]></datasetParameterExpression>
</datasetParameter>
<dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{lsPesoOperacionalRelatorio})]]></dataSourceExpression> <dataSourceExpression><![CDATA[new net.sf.jasperreports.engine.data.JRBeanCollectionDataSource($P{lsPesoOperacionalRelatorio})]]></dataSourceExpression>
</datasetRun> </datasetRun>
<jr:listContents height="20" width="436"> <jr:listContents height="20" width="436">
<textField> <textField>
<reportElement uuid="4ef0b54c-34d5-4bf6-b86c-b807b23e7026" x="0" y="0" width="140" height="20"/> <reportElement uuid="4ef0b54c-34d5-4bf6-b86c-b807b23e7026" x="0" y="0" width="140" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$P{corrida_id_relatorio}.equals(new BigDecimal($F{corridaId}.toString()))]]></printWhenExpression>
</reportElement>
<textElement/> <textElement/>
<textFieldExpression><![CDATA[$F{localidade}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{localidade}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
<reportElement uuid="06fc754c-d01f-4a92-bd76-7e900d93a69a" x="140" y="0" width="74" height="20"/> <reportElement uuid="06fc754c-d01f-4a92-bd76-7e900d93a69a" x="140" y="0" width="74" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$P{corrida_id_relatorio}.equals(new BigDecimal($F{corridaId}.toString()))]]></printWhenExpression>
</reportElement>
<textElement/> <textElement/>
<textFieldExpression><![CDATA[$F{receitaSaida}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{receitaSaida}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
<reportElement uuid="ceb27078-6808-4d71-882d-c22332c3e5a3" x="214" y="0" width="74" height="20"/> <reportElement uuid="ceb27078-6808-4d71-882d-c22332c3e5a3" x="214" y="0" width="74" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$P{corrida_id_relatorio}.equals(new BigDecimal($F{corridaId}.toString()))]]></printWhenExpression>
</reportElement>
<textElement/> <textElement/>
<textFieldExpression><![CDATA[$F{receitaChegada}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{receitaChegada}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
<reportElement uuid="d75fc1b6-95f3-453a-8d09-40e9bc7959b8" x="288" y="0" width="74" height="20"/> <reportElement uuid="d75fc1b6-95f3-453a-8d09-40e9bc7959b8" x="288" y="0" width="74" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$P{corrida_id_relatorio}.equals(new BigDecimal($F{corridaId}.toString()))]]></printWhenExpression>
</reportElement>
<textElement/> <textElement/>
<textFieldExpression><![CDATA[$F{soma}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{soma}]]></textFieldExpression>
</textField> </textField>
<textField> <textField>
<reportElement uuid="fd0a475e-2147-498c-8363-04a4af4031c4" x="362" y="0" width="74" height="20"/> <reportElement uuid="fd0a475e-2147-498c-8363-04a4af4031c4" x="362" y="0" width="74" height="20" isRemoveLineWhenBlank="true">
<printWhenExpression><![CDATA[$P{corrida_id_relatorio}.equals(new BigDecimal($F{corridaId}.toString()))]]></printWhenExpression>
</reportElement>
<textElement/> <textElement/>
<textFieldExpression><![CDATA[$F{peso}]]></textFieldExpression> <textFieldExpression><![CDATA[$F{peso}]]></textFieldExpression>
</textField> </textField>

View File

@ -1,14 +1,33 @@
package com.rjconsultores.ventaboletos.relatorios.utilitarios.beans; package com.rjconsultores.ventaboletos.relatorios.utilitarios.beans;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
public class PesoOperacional { public class PesoOperacional {
private Integer corridaId;
private Date fecCorrida;
private String localidade; private String localidade;
private BigDecimal receitaSaida; private BigDecimal receitaSaida;
private BigDecimal receitaChegada; private BigDecimal receitaChegada;
private BigDecimal soma; private BigDecimal soma;
private BigDecimal peso; private BigDecimal peso;
public Integer getCorridaId() {
return corridaId;
}
public void setCorridaId(Integer corridaId) {
this.corridaId = corridaId;
}
public Date getFecCorrida() {
return fecCorrida;
}
public void setFecCorrida(Date fecCorrida) {
this.fecCorrida = fecCorrida;
}
public String getLocalidade() { public String getLocalidade() {
return localidade; return localidade;
} }

View File

@ -7,7 +7,7 @@
# <controler>. <id>. <propiedade> = XXX # <controler>. <id>. <propiedade> = XXX
#Versao do VentaBoleto: #Versao do VentaBoleto:
versao = ADM_20130802_1RC191 versao = ADM_20130802_1RC192
# MSG Defaut: # MSG Defaut:
MSG.CONSTRAINT.PORCENTAGEM = Os valores devem estar entre 0 e 100 MSG.CONSTRAINT.PORCENTAGEM = Os valores devem estar entre 0 e 100