/* * 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; } }