fixes bug#23146
dev: WALLACE qua: git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@108988 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
b713c8fd0c
commit
7675a5e836
|
@ -2,19 +2,15 @@ package com.rjconsultores.ventaboletos.relatorios.impl;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
|
|
||||||
import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource;
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.ArrayDataSource;
|
||||||
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
|
import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio;
|
||||||
|
import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
|
||||||
|
|
||||||
public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends Relatorio {
|
public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends Relatorio {
|
||||||
|
|
||||||
|
@ -23,26 +19,34 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
|
|
||||||
this.setCustomDataSource(new ArrayDataSource(this) {
|
this.setCustomDataSource(new ArrayDataSource(this) {
|
||||||
|
|
||||||
|
@SuppressWarnings("rawtypes")
|
||||||
public void initDados() throws Exception {
|
public void initDados() throws Exception {
|
||||||
Connection conexao = this.relatorio.getConexao();
|
Connection conexao = this.relatorio.getConexao();
|
||||||
Map<String, Object> parametros = this.relatorio.getParametros();
|
Map<String, Object> parametros = this.relatorio.getParametros();
|
||||||
|
String dataDe = (String) parametros.get("DATA_DE"), dataAte = (String) parametros.get("DATA_ATE"), linhasIds = null;
|
||||||
String dataDe = (String) parametros.get("DATA_DE");
|
Boolean isLinhas = false;
|
||||||
|
Integer empresaId = null;
|
||||||
String dataAte = (String) parametros.get("DATA_ATE");
|
|
||||||
|
|
||||||
|
|
||||||
String linhasIds = (String) parametros.get("LINHAS");
|
if (parametros.get("LINHAS") != null) {
|
||||||
String empresaId = (String) parametros.get("EMPRESA_IDS");
|
linhasIds = (String) parametros.get("LINHAS");
|
||||||
|
isLinhas = true;
|
||||||
|
}
|
||||||
|
if (parametros.get("EMPRESA_IDS") != null) {
|
||||||
|
empresaId = Integer.parseInt((String) parametros.get("EMPRESA_IDS"));
|
||||||
|
}
|
||||||
|
String sql = getSql(isLinhas);
|
||||||
|
|
||||||
String sql = getSql(dataDe, dataAte, linhasIds, empresaId);
|
NamedParameterStatement ps = new NamedParameterStatement(conexao, sql.toString());
|
||||||
|
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
|
||||||
PreparedStatement ps = conexao.prepareStatement(sql.toString());
|
|
||||||
|
|
||||||
|
ps.setInt("empresa_id", empresaId);
|
||||||
|
if (isLinhas) {
|
||||||
|
ps.setString("linhas_id", linhasIds);
|
||||||
|
}
|
||||||
|
ps.setTimestamp("dataIni", new java.sql.Timestamp(sdf.parse(dataDe).getTime()));
|
||||||
|
ps.setTimestamp("dataFim", new java.sql.Timestamp(sdf.parse(dataAte).getTime()));
|
||||||
ResultSet rset = ps.executeQuery();
|
ResultSet rset = ps.executeQuery();
|
||||||
BigDecimal lugaresOfertados = BigDecimal.ZERO;
|
|
||||||
|
|
||||||
|
|
||||||
while (rset.next()) {
|
while (rset.next()) {
|
||||||
boolean agrupar = false;
|
boolean agrupar = false;
|
||||||
Map<String, Object> dataResult = new HashMap<String, Object>();
|
Map<String, Object> dataResult = new HashMap<String, Object>();
|
||||||
|
@ -54,23 +58,33 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
dataResult.put("totalida", rset.getLong("totalida"));
|
dataResult.put("totalida", rset.getLong("totalida"));
|
||||||
dataResult.put("totalvolta", rset.getLong("totalvolta"));
|
dataResult.put("totalvolta", rset.getLong("totalvolta"));
|
||||||
dataResult.put("totalReceita", rset.getBigDecimal("totalReceita"));
|
dataResult.put("totalReceita", rset.getBigDecimal("totalReceita"));
|
||||||
|
dataResult.put("numRuta", rset.getString("numRuta"));
|
||||||
|
|
||||||
for (Iterator iterator = dados.iterator(); iterator.hasNext();) {
|
for (Iterator iterator = dados.iterator(); iterator.hasNext();) {
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
Map<String, Object> map = (Map<String, Object>) iterator.next();
|
Map<String, Object> map = (Map<String, Object>) iterator.next();
|
||||||
String origem = map.get("origem").toString();
|
String origem = map.get("origem").toString();
|
||||||
String destino = map.get("destino").toString();
|
String destino = map.get("destino").toString();
|
||||||
|
String numRuta = map.get("numRuta").toString();
|
||||||
|
|
||||||
Long ida = (Long) map.get("totalida");
|
Long ida = (Long) map.get("totalida");
|
||||||
Long volta = (Long) map.get("totalvolta");
|
Long volta = (Long) map.get("totalvolta");
|
||||||
|
BigDecimal total = (BigDecimal) map.get("totalReceita");
|
||||||
|
|
||||||
if (origem.equals(rset.getString("destino")) && destino.equals(rset.getString("origem"))) {
|
if (origem.equals(rset.getString("destino"))
|
||||||
|
&& destino.equals(rset.getString("origem"))
|
||||||
|
&& numRuta.equals(rset.getString("numRuta"))) {
|
||||||
agrupar = true;
|
agrupar = true;
|
||||||
if (ida == 0) {
|
if (ida == 0) {
|
||||||
map.put("totalida", rset.getLong("totalida"));
|
map.put("totalida", rset.getLong("totalida"));
|
||||||
|
total = total.add(rset.getBigDecimal("totalReceita"));
|
||||||
|
map.put("totalReceita", total);
|
||||||
}
|
}
|
||||||
if (volta == 0) {
|
if (volta == 0) {
|
||||||
map.put("totalvolta", rset.getLong("totalvolta"));
|
map.put("totalvolta", rset.getLong("totalvolta"));
|
||||||
|
total = total.add(rset.getBigDecimal("totalReceita"));
|
||||||
|
map.put("totalReceita", total);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -85,88 +99,6 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
|
|
||||||
this.resultSet = rset;
|
this.resultSet = rset;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ordenarTrechosSentidoIda(List<Map<String, Object>> dados, String linhasIds) {
|
|
||||||
|
|
||||||
List<String> listOrigemDestino = this.buscarSequenciaOrigemDestinoIda(linhasIds);
|
|
||||||
|
|
||||||
if (listOrigemDestino.isEmpty()){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
List<Map<String, Object>> dadosOrdenados = new ArrayList<Map<String,Object>>();
|
|
||||||
|
|
||||||
|
|
||||||
for(Map<String, Object> dado : dados){
|
|
||||||
|
|
||||||
Map<String, Object> dataResult = new HashMap<String, Object>();
|
|
||||||
|
|
||||||
String origemAtual = dado.get("origemId").toString();
|
|
||||||
String destinoAtual = dado.get("destinoId").toString();
|
|
||||||
|
|
||||||
String trecho = origemAtual.concat("|").concat(destinoAtual);
|
|
||||||
|
|
||||||
if (!listOrigemDestino.contains(trecho) ){
|
|
||||||
origemAtual = dado.get("destino").toString();
|
|
||||||
destinoAtual = dado.get("origem").toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
dataResult.put("origem", origemAtual);
|
|
||||||
dataResult.put("destino", destinoAtual);
|
|
||||||
dataResult.put("km", dado.get("km"));
|
|
||||||
dataResult.put("totalida", dado.get("totalida"));
|
|
||||||
dataResult.put("totalvolta", dado.get("totalvolta"));
|
|
||||||
|
|
||||||
dadosOrdenados.add(dataResult);
|
|
||||||
}
|
|
||||||
|
|
||||||
dados.clear();
|
|
||||||
dados.addAll(dadosOrdenados);
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private List<String> buscarSequenciaOrigemDestinoIda(String linhasIds) {
|
|
||||||
StringBuilder query = new StringBuilder();
|
|
||||||
query.append("SELECT ");
|
|
||||||
query.append("ori.parada_id || '|' || des.parada_id AS trecho ");
|
|
||||||
query.append("FROM ");
|
|
||||||
query.append("ruta r ");
|
|
||||||
query.append("JOIN RUTA_combinacion rc ON rc.ruta_id = r.ruta_id ");
|
|
||||||
query.append("JOIN RUTA_secuencia rs ON rs.ruta_id = r.ruta_id ");
|
|
||||||
query.append("INNER JOIN tramo tr ON tr.TRAMO_ID =rc.TRAMO_ID AND tr.ACTIVO = 1 ");
|
|
||||||
query.append("JOIN parada ori ON\tori.parada_id = tr.origen_id ");
|
|
||||||
query.append("JOIN parada des ON\tdes.parada_id = tr.destino_id ");
|
|
||||||
query.append(" ");
|
|
||||||
query.append("WHERE ");
|
|
||||||
query.append(" r.NUMRUTA = '").append(linhasIds).append("' ");
|
|
||||||
query.append("AND r.INDSENTIDOIDA =1 ");
|
|
||||||
query.append("AND rc.ACTIVO =1 and rs.ACTIVO =1");
|
|
||||||
query.append("AND r.ACTIVO =1 ");
|
|
||||||
query.append("ORDER BY Rs.numsecuencia ");
|
|
||||||
|
|
||||||
List<String> listOrigemDestino = new ArrayList<String>();
|
|
||||||
|
|
||||||
try {
|
|
||||||
|
|
||||||
Connection conexao = this.relatorio.getConexao();
|
|
||||||
PreparedStatement ps= conexao.prepareStatement(query.toString());
|
|
||||||
|
|
||||||
ResultSet rset = ps.executeQuery();
|
|
||||||
|
|
||||||
while (rset.next()) {
|
|
||||||
listOrigemDestino.add(rset.getString("trecho"));
|
|
||||||
}
|
|
||||||
|
|
||||||
rset.close();
|
|
||||||
ps.close();
|
|
||||||
|
|
||||||
} catch (SQLException e) {
|
|
||||||
throw new RuntimeException("Erro ao buscar sequencia da linha",e);
|
|
||||||
}
|
|
||||||
return listOrigemDestino;
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,15 +106,15 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
protected void processaParametros() throws Exception {
|
protected void processaParametros() throws Exception {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getSql(String dataDe, String dataAte, String linhasIds,
|
private String getSql(Boolean linhasIds) {
|
||||||
String empresaId) {
|
|
||||||
StringBuilder sql = new StringBuilder();
|
StringBuilder sql = new StringBuilder();
|
||||||
|
|
||||||
sql.append(" SELECT DISTINCT ");
|
sql.append(" SELECT DISTINCT ");
|
||||||
sql.append(" sum(b.preciopagado + b.importepedagio) as totalReceita, ");
|
sql.append(" sum(b.preciopagado + b.importepedagio) as totalReceita, ");
|
||||||
sql.append(" tar.precio as tarifa, ");
|
sql.append(" tar.precio as tarifa, ");
|
||||||
sql.append(" e.nombempresa empresa, ");
|
sql.append(" e.nombempresa empresa, ");
|
||||||
sql.append(" r.descruta linha, ");
|
sql.append(" r.descruta linha, ");
|
||||||
|
sql.append(" r.NUMRUTA, ");
|
||||||
sql.append(" ori.descparada AS origem, ");
|
sql.append(" ori.descparada AS origem, ");
|
||||||
sql.append(" des.descparada AS destino, ");
|
sql.append(" des.descparada AS destino, ");
|
||||||
sql.append(" MAX(tr.CANTKMREAL) as km, ");
|
sql.append(" MAX(tr.CANTKMREAL) as km, ");
|
||||||
|
@ -209,7 +141,7 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
sql.append(" JOIN ruta r ON r.ruta_id = b.ruta_id ");
|
sql.append(" JOIN ruta r ON r.ruta_id = b.ruta_id ");
|
||||||
sql.append(" JOIN RUTA_COMBINACION rc ON rc.ruta_id = r.ruta_id and rc.activo = 1 ");
|
sql.append(" JOIN RUTA_COMBINACION rc ON rc.ruta_id = r.ruta_id and rc.activo = 1 ");
|
||||||
sql.append(" INNER JOIN tramo tr ON tr.TRAMO_ID =rc.TRAMO_ID AND tr.ORIGEN_ID = ori.PARADA_ID AND tr.DESTINO_ID = des.PARADA_ID AND tr.ACTIVO = 1 ");
|
sql.append(" INNER JOIN tramo tr ON tr.TRAMO_ID =rc.TRAMO_ID AND tr.ORIGEN_ID = ori.PARADA_ID AND tr.DESTINO_ID = des.PARADA_ID AND tr.ACTIVO = 1 ");
|
||||||
sql.append(" JOIN clase_servicio cs ON (b.claseservicio_id = cs.claseservicio_id ) ") ;
|
sql.append(" JOIN clase_servicio cs ON (b.claseservicio_id = cs.claseservicio_id ) ");
|
||||||
sql.append(" INNER JOIN vigencia_tarifa vt ON b.fechorventa BETWEEN vt.feciniciovigencia AND vt.fecfinvigencia AND vt.activo = 1 ");
|
sql.append(" INNER JOIN vigencia_tarifa vt ON b.fechorventa BETWEEN vt.feciniciovigencia AND vt.fecfinvigencia AND vt.activo = 1 ");
|
||||||
sql.append(" INNER JOIN tarifa tar ON (tar.ruta_id = b.ruta_id ");
|
sql.append(" INNER JOIN tarifa tar ON (tar.ruta_id = b.ruta_id ");
|
||||||
sql.append(" AND tar.marca_id = m.marca_id ");
|
sql.append(" AND tar.marca_id = m.marca_id ");
|
||||||
|
@ -217,29 +149,28 @@ public class RelatorioQuadroDemonstrativoMovimentoPassageirosNovoLayout extends
|
||||||
sql.append(" AND tar.vigenciatarifa_id = vt.vigenciatarifa_id ");
|
sql.append(" AND tar.vigenciatarifa_id = vt.vigenciatarifa_id ");
|
||||||
sql.append(" AND tar.origen_id = b.origen_id ");
|
sql.append(" AND tar.origen_id = b.origen_id ");
|
||||||
sql.append(" AND tar.destino_id = b.destino_id ");
|
sql.append(" AND tar.destino_id = b.destino_id ");
|
||||||
sql.append("AND tar.activo = 1 ) ");
|
sql.append("AND tar.activo = 1 ) ");
|
||||||
sql.append(" WHERE b.empresacorrida_id IN (").append(empresaId).append(") ");
|
sql.append(" WHERE b.empresacorrida_id IN :empresa_id ");
|
||||||
|
|
||||||
sql.append(" AND b.motivocancelacion_id is null ");
|
sql.append(" AND b.motivocancelacion_id is null ");
|
||||||
|
|
||||||
if (!StringUtils.isBlank(linhasIds)) {
|
if (linhasIds) {
|
||||||
sql.append(" AND r.NUMRUTA = '").append(linhasIds).append("' ");
|
sql.append(" AND r.NUMRUTA = :linhas_id ");
|
||||||
}
|
}
|
||||||
|
|
||||||
sql.append(" AND b.feccorrida BETWEEN To_date('").append(dataDe).append("', 'dd/mm/yyyy') ");
|
sql.append(" AND b.feccorrida BETWEEN :dataIni AND :dataFim ");
|
||||||
sql.append(" AND To_date('").append(dataAte).append("', 'dd/mm/yyyy') ");
|
|
||||||
|
sql.append(" GROUP BY ");
|
||||||
sql.append(" GROUP BY ");
|
|
||||||
sql.append(" tar.precio, ");
|
sql.append(" tar.precio, ");
|
||||||
sql.append(" e.nombempresa, ");
|
sql.append(" e.nombempresa, ");
|
||||||
sql.append(" r.numruta, ");
|
|
||||||
sql.append(" r.descruta, ");
|
sql.append(" r.descruta, ");
|
||||||
|
sql.append(" r.numruta, ");
|
||||||
sql.append(" ori.descparada, ");
|
sql.append(" ori.descparada, ");
|
||||||
sql.append(" des.descparada, rc.rutacombinacion_id ");
|
sql.append(" des.descparada, rc.rutacombinacion_id ");
|
||||||
sql.append(" ORDER BY ");
|
sql.append(" ORDER BY ");
|
||||||
sql.append(" r.descruta, ");
|
sql.append(" r.descruta, ");
|
||||||
sql.append(" rc.rutacombinacion_id ");
|
sql.append(" rc.rutacombinacion_id ");
|
||||||
|
|
||||||
return sql.toString();
|
return sql.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue