diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java index c95e7481c..fa6cd2e22 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java @@ -4,8 +4,12 @@ import java.sql.Connection; import java.sql.ResultSet; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; @@ -53,8 +57,10 @@ public class RelatorioEmpresaOnibus extends Relatorio { rset = stmt.executeQuery(); + Map mDadosRelatorio = new HashMap(); lsDadosRelatorio = new ArrayList(); + sdf.applyPattern("dd/MM/yyyy"); while (rset.next()) { RelatorioEmpresaOnibusBean empresaOnibusBean = new RelatorioEmpresaOnibusBean(); empresaOnibusBean.setCorridaId(rset.getInt("corridaId")); @@ -65,13 +71,39 @@ public class RelatorioEmpresaOnibus extends Relatorio { empresaOnibusBean.setHora(rset.getString("hora")); empresaOnibusBean.setKmts(rset.getInt("kmts")); empresaOnibusBean.setOrigem(rset.getString("origem")); + empresaOnibusBean.setNumsecuencia(rset.getInt("numsecuencia")); - lsDadosRelatorio.add(empresaOnibusBean); + String key = empresaOnibusBean.getCorridaId() + "-" + empresaOnibusBean.getCoche() + "-" + empresaOnibusBean.getHora() + "-" + + sdf.format(empresaOnibusBean.getDia()) + "-" + empresaOnibusBean.getEmpresa(); + + if(mDadosRelatorio.containsKey(key)) { + RelatorioEmpresaOnibusBean auxEmpresaOnibusBean = mDadosRelatorio.get(key); + empresaOnibusBean.setOrigem(auxEmpresaOnibusBean.getOrigem()); + + empresaOnibusBean.setKmts(empresaOnibusBean.getKmts() + auxEmpresaOnibusBean.getKmts()); + if(empresaOnibusBean.getNumsecuencia() < auxEmpresaOnibusBean.getNumsecuencia()) { + empresaOnibusBean.setDestino(auxEmpresaOnibusBean.getDestino()); + } + } + + mDadosRelatorio.put(key, empresaOnibusBean); } + for (Entry empresaOnibusBean : mDadosRelatorio.entrySet()) { + lsDadosRelatorio.add(empresaOnibusBean.getValue()); + } + + if (lsDadosRelatorio.size() > 0) { + Collections.sort(lsDadosRelatorio,new Comparator() { + @Override + public int compare(RelatorioEmpresaOnibusBean o1, RelatorioEmpresaOnibusBean o2) { + return o1.getEmpresa().compareToIgnoreCase(o2.getEmpresa()); + } + }); setLsDadosRelatorio(lsDadosRelatorio); } + } }); } @@ -90,14 +122,14 @@ public class RelatorioEmpresaOnibus extends Relatorio { sql.append(" select c.corrida_Id corridaId, e.nombempresa empresa, c.feccorrida dia, a.numautobus coche, "); sql.append(" o.cveparada origem, d.cveparada destino, "); - sql.append(" to_char(c.fechorsalida, 'HH24:MI') Hora, t.cantkmreal KMTS "); + sql.append(" to_char(c.fechorsalida, 'HH24:MI') Hora, t.cantkmreal KMTS, ct.numsecuencia "); sql.append(" from corrida c "); - sql.append(" left join ruta_combinacion rc on rc.ruta_id = c.ruta_id "); - sql.append(" left join parada o on o.parada_id = c.origen_id "); - sql.append(" left join parada d on d.parada_id = c.destino_id "); - sql.append(" inner join tramo t on t.origen_id = c.origen_id and t.destino_id = c.destino_id and t.tramo_id = rc.tramo_id "); - sql.append(" inner join autobus a on a.autobus_id = c.autobus_id "); - sql.append(" left join empresa e on e.empresa_id = a.empresa_id "); + sql.append(" inner join corrida_tramo ct on ct.corrida_id = c.corrida_id "); + sql.append(" inner join tramo t on t.tramo_id = ct.tramo_id "); + sql.append(" inner join parada o on o.parada_id = ct.origen_id "); + sql.append(" inner join parada d on d.parada_id = ct.destino_id "); + sql.append(" inner join autobus a on a.autobus_id = ct.autobus_id "); + sql.append(" inner join empresa e on e.empresa_id = a.empresa_id "); sql.append(" where c.activo = 1 "); if (!empresa.isEmpty()){ sql.append(" and e.empresa_id = :empresa_id "); @@ -105,8 +137,9 @@ public class RelatorioEmpresaOnibus extends Relatorio { if (!autobus.isEmpty()){ sql.append(" and a.autobus_id = :autobus_id "); } - sql.append(" and rc.activo = 1 and c.feccorrida between :fecInicio and :fecFinal "); - sql.append(" order by e.nombempresa, a.numautobus, c.feccorrida "); + sql.append(" and ct.activo = 1 and c.feccorrida between :fecInicio and :fecFinal "); + sql.append(" and ct.feccorrida between :fecInicio and :fecFinal "); + sql.append(" order by e.nombempresa, a.numautobus, c.feccorrida, ct.numsecuencia "); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibusResumo.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibusResumo.java index 0d380dfe6..df9bbfe79 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibusResumo.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibusResumo.java @@ -91,23 +91,22 @@ public class RelatorioEmpresaOnibusResumo extends Relatorio { sql.append(" a.numautobus coche, "); sql.append(" Sum(t.cantkmreal) KMTS "); sql.append("FROM corrida c, "); - sql.append(" ruta_combinacion rc, "); + sql.append(" corrida_tramo ct, "); sql.append(" tramo t, "); sql.append(" autobus a, "); sql.append(" empresa e, "); sql.append(" parada o, "); sql.append(" parada d "); sql.append("WHERE c.activo = 1 "); - sql.append(" AND rc.ruta_id = c.ruta_id "); - sql.append(" AND t.origen_id = c.origen_id "); - sql.append(" AND t.destino_id = c.destino_id "); - sql.append(" AND t.tramo_id = rc.tramo_id "); - sql.append(" AND rc.activo = 1 "); + sql.append(" AND ct.corrida_id = c.corrida_id "); + sql.append(" AND t.tramo_id = ct.tramo_id "); + sql.append(" AND ct.activo = 1 "); sql.append(" AND c.feccorrida BETWEEN :fecInicio and :fecFinal "); - sql.append(" AND a.autobus_id = c.autobus_id "); + sql.append(" AND ct.feccorrida BETWEEN :fecInicio and :fecFinal "); + sql.append(" AND a.autobus_id = ct.autobus_id "); sql.append(" AND e.empresa_id = a.empresa_id "); - sql.append(" AND o.parada_id = c.origen_id "); - sql.append(" AND d.parada_id = c.destino_id "); + sql.append(" AND o.parada_id = ct.origen_id "); + sql.append(" AND d.parada_id = ct.destino_id "); if (!empresa.isEmpty()){ sql.append(" AND e.empresa_id = :empresa_id "); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaOnibusBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaOnibusBean.java index 70054cd41..0b6b8fe5d 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaOnibusBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaOnibusBean.java @@ -11,6 +11,8 @@ public class RelatorioEmpresaOnibusBean { protected String destino; protected String hora; protected Integer kmts; + protected Integer numsecuencia; + public Date getDia() { return dia; } @@ -59,4 +61,10 @@ public class RelatorioEmpresaOnibusBean { public void setCorridaId(Integer corridaId) { this.corridaId = corridaId; } + public Integer getNumsecuencia() { + return numsecuencia; + } + public void setNumsecuencia(Integer numsecuencia) { + this.numsecuencia = numsecuencia; + } }