320 lines
11 KiB
Java
320 lines
11 KiB
Java
/*
|
|
* To change this template, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.List;
|
|
|
|
import org.hibernate.Criteria;
|
|
import org.hibernate.Query;
|
|
import org.hibernate.SQLQuery;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.criterion.Criterion;
|
|
import org.hibernate.criterion.MatchMode;
|
|
import org.hibernate.criterion.Order;
|
|
import org.hibernate.criterion.Restrictions;
|
|
import org.hibernate.transform.AliasToBeanResultTransformer;
|
|
import org.hibernate.type.BooleanType;
|
|
import org.hibernate.type.IntegerType;
|
|
import org.hibernate.type.StringType;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.PtovtaTipoEstoqueDAO;
|
|
import com.rjconsultores.ventaboletos.dao.PuntoVentaDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Conferencia;
|
|
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
|
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
|
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
|
import com.rjconsultores.ventaboletos.entidad.PuntoVentaVO;
|
|
import com.rjconsultores.ventaboletos.entidad.UsuarioUbicacion;
|
|
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
|
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosPuntoVentaResultTransformer;
|
|
import com.rjconsultores.ventaboletos.vo.embarcada.UsuarioEmbarcadaVO;
|
|
|
|
/**
|
|
*
|
|
* @author Administrador
|
|
*/
|
|
@Repository("puntoVentaDAO")
|
|
public class PuntoVentaHibernateDAO extends GenericHibernateDAO<PuntoVenta, Integer>
|
|
implements PuntoVentaDAO {
|
|
|
|
public static final int ID_PUNTO_VENTA_TODOS = -1;
|
|
|
|
@Autowired
|
|
private PtovtaTipoEstoqueDAO ptovtaTipoEstoqueDAO;
|
|
|
|
@Autowired
|
|
public PuntoVentaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
|
setSessionFactory(factory);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> obtenerTodos() {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
|
|
c.addOrder(Order.asc("nombpuntoventa"));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> buscaLike(String strEstacion, boolean sinTodos) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
|
|
Criterion cr1 = Restrictions.like("nombpuntoventa", strEstacion, MatchMode.START);
|
|
|
|
Criterion crActivo = Restrictions.eq("activo", Boolean.TRUE);
|
|
|
|
if (sinTodos) {
|
|
Criterion crSinTodos = Restrictions.ne("puntoventaId", ID_PUNTO_VENTA_TODOS);
|
|
c.add(crSinTodos);
|
|
}
|
|
|
|
PtovtaTipoEstoque supr = ptovtaTipoEstoqueDAO.buscarTipoSuprimento();
|
|
PtovtaTipoEstoque cont = ptovtaTipoEstoqueDAO.buscarTipoContabilidade();
|
|
|
|
Criterion suprCont = Restrictions.in("ptovtaTipoEstoque", new PtovtaTipoEstoque[] { supr, cont });
|
|
|
|
Criterion pt2 = Restrictions.or(crActivo, suprCont);
|
|
|
|
c.add(Restrictions.and(cr1, pt2));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> busca(String nomPuntoVenta, String numPuntoVenta) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
|
|
c.add(Restrictions.eq("nombpuntoventa", nomPuntoVenta));
|
|
c.add(Restrictions.eq("numPuntoVenta", numPuntoVenta));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> buscaPuntoVenta(String numPuntoVenta) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("numPuntoVenta", numPuntoVenta));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> buscaPuntoVentaEmpresa(Empresa empresa) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("empresa", empresa));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> buscaPuntoVentaParada(Parada parada) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("parada", parada));
|
|
c.addOrder(Order.asc("nombpuntoventa"));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@Override
|
|
public List<PuntoVentaVO> buscaPuntoVentaEmpresaSemECF(Empresa empresa) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(" select ");
|
|
sb.append(" DISTINCT ");
|
|
sb.append(" pvaux.PUNTOVENTA_ID as puntoventaId, ");
|
|
sb.append(" pvaux.NOMBPUNTOVENTA as nombpuntoventa ");
|
|
sb.append(" from ");
|
|
sb.append(" PUNTO_VENTA pvaux ");
|
|
sb.append(" join PTOVTA_EMPRESA PTOVTAE ");
|
|
sb.append(" ON (PTOVTAE.PUNTOVENTA_ID = PVAUX.PUNTOVENTA_ID) ");
|
|
sb.append(" where ");
|
|
sb.append(" pvaux.PUNTOVENTA_ID not in ( ");
|
|
sb.append(" SELECT ");
|
|
sb.append(" DISTINCT pv.PUNTOVENTA_ID ");
|
|
sb.append(" FROM ");
|
|
sb.append(" PUNTO_VENTA pv ");
|
|
sb.append(" INNER JOIN ");
|
|
sb.append(" ESTACION E ");
|
|
sb.append(" ON pv.PUNTOVENTA_ID = E .PUNTOVENTA_ID ");
|
|
sb.append(" INNER JOIN ");
|
|
sb.append(" ESTACION_IMPRESORA ei ");
|
|
sb.append(" ON ei.ESTACION_ID = E .ESTACION_ID ");
|
|
sb.append(" WHERE ");
|
|
sb.append(" ( (ei.TIPOIMPRESSORA = 1 ");
|
|
sb.append(" OR ei.TIPOIMPRESSORA = 2) ) ");
|
|
sb.append(" AND ei.ACTIVO = 1 ");
|
|
sb.append(" AND ei.EMPRESA_ID = :empresa_id ");
|
|
sb.append(" /* ORDER BY PUNTOVENTA_ID*/ ");
|
|
sb.append(" ) ");
|
|
sb.append(" and PTOVTAE.EMPRESA_ID = :empresa_id ");
|
|
sb.append(" and PTOVTAE.ACTIVO = 1 ");
|
|
sb.append(" AND pvaux.ACTIVO = 1 ");
|
|
sb.append(" AND pvaux.PUNTOVENTA_ID <> -1 ");
|
|
sb.append(" ORDER BY ");
|
|
sb.append(" pvaux.PUNTOVENTA_ID ");
|
|
SQLQuery sql = getSession().createSQLQuery(sb.toString())
|
|
.addScalar("puntoventaId", IntegerType.INSTANCE)
|
|
.addScalar("nombpuntoventa", StringType.INSTANCE);
|
|
sql.setInteger("empresa_id", empresa.getEmpresaId());
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(PuntoVentaVO.class));
|
|
@SuppressWarnings("unchecked")
|
|
List<PuntoVentaVO> puntosVenta = sql.list();
|
|
return puntosVenta;
|
|
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<PuntoVenta> buscarPuntoVentaSubordinados(PuntoVenta puntoVenta) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("puntoVentaPadre", puntoVenta));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@Override
|
|
public List<PuntoVenta> buscarPuntosVentaMovimentacionBilhetes(List<Empresa> empresas) {
|
|
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
|
|
Criterion crtPtovta = Restrictions.and(Restrictions.eq("activo", Boolean.TRUE), Restrictions.in("empresa", empresas));
|
|
|
|
PtovtaTipoEstoque supr = ptovtaTipoEstoqueDAO.buscarTipoSuprimento();
|
|
PtovtaTipoEstoque cont = ptovtaTipoEstoqueDAO.buscarTipoContabilidade();
|
|
|
|
Criterion suprCont = Restrictions.in("ptovtaTipoEstoque", new PtovtaTipoEstoque[] { supr, cont });
|
|
|
|
c.add(Restrictions.or(suprCont, crtPtovta));
|
|
|
|
c.addOrder(Order.asc("nombpuntoventa"));
|
|
@SuppressWarnings("unchecked")
|
|
List<PuntoVenta> puntosVenta = c.list();
|
|
|
|
// List<PuntoVenta> puntosVenta = geraListaDummy();
|
|
|
|
return puntosVenta;
|
|
}
|
|
|
|
@Override
|
|
public List<PuntoVenta> buscarPuntoVentaPorTipoEstoque(PtovtaTipoEstoque tipoEstoque) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("ptovtaTipoEstoque", tipoEstoque));
|
|
|
|
@SuppressWarnings("unchecked")
|
|
List<PuntoVenta> puntosVenta = c.list();
|
|
|
|
return puntosVenta;
|
|
}
|
|
|
|
@SuppressWarnings("unused")
|
|
private List<PuntoVenta> geraListaDummy() {
|
|
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
|
|
PtovtaTipoEstoque supr = ptovtaTipoEstoqueDAO.buscarTipoSuprimento();
|
|
PtovtaTipoEstoque cont = ptovtaTipoEstoqueDAO.buscarTipoContabilidade();
|
|
|
|
Criterion suprCont = Restrictions.in("ptovtaTipoEstoque", new PtovtaTipoEstoque[] { supr, cont });
|
|
|
|
Criterion crtPtovta = Restrictions.in("puntoventaId", new Integer[] { 1, 2, 3, 786, 1321, 1722 });
|
|
|
|
c.add(Restrictions.or(suprCont, crtPtovta));
|
|
@SuppressWarnings("unchecked")
|
|
List<PuntoVenta> puntosVenta = c.list();
|
|
|
|
return puntosVenta;
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
public List<String> quantidadeECFPorPuntoVenta(Conferencia conferencia) {
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
|
|
sql.append("SELECT imp.NUMSERIE20 ");
|
|
sql.append("FROM CAJA c ");
|
|
sql.append("INNER JOIN fiscal_impressora imp ON c.serieimpfiscal = imp.numserie ");
|
|
sql.append("LEFT JOIN fiscal_r2 r2 ON r2.numserie20 = imp.numserie20 ");
|
|
sql.append("AND r2.datamov = to_char(c.feccreacion, 'yyyymmdd') ");
|
|
sql.append("LEFT JOIN fiscal_r4 r4 ON c.caja_id = r4.caja_id ");
|
|
sql.append("WHERE c.serieimpfiscal IS NOT NULL ");
|
|
sql.append(" AND c.PUNTOVENTA_ID =:puntoVentaId and c.EMPRESACORRIDA_ID =:empresaId ");
|
|
sql.append(" AND C.FECHORVENTA BETWEEN cast(:dataInicio AS DATE) and cast(:dataFim AS DATE) ");
|
|
sql.append("GROUP BY imp.NUMSERIE20 ");
|
|
|
|
Query q = getSession().createSQLQuery(sql.toString());
|
|
|
|
q.setInteger("puntoVentaId", conferencia.getPuntoVenta().getPuntoventaId());
|
|
q.setInteger("empresaId", conferencia.getEmpresa().getEmpresaId());
|
|
q.setTimestamp("dataInicio", DateUtil.inicioFecha(conferencia.getDatamovimento()));
|
|
q.setTimestamp("dataFim", DateUtil.fimFecha(conferencia.getDatamovimento()));
|
|
|
|
return q.list();
|
|
}
|
|
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
public List<PuntoVenta> buscarPuntoVentaPtoVtaComissao(List<Integer> empresas) {
|
|
StringBuilder sQuery = new StringBuilder("SELECT DISTINCT pv.PUNTOVENTA_ID, pv.NOMBPUNTOVENTA, pv.ACTIVO ");
|
|
sQuery.append("FROM PTOVTA_COMISSAO ptovta ")
|
|
.append("JOIN PUNTO_VENTA pv ON pv.puntoventa_id = ptovta.puntoventa_id ")
|
|
.append("JOIN EMPRESA em ON em.empresa_id = ptovta.empresa_id ")
|
|
.append("WHERE ptovta.activo = 1 ")
|
|
.append("AND pv.activo = 1 ")
|
|
.append("AND em.activo = 1 ")
|
|
.append("AND em.empresa_id in (:empresas)");
|
|
|
|
Query qr = getSession().createSQLQuery(sQuery.toString())
|
|
.addScalar("PUNTOVENTA_ID", IntegerType.INSTANCE)
|
|
.addScalar("NOMBPUNTOVENTA", StringType.INSTANCE)
|
|
.addScalar("ACTIVO", BooleanType.INSTANCE)
|
|
.setResultTransformer(new DatosPuntoVentaResultTransformer());
|
|
|
|
qr.setParameterList("empresas", empresas);
|
|
|
|
return qr.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<UsuarioEmbarcadaVO> buscaUsuariosDoPuntoVenta(Long puntoventaId){
|
|
StringBuilder sQuery = new StringBuilder("SELECT uu ");
|
|
sQuery.append("FROM UsuarioUbicacion uu, OperadorEmbarcada o ")
|
|
.append("WHERE uu.puntoVenta.puntoventaId = :puntoventaId and uu.usuario.activo = 1 ")
|
|
.append("and o.usuario.usuarioId = uu.usuario.usuarioId and uu.activo = 1");
|
|
|
|
Query qr = getSession().createQuery(sQuery.toString());
|
|
|
|
qr.setLong("puntoventaId", puntoventaId);
|
|
List<UsuarioEmbarcadaVO> result = new ArrayList<UsuarioEmbarcadaVO>();
|
|
for (UsuarioUbicacion u : (List<UsuarioUbicacion>)qr.list()){
|
|
UsuarioEmbarcadaVO vo = new UsuarioEmbarcadaVO(u.getUsuario().getUsuarioId().longValue(),
|
|
u.getUsuario().getUsername(),
|
|
u.getUsuario().getClaveUsuario(),
|
|
u.getUsuario().getSenha(),
|
|
u.getUsuario().getDescCorreo());
|
|
result.add(vo);
|
|
}
|
|
return result;
|
|
}
|
|
}
|