diff --git a/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCCFDAO.java b/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCCFDAO.java index 00718397c..d98185a4d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCCFDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCCFDAO.java @@ -1,12 +1,15 @@ package com.rjconsultores.ventaboletos.dao; +import java.sql.Connection; import java.util.Date; import java.util.List; +import java.util.Map; import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF; -import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCFR2; public interface MonitoramentoCCFDAO extends GenericDAO { - public List buscaQuebraCCF(String numserie20, Date data); - public List buscaRegistrosR2(Date data); + public List buscaQuebraCCF(final String numserie, final Date data, final Integer ccfInicial); + public List obtenerTodos(); + public void setConnection(Connection con); + public Map obterImpressorasComCCFInicial(Date data); } diff --git a/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCRZDAO.java b/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCRZDAO.java index 686af29c0..c31f09b2b 100644 --- a/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCRZDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/MonitoramentoCRZDAO.java @@ -7,4 +7,5 @@ import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ; public interface MonitoramentoCRZDAO extends GenericDAO { public List buscaQuebraCRZ(Date data); + public List obtenerTodos(); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCCFHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCCFHibernateDAO.java index a1531b23d..11ec65a28 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCCFHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCCFHibernateDAO.java @@ -1,13 +1,19 @@ package com.rjconsultores.ventaboletos.dao.hibernate; +import java.sql.Connection; import java.sql.ResultSet; -import java.text.SimpleDateFormat; +import java.sql.SQLException; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; +import java.util.HashMap; import java.util.List; +import java.util.Map; +import org.apache.log4j.Logger; +import org.hibernate.Query; import org.hibernate.SessionFactory; -import org.jfree.util.Log; +import org.hibernate.jdbc.Work; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -17,7 +23,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.entidad.FiscalImpressora; import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF; -import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCFR2; +import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.Usuario; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; @@ -25,6 +31,9 @@ import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; @Repository("monitoramentoCCFDAO") public class MonitoramentoCCFHibernateDAO extends GenericHibernateDAO implements MonitoramentoCCFDAO { + private static Logger log = Logger.getLogger(MonitoramentoCCFHibernateDAO.class); + private Connection con; + Boolean jaexiste; @Autowired public MonitoramentoCCFHibernateDAO( @@ -34,100 +43,212 @@ implements MonitoramentoCCFDAO { private String getSQL(){ StringBuilder sql = new StringBuilder(); - - sql.append(" select "); - sql.append(" fi.empresa_id as empresa, "); - sql.append(" r4.numserie20, "); - sql.append(" fi.fiscalimpressora_id, "); - sql.append(" fi.estadolocal_id as estado, "); - sql.append(" to_date(r4.datamov, 'YYYYMMDD') as datamov, "); - sql.append(" fi.puntoventa_id, "); - sql.append(" r4.usuario_id, "); - sql.append(" r4.coo "); - sql.append("from "); - sql.append(" fiscal_r4 r4 "); - sql.append(" left join fiscal_impressora fi on fi.NUMSERIE20 = r4.NUMSERIE20 "); - sql.append("where "); - sql.append(" to_date(r4.datamov, 'YYYYMMDD') = to_date(:dataIni, 'YYYY-MM-DD') "); - sql.append(" and fi.numserie20 = :numserie20 "); - sql.append(" order by r4.coo "); + + sql.append(" SELECT "); + sql.append(" fi.empresa_id as empresa, "); + sql.append(" fi.numserie20 as numserie20, "); + sql.append(" fi.fiscalimpressora_id as fiscalimpressora_id, "); + sql.append(" fi.estadolocal_id as estado, "); + sql.append(" c.FECCREACION as datamov, "); + sql.append(" fi.puntoventa_id as puntoventa_id, "); + sql.append(" c.usuario_id as usuario_id, "); + sql.append(" r4.contador as ccf, "); + sql.append(" c.caja_id as cajaId, "); + sql.append(" fi.numserie as numserie "); + sql.append(" FROM "); + sql.append(" caja c "); + sql.append(" left join fiscal_r4 R4 on R4.CAJA_ID = c.CAJA_ID "); + sql.append(" inner join fiscal_impressora fi on fi.numserie = c.SERIEIMPFISCAL "); + sql.append(" where "); + sql.append(" fi.numserie = :numserie "); + sql.append(" and trunc(c.FECCREACION) >= :data "); + sql.append(" and c.ccf >= :ccfInicial "); + sql.append(" and fi.activo = 1 "); + sql.append(" and c.activo = 1 "); + sql.append(" and ((c.indreimpresion = 0) or (c.indreimpresion = 1 and c.indstatusboleto in ('E')) or (c.indreimpresion = 1 and c.motivocancelacion_id =(select motivocancelacion_id from motivo_cancelacion where cvesistema = 'CANCELAMENTO_ECF') and c.ccf is not null)) "); + sql.append(" and c.ccf is not null "); + sql.append(" and r4.fiscalr4_id is not null "); + sql.append(" order by c.ccf "); return sql.toString(); } + + private String getSqlImpressorasComCCFInicial(){ + StringBuilder sb = new StringBuilder(); + sb.append(" select "); + sb.append(" SERIEIMPFISCAL, "); + sb.append(" max(ccf) "); + sb.append(" from "); + sb.append(" caja "); + sb.append(" where "); + sb.append(" feccreacion <= :dataMenos2 "); + sb.append(" and SERIEIMPFISCAL in (select distinct c2.SERIEIMPFISCAL "); + sb.append(" from caja c2 where trunc(c2.FECCREACION) = :dataMenos1) "); + sb.append(" group by SERIEIMPFISCAL "); + return sb.toString(); + } - private String getSQLR2(){ + @Override + public Map obterImpressorasComCCFInicial(Date data){ + Map impressoras = new HashMap(); + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + final Calendar c = Calendar.getInstance(); + c.setTime(data); + c.add(Calendar.DAY_OF_MONTH, -1); + stmt = new NamedParameterStatement(con, getSqlImpressorasComCCFInicial()); + stmt.setDate("dataMenos2", new java.sql.Date(c.getTime().getTime())); + stmt.setDate("dataMenos1", new java.sql.Date(data.getTime())); + + rset = stmt.executeQuery(); + + while (rset.next()) { + impressoras.put(rset.getString(1), rset.getInt(2)); + } + } catch (Exception e){ + log.error("", e); + } finally { + if(stmt != null) { + try { stmt.close(); } catch (SQLException e) { log.error("", e); } + } + if(rset != null) { + try { rset.close(); } catch (SQLException e) { log.error("", e); } + } + } + return impressoras; + } + + public List buscaQuebraCCF(final String numserie, final Date data, final Integer ccfInicial){ + final List result = new ArrayList(); + + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + stmt = new NamedParameterStatement(con, getSQL()); + stmt.setString("numserie", numserie); + stmt.setDate("data", new java.sql.Date(data.getTime())); + stmt.setInt("ccfInicial", ccfInicial); + + rset = stmt.executeQuery(); + + while (rset.next()) { + Integer empresaId = rset.getInt("empresa"); + Integer estadoId = rset.getInt("estado"); + Date dataMov = rset.getDate("datamov"); + FiscalImpressora fiscalImpressora = new FiscalImpressora(rset.getInt("fiscalimpressora_id")); + Empresa empresa = empresaId != null && empresaId != 0 ? new Empresa(empresaId) : null; + Estado estado = estadoId != null && estadoId != 0 ? new Estado(estadoId) : null; + PuntoVenta puntoVenta = new PuntoVenta(rset.getInt("puntoventa_id")); + Usuario usuario = new Usuario(rset.getInt("usuario_id")); + Integer ccf = rset.getInt("ccf"); + Integer ccf2 = null; + + if (rset.next()){ + ccf2 = rset.getInt("ccf"); + Date aux = dataMov; + if (ccf2 - ccf > 1){ + for (int i = ccf +1; i < ccf2; i++){ + Calendar c = Calendar.getInstance(); + c.setTime(aux); + c.add(Calendar.DATE, +1); + aux = c.getTime(); + + MonitoramentoCCF m = new MonitoramentoCCF(); + m.setDataMonitoramento(new Date()); + m.setDataOcorrencia(dataMov); + m.setDiasAlertaAberto(new Date()); + m.setImpressora(fiscalImpressora); + m.setEmpresa(empresa); + m.setEstadoInstalacao(estado); + m.setPuntoventa(puntoVenta); + m.setSequenciaCCFQuebrada(i); + m.setUsuario(usuario); + result.add(m); + } + } + } + } + } catch (Exception e){ + log.error("", e); + } finally { + if(stmt != null) { + try { stmt.close(); } catch (SQLException e) { log.error("", e); } + } + if(rset != null) { + try { rset.close(); } catch (SQLException e) { log.error("", e); } + } + } + return result; + } + + public List obtenerTodos(){ + StringBuilder hql = new StringBuilder(); + hql.append("SELECT m FROM MonitoramentoCCF m "); + hql.append("left join m.empresa "); + hql.append("ORDER BY m.sequenciaCCFQuebrada "); + Query query = getSession().createQuery(hql.toString()); + + return query.list(); + } + + private String getMonitoramentoCCFSQL(){ StringBuilder sql = new StringBuilder(); - sql.append(" select "); - sql.append(" coalesce(to_number((select r22.ccf from fiscal_r2 r22 where r22.numserie20 = r2.numserie20 and to_number(r22.crz, '999999999') = to_number(r2.crz, '999999999') -1), '999999999'), to_number(r2.ccf, '999999999')) as cooinicial, "); - sql.append(" r2.ccf as coofinal, "); - sql.append(" fi.numserie20, "); - sql.append(" fie.estado_id, "); - sql.append(" fi.empresa_id, "); - sql.append(" fi.puntoventa_id, "); - sql.append(" fi.fiscalimpressora_id "); - sql.append("from fiscal_r2 r2 "); - sql.append(" left join fiscal_impressora fi on fi.NUMSERIE20 = r2.NUMSERIE20 "); - sql.append(" left join fiscal_impressora_estado fie on fie.fiscalimpressora_id = fi.fiscalimpressora_id "); - sql.append("where "); - sql.append(" r2.datamov = :datamov "); - sql.append("order by datamov; "); + sql.append(" select count(*) "); + sql.append(" from monitoramento_ccf "); + sql.append(" where SEQUENCIA_CCF_QUEBRADA = :seq and fiscalimpressora_id = :fiscalimpressoraId "); return sql.toString(); } - public List buscaRegistrosR2(Date data){ - List result = new ArrayList(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + @Override + public MonitoramentoCCF suscribir(final MonitoramentoCCF entity){ + jaexiste = false; try{ - NamedParameterStatement stmt = new NamedParameterStatement(getSession().connection(), getSQLR2()); - stmt.setString("datamov", sdf.format(data.getTime())); - - ResultSet rset = stmt.executeQuery(); - - while (rset.next()) { - MonitoramentoCCFR2 m = new MonitoramentoCCFR2(); - m.cooinicio = rset.getInt(1); - m.coofim = rset.getInt(2); - m.numserie20 = rset.getString(3); - m.estadoId = rset.getInt(4); - m.empresaId = rset.getInt(5); - m.puntoventaId = rset.getInt(6); - m.fiscalImpressoraId = rset.getInt(7); - result.add(m); + getSession().doWork(new Work() { + public void execute(Connection connection) throws SQLException + { + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + log.debug("salvando ccf " + entity.getSequenciaCCFQuebrada() + " para impressora " + entity.getImpressora().getFiscalimpressoraId()); + stmt = new NamedParameterStatement(connection, getMonitoramentoCCFSQL()); + stmt.setInt("seq", entity.getSequenciaCCFQuebrada()); + stmt.setInt("fiscalimpressoraId", entity.getImpressora().getFiscalimpressoraId()); + rset = stmt.executeQuery(); + if (rset.next()){ + if (rset.getInt(1) > 0){ + jaexiste = true; + return; + } + } + } finally { + if(stmt != null) { + stmt.close(); + } + if(rset != null) { + rset.close(); + } + if(connection != null) { + //connection.close(); + } + } + } + }); + if (!jaexiste) { + return super.suscribir(entity); + } else { + return entity; } } catch (Exception e){ - Log.error("", e); - } - return result; + log.error("", e); + return entity; + } } - public List buscaQuebraCCF(String numserie20, Date data){ - List result = new ArrayList(); - try{ - NamedParameterStatement stmt = new NamedParameterStatement(getSession().connection(), getSQL()); - stmt.setDate("dataIni", new java.sql.Date(data.getTime())); - stmt.setString("numserie20", numserie20); - - ResultSet rset = stmt.executeQuery(); - - while (rset.next()) { - MonitoramentoCCF m = new MonitoramentoCCF(); - m.setDataMonitoramento(new Date()); - m.setDataOcorrencia(rset.getDate("datamov")); - m.setDiasAlertaAberto(new Date()); - m.setImpressora(new FiscalImpressora(rset.getInt("fiscalimpressora_id"))); - m.setEmpresa(new Empresa(rset.getInt("empresa"))); - m.setEstadoInstalacao(new Estado(rset.getInt("estado"))); - m.setPuntoventa(new PuntoVenta(rset.getInt("puntoventa"))); - m.setSequenciaCCFQuebrada(rset.getInt("coo")); - m.setUsuario(new Usuario(rset.getInt("usuario_id"))); - - result.add(m); - } - } catch (Exception e){ - Log.error("", e); - } - return result; + @Override + public void setConnection(Connection con) { + this.con = con; } } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCRZHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCRZHibernateDAO.java index bcb287deb..b87184723 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCRZHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/MonitoramentoCRZHibernateDAO.java @@ -1,12 +1,19 @@ package com.rjconsultores.ventaboletos.dao.hibernate; +import java.sql.Connection; import java.sql.ResultSet; +import java.sql.SQLException; +import java.text.ParseException; +import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Calendar; import java.util.Date; import java.util.List; +import org.apache.log4j.Logger; +import org.hibernate.Query; import org.hibernate.SessionFactory; -import org.jfree.util.Log; +import org.hibernate.jdbc.Work; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -15,6 +22,7 @@ import com.rjconsultores.ventaboletos.dao.MonitoramentoCRZDAO; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.entidad.FiscalImpressora; +import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF; import com.rjconsultores.ventaboletos.entidad.MonitoramentoCRZ; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.Usuario; @@ -23,6 +31,8 @@ import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; @Repository("monitoramentoCRZDAO") public class MonitoramentoCRZHibernateDAO extends GenericHibernateDAO implements MonitoramentoCRZDAO { + private static Logger log = Logger.getLogger(MonitoramentoCRZHibernateDAO.class); + Boolean jaexiste; @Autowired public MonitoramentoCRZHibernateDAO( @@ -33,54 +43,202 @@ implements MonitoramentoCRZDAO { private String getSQL(){ StringBuilder sql = new StringBuilder(); - sql.append(" select "); - sql.append(" r2.numserie20, "); - sql.append(" c.serieimpfiscal, "); - sql.append(" fi.numserie, "); - sql.append(" fi.fiscalimpressora_id, "); - sql.append(" to_date(r2.datamov, 'YYYYMMDD') as datamov, "); - sql.append(" r2.COOINICIAL, "); - sql.append(" r2.COOFINAL, "); - sql.append(" fi.estadolocal_id as estado, "); - sql.append(" fi.empresa_id as empresa, "); - sql.append(" r2.puntoventa_id as puntoventa, "); - sql.append(" r2.CRZ as CRZ, "); - sql.append(" r2.usuario_id as usuario_id "); - sql.append("from "); - sql.append(" fiscal_r2 r2 "); - sql.append(" left join fiscal_impressora fi on fi.NUMSERIE20 = r2.NUMSERIE20 "); - sql.append(" left join caja c on c.serieimpfiscal = fi.numserie "); - sql.append("where "); - sql.append(" c.serieimpfiscal is null "); - sql.append(" and to_date(r2.datamov, 'YYYYMMDD') = to_date(:dataIni, 'YYYY-MM-DD') "); + sql.append(" SELECT "); + sql.append(" * "); + sql.append(" FROM "); + sql.append(" (SELECT "); + sql.append(" R2.crz, "); + sql.append(" R2.numserie20 AS numserie20, "); + sql.append(" fi.numserie AS numserie, "); + sql.append(" fi.fiscalimpressora_id AS fiscalimpressora_id, "); + sql.append(" R2.datamov AS datamov, "); + sql.append(" R2.COOINICIAL AS COOINICIAL, "); + sql.append(" R2.COOFINAL AS COOFINAL, "); + sql.append(" fi.estadolocal_id AS estadolocal_id, "); + sql.append(" fi.empresa_id AS empresa_id, "); + sql.append(" R2.puntoventa_id AS puntoventa_id, "); + sql.append(" R2.USUARIO_ID AS USUARIO_ID "); + sql.append(" FROM "); + sql.append(" FISCAL_R2 R2 "); + sql.append(" inner join fiscal_impressora fi on fi.numserie20 = R2.numserie20 "); + sql.append(" WHERE R2.NUMSERIE20 = :numserie and R2.datamov != '20000000' "); + sql.append(" ORDER BY r2.crz desc) "); + sql.append(" where rownum <= 5 "); return sql.toString(); } - public List buscaQuebraCRZ(Date data){ - List result = new ArrayList(); + public List buscaImpressoras(){ + final List result = new ArrayList(); try{ - NamedParameterStatement stmt = new NamedParameterStatement(getSession().connection(), getSQL()); - stmt.setDate("data", new java.sql.Date(data.getTime())); - - ResultSet rset = stmt.executeQuery(); - - while (rset.next()) { - MonitoramentoCRZ m = new MonitoramentoCRZ(); - m.setDataMonitoramento(new Date()); - m.setDataReducaoZFaltante(rset.getDate("datamov")); - m.setDiasAlertaAberto(new Date()); - m.setEmpresa(new Empresa(rset.getInt("empresa"))); - m.setEstadoInstalacao(new Estado(rset.getInt("estado"))); - m.setPuntoventa(new PuntoVenta(rset.getInt("puntoventa"))); - m.setSequenciaCRZQuebrada(rset.getInt("CRZ")); - m.setUltimoUsuarioECF(new Usuario(rset.getInt("usuario_id"))); - m.setImpressora(new FiscalImpressora(rset.getInt("fiscalimpressora_id"))); - result.add(m); - } + getSession().doWork(new Work() { + public void execute(Connection connection) throws SQLException + { + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + stmt = new NamedParameterStatement(connection, "select distinct numserie20 from fiscal_impressora where activo = 1"); + + rset = stmt.executeQuery(); + + while (rset.next()) { + result.add(rset.getString(1)); + } + } finally { + if(stmt != null) { + stmt.close(); + } + if(rset != null) { + rset.close(); + } + if(connection != null) { + //connection.close(); + } + } + } + }); } catch (Exception e){ - Log.error("", e); - } + log.error("", e); + } return result; } + + public List buscaQuebraCRZ(final Date data){ + final List result = new ArrayList(); + final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd"); + try{ + getSession().doWork(new Work() { + public void execute(Connection connection) throws SQLException + { + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + stmt = new NamedParameterStatement(connection, getSQL()); + for (String s : buscaImpressoras()){ + stmt.setString("numserie", s); + rset = stmt.executeQuery(); + + while (rset.next()) { + Integer empresaId = rset.getInt("empresa_id"); + Integer estadoId = rset.getInt("estadolocal_id"); + PuntoVenta puntoVenta = new PuntoVenta(rset.getInt("puntoventa_id")); + Usuario usuario = new Usuario(rset.getInt("usuario_id")); + FiscalImpressora fiscalImpressora = new FiscalImpressora(rset.getInt("fiscalimpressora_id")); + Integer crz = rset.getInt("CRZ"); + Date dataRegistro = sdf.parse(rset.getString("datamov")); + Integer crz2 = null; + + + if (rset.next()){ + crz2 = rset.getInt("CRZ"); + Date aux = dataRegistro; + if (crz - crz2 > 1){ // crz é maior que crz2 pois esta ordenado decrescente + for (int i = crz -1; i > crz2; i--){ + Calendar c = Calendar.getInstance(); + c.setTime(aux); + c.add(Calendar.DATE, -1); + aux = c.getTime(); + + MonitoramentoCRZ m = new MonitoramentoCRZ(); + m.setDataMonitoramento(new Date()); + m.setDataReducaoZFaltante(aux); + m.setDiasAlertaAberto(new Date()); + m.setEmpresa(empresaId != null && empresaId != 0 ? new Empresa(empresaId) : null); + m.setEstadoInstalacao(estadoId != null && estadoId != 0 ? new Estado(estadoId) : null); + m.setPuntoventa(puntoVenta); + m.setSequenciaCRZQuebrada(i); + m.setUltimoUsuarioECF(usuario); + m.setImpressora(fiscalImpressora); + result.add(m); + } + } + } + } + } + } catch (ParseException e) { + log.error("", e); + } finally { + if(stmt != null) { + stmt.close(); + } + if(rset != null) { + rset.close(); + } + if(connection != null) { + //connection.close(); + } + } + } + }); + } catch (Exception e){ + log.error("", e); + } + return result; + } + + private String getMonitoramentoCRZSQL(){ + StringBuilder sql = new StringBuilder(); + + sql.append(" select count(*) "); + sql.append(" from monitoramento_crz "); + sql.append(" where SEQUENCIA_CRZ_QUEBRADA = :seq and fiscalimpressora_id = :fiscalimpressoraId "); + + return sql.toString(); + } + + @Override + public MonitoramentoCRZ suscribir(final MonitoramentoCRZ entity){ + jaexiste = false; + try{ + getSession().doWork(new Work() { + public void execute(Connection connection) throws SQLException + { + NamedParameterStatement stmt = null; + ResultSet rset = null; + try{ + log.debug("salvando crz " + entity.getSequenciaCRZQuebrada() + " para impressora " + entity.getImpressora().getFiscalimpressoraId()); + stmt = new NamedParameterStatement(connection, getMonitoramentoCRZSQL()); + stmt.setInt("seq", entity.getSequenciaCRZQuebrada()); + stmt.setInt("fiscalimpressoraId", entity.getImpressora().getFiscalimpressoraId()); + rset = stmt.executeQuery(); + if (rset.next()){ + if (rset.getInt(1) > 0){ + jaexiste = true; + return; + } + } + } finally { + if(stmt != null) { + stmt.close(); + } + if(rset != null) { + rset.close(); + } + if(connection != null) { + //connection.close(); + } + } + } + }); + if (!jaexiste) { + return super.suscribir(entity); + } else { + return entity; + } + } catch (Exception e){ + log.error("", e); + return entity; + } + } + + @Override + public List obtenerTodos(){ + StringBuilder hql = new StringBuilder(); + hql.append("SELECT m FROM MonitoramentoCRZ m "); + hql.append("left join m.empresa "); + hql.append("ORDER BY m.sequenciaCRZQuebrada "); + Query query = getSession().createQuery(hql.toString()); + + return query.list(); + } } diff --git a/src/com/rjconsultores/ventaboletos/service/MonitoramentoCCFService.java b/src/com/rjconsultores/ventaboletos/service/MonitoramentoCCFService.java index d8a752823..9bd032c26 100644 --- a/src/com/rjconsultores/ventaboletos/service/MonitoramentoCCFService.java +++ b/src/com/rjconsultores/ventaboletos/service/MonitoramentoCCFService.java @@ -1,12 +1,16 @@ package com.rjconsultores.ventaboletos.service; +import java.sql.Connection; import java.util.Date; import java.util.List; +import java.util.Map; import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF; -import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCFR2; public interface MonitoramentoCCFService extends GenericService { - public List buscaQuebraCCF(String numserie20, Date data); - public List buscaRegistrosR2(Date data); + public List buscaQuebraCCF(final String numserie20, final Date data, final Integer ccfInicial); + public void gravarListaCCFQuebrados(Map impressoras, Date data); + public Map obterImpressorasComCCFInicial(Date data); + public void openConnection(); + public void closeConnection(); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCCFServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCCFServiceImpl.java index b0f996120..d1794ff01 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCCFServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCCFServiceImpl.java @@ -1,23 +1,35 @@ package com.rjconsultores.ventaboletos.service.impl; +import java.sql.Connection; +import java.sql.SQLException; import java.util.Calendar; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import javax.sql.DataSource; + +import org.apache.log4j.Logger; +import org.jfree.util.Log; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.MonitoramentoCCFDAO; import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCF; -import com.rjconsultores.ventaboletos.entidad.MonitoramentoCCFR2; import com.rjconsultores.ventaboletos.service.MonitoramentoCCFService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @Service("monitoramentoCCFService") public class MonitoramentoCCFServiceImpl implements MonitoramentoCCFService{ + private static Logger log = Logger.getLogger(MonitoramentoCCFServiceImpl.class); + @Autowired private MonitoramentoCCFDAO monitoramentoCCFDAO; + @Autowired + private DataSource dataSource; + private Connection con; public List obtenerTodos() { return monitoramentoCCFDAO.obtenerTodos(); @@ -27,6 +39,31 @@ public class MonitoramentoCCFServiceImpl implements MonitoramentoCCFService{ return monitoramentoCCFDAO.obtenerID(id); } + @Override + public void openConnection(){ + try { + con = dataSource.getConnection(); + monitoramentoCCFDAO.setConnection(con); + log.debug("Abrindo conexão..."); + } catch (SQLException e) { + log.error("", e); + } + } + + @Override + public void closeConnection(){ + try { + this.con.close(); + log.debug("Conexão fechada!"); + } catch (SQLException e) { + log.error("", e); + } finally { + if (con != null){ + try { con.close(); } catch (SQLException e) { log.error("", e); } + } + } + } + @Transactional public MonitoramentoCCF suscribir(MonitoramentoCCF entidad) { entidad.setUsuarioModif(UsuarioLogado.getUsuarioLogado()); @@ -55,12 +92,23 @@ public class MonitoramentoCCFServiceImpl implements MonitoramentoCCFService{ } @Override - public List buscaQuebraCCF(String numserie20, Date data) { - return monitoramentoCCFDAO.buscaQuebraCCF(numserie20, data); + public List buscaQuebraCCF(final String numserie20, final Date data, final Integer ccfInicial) { + return monitoramentoCCFDAO.buscaQuebraCCF(numserie20, data, ccfInicial); + } + + public void gravarListaCCFQuebrados(Map impressoras, Date data){ + try { + for (Entry imp : impressoras.entrySet()){ + for (MonitoramentoCCF m : buscaQuebraCCF(imp.getKey(), data, imp.getValue())){ + monitoramentoCCFDAO.suscribir(m); + } + } + } catch (Exception e) { + Log.error("", e); + } } - @Override - public List buscaRegistrosR2(Date data){ - return monitoramentoCCFDAO.buscaRegistrosR2(data); + public Map obterImpressorasComCCFInicial(Date data){ + return monitoramentoCCFDAO.obterImpressorasComCCFInicial(data); } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCRZServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCRZServiceImpl.java index 6d0ade2d4..85a3785fb 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCRZServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/MonitoramentoCRZServiceImpl.java @@ -4,6 +4,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +import org.jfree.util.Log; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -32,7 +33,12 @@ public class MonitoramentoCRZServiceImpl implements MonitoramentoCRZService{ entidad.setFecmodif(Calendar.getInstance().getTime()); entidad.setActivo(Boolean.TRUE); - return monitoramentoCRZDAO.suscribir(entidad); + try{ + return monitoramentoCRZDAO.suscribir(entidad); + } catch (Exception e){ + Log.error("", e); + return entidad; + } } @Transactional