diff --git a/pom.xml b/pom.xml index 942b34d7c..9fb3f3993 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 br.com.rjconsultores ventaboletosadm - 1.24.0 + 1.24.1 war diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiroTrecho.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiroTrecho.java index f2a414fa0..22d97a805 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiroTrecho.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioAproveitamentoFinanceiroTrecho.java @@ -1,6 +1,3 @@ -/** - * - */ package com.rjconsultores.ventaboletos.relatorios.impl; import java.math.BigDecimal; @@ -47,8 +44,10 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { Map> mapRutaTrecho = (Map>) parametros.get("MAPRUTATRECHO"); for (Entry> entry : mapRutaTrecho.entrySet()) { - if(entry.getValue() != null && !entry.getValue().isEmpty()) { + if(entry.getValue() != null && !entry.getValue().isEmpty()&& !entry.getValue().isEmpty()) { paradasIds.append(entry.getValue().get(0).getOrigenId()+","+entry.getValue().get(entry.getValue().size()-1).getOrigenId()+","); + }else { + continue; } if (paradasIds.length() > 0) { paradasIds.delete(paradasIds.length() - 1, paradasIds.length()); @@ -56,7 +55,7 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { String sqlCombinacoes = gerarCombinacaoTrechos(parametros); StringBuilder sql = getSQL(parametros, sqlCombinacoes, paradasIds, entry.getKey() ); - paradasIds = new StringBuilder(); + NamedParameterStatement stmt = new NamedParameterStatement(conexao, sql.toString()); @@ -70,6 +69,7 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { while (rset2.next()) { Map dataResult = new HashMap(); + dataResult.put("LINHA", rset2.getString("linha")); dataResult.put("NUMLINHA", rset2.getString("numLinha")); dataResult.put("SENTIDO", rset2.getString("sentido")); @@ -176,8 +176,60 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { this.dados.add(dataResult); } + + StringBuilder sql2 = buscarTotalViagem(parametros, paradasIds, entry.getKey() ); + stmt = new NamedParameterStatement(conexao, sql2.toString()); + stmt.setInt("EMPRESA_ID", Integer.valueOf(parametros.get("EMPRESA_ID").toString())); + stmt.setTimestamp("DATA_INICIAL", new Timestamp(DateUtil.inicioFecha((Date) parametros.get("DATA_INICIAL")).getTime())); + stmt.setTimestamp("DATA_FINAL", new Timestamp(DateUtil.fimFecha((Date) parametros.get("DATA_FINAL")).getTime())); + ResultSet rset3 = stmt.executeQuery(); + + List> dadosAux = new ArrayList>(); + while (rset3.next()) { + + Map dataResult = new HashMap(); + + dataResult.put("SERVICO", rset3.getString("servico")); + + Integer viagens =0; + + Integer segQtde = rset3.getInt("'2'_QTDE"); + viagens = viagens + segQtde; + + Integer terQtde = rset3.getInt("'3'_QTDE"); + viagens = viagens .intValue() + terQtde.intValue(); + + Integer quaQtde = rset3.getInt("'4'_QTDE"); + viagens = viagens.intValue() + quaQtde.intValue(); + + Integer quiQtde = rset3.getInt("'5'_QTDE"); + viagens = viagens.intValue() + quiQtde.intValue(); + + Integer sexQtde = rset3.getInt("'6'_QTDE"); + viagens = viagens.intValue() + sexQtde.intValue(); + + Integer sabQtde = rset3.getInt("'7'_QTDE"); + viagens = viagens.intValue() + sabQtde.intValue(); + + Integer domQtde = rset3.getInt("'1'_QTDE"); + viagens = viagens.intValue() + domQtde.intValue(); + + dataResult.put("VIAGENS", new BigDecimal(viagens)); + + dadosAux.add(dataResult); + } + + for (Map map : dados) { + for (Map mapAux : dadosAux) { + if(map.get("SERVICO").equals(mapAux.get("SERVICO"))) { + map.put("VIAGENS_TOTAL_GERAL", new BigDecimal(recuperarMaiorValorQuantidadeViagem(map.get("SERVICO"), dados))); + map.put("VIAGENS_TOTAL", mapAux.get("VIAGENS")); + } + } + } - this.resultSet = rset2; + paradasIds = new StringBuilder(); + this.resultSet = rset3; } Collections.sort(dados, new Comparator> () { @@ -305,7 +357,7 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { sql.append(" " +sqlCombinacoes+ " "); } - sql.append(" and c.MOTIVOCANCELACION_ID is null "); + sql.append(" and c.MOTIVOCANCELACION_ID is null "); sql.append(" GROUP by r.DESCRUTA, r.ruta_id, r.indsentidoida, r.NUMRUTA, da.cantasientos, "); sql.append(" to_char( co.FECCORRIDA, 'D'), TO_CHAR(co.fechorsalidaoriginal ,'HH24:mi'), "); sql.append(" co.CORRIDA_ID, ORI.descparada, DES.descparada, ORI.parada_id, DES.parada_id "); @@ -320,7 +372,6 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { sql.append(") "); sql.append(") TB "); sql.append(")TB2 "); - System.out.println(sql); return sql; } }); @@ -420,5 +471,64 @@ public class RelatorioAproveitamentoFinanceiroTrecho extends Relatorio { return sql.toString(); } + //método criado para buscar a soma das viagens da semana ( nao foi possivel fazer no jasper + private StringBuilder buscarTotalViagem(Map parametros, StringBuilder paradasIds, Integer rutaId) { + + StringBuilder sql = new StringBuilder(); + sql.append("SELECT * "); + sql.append(" FROM"); + sql.append(" (SELECT "); + sql.append(" to_char(c.FECCORRIDA, 'D') AS dia,"); + sql.append(" coalesce(count(DISTINCT to_char(co.FECCORRIDA, 'WW')), 0) AS qtde, "); + sql.append(" TO_CHAR(co.fechorsalidaoriginal, 'HH24:mi') AS horario, "); + sql.append(" co.CORRIDA_ID AS servico"); + sql.append(" FROM boleto c"); + sql.append(" RIGHT OUTER JOIN corrida co ON c.CORRIDA_ID = co.CORRIDA_ID "); + sql.append(" AND c.FECCORRIDA = co.FECCORRIDA"); + sql.append(" AND co.ACTIVO = 1"); + sql.append(" INNER JOIN ruta r ON co.RUTA_ID = r.RUTA_ID "); + sql.append(" AND r.ACTIVO = 1 "); + sql.append(" INNER JOIN MARCA m ON m.marca_id = co.marca_id "); + sql.append(" AND m.activo = 1"); + sql.append(" LEFT JOIN rol_operativo ro ON ro.roloperativo_id = co.roloperativo_id "); + sql.append(" LEFT JOIN diagrama_autobus da ON ro.diagramaautobus_id = da.diagramaautobus_id "); + sql.append(" WHERE co.activo = 1"); + sql.append(" AND c.activo = 1 "); + sql.append(" AND m.EMPRESA_ID =:EMPRESA_ID "); + sql.append(" AND co.FECCORRIDA BETWEEN :DATA_INICIAL and :DATA_FINAL "); + if (parametros.get("LINHAS") != null && !possuiFiltroTodos("LINHAS")) { + sql.append(" and co.ruta_id IN (" + rutaId + ")"); + } + sql.append(" AND c.MOTIVOCANCELACION_ID IS NULL "); + sql.append(" GROUP BY "); + sql.append(" to_char(c.FECCORRIDA, 'D'), "); + sql.append(" TO_CHAR(co.fechorsalidaoriginal, 'HH24:mi'),"); + sql.append(" co.CORRIDA_ID"); + sql.append(" ORDER BY r.DESCRUTA,"); + sql.append(" r.indsentidoida DESC, to_char(c.FECCORRIDA, 'D')) PIVOT (max(qtde) qtde "); + sql.append(" FOR dia in ('1', '2', '3', '4', '5', '6', '7')) TB "); + + return sql; + } + + + private int recuperarMaiorValorQuantidadeViagem(Object servico, List> dados){ + + String[] dias = {"SEG_QTDE", "TER_QTDE", "QUA_QTDE", "QUI_QTDE", "SEX_QTDE","SAB_QTDE", "DOM_QTDE"}; + + String servicoaux = (String) servico; + Integer qtdViagens = 0; + + for (String dia : dias) { + int max = 0; + for (Map map : dados) { + if(map.get("SERVICO").toString().equals(servicoaux.toString()) && map.get(dia) != null && Integer.valueOf(((BigDecimal) map.get(dia)).intValue()) > max){ + max = Integer.valueOf(((BigDecimal) map.get(dia)).intValue()); + } + } + qtdViagens = qtdViagens + max; + } + return qtdViagens; + } } diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jasper index aee616eac..995814803 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jrxml index 2b244eb3d..30563e1f3 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioAproveitamentoFinanceiroTrecho.jrxml @@ -1,9 +1,9 @@ - + - - + +