diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioBpeNumeracaoReuso.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioBpeNumeracaoReuso.java index b28bf4513..3b65644af 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioBpeNumeracaoReuso.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioBpeNumeracaoReuso.java @@ -2,20 +2,23 @@ package com.rjconsultores.ventaboletos.relatorios.impl; import java.sql.Connection; import java.sql.ResultSet; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Map; import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; -import com.rjconsultores.ventaboletos.service.ConstanteService; +import com.rjconsultores.ventaboletos.relatorios.utilitarios.RelatorioBpeNumeracaoReusoBean; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; -import com.rjconsultores.ventaboletos.web.utilerias.spring.AppContext; + +import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class RelatorioBpeNumeracaoReuso extends Relatorio { - private ConstanteService constanteService; + private List lsDadosRelatorio; public RelatorioBpeNumeracaoReuso(Map parametros, Connection conexao) throws Exception { @@ -32,7 +35,6 @@ public class RelatorioBpeNumeracaoReuso extends Relatorio { Date dtInicio = (Date) parametros.get("DATA_INICIO"); Date dtFim = (Date) parametros.get("DATA_FIM"); - NamedParameterStatement ps = new NamedParameterStatement(conexao, sql.toString()); if(dtInicio != null && dtFim != null) { ps.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); @@ -40,40 +42,19 @@ public class RelatorioBpeNumeracaoReuso extends Relatorio { } ResultSet rset = ps.executeQuery(); + lsDadosRelatorio = new ArrayList(); - while (rset.next()) { - Map dataResult = new HashMap(); - - dataResult.put("numeroBPE", rset.getString("numeroBPE")); - dataResult.put("serieBPE", rset.getString("serieBPE")); - dataResult.put("estado", rset.getString("estado")); - this.dados.add(dataResult); - } - - if(parametros.get("ESTADOS_ID") == null){ - sql = getSqlBuscarInicialFinal(parametros); - - dtInicio = (Date) parametros.get("DATA_INICIO"); - dtFim = (Date) parametros.get("DATA_FIM"); - - - ps = new NamedParameterStatement(conexao, sql.toString()); - if(dtInicio != null && dtFim != null) { - ps.setString("dataInicio", DateUtil.getStringDate(dtInicio, "dd/MM/yyyy") + " 00:00:00"); - ps.setString("dataFinal", DateUtil.getStringDate(dtFim, "dd/MM/yyyy") + " 23:59:59"); - } - - rset = ps.executeQuery(); - - while (rset.next()) { - parametros.put("inicialAutorizado", rset.getString("inicialAutorizado")); - parametros.put("finalAutorizado", rset.getString("finalAutorizado")); - } - - } - + while (rset.next()) { + RelatorioBpeNumeracaoReusoBean bean = new RelatorioBpeNumeracaoReusoBean(); + bean.setEstado(rset.getString("estado")); + bean.setSerieBPE(rset.getString("serieBPE")); + bean.setNumeroBPE( rset.getInt("numeroBPE")); + lsDadosRelatorio.add(bean); + } + buscarInicialFinalPorUf(); + setLsDadosRelatorio(lsDadosRelatorio); this.resultSet = rset; - } + } }); } @@ -83,81 +64,83 @@ public class RelatorioBpeNumeracaoReuso extends Relatorio { private String getSql(Map parametros) { - StringBuilder sql = new StringBuilder(); - constanteService = (ConstanteService) AppContext.getApplicationContext().getBean("constanteService"); String estados = (String) parametros.get("ESTADOS_ID"); String empresaId = (String) parametros.get("EMPRESA_ID"); Date dtInicio = (Date) parametros.get("DATA_INICIO"); Date dtFim = (Date) parametros.get("DATA_FIM"); - - getSelectFrom(sql); - - getWhere(sql, constanteService, estados, empresaId, dtInicio, dtFim, false); + String sql = getSql( estados, empresaId, dtInicio, dtFim); - sql.append(" group by TO_NUMBER(BOL.NUM_BPE) , BOL.numserie_bpe, E.nombestado ORDER BY TO_NUMBER(BOL.NUM_BPE), BOL.NUMSERIE_BPE, E.NOMBESTADO ASC "); - return sql.toString(); } - - private String getSqlBuscarInicialFinal(Map parametros) { - StringBuilder sql = new StringBuilder(); - - String estados = (String) parametros.get("ESTADOS_ID"); - String empresaId = (String) parametros.get("EMPRESA_ID"); - Date dtInicio = (Date) parametros.get("DATA_INICIO"); - Date dtFim = (Date) parametros.get("DATA_FIM"); + private String getSql(String estados, String empresaId, Date dtInicio, Date dtFim) { - - getSelectFromInicialFinalAutorizado(sql); - - getWhere(sql, constanteService, estados, empresaId, dtInicio, dtFim, true); - - - return sql.toString(); - } - - private void getWhere(StringBuilder sql, ConstanteService constanteService, String estados, String empresaId, Date dtInicio, Date dtFim, boolean buscarUltimoFinal) { - sql.append(" WHERE r.num_bpe IS NULL and e.ACTIVO = 1 "); - + StringBuilder sql = new StringBuilder(); + + sql.append("select tabela.estado as estado , tabela.serieBPE as serieBPE, to_number(tabela.numeroBPE) as numeroBPE, estadoId as estadoId from ( select (to_number(bol.num_bpe) + 1) as numeroBPE, BOL.NUMSERIE_BPE as serieBPE, E.NOMBESTADO as estado, e.estado_id as estadoId "); + sql.append(" FROM BOLETO bol "); + sql.append(" LEFT outer JOIN BOLETO r on bol.num_bpe + 1 = r.num_bpe "); + sql.append(" inner join parada origem on origem.parada_id = bol.origen_id "); + sql.append(" inner join ciudad cidade on cidade.ciudad_id = origem.ciudad_id "); + sql.append(" inner join estado e on (e.estado_id = cidade.estado_id) "); if (empresaId != null) { - sql.append(" AND ep.EMPRESA_ID IN( " + empresaId + " ) "); + sql.append(" AND bol.EMPRESACORRIDA_ID IN( " + empresaId + " ) "); } if (estados != null) { sql.append(" AND e.ESTADO_ID IN ( " + estados + " )"); } sql.append(" and bol.fechorventa between to_date(:dataInicio,'dd/MM/yyyy hh24:mi:ss') and to_date(:dataFinal,'dd/MM/yyyy hh24:mi:ss') "); - sql.append(" and not exists (select * from bpe_ctrl_disponibilidade bcd where bcd.BPE_REJEITADO_ID = bpe.bpe_id and activo = 1) "); - - if (buscarUltimoFinal) { - sql.append(" ) tabela "); - } - } - - private void getSelectFrom(StringBuilder sql) { - sql.append("select (to_number(bol.num_bpe) + 1) as numeroBPE, BOL.NUMSERIE_BPE as serieBPE, E.NOMBESTADO as estado "); + sql.append(" minus "); + sql.append("select to_number(bol.num_bpe) as numeroBPE , BOL.NUMSERIE_BPE as serieBPE, E.NOMBESTADO as estado, e.estado_id as estadoId "); sql.append(" FROM BOLETO bol "); - sql.append(" LEFT outer JOIN BOLETO r on bol.num_bpe + 1 = r.num_bpe "); - sql.append(" LEFT JOIN BPE bpe ON bol.BOLETO_ID = bpe.BOLETO_ID and bpe.activo = 1 "); - sql.append(" LEFT JOIN estado e ON e.CODIBGE = bpe.UF "); - sql.append(" LEFT JOIN marca ma ON bol.MARCA_ID = ma.MARCA_ID "); - sql.append(" LEFT JOIN empresa ep on ma.EMPRESA_ID = ep.EMPRESA_ID "); - - } - - private void getSelectFromInicialFinalAutorizado(StringBuilder sql){ - - sql.append("select min(tabela.numeroBPE) as inicialAutorizado, max(tabela.numeroBPE) as finalAutorizado from (SELECT (to_number(bol.num_bpe) + 1) AS numeroBPE "); - sql.append(" FROM BOLETO bol "); - sql.append(" LEFT outer JOIN BOLETO r on bol.num_bpe + 1 = r.num_bpe "); - sql.append(" LEFT JOIN BPE bpe ON bol.BOLETO_ID = bpe.BOLETO_ID and bpe.activo = 1 "); - sql.append(" LEFT JOIN estado e ON e.codibge = bpe.uf"); - sql.append(" LEFT JOIN marca ma ON bol.marca_id = ma.marca_id"); - sql.append(" LEFT JOIN empresa ep ON ma.empresa_id = ep.empresa_id"); - - + sql.append(" inner join parada origem on origem.parada_id = bol.origen_id "); + sql.append(" inner join ciudad cidade on cidade.ciudad_id = origem.ciudad_id "); + sql.append(" inner join estado e on (e.estado_id = cidade.estado_id) "); + if (empresaId != null) { + sql.append(" AND bol.EMPRESACORRIDA_ID IN( " + empresaId + " ) "); + } + if (estados != null) { + sql.append(" AND e.ESTADO_ID IN ( " + estados + " )"); + } + sql.append(" ) tabela "); + sql.append(" group by tabela.estado, tabela.serieBPE, numeroBPE, estadoId "); + sql.append(" ORDER BY tabela.estado, tabela.serieBPE, tabela.numeroBPE ASC "); + return sql.toString(); + } + public void setLsDadosRelatorio(List lsDadosRelatorio) { + this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); + this.lsDadosRelatorio = lsDadosRelatorio; + } + private void buscarInicialFinalPorUf() { + + String estado = ""; + List bpes = new ArrayList(); + Map estados = converterListaParaMap(lsDadosRelatorio); + + for (Map.Entry entry : estados.entrySet()) { + estado = entry.getValue(); + if(estado != null){ + for (RelatorioBpeNumeracaoReusoBean relatorio2 : lsDadosRelatorio) { + if(estado.equals(relatorio2.getEstado())){ + bpes.add(relatorio2.getNumeroBPE()); + } + } + for (RelatorioBpeNumeracaoReusoBean relatorio2 : lsDadosRelatorio) { + if(estado.equals(relatorio2.getEstado())){ + relatorio2.setFinalAutorizado(bpes.get(bpes.size()-1)); + } + } + } + } } + public Map converterListaParaMap(List list) { + Map map = new HashMap(); + for (RelatorioBpeNumeracaoReusoBean relatorio : list) { + map.put(relatorio.getEstado(), relatorio.getEstado()); + } + return map; + } } \ No newline at end of file