Divergência Relatório Empresa ônibus x Empresa Corrida (bug #6270)

Tempo: 04 horas

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Web/trunk/ventaboletos@44251 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2015-05-21 18:10:03 +00:00
parent d13fc8f6c0
commit a3dd50cbc5
1 changed files with 23 additions and 26 deletions

View File

@ -20,7 +20,6 @@ import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement;
public class RelatorioEmpresaCorrida extends Relatorio { public class RelatorioEmpresaCorrida extends Relatorio {
private Logger log = LoggerFactory.getLogger(RelatorioEmpresaCorrida.class); private Logger log = LoggerFactory.getLogger(RelatorioEmpresaCorrida.class);
private List<RelatorioEmpresaCorridaBean> lsDadosRelatorio;
public RelatorioEmpresaCorrida(Map<String, Object> parametros, Connection conexao) throws Exception { public RelatorioEmpresaCorrida(Map<String, Object> parametros, Connection conexao) throws Exception {
super(parametros, conexao); super(parametros, conexao);
@ -54,7 +53,7 @@ public class RelatorioEmpresaCorrida extends Relatorio {
rset = stmt.executeQuery(); rset = stmt.executeQuery();
log.info("Depois de enviar consulta para o banco:" + System.currentTimeMillis()); log.info("Depois de enviar consulta para o banco:" + System.currentTimeMillis());
lsDadosRelatorio = new ArrayList<RelatorioEmpresaCorridaBean>(); List<RelatorioEmpresaCorridaBean> lsDadosRelatorio = new ArrayList<RelatorioEmpresaCorridaBean>();
log.info("Preenchendo bean:" + System.currentTimeMillis()); log.info("Preenchendo bean:" + System.currentTimeMillis());
while (rset.next()) { while (rset.next()) {
@ -70,6 +69,7 @@ public class RelatorioEmpresaCorrida extends Relatorio {
} }
log.info("Fim bean:" + System.currentTimeMillis()); log.info("Fim bean:" + System.currentTimeMillis());
log.info("empresa:" + empresa + ";fecinicio:" + fecInicio + ";fecFinal:" + fecFinal);
String sqlKm = getSqlKm(empresa); String sqlKm = getSqlKm(empresa);
log.info(sqlKm); log.info(sqlKm);
@ -82,24 +82,27 @@ public class RelatorioEmpresaCorrida extends Relatorio {
stmt.setInt("empresa_id", Integer.parseInt(empresa)); stmt.setInt("empresa_id", Integer.parseInt(empresa));
} }
List<RelatorioEmpresaCorridaBean> lsAux = new ArrayList<RelatorioEmpresaCorridaBean>();
log.info("Antes de enviar consulta para o banco:" + System.currentTimeMillis());
rset = stmt.executeQuery(); rset = stmt.executeQuery();
log.info("Depois de enviar consulta para o banco:" + System.currentTimeMillis());
while (rset.next()) { while (rset.next()) {
Integer rutaId = rset.getInt("ruta_id"); Integer rutaId = rset.getInt("ruta_id");
Integer index = buscarRelatorioEmpresaCorrida(lsDadosRelatorio, rutaId); RelatorioEmpresaCorridaBean rec = buscarRelatorioEmpresaCorrida(lsDadosRelatorio, rutaId);
if (index > -1) { if (rec != null) {
RelatorioEmpresaCorridaBean rec = lsDadosRelatorio.get(index);
rec.setKmOnibusArrendados(rset.getInt("kmOnibusArrendados")); rec.setKmOnibusArrendados(rset.getInt("kmOnibusArrendados"));
rec.setKmOnibusProprio(rset.getInt("kmOnibusProprio")); rec.setKmOnibusProprio(rset.getInt("kmOnibusProprio"));
rec.setKmTotal(rset.getInt("kmTotal")); rec.setKmTotal(rset.getInt("kmTotal"));
lsDadosRelatorio.set(index, rec); lsAux.add(rec);
} }
} }
if (lsDadosRelatorio.size() > 0) { if (lsAux.size() > 0) {
setLsDadosRelatorio(lsDadosRelatorio); setLsDadosRelatorio(lsAux);
} }
} }
}); });
@ -107,20 +110,19 @@ public class RelatorioEmpresaCorrida extends Relatorio {
public void setLsDadosRelatorio(List<RelatorioEmpresaCorridaBean> lsDadosRelatorio) { public void setLsDadosRelatorio(List<RelatorioEmpresaCorridaBean> lsDadosRelatorio) {
this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio)); this.setCollectionDataSource(new JRBeanCollectionDataSource(lsDadosRelatorio));
this.lsDadosRelatorio = lsDadosRelatorio;
} }
@Override @Override
protected void processaParametros() throws Exception { protected void processaParametros() throws Exception {
} }
private Integer buscarRelatorioEmpresaCorrida(List<RelatorioEmpresaCorridaBean> lsDadosRelatorio, Integer rutaId) { private RelatorioEmpresaCorridaBean buscarRelatorioEmpresaCorrida(List<RelatorioEmpresaCorridaBean> lsDadosRelatorio, Integer rutaId) {
for (RelatorioEmpresaCorridaBean rec : lsDadosRelatorio) { for (RelatorioEmpresaCorridaBean rec : lsDadosRelatorio) {
if (rec.getRutaId().equals(rutaId)) { if (rec.getRutaId().equals(rutaId)) {
return lsDadosRelatorio.indexOf(rec); return rec;
} }
} }
return -1; return null;
} }
private String getSql(String empresa) { private String getSql(String empresa) {
@ -131,19 +133,17 @@ public class RelatorioEmpresaCorrida extends Relatorio {
sql.append(" e.nombempresa, "); sql.append(" e.nombempresa, ");
sql.append(" r.ruta_id, "); sql.append(" r.ruta_id, ");
sql.append(" r.descruta AS linea, "); sql.append(" r.descruta AS linea, ");
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 (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 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(" COUNT(b.boleto_id) passageirosTransp ");
sql.append("FROM ruta r "); sql.append("FROM ruta r ");
sql.append("INNER JOIN ruta_empresa re ON re.ruta_id = r.ruta_id "); sql.append("LEFT JOIN corrida c ON c.ruta_id = r.ruta_id ");
sql.append("INNER JOIN empresa e ON re.empresa_id = e.empresa_id "); sql.append("INNER JOIN empresa e ON c.marca_id = e.empresa_id ");
sql.append("LEFT JOIN corrida c ON c.ruta_id = re.ruta_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 boleto b ON b.corrida_id = c.corrida_id AND b.feccorrida = c.feccorrida "); sql.append("LEFT JOIN categoria cat ON cat.categoria_id = b.categoria_id ");
sql.append("LEFT OUTER JOIN categoria cat ON cat.categoria_id = b.categoria_id ");
sql.append("WHERE c.activo <> 0 "); sql.append("WHERE c.activo <> 0 ");
sql.append("AND r.activo = 1 "); sql.append("AND r.activo = 1 ");
sql.append("AND re.activo = 1 "); sql.append(StringUtils.isBlank(empresa) ? "" : "AND c.marca_id = :empresa_id ");
sql.append(StringUtils.isBlank(empresa) ? "" : "AND re.empresa_id = :empresa_id ");
sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal "); sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal ");
sql.append("GROUP BY "); sql.append("GROUP BY ");
sql.append(" e.empresa_id, "); sql.append(" e.empresa_id, ");
@ -166,13 +166,10 @@ public class RelatorioEmpresaCorrida extends Relatorio {
sql.append("FROM corrida c "); 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 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 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 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("WHERE c.activo <> 0 ");
sql.append("AND ct.activo = 1 "); sql.append("AND ct.activo = 1 ");
sql.append(StringUtils.isBlank(empresa) ? "" : "AND c.empresacorrida_id = :empresa_id "); sql.append(StringUtils.isBlank(empresa) ? "" : "AND c.marca_id = :empresa_id ");
sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal "); sql.append("AND c.FECCORRIDA BETWEEN :fecInicio AND :fecFinal ");
sql.append("GROUP BY c.ruta_id "); sql.append("GROUP BY c.ruta_id ");
sql.append("ORDER BY c.ruta_id "); sql.append("ORDER BY c.ruta_id ");