From d1f63bc6ea2016f9f8842f853667ee53a0537a04 Mon Sep 17 00:00:00 2001 From: julio Date: Fri, 8 May 2015 17:49:24 +0000 Subject: [PATCH] =?UTF-8?q?Diverg=C3=AAncia=20Relat=C3=B3rio=20Empresa=20?= =?UTF-8?q?=C3=B4nibus=20x=20Empresa=20Corrida=20(fixes=20bug=20#6270)=20T?= =?UTF-8?q?empo:=2008=20horas?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@43837 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioEmpresaCorrida.java | 162 ++++-------------- .../impl/RelatorioEmpresaOnibus.java | 82 +++++---- 2 files changed, 77 insertions(+), 167 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java index 49b21a9e0..13389fa29 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java @@ -37,8 +37,6 @@ public class RelatorioEmpresaCorrida extends Relatorio { String sql = getSql(empresa); - System.out.println(sql); - NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); ResultSet rset = null; @@ -86,138 +84,52 @@ public class RelatorioEmpresaCorrida extends Relatorio { private String getSql(String empresa) { StringBuilder sql = new StringBuilder(); - sql.append("SELECT DISTINCT "); - sql.append(" c1.ruta_id, "); - sql.append(" c1.EMPRESACORRIDA_ID, "); + sql.append("select "); + sql.append(" km2.empresa_id, "); + sql.append(" km2.nombempresa, "); + sql.append(" r.ruta_id, "); sql.append(" r.descruta AS linea, "); - sql.append(" e.nombempresa, "); - sql.append(" COALESCE(SUM( "); - sql.append(" CASE "); - sql.append(" WHEN ((b.motivocancelacion_id IS NULL) "); - sql.append(" AND (cat.grupocategoria_id IS NULL "); - sql.append(" OR cat.grupocategoria_id <> 4)) "); - sql.append(" THEN b.preciopagado "); - sql.append(" ELSE 0 "); - sql.append(" END), 0) boletos, "); - sql.append(" COALESCE(SUM( "); - sql.append(" CASE "); - sql.append(" WHEN b.motivocancelacion_id IS NULL "); - sql.append(" AND cat.grupocategoria_id = 4 "); - sql.append(" THEN b.preciopagado "); - sql.append(" ELSE 0 "); - sql.append(" END), 0) abonos, "); - sql.append(" COALESCE(SUM( "); - sql.append(" CASE "); - sql.append(" WHEN b.motivocancelacion_id IS NULL "); - sql.append(" THEN 1 "); - sql.append(" ELSE 0 "); - sql.append(" END), 0) passageirosTransp, "); + sql.append(" COALESCE(SUM(CASE WHEN ((b.motivocancelacion_id IS NULL) AND (cat.grupocategoria_id IS NULL OR cat.grupocategoria_id <> 4)) THEN b.preciopagado ELSE 0 END), 0) boletos, "); + sql.append(" COALESCE(SUM(CASE WHEN b.motivocancelacion_id IS NULL AND cat.grupocategoria_id = 4 THEN b.preciopagado ELSE 0 END), 0) abonos, "); + sql.append(" COALESCE(SUM(CASE WHEN b.motivocancelacion_id IS NULL THEN 1 ELSE 0 END), 0) passageirosTransp, "); sql.append(" COALESCE(km2.kmtotal, 0) kmtotal, "); sql.append(" COALESCE(km2.kmonibusproprio, 0) kmOnibusProprio, "); sql.append(" COALESCE(km2.kmonibusarrendados, 0) kmOnibusArrendados "); - sql.append("FROM "); - sql.append(" tramo t1 "); + sql.append("FROM ruta r "); sql.append("INNER JOIN "); - sql.append(" corrida_tramo ct "); - sql.append("ON "); - sql.append(" ct.tramo_id = t1.tramo_id "); - sql.append("INNER JOIN "); - sql.append(" corrida c1 "); - sql.append("ON "); - sql.append(" ct.corrida_id = c1.corrida_id "); - sql.append("AND ct.feccorrida = c1.feccorrida "); - sql.append("INNER JOIN "); - sql.append(" autobus a "); - sql.append("ON "); - sql.append(" ct.autobus_id = a.autobus_id "); - sql.append("LEFT JOIN "); - sql.append(" boleto b "); - sql.append("ON "); - sql.append(" b.corrida_id = c1.corrida_id "); - sql.append("AND b.feccorrida = c1.feccorrida "); - sql.append("LEFT JOIN "); - sql.append(" categoria cat "); - sql.append("ON "); - sql.append(" cat.categoria_id = b.categoria_id "); - sql.append("INNER JOIN "); - sql.append(" empresa e "); - sql.append("ON "); - sql.append(" e.empresa_id = c1.EMPRESACORRIDA_ID "); - sql.append("INNER JOIN "); - sql.append(" ruta r "); - sql.append("ON "); - sql.append(" r.ruta_id = c1.ruta_id "); - sql.append("LEFT JOIN "); - sql.append(" ( "); - sql.append(" SELECT "); + sql.append(" ( SELECT "); sql.append(" c.ruta_id ruta_id, "); - sql.append(" c.EMPRESACORRIDA_ID empresa_id, "); + sql.append(" e.empresa_id empresa_id, "); + sql.append(" e.nombempresa nombempresa, "); sql.append(" COALESCE(SUM(t.cantkmreal), 0) kmtotal, "); - sql.append(" COALESCE(SUM( "); - sql.append(" CASE "); - sql.append(" WHEN a.empresa_id = c.empresacorrida_id "); - sql.append(" THEN t.cantkmreal "); - sql.append(" ELSE 0 "); - sql.append(" END), 0) kmOnibusProprio, "); - sql.append(" COALESCE(SUM( "); - sql.append(" CASE "); - sql.append(" WHEN a.empresa_id <> c.empresacorrida_id "); - sql.append(" THEN t.cantkmreal "); - sql.append(" ELSE 0 "); - sql.append(" END), 0) kmOnibusArrendados "); - sql.append(" FROM "); - sql.append(" corrida c "); - sql.append(" INNER JOIN "); - sql.append(" corrida_tramo ct "); - sql.append(" ON "); - sql.append(" ct.corrida_id = c.corrida_id "); - sql.append(" AND c.feccorrida = ct.feccorrida "); - sql.append(" INNER JOIN "); - sql.append(" tramo t "); - sql.append(" ON "); - sql.append(" t.tramo_id = ct.tramo_id "); - sql.append(" INNER JOIN "); - sql.append(" parada o "); - sql.append(" ON "); - sql.append(" o.parada_id = ct.origen_id "); - sql.append(" INNER JOIN "); - sql.append(" parada d "); - sql.append(" ON "); - sql.append(" d.parada_id = ct.destino_id "); - sql.append(" INNER JOIN "); - sql.append(" autobus a "); - sql.append(" ON "); - sql.append(" a.autobus_id = ct.autobus_id "); - sql.append(" INNER JOIN "); - sql.append(" empresa e "); - sql.append(" ON "); - sql.append(" e.empresa_id = a.empresa_id "); + sql.append(" COALESCE(SUM(CASE WHEN a.empresa_id = c.empresacorrida_id THEN t.cantkmreal ELSE 0 END), 0) kmOnibusProprio, "); + sql.append(" COALESCE(SUM(CASE WHEN a.empresa_id <> c.empresacorrida_id THEN t.cantkmreal ELSE 0 END), 0) kmOnibusArrendados "); + sql.append(" FROM corrida c "); + sql.append(" INNER JOIN corrida_tramo ct ON ct.corrida_id = c.corrida_id AND c.feccorrida = ct.feccorrida "); + 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 <> 0 "); - sql.append(" AND e.empresa_id = 1 "); - sql.append(" AND ct.activo = 1 "); - sql.append(" AND c.feccorrida BETWEEN :fecInicio AND :fecFinal "); - sql.append(" AND ct.feccorrida BETWEEN :fecInicio AND :fecFinal "); - sql.append(" GROUP BY "); - sql.append(" c.ruta_id, "); - sql.append(" c.EMPRESACORRIDA_ID ) km2 "); - sql.append("ON (km2.ruta_id = r.ruta_id AND km2.empresa_id = e.empresa_id) "); - sql.append("WHERE c1.activo <> 0 "); - sql.append("AND ct.activo <> 0 "); - sql.append("AND a.activo <> 0 "); - sql.append("AND t1.activo <> 0 "); - sql.append("AND c1.feccorrida BETWEEN :fecInicio AND :fecFinal "); sql.append(StringUtils.isBlank(empresa) ? "" : " AND e.empresa_id = :empresa_id "); - sql.append("GROUP BY "); - sql.append(" c1.ruta_id, "); - sql.append(" c1.EMPRESACORRIDA_ID, "); - sql.append(" r.descruta, "); - sql.append(" e.nombempresa, "); - sql.append(" km2.kmtotal, "); - sql.append(" km2.kmonibusproprio, "); - sql.append(" km2.kmonibusarrendados "); - sql.append("ORDER BY "); - sql.append(" nombempresa, "); - sql.append(" linea"); + sql.append(" AND ct.activo = 1 "); + sql.append(" AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal "); + sql.append(" GROUP BY c.ruta_id, e.empresa_id, e.nombempresa) km2 ON r.ruta_id = km2.ruta_id "); + sql.append("INNER JOIN corrida c ON c.ruta_id = km2.ruta_id "); + sql.append("INNER JOIN corrida_tramo ct ON ct.corrida_id = c.corrida_id AND c.feccorrida = ct.feccorrida "); + 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("LEFT JOIN boleto b ON b.corrida_id = c.corrida_id AND b.feccorrida = c.feccorrida "); + sql.append("LEFT OUTER JOIN categoria cat ON cat.categoria_id = b.categoria_id "); + sql.append("WHERE c.activo <> 0 "); + sql.append("AND e.empresa_id = 1 "); + sql.append("AND ct.activo = 1 "); + sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal "); + sql.append("GROUP BY km2.empresa_id, km2.nombempresa, r.ruta_id, r.descruta, km2.kmtotal, km2.kmonibusproprio, km2.kmonibusarrendados"); return sql.toString(); } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java index f6ae29ae8..902b96ace 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaOnibus.java @@ -23,10 +23,10 @@ import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; public class RelatorioEmpresaOnibus extends Relatorio { private List lsDadosRelatorio; - - public RelatorioEmpresaOnibus(Map parametros, Connection conexao) throws Exception { + + public RelatorioEmpresaOnibus(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); - + this.setCustomDataSource(new DataSource(this) { @Override public void initDados() throws Exception { @@ -39,31 +39,29 @@ public class RelatorioEmpresaOnibus extends Relatorio { String fecFinal = parametros.get("fecFinal").toString() + " 23:59:59"; String empresa = parametros.get("empresa") != null ? parametros.get("empresa").toString() : ""; String autobus = parametros.get("autobus") != null ? parametros.get("autobus").toString() : ""; - + String sql = getSql(empresa, autobus); - - System.out.println(sql); - + SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql); stmt.setTimestamp("fecInicio", new java.sql.Timestamp(sdf.parse(fecInicio).getTime())); stmt.setTimestamp("fecFinal", new java.sql.Timestamp(sdf.parse(fecFinal).getTime())); - if (empresa != null && !empresa.equals("")){ + if (empresa != null && !empresa.equals("")) { stmt.setInt("empresa_id", Integer.parseInt(empresa)); } - if (autobus != null && !autobus.equals("")){ + if (autobus != null && !autobus.equals("")) { stmt.setInt("autobus_id", Integer.parseInt(autobus)); } - + ResultSet rset = null; - + rset = stmt.executeQuery(); - + // Soma os kms dos tramos. // HashMap utilizado para identificar os tramos de uma corrida Map mDadosRelatorio = new LinkedHashMap(); lsDadosRelatorio = new ArrayList(); - + sdf.applyPattern("dd/MM/yyyy"); while (rset.next()) { RelatorioEmpresaOnibusBean empresaOnibusBean = new RelatorioEmpresaOnibusBean(); @@ -76,51 +74,51 @@ public class RelatorioEmpresaOnibus extends Relatorio { empresaOnibusBean.setKmts(rset.getInt("kmts")); empresaOnibusBean.setOrigem(rset.getString("origem")); empresaOnibusBean.setNumsecuencia(rset.getInt("numsecuencia")); - + String key = empresaOnibusBean.getCorridaId() + "-" + empresaOnibusBean.getCoche() + "-" + empresaOnibusBean.getHora() + "-" + - sdf.format(empresaOnibusBean.getDia()) + "-" + empresaOnibusBean.getEmpresa(); - - if(mDadosRelatorio.containsKey(key)) { + 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()) { + if (empresaOnibusBean.getNumsecuencia() < auxEmpresaOnibusBean.getNumsecuencia()) { empresaOnibusBean.setDestino(auxEmpresaOnibusBean.getDestino()); } } - + mDadosRelatorio.put(key, empresaOnibusBean); - } - - for (Entry empresaOnibusBean : mDadosRelatorio.entrySet()) { + } + + for (Entry empresaOnibusBean : mDadosRelatorio.entrySet()) { lsDadosRelatorio.add(empresaOnibusBean.getValue()); - } + } if (lsDadosRelatorio.size() > 0) { - Collections.sort(lsDadosRelatorio,new Comparator() { + Collections.sort(lsDadosRelatorio, new Comparator() { @Override public int compare(RelatorioEmpresaOnibusBean o1, RelatorioEmpresaOnibusBean o2) { int result = o1.getEmpresa().compareToIgnoreCase(o2.getEmpresa()); - if (result != 0){ + if (result != 0) { return result; } - + result = o1.getCoche().compareTo(o2.getCoche()); - if (result != 0){ + if (result != 0) { return result; - } - - result = o1.getDia().compareTo(o2.getDia()); - if (result != 0){ + } + + result = o1.getDia().compareTo(o2.getDia()); + if (result != 0) { return result; - } - + } + try { SimpleDateFormat formatter = new SimpleDateFormat("HH:mm"); Date h1 = formatter.parse(o1.getHora()); Date h2 = formatter.parse(o2.getHora()); - result = h1.compareTo(h2); + result = h1.compareTo(h2); } catch (ParseException e) { } return result; @@ -128,11 +126,11 @@ public class RelatorioEmpresaOnibus extends Relatorio { }); setLsDadosRelatorio(lsDadosRelatorio); } - + } }); } - + public void setLsDadosRelatorio(List lsDadosRelatorio) { this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); this.lsDadosRelatorio = lsDadosRelatorio; @@ -140,9 +138,9 @@ public class RelatorioEmpresaOnibus extends Relatorio { @Override protected void processaParametros() throws Exception { - + } - + private String getSql(String empresa, String autobus) { StringBuffer sql = new StringBuffer(); @@ -157,16 +155,16 @@ public class RelatorioEmpresaOnibus extends Relatorio { 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()){ + if (!empresa.isEmpty()) { sql.append(" and e.empresa_id = :empresa_id "); } - if (!autobus.isEmpty()){ + if (!autobus.isEmpty()) { sql.append(" and a.autobus_id = :autobus_id "); } 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(); } }