86 lines
3.1 KiB
Java
86 lines
3.1 KiB
Java
/*
|
|
* To change this template, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.InformeServicioDiarioDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
|
import java.sql.Connection;
|
|
import java.sql.PreparedStatement;
|
|
import java.sql.ResultSet;
|
|
import java.util.Date;
|
|
import java.util.Map;
|
|
import org.apache.log4j.Logger;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
/**
|
|
*
|
|
* @author Administrador
|
|
*/
|
|
@Repository("informeServicioDiarioDAO")
|
|
public class InformeServicioDiarioDAOImpl implements InformeServicioDiarioDAO {
|
|
|
|
private static final Logger log = Logger.getLogger(InformeServicioDiarioDAOImpl.class);
|
|
|
|
private String getSql(Empresa empresa, Integer numServicio, Date dataInicio,
|
|
Date dataFinal) {
|
|
StringBuilder where = new StringBuilder();
|
|
where.append(" WHERE 1 = 1 ");
|
|
|
|
if (empresa != null) {
|
|
where.append(" AND co.empresacorrida_id = ").append(empresa.getEmpresaId());
|
|
}
|
|
|
|
if (numServicio != null) {
|
|
where.append(" AND co.corrida_id = ").append(numServicio);
|
|
}
|
|
|
|
if (dataInicio != null) {
|
|
where.append(" AND co.feccorrida >= ? ");
|
|
}
|
|
|
|
if (dataFinal != null) {
|
|
where.append(" AND co.feccorrida <= ? ");
|
|
}
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.append(" SELECT co.corrida_id servico, co.fechorsalida, SUM(tr.cantkmreal) km, ");
|
|
sql.append(" COUNT(co.corrida_id) qtdeservico, SUM(bo.preciopagado) receita, ");
|
|
sql.append(" ( SUM(bo.preciopagado) / SUM(tr.cantkmreal) ) rkm, em.nombempresa, ");
|
|
sql.append(" ru.descruta ");
|
|
sql.append(" FROM corrida co ");
|
|
sql.append(" INNER JOIN empresa em ON em.empresa_id = co.empresacorrida_id ");
|
|
sql.append(" INNER JOIN ruta ru ON ru.ruta_id = co.ruta_id ");
|
|
sql.append(" INNER JOIN ruta_secuencia rs ON rs.ruta_id = ru.ruta_id ");
|
|
sql.append(" INNER JOIN tramo tr ON tr.tramo_id = rs.tramo_id ");
|
|
sql.append(" INNER JOIN boleto bo ON bo.corrida_id = co.corrida_id ");
|
|
sql.append(where);
|
|
sql.append(" GROUP BY co.corrida_id, co.fechorsalida, em.nombempresa, ru.descruta ");
|
|
|
|
return sql.toString();
|
|
}
|
|
|
|
public ResultSet executarSQL(Connection conn, Map parameters) {
|
|
Empresa empresa = (Empresa) parameters.get("empresa");
|
|
Integer numServicio = (Integer) parameters.get("numServicio");
|
|
Date dataInicio = (Date) parameters.get("dataInicio");
|
|
Date dataFinal = (Date) parameters.get("dataFinal");
|
|
String sql = getSql(empresa, numServicio, dataInicio, dataFinal);
|
|
|
|
PreparedStatement stmt = null;
|
|
ResultSet rset = null;
|
|
|
|
try {
|
|
stmt = conn.prepareStatement(sql);
|
|
stmt.setDate(1, new java.sql.Date(dataInicio.getTime()));
|
|
stmt.setDate(2, new java.sql.Date(dataFinal.getTime()));
|
|
rset = stmt.executeQuery();
|
|
} catch (Exception ex) {
|
|
log.error(ex);
|
|
}
|
|
|
|
return rset;
|
|
}
|
|
}
|