From d2c8bb007ade59a7ca4439169b2aa465fe9565ba Mon Sep 17 00:00:00 2001 From: emerson Date: Thu, 18 Oct 2018 13:19:41 +0000 Subject: [PATCH] fixes bug#0012396 dev: wallace qua: renato git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@86252 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/RutaDAO.java | 7 +- .../dao/hibernate/RutaHibernateDAO.java | 39 +++++++++-- .../ventaboletos/service/RutaService.java | 7 +- .../service/impl/RutaServiceImpl.java | 6 ++ .../ventaboletos/vo/ruta/RutaVO.java | 67 +++++++++++++++++++ 5 files changed, 118 insertions(+), 8 deletions(-) create mode 100644 src/com/rjconsultores/ventaboletos/vo/ruta/RutaVO.java diff --git a/src/com/rjconsultores/ventaboletos/dao/RutaDAO.java b/src/com/rjconsultores/ventaboletos/dao/RutaDAO.java index 72e630070..6fc43e29a 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RutaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RutaDAO.java @@ -4,14 +4,15 @@ */ package com.rjconsultores.ventaboletos.dao; +import java.util.List; + 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.Ruta; import com.rjconsultores.ventaboletos.entidad.Tramo; - -import java.util.List; +import com.rjconsultores.ventaboletos.vo.ruta.RutaVO; /** * @@ -52,6 +53,8 @@ public interface RutaDAO extends GenericDAO { */ public Parada buscarDestino(Ruta ruta); + public List buscaRutaPorNumeroSemDadoRepetido(String palavraPesquisaRuta); + public List buscaRuta(String palavraPesquisaRuta); public List buscaRuta(String palavraPesquisaRuta, OrgaoConcedente orgao); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaHibernateDAO.java index a4af27206..b2c35ff73 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaHibernateDAO.java @@ -9,10 +9,14 @@ import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; +import org.hibernate.SQLQuery; import org.hibernate.SessionFactory; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; +import org.hibernate.transform.AliasToBeanResultTransformer; +import org.hibernate.type.LongType; +import org.hibernate.type.StringType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; @@ -25,6 +29,7 @@ import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.Tramo; +import com.rjconsultores.ventaboletos.vo.ruta.RutaVO; /** * @@ -191,12 +196,12 @@ public class RutaHibernateDAO extends GenericHibernateDAO impleme @Override public List buscaRuta(String palavraPesquisaRuta, OrgaoConcedente orgao) { StringBuilder hql = new StringBuilder(); - hql.append(" FROM Ruta "); + hql.append(" FROM Ruta r"); hql.append(" WHERE (lower(descruta) like :palavraPesquisaRuta "); - hql.append(" OR prefixo like :palavraPesquisaRuta "); - hql.append(" OR str(numRuta) like :palavraPesquisaRuta) "); + hql.append(" OR lower(prefixo) like :palavraPesquisaRuta "); + hql.append(" OR lower(str(numRuta)) like :palavraPesquisaRuta) "); if (orgao != null) { - hql.append(" AND orgaoConcedente.orgaoConcedenteId = :orgaoId "); + hql.append(" AND orgao.orgaoConcedenteId = :orgaoId "); } Query sq = getSession().createQuery(hql.toString()); @@ -208,6 +213,32 @@ public class RutaHibernateDAO extends GenericHibernateDAO impleme return sq.list(); } + @Override + public List buscaRutaPorNumeroSemDadoRepetido(String palavraPesquisaRuta) { + StringBuilder sql = new StringBuilder(); + sql.append(" SELECT MAX(R.RUTA_ID) rutaId, "); + sql.append(" R.NUMRUTA numRuta, MAX(R.PREFIXO) prefixo, "); + sql.append(" MAX(R.DESCRUTA) descruta, "); + sql.append(" MAX(ORGAO.DESCORGAO) orgaoConcedente "); + sql.append(" FROM RUTA R "); + sql.append(" INNER JOIN ORGAO_CONCEDENTE ORGAO ON R.ORGAOCONCEDENTE_ID = ORGAO.ORGAOCONCEDENTE_ID "); + sql.append(" WHERE (LOWER(R.DESCRUTA) LIKE :palavraPesquisaRuta "); + sql.append(" OR LOWER(R.PREFIXO) LIKE :palavraPesquisaRuta "); + sql.append(" OR LOWER(R.NUMRUTA) LIKE :palavraPesquisaRuta) "); + sql.append(" GROUP BY R.NUMRUTA "); + + SQLQuery qry = getSession().createSQLQuery(sql.toString()) + .addScalar("rutaId", LongType.INSTANCE) + .addScalar("numRuta", StringType.INSTANCE) + .addScalar("prefixo", StringType.INSTANCE) + .addScalar("descruta", StringType.INSTANCE) + .addScalar("orgaoConcedente", StringType.INSTANCE); + qry.setParameter("palavraPesquisaRuta", palavraPesquisaRuta.toLowerCase() + '%'); + + qry.setResultTransformer(new AliasToBeanResultTransformer(RutaVO.class)); + return qry.list(); + } + public List buscaRutasFromOrgao(OrgaoConcedente orgao) { StringBuffer hql = new StringBuffer(); hql.append("select distinct r FROM Ruta r inner join r.rutaSecuenciaList rSeqList "); diff --git a/src/com/rjconsultores/ventaboletos/service/RutaService.java b/src/com/rjconsultores/ventaboletos/service/RutaService.java index a6cca6678..33512967e 100644 --- a/src/com/rjconsultores/ventaboletos/service/RutaService.java +++ b/src/com/rjconsultores/ventaboletos/service/RutaService.java @@ -4,6 +4,8 @@ */ package com.rjconsultores.ventaboletos.service; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; @@ -13,8 +15,7 @@ import com.rjconsultores.ventaboletos.entidad.ParadaSecuenciaCombinacaoLinha; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException; - -import java.util.List; +import com.rjconsultores.ventaboletos.vo.ruta.RutaVO; /** * @@ -83,6 +84,8 @@ public interface RutaService { public void generarCombinacion(Ruta ruta) throws BusinessException; + public List buscaRutaPorNumeroSemDadoRepetido(String palavraPesquisaRuta); + public List buscaRuta(String palavraPesquisaRuta); public List buscaRuta(String palavraPesquisaRuta, OrgaoConcedente orgao); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java index 47518979c..0a2d0c74d 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java @@ -39,6 +39,7 @@ import com.rjconsultores.ventaboletos.service.RutaService; import com.rjconsultores.ventaboletos.service.TramoService; import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import com.rjconsultores.ventaboletos.vo.ruta.RutaVO; /** * @@ -496,6 +497,11 @@ public class RutaServiceImpl implements RutaService { return existe; } + @Override + public List buscaRutaPorNumeroSemDadoRepetido(String palavraPesquisaRuta) { + return rutaDAO.buscaRutaPorNumeroSemDadoRepetido(palavraPesquisaRuta); + } + public List buscaRuta(String palavraPesquisaRuta) { return rutaDAO.buscaRuta(palavraPesquisaRuta); } diff --git a/src/com/rjconsultores/ventaboletos/vo/ruta/RutaVO.java b/src/com/rjconsultores/ventaboletos/vo/ruta/RutaVO.java new file mode 100644 index 000000000..949cea900 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/vo/ruta/RutaVO.java @@ -0,0 +1,67 @@ +package com.rjconsultores.ventaboletos.vo.ruta; + +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class RutaVO { + + private Long rutaId; + private String numRuta; + private String prefixo; + private String descruta; + private String orgaoConcedente; + + public RutaVO() { + } + + public RutaVO(Long rutaId, String numRuta, String prefixo, String descruta, String orgaoConcedente) { + super(); + this.rutaId = rutaId; + this.numRuta = numRuta; + this.prefixo = prefixo; + this.descruta = descruta; + this.orgaoConcedente = orgaoConcedente; + } + + public Long getRutaId() { + return rutaId; + } + + public void setRutaId(Long rutaId) { + this.rutaId = rutaId; + } + + public String getNumRuta() { + return numRuta; + } + + public void setNumRuta(String numRuta) { + this.numRuta = numRuta; + } + + public String getPrefixo() { + return prefixo; + } + + public void setPrefixo(String prefixo) { + this.prefixo = prefixo; + } + + public String getDescruta() { + return descruta; + } + + public void setDescruta(String descruta) { + this.descruta = descruta; + } + + public String getOrgaoConcedente() { + return orgaoConcedente; + } + + public void setOrgaoConcedente(String orgaoConcedente) { + this.orgaoConcedente = orgaoConcedente; + } + + +}