diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java index ffe57e943..0efba49e5 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioOrigemDestino.java @@ -41,7 +41,7 @@ public class RelatorioOrigemDestino extends Relatorio { StringBuilder sql = new StringBuilder(); if (mostratTrechosSemMovimento) { - sql.append(" SELECT TRAMOS.*, NVL(SOMA.RECEITA, 0) RECEITA "); + sql.append(" SELECT TRAMOS.*, NVL(SOMA.RECEITA, 0) RECEITA,TRAMOS.SECO,TRAMOS.SECD "); sql.append(" FROM "); sql.append(" ( "); sql.append(" SELECT "); @@ -84,6 +84,8 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" O.CVEPARADA CVE_ORIGEM, "); sql.append(" O.DESCPARADA ORIGEM, "); sql.append(" D.CVEPARADA CVE_DESTINO, "); + sql.append(" RS.NUMSECUENCIA SECO, "); + sql.append(" RSD.NUMSECUENCIA SECD, "); sql.append(" D.DESCPARADA DESTINO "); sql.append(" FROM CORRIDA CO "); sql.append(" INNER JOIN RUTA R ON R.RUTA_ID=CO.RUTA_ID "); @@ -91,7 +93,12 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" INNER JOIN TRAMO TR ON TR.TRAMO_ID=RC.TRAMO_ID "); sql.append(" INNER JOIN PARADA O ON O.PARADA_ID = TR.ORIGEN_ID "); sql.append(" INNER JOIN PARADA D ON D.PARADA_ID = TR.DESTINO_ID "); - sql.append(" WHERE R.ACTIVO = 1 AND RC.ACTIVO = 1 AND TR.ACTIVO = 1 "); + + sql.append(" LEFT JOIN RUTA_SECUENCIA RS ON RS.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN TRAMO T ON T.TRAMO_ID = RS.TRAMO_ID AND T.ORIGEN_ID = TR.ORIGEN_ID "); + sql.append(" LEFT JOIN RUTA_SECUENCIA RSD ON RSD.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN TRAMO TD ON TD.TRAMO_ID = RSD.TRAMO_ID AND TD.DESTINO_ID = TR.DESTINO_ID "); + sql.append(" WHERE R.ACTIVO = 1 AND RC.ACTIVO = 1 AND TR.ACTIVO = 1 AND RS.activo = 1 and rsd.activo = 1 "); if (!corridasIds.equals("Todas")) { sql.append(" AND CO.CORRIDA_ID IN (").append(corridasIds).append(")"); } @@ -108,11 +115,20 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" O.DESCPARADA ORIGEM, "); sql.append(" D.CVEPARADA CVE_DESTINO, "); sql.append(" D.DESCPARADA DESTINO, "); + sql.append(" RS.NUMSECUENCIA SECO, "); + sql.append(" RSD.NUMSECUENCIA SECD, "); sql.append(" SUM(CA.PRECIOPAGADO) RECEITA "); sql.append(" FROM BOLETO 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(" LEFT JOIN CORRIDA CO ON CO.CORRIDA_ID = CA.CORRIDA_ID AND CO.FECCORRIDA = CA.FECCORRIDA "); + sql.append(" LEFT JOIN RUTA_SECUENCIA RS ON RS.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN TRAMO T ON T.TRAMO_ID = RS.TRAMO_ID AND T.ORIGEN_ID = CA.ORIGEN_ID "); + sql.append(" LEFT JOIN RUTA_SECUENCIA RSD ON RSD.RUTA_ID = CO.RUTA_ID "); + sql.append(" INNER JOIN TRAMO TD ON TD.TRAMO_ID = RSD.TRAMO_ID AND TD.DESTINO_ID = CA.DESTINO_ID "); + sql.append(" WHERE CA.ACTIVO = 1 "); + sql.append(" AND RS.ACTIVO = 1 "); sql.append(" AND CA.MOTIVOCANCELACION_ID IS NULL "); sql.append(" AND CA.PRECIOBASE IS NOT NULL "); if (bilhetesGratuitos) { @@ -131,8 +147,11 @@ public class RelatorioOrigemDestino extends Relatorio { sql.append(" O.CVEPARADA, "); sql.append(" O.DESCPARADA, "); sql.append(" D.CVEPARADA, "); + sql.append(" RS.NUMSECUENCIA, "); + sql.append(" RSD.NUMSECUENCIA, "); sql.append(" D.DESCPARADA "); - sql.append(" ORDER BY CA.CORRIDA_ID "); + + sql.append(" ORDER BY CA.CORRIDA_ID,SECD "); } Connection conexao = getConexao(); @@ -143,8 +162,8 @@ public class RelatorioOrigemDestino extends Relatorio { ResultSet rset = null; rset = stmt.executeQuery(); - Map> mapPorCorridaReceitaSaida = new HashMap>(); - Map> mapPorCorridaReceitaChegada = new HashMap>(); + Map> mapPorCorridaReceitaSaida = new HashMap>(); + Map> mapPorCorridaReceitaChegada = new HashMap>(); Map mapTotalReceitaCorrida = new HashMap(); List lsCorridaIds = new ArrayList(); while (rset.next()) { @@ -154,15 +173,15 @@ public class RelatorioOrigemDestino extends Relatorio { lsCorridaIds.add(idCorrida); } - Map mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida); - Map mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida); + Map mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida); + Map mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida); if (mapReceitaSaida == null) { - mapReceitaSaida = new HashMap(); + mapReceitaSaida = new HashMap(); } if (mapReceitaChegada == null) { - mapReceitaChegada = new HashMap(); + mapReceitaChegada = new HashMap(); } BigDecimal receita = rset.getBigDecimal("RECEITA"); @@ -172,27 +191,22 @@ public class RelatorioOrigemDestino extends Relatorio { } totalReceita = totalReceita.add(receita); mapTotalReceitaCorrida.put(idCorrida, totalReceita); - - String cveOrigem = rset.getString("CVE_ORIGEM"); - String origem = rset.getString("ORIGEM"); - String chaveOrigem = cveOrigem + " - " + origem; - - String cveDestino = rset.getString("CVE_DESTINO"); - String destino = rset.getString("DESTINO"); - String chaveDestino = cveDestino + " - " + destino; - - BigDecimal receitaSaida = mapReceitaSaida.get(chaveOrigem); + + ParadaRelatorioOD paradaOrigem = new ParadaRelatorioOD(rset.getString("ORIGEM"), rset.getString("CVE_ORIGEM"), rset.getInt("SECO")); + ParadaRelatorioOD paradaDestino = new ParadaRelatorioOD(rset.getString("DESTINO"), rset.getString("CVE_DESTINO"), rset.getInt("SECD")); + + BigDecimal receitaSaida = mapReceitaSaida.get(paradaOrigem); if (receitaSaida != null) { - mapReceitaSaida.put(chaveOrigem, receita.add(receitaSaida)); + mapReceitaSaida.put(paradaOrigem, receita.add(receitaSaida)); } else { - mapReceitaSaida.put(chaveOrigem, receita); + mapReceitaSaida.put(paradaOrigem, receita); } - BigDecimal receitaChegada = mapReceitaChegada.get(chaveDestino); + BigDecimal receitaChegada = mapReceitaChegada.get(paradaDestino); if (receitaChegada != null) { - mapReceitaChegada.put(chaveDestino, receita.add(receitaChegada)); + mapReceitaChegada.put(paradaDestino, receita.add(receitaChegada)); } else { - mapReceitaChegada.put(chaveDestino, receita); + mapReceitaChegada.put(paradaDestino, receita); } mapPorCorridaReceitaSaida.put(idCorrida, mapReceitaSaida); @@ -201,21 +215,21 @@ public class RelatorioOrigemDestino extends Relatorio { List lsPesoOperacionalRelatorio = new ArrayList(); for (Integer idCorrida : lsCorridaIds) { - Map mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida); - Map mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida); + Map mapReceitaSaida = mapPorCorridaReceitaSaida.get(idCorrida); + Map mapReceitaChegada = mapPorCorridaReceitaChegada.get(idCorrida); - List lsTodasParadas = new ArrayList(); - for (String parada : mapReceitaChegada.keySet()) { + List lsTodasParadas = new ArrayList(); + for (ParadaRelatorioOD parada : mapReceitaChegada.keySet()) { lsTodasParadas.add(parada); } - for (String parada : mapReceitaSaida.keySet()) { + for (ParadaRelatorioOD parada : mapReceitaSaida.keySet()) { if (!lsTodasParadas.contains(parada)) { lsTodasParadas.add(parada); } } BigDecimal totalReceita = mapTotalReceitaCorrida.get(idCorrida); - for (String parada : lsTodasParadas) { + for (ParadaRelatorioOD parada : lsTodasParadas) { BigDecimal receitaSaida = mapReceitaSaida.get(parada) == null ? BigDecimal.ZERO : mapReceitaSaida.get(parada); BigDecimal receitaChegada = mapReceitaChegada.get(parada) == null ? BigDecimal.ZERO : mapReceitaChegada.get(parada); BigDecimal soma = receitaSaida.add(receitaChegada); @@ -223,7 +237,8 @@ public class RelatorioOrigemDestino extends Relatorio { PesoOperacional pesoOperacional = new PesoOperacional(); pesoOperacional.setCorridaId(idCorrida); - pesoOperacional.setLocalidade(parada); + pesoOperacional.setLocalidade(parada.getCveParada() + " - " +parada.getDescParada()); + pesoOperacional.setSecuencia(parada.getNumSecuencia()); pesoOperacional.setReceitaSaida(receitaSaida); pesoOperacional.setReceitaChegada(receitaChegada); pesoOperacional.setSoma(soma); @@ -411,4 +426,72 @@ public class RelatorioOrigemDestino extends Relatorio { return sql; } + public class ParadaRelatorioOD{ + private String descParada; + private String cveParada; + private Integer numSecuencia; + + public ParadaRelatorioOD(String descParada, String cveParada, Integer numSecuencia) { + super(); + this.descParada = descParada; + this.cveParada = cveParada; + this.numSecuencia = numSecuencia; + } + public String getDescParada() { + return descParada; + } + public void setDescParada(String descParada) { + this.descParada = descParada; + } + public Integer getNumSecuencia() { + return numSecuencia; + } + public void setNumSecuencia(Integer numSecuencia) { + this.numSecuencia = numSecuencia; + } + public String getCveParada() { + return cveParada; + } + public void setCveParada(String cveParada) { + this.cveParada = cveParada; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + getOuterType().hashCode(); + result = prime * result + ((cveParada == null) ? 0 : cveParada.hashCode()); + result = prime * result + ((descParada == null) ? 0 : descParada.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + ParadaRelatorioOD other = (ParadaRelatorioOD) obj; + if (!getOuterType().equals(other.getOuterType())) + return false; + if (cveParada == null) { + if (other.cveParada != null) + return false; + } else if (!cveParada.equals(other.cveParada)) + return false; + if (descParada == null) { + if (other.descParada != null) + return false; + } else if (!descParada.equals(other.descParada)) + return false; + return true; + } + private RelatorioOrigemDestino getOuterType() { + return RelatorioOrigemDestino.this; + } + + + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper index 68f45cd68..bd1b21719 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml index 3ca00f2f1..ffba1c773 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioOrigemDestino.jrxml @@ -1,16 +1,22 @@ - + - + + + + + + + @@ -601,57 +607,57 @@ - + - + - + - + - + - + - + - + - + - + - + diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/Relatorio.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/Relatorio.java index a020d779c..59bd02bf3 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/Relatorio.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/Relatorio.java @@ -108,10 +108,10 @@ public abstract class Relatorio { byte[] conteudo = null; try { - this.processaParametros(); - - if (this.render == null) + if (this.render == null){ + this.processaParametros(); this.render = new RenderRelatorioJasper(this); + } conteudo = this.render.render(saida); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/beans/PesoOperacional.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/beans/PesoOperacional.java index 2021b1b06..415ad60da 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/beans/PesoOperacional.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/beans/PesoOperacional.java @@ -7,6 +7,7 @@ public class PesoOperacional { private Integer corridaId; private Date fecCorrida; private String localidade; + private Integer secuencia; private BigDecimal receitaSaida; private BigDecimal receitaChegada; private BigDecimal soma; @@ -67,4 +68,13 @@ public class PesoOperacional { public void setPeso(BigDecimal peso) { this.peso = peso; } + + public Integer getSecuencia() { + return secuencia; + } + + public void setSecuencia(Integer secuencia) { + this.secuencia = secuencia; + } + } diff --git a/web/WEB-INF/i3-label_pt_BR.label b/web/WEB-INF/i3-label_pt_BR.label index 69dbd77d4..a6888c36d 100644 --- a/web/WEB-INF/i3-label_pt_BR.label +++ b/web/WEB-INF/i3-label_pt_BR.label @@ -7,7 +7,7 @@ # . . = XXX #Versao do VentaBoleto: -versao = ADM_20130829_1RC216 +versao = ADM_20130830_1RC217 # MSG Defaut: MSG.CONSTRAINT.PORCENTAGEM = Os valores devem estar entre 0 e 100