rodrigo 2013-08-19 22:56:02 +00:00
parent 51394ca702
commit 0a97e35f62
1 changed files with 32 additions and 26 deletions

View File

@ -11,7 +11,6 @@ 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;
@ -32,12 +31,13 @@ public class RelatorioOrigemDestino extends Relatorio {
String sql = getSQL(empresaIds, corridasIds, dataDe, dataAte, bilhetesGratuitos, trechosSemMovimento); String sql = getSQL(empresaIds, corridasIds, dataDe, dataAte, bilhetesGratuitos, trechosSemMovimento);
List<PesoOperacional> lsPesoOperacionalRelatorio = getPesoOperacional(corridasIds, dataDe, dataAte); List<PesoOperacional> lsPesoOperacionalRelatorio = getPesoOperacional(corridasIds, dataDe, dataAte, bilhetesGratuitos);
getParametros().put("lsPesoOperacionalRelatorio", lsPesoOperacionalRelatorio); getParametros().put("lsPesoOperacionalRelatorio", lsPesoOperacionalRelatorio);
getParametros().put("SQL", sql); getParametros().put("SQL", sql);
} }
private List<PesoOperacional> getPesoOperacional(String corridasIds, String dataDe, String dataAte) throws SQLException { private List<PesoOperacional> getPesoOperacional(String corridasIds, String dataDe, String dataAte,
Boolean bilhetesGratuitos) throws SQLException {
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append(" SELECT "); sql.append(" SELECT ");
sql.append(" CA.CORRIDA_ID CORRIDA_ID, "); sql.append(" CA.CORRIDA_ID CORRIDA_ID, ");
@ -47,9 +47,17 @@ public class RelatorioOrigemDestino extends Relatorio {
sql.append(" D.CVEPARADA CVE_DESTINO, "); sql.append(" D.CVEPARADA CVE_DESTINO, ");
sql.append(" D.DESCPARADA DESTINO, "); sql.append(" D.DESCPARADA DESTINO, ");
sql.append(" SUM(CA.PRECIOPAGADO) RECEITA "); sql.append(" SUM(CA.PRECIOPAGADO) RECEITA ");
sql.append(" FROM CAJA CA INNER JOIN PARADA O ON O.PARADA_ID = CA.ORIGEN_ID "); sql.append(" FROM CAJA CA ");
sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = CA.ORIGEN_ID ");
sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = CA.DESTINO_ID "); sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = CA.DESTINO_ID ");
sql.append(" WHERE 1=1 "); sql.append(" WHERE CA.ACTIVO = 1 ");
sql.append(" AND ca.indreimpresion = 0 ");
sql.append(" AND CA.PRECIOBASE IS NOT NULL ");
if (bilhetesGratuitos) {
sql.append(" AND CA.PRECIOBASE >= 0 ");
} else {
sql.append(" AND CA.PRECIOBASE > 0 ");
}
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(")");
} }
@ -71,21 +79,19 @@ public class RelatorioOrigemDestino extends Relatorio {
ResultSet rset = null; ResultSet rset = null;
rset = stmt.executeQuery(); rset = stmt.executeQuery();
Map<Corrida.Id, Map<String, BigDecimal>> mapPorCorridaReceitaSaida = new HashMap<Corrida.Id, Map<String, BigDecimal>>(); Map<Integer, Map<String, BigDecimal>> mapPorCorridaReceitaSaida = new HashMap<Integer, Map<String, BigDecimal>>();
Map<Corrida.Id, Map<String, BigDecimal>> mapPorCorridaReceitaChegada = new HashMap<Corrida.Id, Map<String, BigDecimal>>(); Map<Integer, Map<String, BigDecimal>> mapPorCorridaReceitaChegada = new HashMap<Integer, Map<String, BigDecimal>>();
Map<Corrida.Id, BigDecimal> mapTotalReceitaCorrida = new HashMap<Corrida.Id, BigDecimal>(); Map<Integer, BigDecimal> mapTotalReceitaCorrida = new HashMap<Integer, BigDecimal>();
List<Corrida.Id> lsCorridaIds = new ArrayList<Corrida.Id>(); List<Integer> lsCorridaIds = new ArrayList<Integer>();
while (rset.next()) { while (rset.next()) {
Corrida.Id id = new Corrida.Id(); Integer idCorrida = rset.getInt("CORRIDA_ID");
id.setCorridaId(rset.getInt("CORRIDA_ID"));
id.setFeccorrida(rset.getDate("FECCORRIDA"));
if (!lsCorridaIds.contains(id)) { if (!lsCorridaIds.contains(idCorrida)) {
lsCorridaIds.add(id); lsCorridaIds.add(idCorrida);
} }
Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(id); Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida);
Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(id); Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida);
if (mapReceitaSaida == null) { if (mapReceitaSaida == null) {
mapReceitaSaida = new HashMap<String, BigDecimal>(); mapReceitaSaida = new HashMap<String, BigDecimal>();
@ -96,12 +102,12 @@ public class RelatorioOrigemDestino extends Relatorio {
} }
BigDecimal receita = rset.getBigDecimal("RECEITA"); BigDecimal receita = rset.getBigDecimal("RECEITA");
BigDecimal totalReceita = mapTotalReceitaCorrida.get(id); BigDecimal totalReceita = mapTotalReceitaCorrida.get(idCorrida);
if (totalReceita == null) { if (totalReceita == null) {
totalReceita = BigDecimal.ZERO; totalReceita = BigDecimal.ZERO;
} }
totalReceita = totalReceita.add(receita); totalReceita = totalReceita.add(receita);
mapTotalReceitaCorrida.put(id, totalReceita); mapTotalReceitaCorrida.put(idCorrida, totalReceita);
String cveOrigem = rset.getString("CVE_ORIGEM"); String cveOrigem = rset.getString("CVE_ORIGEM");
String origem = rset.getString("ORIGEM"); String origem = rset.getString("ORIGEM");
@ -125,14 +131,14 @@ public class RelatorioOrigemDestino extends Relatorio {
mapReceitaChegada.put(chaveDestino, receita); mapReceitaChegada.put(chaveDestino, receita);
} }
mapPorCorridaReceitaSaida.put(id, mapReceitaSaida); mapPorCorridaReceitaSaida.put(idCorrida, mapReceitaSaida);
mapPorCorridaReceitaChegada.put(id, mapReceitaChegada); mapPorCorridaReceitaChegada.put(idCorrida, mapReceitaChegada);
} }
List<PesoOperacional> lsPesoOperacionalRelatorio = new ArrayList<PesoOperacional>(); List<PesoOperacional> lsPesoOperacionalRelatorio = new ArrayList<PesoOperacional>();
for (Corrida.Id id : lsCorridaIds) { for (Integer idCorrida : lsCorridaIds) {
Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(id); Map<String, BigDecimal> mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida);
Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(id); Map<String, BigDecimal> mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida);
List<String> lsTodasParadas = new ArrayList<String>(); List<String> lsTodasParadas = new ArrayList<String>();
for (String parada : mapReceitaChegada.keySet()) { for (String parada : mapReceitaChegada.keySet()) {
@ -144,7 +150,7 @@ public class RelatorioOrigemDestino extends Relatorio {
} }
} }
BigDecimal totalReceita = mapTotalReceitaCorrida.get(id); BigDecimal totalReceita = mapTotalReceitaCorrida.get(idCorrida);
for (String parada : lsTodasParadas) { 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);
@ -152,8 +158,8 @@ public class RelatorioOrigemDestino extends Relatorio {
BigDecimal peso = totalReceita.equals(BigDecimal.ZERO) ? BigDecimal.ZERO : 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.setCorridaId(idCorrida);
pesoOperacional.setFecCorrida(id.getFeccorrida()); // pesoOperacional.setFecCorrida(id.getFeccorrida());
pesoOperacional.setLocalidade(parada); pesoOperacional.setLocalidade(parada);
pesoOperacional.setReceitaSaida(receitaSaida); pesoOperacional.setReceitaSaida(receitaSaida);
pesoOperacional.setReceitaChegada(receitaChegada); pesoOperacional.setReceitaChegada(receitaChegada);