bug#al-2280

(AGUIA BRANCA) ESPEC 2022 - PRICING CONEXÃO - versão 2
dev:
qua:
master
valdir.cordeiro 2023-05-24 16:06:20 -03:00
parent 57c7946685
commit df54cedf7c
12 changed files with 301 additions and 32 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId>
<version>1.4.4</version>
<version>1.5.0</version>
<distributionManagement>
<repository>
<id>rj-releases</id>

View File

@ -3,9 +3,14 @@ package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
public interface ConexionCtrlDAO extends GenericDAO<ConexionCtrl, Long> {
public List<ConexionCtrl> buscarConexionesCtrl(Integer origenId, Integer destinoId);
public List<ConexionCtrl> buscarTodasConexionesCtrlPricing();
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Long conexionctrlId);
}

View File

@ -2,9 +2,12 @@ package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaConf;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaConfVO;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
public interface ConexionRutaConfDAO extends GenericDAO<ConexionRutaConf, Integer> {
@ -22,4 +25,9 @@ public interface ConexionRutaConfDAO extends GenericDAO<ConexionRutaConf, Intege
public ConexionRutaConf getByIdActivo(Integer conexionRutaConf);
public String getSQLCarregarConexoesCadastradas();
public void transformarObjetosConexao(List<ParadaVOConexionRuta> localidadesCombinadas,
List<ConexionCtrl> listConexionCtrl, List<ConexionCtrlVO> listConexionCtrlVO, List<Object[]> result);
}

View File

@ -1,5 +1,7 @@
package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.hibernate.Query;
@ -10,10 +12,18 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.ConexionCtrlDAO;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.vo.conexion.OrdenarLocalidadesGeradas;
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
@Repository("conexionCtrlDAO")
public class ConexionCtrlHibernateDAO extends GenericHibernateDAO<ConexionCtrl, Long>
implements ConexionCtrlDAO {
@Autowired
private ConexionRutaConfHibernateDAO confRutaDAO;
@Autowired
public ConexionCtrlHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
@ -39,4 +49,47 @@ public class ConexionCtrlHibernateDAO extends GenericHibernateDAO<ConexionCtrl,
return list;
}
@Override
@SuppressWarnings("unchecked")
public List<ConexionCtrl> buscarTodasConexionesCtrlPricing() {
StringBuilder sb = new StringBuilder();
sb.append(" from ConexionCtrl ");
sb.append(" where activo = 1 and indPricing = 1 ");
Query query = getSession().createQuery(sb.toString());
List<ConexionCtrl> list = query.list();
return list;
}
@Override
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Long conexionctrlId) {
if(conexionctrlId == null) {
return null;
}
StringBuilder sQuery = new StringBuilder();
sQuery.append(confRutaDAO.getSQLCarregarConexoesCadastradas())
.append(" where ")
.append(" coctrl.activo = 1 and coctrl.conexionctrl_id = :conexionctrl_id ");
Query qr = getSession().createSQLQuery(sQuery.toString());
qr.setParameter("conexionctrl_id", conexionctrlId);
List<ParadaVOConexionRuta> localidadesCombinadas = new ArrayList<ParadaVOConexionRuta>(0);
List<ConexionCtrl> listConexionCtrl = new ArrayList<ConexionCtrl>(0);
List<ConexionCtrlVO> listConexionCtrlVO = new ArrayList<ConexionCtrlVO>(0);
List<Object[]> result = qr.list();
confRutaDAO.transformarObjetosConexao(localidadesCombinadas, listConexionCtrl, listConexionCtrlVO, result);
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
return localidadesCombinadas;
}
}

View File

@ -157,26 +157,9 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
}
StringBuilder sQuery = new StringBuilder();
sQuery.append("select ctrl.conexionrutatramoctrl_id conexionrutatramoctrlId, r.ruta_id rutaId, r.numruta, ")
.append("case when coalesce(r.indsentidoida,1) = 1 then 'IDA' else 'VOLTA' end sentido, ")
.append("ori.parada_id paradaIdOri, ori.cveparada cveparadaOri, ori.descparada descparadaOri, ")
.append("des.parada_id paradaIdDes, des.cveparada cveparadaDes, des.descparada descparadaDes, ")
.append("oriT.parada_id paradaIdOriT, oriT.cveparada cveparadaOriT, oriT.descparada descparadaOriT, ")
.append("desT.parada_id paradaIdDesT, desT.cveparada cveparadaDesT, desT.descparada descparadaDesT, ")
.append("co.numgrupo, co.numsecuencia, ctr.ruta_origen_id rutaOrigenId, ctr.ruta_destino_id rutaDestinoId, ")
.append("ctr.ruta_destinoc_id rutaDestinoCId, coctrl.conexionctrl_id, coctrl.indPricing ")
.append("from conexion_ruta_tramo_ctrl ctrl ")
.append("join ruta r on r.ruta_id = ctrl.ruta_id ")
.append("join conexion_ruta_ctrl ctr on ctr.conexionrutactrl_id = ctrl.conexionrutactrl_id ")
.append("join conexion_ruta_conf conf on conf.conexionrutaconf_id = ctr.conexionrutaconf_id ")
.append("join conexion co on co.conexionrutatramoctrl_id = ctrl.conexionrutatramoctrl_id and co.activo = 1 ")
.append("join conexion_ctrl coctrl on coctrl.conexionctrl_id = co.conexionctrl_id and co.activo = 1 ")
.append("join parada ori on ori.parada_id = ctrl.origen_id ")
.append("join parada des on des.parada_id = ctrl.destino_id ")
.append("join parada oriT on oriT.parada_id = coctrl.origen_id ")
.append("join parada desT on desT.parada_id = coctrl.destino_id ")
.append("where ctrl.activo = 1 ")
.append("and conf.conexionrutaconf_id = :conexionrutaconfId ");
sQuery.append(getSQLCarregarConexoesCadastradas())
.append(" where ctrl.activo = 1 ")
.append(" and conf.conexionrutaconf_id = :conexionrutaconfId ");
Query qr = getSession().createSQLQuery(sQuery.toString());
qr.setParameter("conexionrutaconfId", conexionrutaconfId);
@ -186,6 +169,20 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
List<ConexionCtrlVO> listConexionCtrlVO = new ArrayList<ConexionCtrlVO>(0);
List<Object[]> result = qr.list();
transformarObjetosConexao(localidadesCombinadas, listConexionCtrl, listConexionCtrlVO, result);
retorno.setListConexionCtrl(listConexionCtrl);
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
retorno.setLocalidadesCombinadas(localidadesCombinadas);
return retorno;
}
@Override
public void transformarObjetosConexao(List<ParadaVOConexionRuta> localidadesCombinadas,
List<ConexionCtrl> listConexionCtrl, List<ConexionCtrlVO> listConexionCtrlVO, List<Object[]> result) {
for (Object[] tupla : result) {
Long conexionRutaTramoId = Long.valueOf(tupla[0].toString());
Integer rutaId = Integer.valueOf(tupla[1].toString());
@ -218,13 +215,31 @@ public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRu
localidadesCombinadas.add(trecho);
}
}
@Override
public String getSQLCarregarConexoesCadastradas() {
StringBuilder sQuery = new StringBuilder();
sQuery.append("select ctrl.conexionrutatramoctrl_id conexionrutatramoctrlId, r.ruta_id rutaId, r.numruta, ")
.append("case when coalesce(r.indsentidoida,1) = 1 then 'IDA' else 'VOLTA' end sentido, ")
.append("ori.parada_id paradaIdOri, ori.cveparada cveparadaOri, ori.descparada descparadaOri, ")
.append("des.parada_id paradaIdDes, des.cveparada cveparadaDes, des.descparada descparadaDes, ")
.append("oriT.parada_id paradaIdOriT, oriT.cveparada cveparadaOriT, oriT.descparada descparadaOriT, ")
.append("desT.parada_id paradaIdDesT, desT.cveparada cveparadaDesT, desT.descparada descparadaDesT, ")
.append("co.numgrupo, co.numsecuencia, ctr.ruta_origen_id rutaOrigenId, ctr.ruta_destino_id rutaDestinoId, ")
.append("ctr.ruta_destinoc_id rutaDestinoCId, coctrl.conexionctrl_id, coctrl.indPricing ")
.append("from conexion_ruta_tramo_ctrl ctrl ")
.append("join ruta r on r.ruta_id = ctrl.ruta_id ")
.append("join conexion_ruta_ctrl ctr on ctr.conexionrutactrl_id = ctrl.conexionrutactrl_id ")
.append("join conexion_ruta_conf conf on conf.conexionrutaconf_id = ctr.conexionrutaconf_id ")
.append("join conexion co on co.conexionrutatramoctrl_id = ctrl.conexionrutatramoctrl_id and co.activo = 1 ")
.append("join conexion_ctrl coctrl on coctrl.conexionctrl_id = co.conexionctrl_id and co.activo = 1 ")
.append("join parada ori on ori.parada_id = ctrl.origen_id ")
.append("join parada des on des.parada_id = ctrl.destino_id ")
.append("join parada oriT on oriT.parada_id = coctrl.origen_id ")
.append("join parada desT on desT.parada_id = coctrl.destino_id ");
retorno.setListConexionCtrl(listConexionCtrl);
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
retorno.setLocalidadesCombinadas(localidadesCombinadas);
return retorno;
return sQuery.toString();
}
private ConexionCtrlVO recuperarConexionCtrlVO(List<ConexionCtrlVO> listConexionCtrlVO, List<ConexionCtrl> listConexionCtrl, Integer origemConexaoCtrl, Integer destinoConexaoCtrl, Long conexionctrlId, Boolean indPricing) {

View File

@ -60,6 +60,9 @@ public class Conexion implements Serializable {
private Integer rutaId;
@Column(name = "CONEXIONRUTATRAMOCTRL_ID")
private Long conexionRutaTramoId;
@Transient
private Boolean indPricing;
public Long getCorridaId() {
return corridaId;
@ -202,4 +205,11 @@ public class Conexion implements Serializable {
this.conexionRutaTramoId = conexionRutaTramoId;
}
public Boolean getIndPricing() {
return indPricing == null ? false : indPricing;
}
public void setIndPricing(Boolean indPricing) {
this.indPricing = indPricing;
}
}

View File

@ -122,16 +122,19 @@ public class Pricing implements Serializable {
@Column(name = "INDSAFER")
private Boolean indSafer;
@OneToMany(mappedBy = "pricing", cascade = CascadeType.ALL)
private List<PricingConexao> pricingConexaoList;
public enum GerarFeriado {
// Declaração dos enum
// Declara<EFBFBD><EFBFBD>o dos enum
GERARSEMPRE("GERAR SEMPRE", "S"),
GERARQUANDOFERIADO("GERAR SÓ QUANDO FOR FERIADO", "F"),
GERARQUANDOFERIADO("GERAR S<EFBFBD> QUANDO FOR FERIADO", "F"),
GERARQUANDONAOFERIADO("GERAR QUANDO NÃO FOR FERIADO", "N");
GERARQUANDONAOFERIADO("GERAR QUANDO N<EFBFBD>O FOR FERIADO", "N");
// Definição das constantes
// Defini<EFBFBD><EFBFBD>o das constantes
public final String valor;
public final String descricao;
@ -570,5 +573,24 @@ public class Pricing implements Serializable {
public void setIndSafer(Boolean indSafer) {
this.indSafer = indSafer;
}
public List<PricingConexao> getPricingConexaoList() {
if(pricingConexaoList == null) {
pricingConexaoList = new ArrayList<>();
}
List<PricingConexao> pConexaoList = new ArrayList<PricingConexao>();
for (PricingConexao pCp : this.pricingConexaoList) {
if (pCp.getActivo() != EXCLUIDO.intValue()) {
pConexaoList.add(pCp);
}
}
return pConexaoList;
}
public void setPricingConexaoList(List<PricingConexao> pricingConexaoList) {
this.pricingConexaoList = pricingConexaoList;
}
}

View File

@ -0,0 +1,106 @@
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;
/**
*
* @author Valdir.Cordeiro
*/
@Entity
@SequenceGenerator(name = "PRICING_CONEXAO_SEQ", sequenceName = "PRICING_CONEXAO_SEQ", allocationSize = 1)
@Table(name = "PRICING_CONEXAO")
public class PricingConexao implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "PRICING_CONEXAO_SEQ")
@Column(name = "PRICINGCONEXAO_ID")
private Long pricingConexaoId;
@Basic(optional = false)
@Column(name = "ACTIVO")
private Integer activo;
@Basic(optional = false)
@Column(name = "FECMODIF")
@Temporal(TemporalType.TIMESTAMP)
private Date fecmodif;
@Basic(optional = false)
@Column(name = "USUARIO_ID")
private int usuarioId;
@JoinColumn(name = "PRICING_ID", referencedColumnName = "PRICING_ID")
@ManyToOne
private Pricing pricing;
@JoinColumn(name = "CONEXIONCTRL_ID", referencedColumnName = "CONEXIONCTRL_ID")
@ManyToOne
private ConexionCtrl conexionCtrl;
public PricingConexao() {
}
public Long getPricingConexaoId() {
return pricingConexaoId;
}
public void setPricingConexaoId(Long pricingConexaoId) {
this.pricingConexaoId = pricingConexaoId;
}
public Integer getActivo() {
return activo;
}
public void setActivo(Integer activo) {
this.activo = activo;
}
public Date getFecmodif() {
return fecmodif;
}
public void setFecmodif(Date fecmodif) {
this.fecmodif = fecmodif;
}
public int getUsuarioId() {
return usuarioId;
}
public void setUsuarioId(int usuarioId) {
this.usuarioId = usuarioId;
}
public Pricing getPricing() {
return pricing;
}
public void setPricing(Pricing pricing) {
this.pricing = pricing;
}
public ConexionCtrl getConexionCtrl() {
return conexionCtrl;
}
public void setConexionCtrl(ConexionCtrl conexionCtrl) {
this.conexionCtrl = conexionCtrl;
}
}

View File

@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.service;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
public interface ConexionCtrlService extends GenericService<ConexionCtrl, Long> {
@ -10,4 +11,8 @@ public interface ConexionCtrlService extends GenericService<ConexionCtrl, Long>
public void suscribirTodos(List<ConexionCtrl> conexionCtrlList);
public List<ConexionCtrl> buscarTodasConexionesCtrlPricing();
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Long conexionctrlId);
}

View File

@ -20,6 +20,7 @@ import com.rjconsultores.ventaboletos.service.ConexionConfService;
import com.rjconsultores.ventaboletos.service.ConexionCtrlService;
import com.rjconsultores.ventaboletos.service.ConexionService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
@Service("conexionCtrlService")
public class ConexionCtrlServiceImpl implements ConexionCtrlService {
@ -120,4 +121,14 @@ public class ConexionCtrlServiceImpl implements ConexionCtrlService {
}
conexionCtrlDAO.suscribirTodos(conexionCtrlList);
}
@Override
public List<ConexionCtrl> buscarTodasConexionesCtrlPricing() {
return conexionCtrlDAO.buscarTodasConexionesCtrlPricing();
}
@Override
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Long conexionctrlId) {
return conexionCtrlDAO.carregarConexoesCadastradas(conexionctrlId);
}
}

View File

@ -22,6 +22,7 @@ import com.rjconsultores.ventaboletos.entidad.Pricing;
import com.rjconsultores.ventaboletos.entidad.PricingAsiento;
import com.rjconsultores.ventaboletos.entidad.PricingCategoria;
import com.rjconsultores.ventaboletos.entidad.PricingClase;
import com.rjconsultores.ventaboletos.entidad.PricingConexao;
import com.rjconsultores.ventaboletos.entidad.PricingCorrida;
import com.rjconsultores.ventaboletos.entidad.PricingDia;
import com.rjconsultores.ventaboletos.entidad.PricingFormapago;
@ -171,6 +172,12 @@ public class PricingServiceImpl implements PricingService {
pricingFormapago.setFecmodif(Calendar.getInstance().getTime());
pricingFormapago.setActivo(ativarInativarExcluir);
}
for (PricingConexao pricingConexao : entidad.getPricingConexaoList()) {
pricingConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
pricingConexao.setFecmodif(Calendar.getInstance().getTime());
pricingConexao.setActivo(ativarInativarExcluir);
}
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
@ -254,6 +261,23 @@ public class PricingServiceImpl implements PricingService {
clonePricing.setPricingVigenciaList(obtemPricingVigenciaList(pricing, clonePricing, ativar));
clonePricing.setPricingTipoServicioList(obtemPricingTipoServicioList(pricing, clonePricing, ativar));
clonePricing.setPricingFormapagoList(obtemPricingFormapagoList(pricing, clonePricing, ativar));
clonePricing.setPricingConexaoList(obtemPricingConexaoList(pricing, clonePricing, ativar));
}
private List<PricingConexao> obtemPricingConexaoList(Pricing pricing, Pricing clonePricing, Integer ativar) {
List<PricingConexao> pricingConexaoList = new ArrayList<PricingConexao>();
for (PricingConexao pricingConexao : pricing.getPricingConexaoList()) {
PricingConexao clonePricingConexao = new PricingConexao();
clonePricingConexao.setActivo(Pricing.ATIVO);
clonePricingConexao.setConexionCtrl(pricingConexao.getConexionCtrl());
clonePricingConexao.setFecmodif(Calendar.getInstance().getTime());
clonePricingConexao.setPricing(pricing);
clonePricingConexao.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
pricingConexaoList.add(clonePricingConexao);
}
return pricingConexaoList;
}
private List<PricingFormapago> obtemPricingFormapagoList(Pricing pricing, Pricing clonePricing, Integer ativar) {

View File

@ -1,6 +1,7 @@
package com.rjconsultores.ventaboletos.vo.parada;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PricingConexao;
public class ParadaVOConexionRuta {
@ -18,6 +19,8 @@ public class ParadaVOConexionRuta {
private ConexionCtrlVO conexionCtrl;
private ConexionRutaCtrlVO conexionRutaCtrl;
private PricingConexao pricingConexao;
public ParadaVOConexionRuta(int grupo, Parada paradaOrigem, Parada paradaDestino, Integer rutaId, String numRuta, Short secuencia,
boolean valido, Parada paradaOrigemTrecho, Parada paradaDestinoTrecho, ConexionCtrlVO conexionCtrl,
@ -187,4 +190,11 @@ public class ParadaVOConexionRuta {
return numRuta + " - " + sentido;
}
public PricingConexao getPricingConexao() {
return pricingConexao;
}
public void setPricingConexao(PricingConexao pricingConexao) {
this.pricingConexao = pricingConexao;
}
}