diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 59076c1ce..b45532092 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -17,7 +17,12 @@ import javax.sql.DataSource; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.hibernate.Session; +import org.hibernate.SessionFactory; +import org.hibernate.jdbc.Work; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.orm.hibernate3.support.HibernateDaoSupport; import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.FiscalDAO; @@ -44,7 +49,7 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO; import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria; @Repository("fiscalDAO") -public class FiscalHibernateDAO implements FiscalDAO { +public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO { public static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; private static Logger log = Logger.getLogger(FiscalHibernateDAO.class); @@ -52,7 +57,9 @@ public class FiscalHibernateDAO implements FiscalDAO { @Autowired private DataSource dataSource; - public FiscalHibernateDAO() { + @Autowired + public FiscalHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); } @Override @@ -1624,10 +1631,10 @@ public class FiscalHibernateDAO implements FiscalDAO { } @Override - public List buscarRegistroECFTipoPRC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { - List retorno = new ArrayList(); + public List buscarRegistroECFTipoPRC(final Connection conn, final Date inicio, final Date fim, final Integer empresaId, final String cveestado) { + final List retorno = new ArrayList(); - StringBuilder sb = new StringBuilder(); + final StringBuilder sb = new StringBuilder(); sb.append(" select ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, SUM(valortotal) as valortotal"); sb.append(" from ("); @@ -1664,80 +1671,93 @@ public class FiscalHibernateDAO implements FiscalDAO { sb.append(" ) group by ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao"); + Session session = null; + try { - PreparedStatement ps = connection.prepareStatement(sb.toString()); - ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL))); - ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL))); - ps.setLong(3, Long.valueOf(empresaId)); - ps.setString(4, cveestado); - - ResultSet rs = ps.executeQuery(); - - ExportacaoECFTipoPRC registro = null; + session = getSessionFactory().openSession(); + + session.doWork(new Work() { + @Override + public void execute(Connection connection) throws SQLException { + PreparedStatement ps = connection.prepareStatement(sb.toString()); + ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL))); + ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL))); + ps.setLong(3, Long.valueOf(empresaId)); + ps.setString(4, cveestado); + + ResultSet rs = ps.executeQuery(); + + ExportacaoECFTipoPRC registro = null; - Map group = new HashMap(); - - while (rs.next()) { - BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); - - BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); - BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); - BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); - BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); - BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; - - if (red_base_calc_icms != null) { - valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); - } else { - if (tributacao_importacao != null) { - if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { - if (porc_red_municipal != null) { - BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); - valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); - } + Map group = new HashMap(); + + while (rs.next()) { + BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100); + + BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms"); + BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal"); + BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual"); + BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); + BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; + + if (red_base_calc_icms != null) { + valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); } else { - if (porc_red_estadual != null) { - BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); - valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + if (tributacao_importacao != null) { + if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) { + if (porc_red_municipal != null) { + BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d)))); + valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + } + } else { + if (porc_red_estadual != null) { + BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d)))); + valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d))); + } + } } } + + BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); + + String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem"); + + if (group.containsKey(key)) { + registro = group.get(key); + + registro.setValorTotal(registro.getValorTotal().add(valorTotal)); + registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); + registro.setValorICMS(registro.getValorICMS().add(valorICMS)); + + } else { + registro = new ExportacaoECFTipoPRC(); + registro.setEcf(rs.getString("ecf")); + registro.setDataEmissao(rs.getString("datamov")); + registro.setUfOrigem(rs.getString("estado_origem")); + registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem"))); + registro.setValorTotal(valorTotal); + registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); + registro.setValorICMS(valorICMS); + } + + group.put(key, registro); } + + for (Map.Entry entry : group.entrySet()) { + retorno.add(entry.getValue()); + } + + rs.close(); + ps.close(); } - - BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao)); - - String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem"); - - if (group.containsKey(key)) { - registro = group.get(key); - - registro.setValorTotal(registro.getValorTotal().add(valorTotal)); - registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS)); - registro.setValorICMS(registro.getValorICMS().add(valorICMS)); - - } else { - registro = new ExportacaoECFTipoPRC(); - registro.setEcf(rs.getString("ecf")); - registro.setDataEmissao(rs.getString("datamov")); - registro.setUfOrigem(rs.getString("estado_origem")); - registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem"))); - registro.setValorTotal(valorTotal); - registro.setValorBaseCalculoICMS(valorBaseCalculoICMS); - registro.setValorICMS(valorICMS); - } - - group.put(key, registro); - } - - for (Map.Entry entry : group.entrySet()) { - retorno.add(entry.getValue()); - } - - rs.close(); - ps.close(); + }); } catch (Exception e) { log.error(e.getMessage(), e); + + } finally { + session.close(); + } return retorno;