From b5ea32c0f7d4d22fd763c981cf7bd5fcdc25d460 Mon Sep 17 00:00:00 2001 From: "bruno.neves" Date: Mon, 24 Jul 2017 20:35:30 +0000 Subject: [PATCH] fix bug #0009072 - Adicionada funcionalidade de multiplas agencias no pricing git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@71823 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/PricingEspecificoCanalVendasDAO.java | 9 ++ ...cingEspecificoCanalVendasHibernateDAO.java | 42 ++++++ .../entidad/PricingEspecifico.java | 30 ++++ .../entidad/PricingEspecificoCanalVendas.java | 133 ++++++++++++++++++ .../PricingEspecificoCanalVendasService.java | 8 ++ ...icingEspecificoCanalVendasServiceImpl.java | 63 +++++++++ 6 files changed, 285 insertions(+) create mode 100644 src/com/rjconsultores/ventaboletos/dao/PricingEspecificoCanalVendasDAO.java create mode 100644 src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoCanalVendasHibernateDAO.java create mode 100644 src/com/rjconsultores/ventaboletos/entidad/PricingEspecificoCanalVendas.java create mode 100644 src/com/rjconsultores/ventaboletos/service/PricingEspecificoCanalVendasService.java create mode 100644 src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoCanalVendasServiceImpl.java diff --git a/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoCanalVendasDAO.java b/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoCanalVendasDAO.java new file mode 100644 index 000000000..c20f36dde --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoCanalVendasDAO.java @@ -0,0 +1,9 @@ +package com.rjconsultores.ventaboletos.dao; + +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; + +public interface PricingEspecificoCanalVendasDAO extends GenericDAO { + + Boolean isDuplicado(PricingEspecificoCanalVendas entidad); + +} diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoCanalVendasHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoCanalVendasHibernateDAO.java new file mode 100644 index 000000000..5e0704ce0 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoCanalVendasHibernateDAO.java @@ -0,0 +1,42 @@ +package com.rjconsultores.ventaboletos.dao.hibernate; + +import java.util.List; + +import org.hibernate.Criteria; +import org.hibernate.SessionFactory; +import org.hibernate.criterion.Restrictions; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Repository; + +import com.rjconsultores.ventaboletos.dao.PricingEspecificoCanalVendasDAO; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; + + +@Repository("pricingEspecificoCanalVendasDAO") +public class PricingEspecificoCanalVendasHibernateDAO extends GenericHibernateDAO implements PricingEspecificoCanalVendasDAO { + + @Autowired + public PricingEspecificoCanalVendasHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } + + @SuppressWarnings("unchecked") + @Override + public List obtenerTodos() { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + + return c.list(); + } + @SuppressWarnings("unchecked") + @Override + public Boolean isDuplicado(PricingEspecificoCanalVendas entidad) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("tipoPtovta.tipoptovtaId", entidad.getTipoPtovta().getTipoptovtaId())); + + return c.list().isEmpty(); + } +} + diff --git a/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java index 7139c7d24..d27d8e298 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java +++ b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java @@ -27,6 +27,9 @@ import javax.persistence.Temporal; import javax.persistence.TemporalType; import javax.persistence.Transient; +import org.hibernate.annotations.LazyCollection; +import org.hibernate.annotations.LazyCollectionOption; + /** * * @author Rafius @@ -88,8 +91,14 @@ public class PricingEspecifico implements Serializable, Cloneable { private Boolean exibeVenda; @OneToMany(mappedBy = "pricingEspecifico", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private List pricingEspecificoOcupacionsList; + @OneToMany(mappedBy = "pricingEspecifico", cascade = CascadeType.ALL, fetch = FetchType.EAGER) private List pricingEspecificoAgenciasList; + + @OneToMany(mappedBy = "pricingEspecifico", cascade = CascadeType.ALL) + @LazyCollection(LazyCollectionOption.FALSE) + private List pricingEspecificoCanalVendasList; + public PricingEspecifico() { } @@ -257,6 +266,15 @@ public class PricingEspecifico implements Serializable, Cloneable { public void setPricingEspecificoAgenciasList(List pricingEspecificoAgenciasList) { this.pricingEspecificoAgenciasList = pricingEspecificoAgenciasList; } + + + public List getPricingEspecificoCanalVendasList() { + return pricingEspecificoCanalVendasList; + } + + public void setPricingEspecificoCanalVendasList(List pricingEspecificoCanalVendasList) { + this.pricingEspecificoCanalVendasList = pricingEspecificoCanalVendasList; + } @Override public int hashCode() { @@ -307,5 +325,17 @@ public class PricingEspecifico implements Serializable, Cloneable { } return peoList; } + @Transient + public List getPricingEspecificoCanalListActivos() { + List pecList = new ArrayList(); + if(getPricingEspecificoCanalVendasList() != null) { + for (PricingEspecificoCanalVendas pec : getPricingEspecificoCanalVendasList()) { + if (pec.getActivo()) { + pecList.add(pec); + } + } + } + return pecList; + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/PricingEspecificoCanalVendas.java b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecificoCanalVendas.java new file mode 100644 index 000000000..a0307d30d --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecificoCanalVendas.java @@ -0,0 +1,133 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Basic; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +@Entity +@SequenceGenerator(name = "PRICING_ESP_CANAL_SEQ", sequenceName = "PRICING_ESP_CANAL_SEQ", allocationSize = 1) +@Table(name = "PRICING_ESP_CANAL_VENTA") +public class PricingEspecificoCanalVendas implements Serializable { + + private static final long serialVersionUID = 1L; + @Id + @Basic(optional = false) + @GeneratedValue(strategy = GenerationType.AUTO, generator = "PRICING_ESP_CANAL_SEQ") + @Column(name = "PRICINGESPCANAL_ID") + private Integer pricingEspecificoCanalId; + @ManyToOne + @JoinColumn(name = "TIPOPTOVTA_ID", referencedColumnName = "TIPOPTOVTA_ID") + private TipoPuntoVenta tipoPtovta; + @Basic(optional = false) + @Column(name = "ACTIVO") + private Boolean activo; + @Basic(optional = false) + @Column(name = "FECMODIF") + @Temporal(TemporalType.TIMESTAMP) + private Date fecmodif; + @Basic(optional = false) + @Column(name = "USUARIO_ID") + private Integer usuarioId; + @JoinColumn(name = "PRICINGESPECIFICO_ID", referencedColumnName = "PRICINGESPECIFICO_ID") + @ManyToOne + private PricingEspecifico pricingEspecifico; + + public PricingEspecificoCanalVendas() { + super(); + } + public PricingEspecificoCanalVendas(TipoPuntoVenta tipoPtovta, PricingEspecifico pricingEspecifico, Integer usuarioId) { + super(); + + this.tipoPtovta = tipoPtovta; + this.pricingEspecifico = pricingEspecifico; + this.usuarioId = usuarioId; + this.fecmodif = new Date(); + this.activo = Boolean.TRUE; + } + + public Integer getPricingEspecificoCanalId() { + return pricingEspecificoCanalId; + } + public void setPricingEspecificoCanalId(Integer pricingEspecificoCanalId) { + this.pricingEspecificoCanalId = pricingEspecificoCanalId; + } + public TipoPuntoVenta getTipoPtovta() { + return tipoPtovta; + } + public void setTipoPtovta(TipoPuntoVenta tipoPtovta) { + this.tipoPtovta = tipoPtovta; + } + public Boolean getActivo() { + return activo; + } + public void setActivo(Boolean activo) { + this.activo = activo; + } + public Date getFecmodif() { + return fecmodif; + } + public void setFecmodif(Date fecmodif) { + this.fecmodif = fecmodif; + } + public Integer getUsuarioId() { + return usuarioId; + } + public void setUsuarioId(Integer usuarioId) { + this.usuarioId = usuarioId; + } + public PricingEspecifico getPricingEspecifico() { + return pricingEspecifico; + } + public void setPricingEspecifico(PricingEspecifico pricingEspecifico) { + this.pricingEspecifico = pricingEspecifico; + } + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((activo == null) ? 0 : activo.hashCode()); + result = prime * result + ((pricingEspecifico == null) ? 0 : pricingEspecifico.hashCode()); + result = prime * result + ((tipoPtovta == null) ? 0 : tipoPtovta.hashCode()); + return result; + } + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + PricingEspecificoCanalVendas other = (PricingEspecificoCanalVendas) obj; + if (activo == null) { + if (other.activo != null) + return false; + } else if (!activo.equals(other.activo)) + return false; + if (pricingEspecifico == null) { + if (other.pricingEspecifico != null) + return false; + } else if (!pricingEspecifico.equals(other.pricingEspecifico)) + return false; + if (tipoPtovta == null) { + if (other.tipoPtovta != null) + return false; + } else if (!tipoPtovta.equals(other.tipoPtovta)) + return false; + return true; + } + + +} diff --git a/src/com/rjconsultores/ventaboletos/service/PricingEspecificoCanalVendasService.java b/src/com/rjconsultores/ventaboletos/service/PricingEspecificoCanalVendasService.java new file mode 100644 index 000000000..0261b4a4b --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/PricingEspecificoCanalVendasService.java @@ -0,0 +1,8 @@ +package com.rjconsultores.ventaboletos.service; + +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; + +public interface PricingEspecificoCanalVendasService extends GenericService { + + Boolean existeCanalVendasPricing(PricingEspecificoCanalVendas entidad); +} diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoCanalVendasServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoCanalVendasServiceImpl.java new file mode 100644 index 000000000..8bc5f78b7 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoCanalVendasServiceImpl.java @@ -0,0 +1,63 @@ +package com.rjconsultores.ventaboletos.service.impl; + +import java.util.Calendar; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import com.rjconsultores.ventaboletos.dao.PricingEspecificoCanalVendasDAO; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoCanalVendas; +import com.rjconsultores.ventaboletos.service.PricingEspecificoCanalVendasService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + +@Service("pricingEspecificoCanalVendasService") +public class PricingEspecificoCanalVendasServiceImpl implements PricingEspecificoCanalVendasService { + @Autowired + private PricingEspecificoCanalVendasDAO pricingEspecificoCanalVendasDAO; + + @Override + public List obtenerTodos() { + return pricingEspecificoCanalVendasDAO.obtenerTodos(); + } + + @Override + public PricingEspecificoCanalVendas obtenerID(Long id) { + return pricingEspecificoCanalVendasDAO.obtenerID(id); + } + + @Override + @Transactional + public PricingEspecificoCanalVendas suscribir(PricingEspecificoCanalVendas entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); +// entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); + + return pricingEspecificoCanalVendasDAO.suscribir(entidad); + } + + @Override + @Transactional + public PricingEspecificoCanalVendas actualizacion(PricingEspecificoCanalVendas entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + + return pricingEspecificoCanalVendasDAO.actualizacion(entidad); + } + + @Override + @Transactional + public void borrar(PricingEspecificoCanalVendas entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.FALSE); + + pricingEspecificoCanalVendasDAO.actualizacion(entidad); + } + @Override + public Boolean existeCanalVendasPricing (PricingEspecificoCanalVendas entidad){ + return pricingEspecificoCanalVendasDAO.isDuplicado(entidad); + } + +}