AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/InformeVentasPuntoVentaDAOI...

92 lines
3.8 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.InformeVentasPuntoVentaDAO;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
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("informeVentasPuntoVentaDAO")
public class InformeVentasPuntoVentaDAOImpl implements InformeVentasPuntoVentaDAO {
private static final Logger log = Logger.getLogger(InformeVentasPuntoVentaDAOImpl.class);
private String getSql(PuntoVenta puntoVenta, Date dataInicio, Date dataFinal) {
StringBuilder where = new StringBuilder();
if (dataInicio != null) {
where.append(" AND bo.fechorventa >= ? ");
}
if (dataFinal != null) {
where.append(" AND bo.fechorventa <= ? ");
}
if (puntoVenta != null) {
where.append(" AND pu.puntoventa_id = ").append(puntoVenta.getPuntoventaId());
}
StringBuilder sql = new StringBuilder();
sql.append(" SELECT vendidos.puntoventa_id, vendidos.nombpuntoventa, ");
sql.append(" vendidos.qtde_total AS qtde_total_vendidos, ");
sql.append(" vendidos.valor_total AS valor_total_vendidos, ");
sql.append(" cancelado.qtde_total AS qtde_total_cancelado, ");
sql.append(" cancelado.valor_total as valor_total_cancelado ");
sql.append(" FROM (SELECT pu.puntoventa_id, pu.nombpuntoventa, ");
sql.append(" COUNT(*) qtde_total, ");
sql.append(" SUM(bo.preciopagado) valor_total ");
sql.append(" FROM boleto bo ");
sql.append(" INNER JOIN punto_venta pu ON pu.puntoventa_id = bo.puntoventa_id ");
sql.append(" WHERE bo.motivocancelacion_id IS NOT NULL ").append(where);
sql.append(" GROUP BY pu.puntoventa_id, pu.nombpuntoventa) cancelado ");
sql.append(" INNER JOIN (SELECT pu.puntoventa_id, pu.nombpuntoventa, ");
sql.append(" COUNT(*) qtde_total, ");
sql.append(" SUM(bo.preciopagado) valor_total ");
sql.append(" FROM boleto bo ");
sql.append(" INNER JOIN punto_venta pu ON pu.puntoventa_id = bo.puntoventa_id ");
sql.append(" WHERE bo.motivocancelacion_id IS NULL ").append(where);
sql.append(" GROUP BY pu.puntoventa_id, pu.nombpuntoventa) vendidos ");
sql.append(" ON cancelado.puntoventa_id = vendidos.puntoventa_id ");
sql.append(" ORDER BY nombpuntoventa ");
return sql.toString();
}
public ResultSet executarSQL(Connection conn, Map parameters) {
PuntoVenta puntoVenta = (PuntoVenta) parameters.get("puntoVenta");
Date dataInicio = (Date) parameters.get("dataInicio");
Date dataFinal = (Date) parameters.get("dataFinal");
String sql = getSql(puntoVenta, 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()));
stmt.setDate(3, new java.sql.Date(dataInicio.getTime()));
stmt.setDate(4, new java.sql.Date(dataFinal.getTime()));
rset = stmt.executeQuery();
} catch (Exception ex) {
log.error(ex);
}
return rset;
}
}