From 2e83c4cb8e78f729303721c99af95258525523ed Mon Sep 17 00:00:00 2001 From: emerson Date: Tue, 26 Jun 2018 19:29:16 +0000 Subject: [PATCH] fixes bug#0011329 dev: emerson qua: renato.oliveira git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@82902 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../impl/RelatorioEmpresaCorrida.java | 72 ++++++++++++------- .../RelatorioEmpresaCorridaNovoLayout.java | 56 ++++++++++++--- .../RelatorioEmpresaCorridaBean.java | 9 +++ 3 files changed, 101 insertions(+), 36 deletions(-) diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java index 8c9747b1d..09670b7ed 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorrida.java @@ -8,8 +8,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; -import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; - import org.apache.commons.lang.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -19,8 +17,27 @@ import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioEmpresaCorridaBean; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; + public class RelatorioEmpresaCorrida extends Relatorio { - private Logger log = LoggerFactory.getLogger(RelatorioEmpresaCorrida.class); + protected static final String FIELD_FEC_FINAL = "fecFinal"; + protected static final String FILED_FEC_INICIO = "fecInicio"; + protected static final String FIELD_EMPRESA_ID = "empresa_id"; + protected static final String FIELD_KM_TOTAL = "kmTotal"; + protected static final String FIELD_KM_ONIBUS_PROPRIO = "kmOnibusProprio"; + protected static final String FIELD_KM_ONIBUS_ARRENDADOS = "kmOnibusArrendados"; + protected static final String FIELD_PASSAGEIROS_TRANSP = "passageirosTransp"; + protected static final String FIELD_LINEA = "linea"; + protected static final String FIELD_NOMB_EMPRESA = "nombempresa"; + protected static final String FIELD_BOLETOS = "boletos"; + protected static final String FIELD_ABONOS = "abonos"; + protected static final String FIELD_RUTA_ID = "ruta_id"; + protected static final String FIELD_DESTINO = "destino"; + protected static final String FIELD_ORIGEM = "origem"; + protected static final String FIELD_TURNO_ORIGEM = "turnoOrigem"; + protected static final String FIELD_DATA_CORRIDA = "dataCorrida"; + protected static final String FIELD_CORRIDA_ID = "corrida_id"; + protected Logger log = LoggerFactory.getLogger(RelatorioEmpresaCorrida.class); public RelatorioEmpresaCorrida(Map parametros, Connection conexao) throws Exception { super(parametros, conexao); @@ -33,8 +50,8 @@ public class RelatorioEmpresaCorrida extends Relatorio { Map parametros = this.relatorio.getParametros(); - String fecInicio = parametros.get("fecInicio").toString() + " 00:00:00"; - String fecFinal = parametros.get("fecFinal").toString() + " 23:59:59"; + String fecInicio = parametros.get(FILED_FEC_INICIO).toString() + " 00:00:00"; + String fecFinal = parametros.get(FIELD_FEC_FINAL).toString() + " 23:59:59"; String empresa = parametros.get("empresa") != null ? parametros.get("empresa").toString() : ""; log.info("empresa:" + empresa + ";fecinicio:" + fecInicio + ";fecFinal:" + fecFinal); @@ -45,10 +62,10 @@ public class RelatorioEmpresaCorrida extends Relatorio { ResultSet rset = null; SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - stmt.setString("fecInicio", fecInicio); - stmt.setString("fecFinal", fecFinal); + stmt.setString(FILED_FEC_INICIO, fecInicio); + stmt.setString(FIELD_FEC_FINAL, fecFinal); if (empresa != null && !empresa.equals("")) { - stmt.setInt("empresa_id", Integer.parseInt(empresa)); + stmt.setInt(FIELD_EMPRESA_ID, Integer.parseInt(empresa)); } log.info("Antes de enviar consulta para o banco:" + System.currentTimeMillis()); rset = stmt.executeQuery(); @@ -71,10 +88,10 @@ public class RelatorioEmpresaCorrida extends Relatorio { stmt = new NamedParameterStatement(conexao, sqlKm); rset = null; - stmt.setTimestamp("fecInicio", new java.sql.Timestamp(sdf.parse(fecInicio).getTime())); - stmt.setTimestamp("fecFinal", new java.sql.Timestamp(sdf.parse(fecFinal).getTime())); + stmt.setTimestamp(FILED_FEC_INICIO, new java.sql.Timestamp(sdf.parse(fecInicio).getTime())); + stmt.setTimestamp(FIELD_FEC_FINAL, new java.sql.Timestamp(sdf.parse(fecFinal).getTime())); if (empresa != null && !empresa.equals("")) { - stmt.setInt("empresa_id", Integer.parseInt(empresa)); + stmt.setInt(FIELD_EMPRESA_ID, Integer.parseInt(empresa)); } List lsAux = new ArrayList(); @@ -84,13 +101,11 @@ public class RelatorioEmpresaCorrida extends Relatorio { log.info("Depois de enviar consulta para o banco:" + System.currentTimeMillis()); while (rset.next()) { - Integer rutaId = rset.getInt("ruta_id"); - - RelatorioEmpresaCorridaBean rec = buscarRelatorioEmpresaCorrida(lsDadosRelatorio, rutaId); + RelatorioEmpresaCorridaBean rec = buscarRelatorioEmpresaCorrida(lsDadosRelatorio, rset); if (rec != null) { - rec.setKmOnibusArrendados(rset.getInt("kmOnibusArrendados")); - rec.setKmOnibusProprio(rset.getInt("kmOnibusProprio")); - rec.setKmTotal(rset.getInt("kmTotal")); + rec.setKmOnibusArrendados(rset.getInt(FIELD_KM_ONIBUS_ARRENDADOS)); + rec.setKmOnibusProprio(rset.getInt(FIELD_KM_ONIBUS_PROPRIO)); + rec.setKmTotal(rset.getInt(FIELD_KM_TOTAL)); lsAux.add(rec); } @@ -105,12 +120,12 @@ public class RelatorioEmpresaCorrida extends Relatorio { } protected void setDadosBean(ResultSet rset, RelatorioEmpresaCorridaBean bean) throws SQLException { - bean.setRutaId(rset.getInt("ruta_id")); - bean.setAbonos(rset.getBigDecimal("abonos")); - bean.setBoletos(rset.getBigDecimal("boletos")); - bean.setEmpresa(rset.getString("nombempresa")); - bean.setLinea(rset.getString("linea")); - bean.setPasajerosTransportados(rset.getInt("passageirosTransp")); + bean.setRutaId(rset.getInt(FIELD_RUTA_ID)); + bean.setAbonos(rset.getBigDecimal(FIELD_ABONOS)); + bean.setBoletos(rset.getBigDecimal(FIELD_BOLETOS)); + bean.setEmpresa(rset.getString(FIELD_NOMB_EMPRESA)); + bean.setLinea(rset.getString(FIELD_LINEA)); + bean.setPasajerosTransportados(rset.getInt(FIELD_PASSAGEIROS_TRANSP)); } public void setLsDadosRelatorio(List lsDadosRelatorio) { @@ -121,15 +136,20 @@ public class RelatorioEmpresaCorrida extends Relatorio { protected void processaParametros() throws Exception { } - private RelatorioEmpresaCorridaBean buscarRelatorioEmpresaCorrida(List lsDadosRelatorio, Integer rutaId) { + private RelatorioEmpresaCorridaBean buscarRelatorioEmpresaCorrida( + List lsDadosRelatorio, ResultSet rset) throws SQLException { for (RelatorioEmpresaCorridaBean rec : lsDadosRelatorio) { - if (rec.getRutaId().equals(rutaId)) { + if (filtraEmpresaCorrida(rec, rset)) { return rec; } } return null; } + protected boolean filtraEmpresaCorrida(RelatorioEmpresaCorridaBean rec, ResultSet rset) throws SQLException { + return rec.getRutaId().equals(rset.getInt(FIELD_RUTA_ID)); + } + protected String getSql(String empresa) { StringBuilder sql = new StringBuilder(); @@ -161,7 +181,7 @@ public class RelatorioEmpresaCorrida extends Relatorio { return sql.toString(); } - private String getSqlKm(String empresa) { + protected String getSqlKm(String empresa) { StringBuilder sql = new StringBuilder(); sql.append("SELECT "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorridaNovoLayout.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorridaNovoLayout.java index 303fa241a..eabacafca 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorridaNovoLayout.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioEmpresaCorridaNovoLayout.java @@ -18,10 +18,11 @@ public class RelatorioEmpresaCorridaNovoLayout extends RelatorioEmpresaCorrida { @Override protected void setDadosBean(ResultSet rset, RelatorioEmpresaCorridaBean bean) throws SQLException { super.setDadosBean(rset, bean); - bean.setDataCorrida(StringUtils.defaultString(rset.getString("dataCorrida"))); - bean.setTurnoOrigem(StringUtils.defaultString(rset.getString("turnoOrigem"))); - bean.setOrigem(StringUtils.defaultString(rset.getString("origem"))); - bean.setDestino(StringUtils.defaultString(rset.getString("destino"))); + bean.setCorridaId(rset.getInt(FIELD_CORRIDA_ID)); + bean.setDataCorrida(StringUtils.defaultString(rset.getString(FIELD_DATA_CORRIDA))); + bean.setTurnoOrigem(StringUtils.defaultString(rset.getString(FIELD_TURNO_ORIGEM))); + bean.setOrigem(StringUtils.defaultString(rset.getString(FIELD_ORIGEM))); + bean.setDestino(StringUtils.defaultString(rset.getString(FIELD_DESTINO))); } @Override @@ -36,17 +37,18 @@ public class RelatorioEmpresaCorridaNovoLayout extends RelatorioEmpresaCorrida { sql.append(" COALESCE(SUM(CASE WHEN cat.grupocategoria_id = 4 THEN b.preciopagado ELSE 0 END), 0) abonos, "); sql.append(" COUNT(b.boleto_id) passageirosTransp, "); sql.append(" TO_CHAR(c.feccorrida, 'dd/mm/yyyy') dataCorrida, "); - sql.append(" TO_CHAR(b.fechorviaje, 'hh24:mi') turnoOrigem, "); + sql.append(" TO_CHAR(c.fechorsalida, 'hh24:mi') turnoOrigem, "); sql.append(" po.descparada origem, "); - sql.append(" pd.descparada destino "); + sql.append(" pd.descparada destino, "); + sql.append(" c.corrida_id "); sql.append("FROM ruta r "); sql.append("LEFT JOIN corrida c ON c.ruta_id = r.ruta_id "); sql.append("INNER JOIN marca m ON m.marca_id = c.marca_id "); sql.append("INNER JOIN empresa e ON e.empresa_id = m.empresa_id "); sql.append("LEFT JOIN boleto b ON b.corrida_id = c.corrida_id AND b.feccorrida = c.feccorrida AND b.motivocancelacion_id IS NULL "); sql.append("LEFT JOIN categoria cat ON cat.categoria_id = b.categoria_id "); - sql.append("LEFT JOIN parada po ON po.parada_id = b.origen_id "); - sql.append("LEFT JOIN parada pd ON pd.parada_id = b.destino_id "); + sql.append("LEFT JOIN parada po ON po.parada_id = c.origen_id "); + sql.append("LEFT JOIN parada pd ON pd.parada_id = c.destino_id "); sql.append("WHERE c.activo <> 0 "); sql.append("AND r.activo = 1 "); sql.append(StringUtils.isBlank(empresa) ? "" : "AND e.empresa_id = :empresa_id "); @@ -56,13 +58,47 @@ public class RelatorioEmpresaCorridaNovoLayout extends RelatorioEmpresaCorrida { sql.append(" e.nombempresa, "); sql.append(" r.ruta_id, "); sql.append(" r.descruta, "); - sql.append(" c.feccorrida, "); + sql.append(" TO_CHAR(c.feccorrida, 'dd/mm/yyyy'), "); sql.append(" po.descparada, "); sql.append(" pd.descparada, "); - sql.append(" b.fechorviaje "); + sql.append(" TO_CHAR(c.fechorsalida, 'hh24:mi'), "); + sql.append(" c.corrida_id "); sql.append("ORDER BY r.ruta_id "); return sql.toString(); } + + @Override + protected String getSqlKm(String empresa) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT "); + sql.append("c.ruta_id ruta_id, "); + sql.append("c.corrida_id, "); + sql.append("COALESCE(SUM(t.cantkmreal), 0) kmtotal, "); + 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("TO_CHAR(c.feccorrida,'dd/mm/yyyy') datacorrida "); + 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 autobus a ON a.autobus_id = ct.autobus_id "); + sql.append("INNER JOIN marca m ON m.marca_id = c.marca_id "); + sql.append("INNER JOIN empresa e ON e.empresa_id = m.empresa_id "); + sql.append("WHERE c.activo <> 0 "); + sql.append("AND ct.activo = 1 "); + sql.append(StringUtils.isBlank(empresa) ? "" : "AND e.empresa_id = :empresa_id "); + sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal "); + sql.append("GROUP BY c.ruta_id, "); + sql.append("c.corrida_id, "); + sql.append("TO_CHAR(c.feccorrida,'dd/mm/yyyy') "); + sql.append("ORDER BY c.ruta_id "); + + return sql.toString(); + } + + @Override + protected boolean filtraEmpresaCorrida(RelatorioEmpresaCorridaBean rec, ResultSet rset) throws SQLException { + return rec.getCorridaId().equals(rset.getInt(FIELD_CORRIDA_ID)); + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaCorridaBean.java b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaCorridaBean.java index 0d99503f0..65015dfdd 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaCorridaBean.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/utilitarios/RelatorioEmpresaCorridaBean.java @@ -5,6 +5,7 @@ import java.math.BigDecimal; public class RelatorioEmpresaCorridaBean { private Integer rutaId; + private Integer corridaId; private String empresa; private String linea; private BigDecimal boletos; @@ -147,4 +148,12 @@ public class RelatorioEmpresaCorridaBean { this.turnoOrigem = turnoOrigem; } + public Integer getCorridaId() { + return corridaId; + } + + public void setCorridaId(Integer corridaId) { + this.corridaId = corridaId; + } + }