From 217ce17a26a170d737b9a41299251f8a59363b92 Mon Sep 17 00:00:00 2001 From: frederico Date: Tue, 14 Jun 2016 12:57:07 +0000 Subject: [PATCH] fixed bug #7192 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@56926 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/PricingEspecificoDAO.java | 9 ++ .../PricingEspecificoHibernateDAO.java | 121 +++++++++++++++--- .../entidad/PricingEspecifico.java | 3 +- .../service/PricingEspecificoService.java | 12 +- .../impl/PricingEspecificoServiceImpl.java | 64 +++++++++ 5 files changed, 190 insertions(+), 19 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoDAO.java b/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoDAO.java index 4bb806a7e..c7e7da09d 100644 --- a/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/PricingEspecificoDAO.java @@ -4,7 +4,12 @@ */ package com.rjconsultores.ventaboletos.dao; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; + +import java.util.Date; import java.util.List; /** @@ -14,4 +19,8 @@ import java.util.List; public interface PricingEspecificoDAO extends GenericDAO { public List buscarPorNome(PricingEspecifico pricingEspecifico); + + public List buscarPorNome(String nome); + + public List buscar(List empresas, List tipoClasses, List origens, List destinos, Date vigenciaInicial, Date vigenciaFinal); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoHibernateDAO.java index fb77e1a24..e95532c9f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PricingEspecificoHibernateDAO.java @@ -5,9 +5,19 @@ package com.rjconsultores.ventaboletos.dao.hibernate; import com.rjconsultores.ventaboletos.dao.PricingEspecificoDAO; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import com.rjconsultores.ventaboletos.entidad.Ruta; +import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; + +import java.util.Date; import java.util.List; + import org.hibernate.Criteria; +import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.criterion.Restrictions; import org.springframework.beans.factory.annotation.Autowired; @@ -20,26 +30,103 @@ import org.springframework.stereotype.Repository; */ @Repository("pricingEspecificoDAO") public class PricingEspecificoHibernateDAO extends GenericHibernateDAO - implements PricingEspecificoDAO { + implements PricingEspecificoDAO { - @Autowired - public PricingEspecificoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } + @Autowired + public PricingEspecificoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } - @Override - public List obtenerTodos() { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); + @Override + public List obtenerTodos() { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); - return c.list(); - } + return c.list(); + } - public List buscarPorNome(PricingEspecifico pricingEspecifico) { - Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("nombPricing", pricingEspecifico.getNombPricing())); + public List buscarPorNome(PricingEspecifico pricingEspecifico) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("nombPricing", pricingEspecifico.getNombPricing())); - return c.list(); - } + return c.list(); + } + + @Override + public List buscarPorNome(String nome) { + Criteria c = getSession().createCriteria(getPersistentClass()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("nombPricing", nome)); + + return c.list(); + } + + @Override + public List buscar(List empresas, List tipoClasses, List origens, List destinos, Date vigenciaInicial, Date vigenciaFinal) { + + StringBuilder hql = new StringBuilder(); + hql.append("SELECT DISTINCT pe "); + hql.append("FROM PricingEspecifico pe "); + hql.append(" WHERE pe.activo = 1 "); + + if (!empresas.isEmpty()) { + hql.append(" AND pe.marca.empresa.empresaId IN ("); + for (Empresa e : empresas) { + hql.append(e.getEmpresaId() + ","); + } + hql.deleteCharAt(hql.length() - 1); + hql.append(")"); + } + + if (!tipoClasses.isEmpty()) { + hql.append(" AND pe.claseServicio.claseservicioId IN ("); + for (ClaseServicio c : tipoClasses) { + hql.append(c.getClaseservicioId() + ","); + } + hql.deleteCharAt(hql.length() - 1); + hql.append(")"); + } + + if (!origens.isEmpty()) { + hql.append(" AND pe.parada.paradaId IN ("); + for (Parada o : origens) { + hql.append(o.getParadaId() + ","); + } + hql.deleteCharAt(hql.length() - 1); + hql.append(")"); + } + + if (!destinos.isEmpty()) { + hql.append(" AND pe.parada1.paradaId IN ("); + for (Parada o : origens) { + hql.append(o.getParadaId() + ","); + } + hql.deleteCharAt(hql.length() - 1); + hql.append(")"); + } + + if (vigenciaInicial != null) { + hql.append(" AND YEAR(pe.fechorinicio) >= YEAR(:vigenciaInicial) "); + hql.append(" AND MONTH(pe.fechorinicio)>= MONTH(:vigenciaInicial) "); + hql.append(" AND DAY(pe.fechorinicio) >= DAY(:vigenciaInicial) "); + } + + if (vigenciaFinal != null) { + hql.append(" AND YEAR(pe.fechorfin) <= YEAR(:vigenciaFinal) "); + hql.append(" AND MONTH(pe.fechorfin) <= MONTH(:vigenciaFinal) "); + hql.append(" AND DAY(pe.fechorfin) <= DAY(:vigenciaFinal) "); + } + + Query query = getSession().createQuery(hql.toString()); + + if (vigenciaInicial != null) { + query.setDate("vigenciaInicial", vigenciaInicial); + } + if (vigenciaFinal != null) { + query.setDate("vigenciaFinal", vigenciaFinal); + } + + return query.list(); + } } diff --git a/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java index ab24e3c7e..1d47e6130 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java +++ b/src/com/rjconsultores/ventaboletos/entidad/PricingEspecifico.java @@ -34,7 +34,7 @@ import javax.persistence.Transient; @Entity @SequenceGenerator(name = "PRICING_ESPECIFICO_SEQ", sequenceName = "PRICING_ESPECIFICO_SEQ", allocationSize = 1) @Table(name = "PRICING_ESPECIFICO") -public class PricingEspecifico implements Serializable { +public class PricingEspecifico implements Serializable, Cloneable { private static final long serialVersionUID = 1L; @Id @@ -275,4 +275,5 @@ public class PricingEspecifico implements Serializable { } return peoList; } + } diff --git a/src/com/rjconsultores/ventaboletos/service/PricingEspecificoService.java b/src/com/rjconsultores/ventaboletos/service/PricingEspecificoService.java index 21f72cc2e..c869e3470 100644 --- a/src/com/rjconsultores/ventaboletos/service/PricingEspecificoService.java +++ b/src/com/rjconsultores/ventaboletos/service/PricingEspecificoService.java @@ -4,7 +4,11 @@ */ package com.rjconsultores.ventaboletos.service; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import java.util.Date; import java.util.List; /** @@ -13,5 +17,11 @@ import java.util.List; */ public interface PricingEspecificoService extends GenericService { - public List buscarPorNome(PricingEspecifico pricingEspecifico); + public List buscarPorNome(PricingEspecifico pricingEspecifico); + + public List buscarPorNome(String nome); + + public PricingEspecifico clonarPricing(Long id, String nome); + + public List buscar(List empresas, List tipoClasses, List origens, List destinos, Date vigenciaInicial, Date vigenciaFinal); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoServiceImpl.java index 220abbb37..d5b68a93f 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/PricingEspecificoServiceImpl.java @@ -5,11 +5,20 @@ package com.rjconsultores.ventaboletos.service.impl; import com.rjconsultores.ventaboletos.dao.PricingEspecificoDAO; +import com.rjconsultores.ventaboletos.entidad.ClaseServicio; +import com.rjconsultores.ventaboletos.entidad.Empresa; +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.PricingEspecifico; +import com.rjconsultores.ventaboletos.entidad.PricingEspecificoOcupacion; +import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; import com.rjconsultores.ventaboletos.service.PricingEspecificoService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + +import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.List; + import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -62,4 +71,59 @@ public class PricingEspecificoServiceImpl implements PricingEspecificoService { public List buscarPorNome(PricingEspecifico pricingEspecifico) { return pricingEspecificoDAO.buscarPorNome(pricingEspecifico); } + + @Override + public List buscarPorNome(String nome) { + // TODO Auto-generated method stub + return null; + } + + @Override + @Transactional + public PricingEspecifico clonarPricing(Long id, String nome) { + + PricingEspecifico pricingToClone = obtenerID(id); + PricingEspecifico clonePricing = new PricingEspecifico(); + + clonePricing.setNombPricing(nome); + clonePricing.setCategoria(pricingToClone.getCategoria()); + clonePricing.setClaseServicio(pricingToClone.getClaseServicio()); + clonePricing.setCorridaId(pricingToClone.getCorridaId()); + clonePricing.setFechorfin(pricingToClone.getFechorfin()); + clonePricing.setFechorinicio(pricingToClone.getFechorinicio()); + clonePricing.setMarca(pricingToClone.getMarca()); + clonePricing.setMoneda(pricingToClone.getMoneda()); + clonePricing.setParada(pricingToClone.getParada()); + clonePricing.setParada1(pricingToClone.getParada1()); + clonePricing.setPricingEspecificoOcupacionsList(getPricingEspecificoOcupacion(pricingToClone, clonePricing)); + clonePricing.setTarifa(pricingToClone.getTarifa()); + clonePricing.setTarifaredabierto(pricingToClone.getTarifaredabierto()); + clonePricing.setTipoPtovta(pricingToClone.getTipoPtovta()); + + return suscribir(clonePricing); + } + + private List getPricingEspecificoOcupacion(PricingEspecifico pricingToClone, PricingEspecifico clonePricing){ + + List list = new ArrayList(); + + for(PricingEspecificoOcupacion peo : pricingToClone.getPricingEspecificoOcupacionsList()){ + PricingEspecificoOcupacion newPeo = new PricingEspecificoOcupacion(); + newPeo.setActivo(peo.getActivo()); + newPeo.setFecmodif(new Date()); + newPeo.setOcupacionfinal(peo.getOcupacionfinal()); + newPeo.setOcupacioninicial(peo.getOcupacioninicial()); + newPeo.setPricingEspecifico(clonePricing); + newPeo.setTarifa(peo.getTarifa()); + newPeo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + list.add(newPeo); + } + + return list; + } + + @Override + public List buscar(List empresas, List tipoClasses, List origens, List destinos, Date vigenciaInicial, Date vigenciaFinal) { + return pricingEspecificoDAO.buscar(empresas, tipoClasses, origens, destinos, vigenciaInicial, vigenciaFinal); + } }