From c9d153aaba1a7f96a14dc2df1fae14fa8a2dc064 Mon Sep 17 00:00:00 2001 From: aristides Date: Fri, 18 Feb 2022 02:32:12 +0000 Subject: [PATCH] fixes bug#23969 qua: dev:Valdevir git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@110942 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/entidad/Ruta.java | 45 ++++++++++++++- .../service/impl/RutaServiceImpl.java | 57 +++++++++++++++---- .../service/impl/TramoRutaServiceImpl.java | 33 ++++++++++- .../vo/esquemaoperacional/RutaTramoVO.java | 11 ++++ .../SecuenciaRutaTramoCoeficienteVO.java | 11 ++++ 5 files changed, 144 insertions(+), 13 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/entidad/Ruta.java b/src/com/rjconsultores/ventaboletos/entidad/Ruta.java index 4c822a109..783505d70 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Ruta.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Ruta.java @@ -156,15 +156,27 @@ public class Ruta implements Serializable, Comparable, Auditavel { @Transient private Boolean isClone; + @Transient + @NaoAuditar + private Boolean isCadastro; + @Column(name = "indnumfidelidadobligatorio") private Boolean indNumFidelidadObligatorio; + @Transient + @NaoAuditar + private List rutaCombinacionTemporariaList; + @Transient @NaoAuditar private Ruta rutaClone; @Column(name = "STATUS_AUTORIZADORA") private Integer statusAutorizadora; + + @Transient + @NaoAuditar + private ClaseServicio claseServicioRutaOrigem; public Ruta() { super(); @@ -253,6 +265,7 @@ public class Ruta implements Serializable, Comparable, Auditavel { ruta.usuarioId = other.usuarioId; ruta.ventaOffLine = other.ventaOffLine; + ruta.claseServicioRutaOrigem=other.claseServicioRutaOrigem; return ruta; } @@ -565,7 +578,7 @@ public class Ruta implements Serializable, Comparable, Auditavel { } public Boolean getIsClone() { - return isClone; + return isClone == null ? false: isClone; } public void setIsClone(Boolean isClone) { @@ -663,4 +676,34 @@ public class Ruta implements Serializable, Comparable, Auditavel { public void setStatusAutorizadora(Integer statusAutorizadora) { this.statusAutorizadora = statusAutorizadora; } + + public List getRutaCombinacionTemporariaList() { + return rutaCombinacionTemporariaList; + } + + public void setRutaCombinacionTemporariaList(List rutaCombinacionTemporariaList) { + this.rutaCombinacionTemporariaList = rutaCombinacionTemporariaList; + } + + public Boolean getIsCadastro() { + return isCadastro==null?false:isCadastro; + } + + public void setIsCadastro(Boolean isCadastro) { + this.isCadastro = isCadastro; + } + + public ClaseServicio getClaseServicioRutaOrigem() { + return claseServicioRutaOrigem; + } + + public void setClaseServicioRutaOrigem(ClaseServicio claseServicioRutaOrigem) { + this.claseServicioRutaOrigem = claseServicioRutaOrigem; + } + + + + + + } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java index 57bd3e17a..4d7ad79dc 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java @@ -6,6 +6,7 @@ package com.rjconsultores.ventaboletos.service.impl; import java.util.ArrayList; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.List; @@ -234,6 +235,7 @@ public class RutaServiceImpl implements RutaService { } Boolean isClone = entidad.getIsClone() != null ? entidad.getIsClone() : Boolean.FALSE; + Boolean isCadastro = entidad.getIsCadastro(); if (entidad.getRutaId() == null) { entidad = rutaDAO.suscribir(entidad); @@ -241,7 +243,7 @@ public class RutaServiceImpl implements RutaService { entidad = rutaDAO.actualizacion(entidad); } if (lsParadasSequencia != null) { - if (!isClone) { + if (!isClone && !isCadastro) { generarSecuencias(entidad, lsParadasSequencia); } generarCombinacion(entidad); @@ -283,9 +285,10 @@ public class RutaServiceImpl implements RutaService { ClaseServicio claseServicio = ruta.getClaseServicio(); Tramo tramo = tramoService.obtenerTramoUnicoRuta(ori, des, via, claseServicio); - - if (tramo != null) { - + if (tramo == null && isCopiaComAlteracaoDeClasse(ruta)) { + tramo = tramoService.obtenerTramoUnicoRuta(ori, des, via, ruta.getClaseServicioRutaOrigem()); + } + if (tramo != null ) { RutaSecuencia rutaSecuencia = new RutaSecuencia(); rutaSecuencia.setRuta(ruta); rutaSecuencia.setTramo(tramo); @@ -295,10 +298,30 @@ public class RutaServiceImpl implements RutaService { rutaSecuencia.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); rutaSecuencia.setKmOriginal(tramo.getKmReal()); rutaSecuencia = rutaSecuenciaService.suscribir(rutaSecuencia); - - List lsRutaCaseta = rutaSecuenciaBackup.get(tramo.getTramoId()); - if( lsRutaCaseta != null && !lsRutaCaseta.isEmpty() ) { - rutaSecuencia.setLsRutaCase(lsRutaCaseta); + + List lsRutaCaseta; + if (ruta.getIsClone()) { + lsRutaCaseta = lsParadasSequencia.get(i).getCasetas(); + if (lsRutaCaseta != null && !lsRutaCaseta.isEmpty()) { + List rutasCaseta = new ArrayList(); + + for (RutaCaseta rc : lsRutaCaseta) { + RutaCaseta rutaCaseta = new RutaCaseta(); + rutaCaseta.setRutaSecuencia(rutaSecuencia); + rutaCaseta.setCasetaPeaje(rc.getCasetaPeaje()); + rutaCaseta.setActivo(Boolean.TRUE); + rutaCaseta.setFecmodif(new Date()); + rutaCaseta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + rutasCaseta.add(rutaCaseta); + } + + rutaSecuencia.setLsRutaCase(rutasCaseta); + } + } else { + lsRutaCaseta = rutaSecuenciaBackup.get(tramo.getTramoId()); + if (lsRutaCaseta != null && !lsRutaCaseta.isEmpty()) { + rutaSecuencia.setLsRutaCase(lsRutaCaseta); + } } @@ -312,6 +335,10 @@ public class RutaServiceImpl implements RutaService { } } + private boolean isCopiaComAlteracaoDeClasse(Ruta ruta) { + return ruta.getIsClone() && ruta.getClaseServicioRutaOrigem() != null && (ruta.getClaseServicioRutaOrigem().getClaseservicioId() != ruta.getClaseServicio().getClaseservicioId()); + } + @Transactional(rollbackFor = BusinessException.class) public Ruta actualizacion(Ruta ruta, List lsParadasSequencia) throws BusinessException { if (lsParadasSequencia != null) { @@ -434,9 +461,17 @@ public class RutaServiceImpl implements RutaService { } private boolean indVenta(Ruta ruta, Tramo trBuscaOrigemDestino) { - for (RutaCombinacion rc : ruta.getRutaCombinacionList()) { - if (rc.getTramo().equals(trBuscaOrigemDestino)) { - return rc.getIndventa(); + if (!ruta.getIsClone()) { + for (RutaCombinacion rc : ruta.getRutaCombinacionList()) { + if (rc.getTramo().equals(trBuscaOrigemDestino)) { + return rc.getIndventa(); + } + } + } else { + for (RutaCombinacion rcTemporaria : ruta.getRutaCombinacionTemporariaList()) { + if (rcTemporaria.getTramo().equals(trBuscaOrigemDestino)) { + return rcTemporaria.getIndventa(); + } } } return true; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java index bbe31ff1a..92e90b85b 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java @@ -397,6 +397,15 @@ public class TramoRutaServiceImpl implements TramoRutaService { nuevaSecuencia.setCoeficienteTarifa3(orgaoTramo.getCoeficienteTarifa3()); nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); + } else if (IsClasseAlterada(rutaTramoVO)) { + orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicioRutaOrigem().getClaseservicioId()); + if (orgaoTramo != null) { + nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); + nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); + nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); + nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); + nuevaSecuencia.setClaseServicioRutaOrigemUtilizadaNaPesquisa(true); + } } incluirCoeficiente(nuevaSecuencia, rutaTramoVO); } @@ -408,9 +417,21 @@ public class TramoRutaServiceImpl implements TramoRutaService { nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); + } else if (IsClasseAlterada(rutaTramoVO)) { + tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicioRutaOrigem()); + if (tramoServicio != null) { + nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); + nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); + nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); + nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); + } } } + private boolean IsClasseAlterada(RutaTramoVO rutaTramoVO) { + return rutaTramoVO.getClaseServicioRutaOrigem() != null && rutaTramoVO.getClaseServicio().getClaseservicioId()!=rutaTramoVO.getClaseServicioRutaOrigem().getClaseservicioId(); + } + private void incluirCoeficiente(SecuenciaRutaTramoCoeficienteVO nuevaSecuencia, RutaTramoVO rutaTramoVO) { if (nuevaSecuencia.getKmCoeficiente1() == null && rutaTramoVO.getCoeficienteDefault1() != null) { nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); @@ -532,7 +553,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { } } - if (secuencia.getOrgaoTramoId() == null + if ((secuencia.getClaseServicioRutaOrigemUtilizadaNaPesquisa() || secuencia.getOrgaoTramoId() == null ) && secuencia.getCoeficienteTarifa1() != null) { OrgaoTramo orgaoTramo = new OrgaoTramo(); orgaoTramo.setClaseServicio(claseServicio); @@ -594,6 +615,16 @@ public class TramoRutaServiceImpl implements TramoRutaService { for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { RutaCombinacion rutaCombinacion = new RutaCombinacion(); rutaCombinacion.setIndventa(s.getPermiteVenda() == null ? true : s.getPermiteVenda()); + if (ruta.getIsClone() ) { + Tramo tramoAtual = tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia()); + for (RutaCombinacion rcRuta : ruta.getRutaCombinacionList()) { + if (rcRuta.getTramo() != null && tramoAtual != null && rcRuta.getTramo().getTramoId() == tramoAtual.getTramoId()) { + rutaCombinacion.setIndventa(rcRuta.getIndventa() == null ? true : rcRuta.getIndventa()); + } + } + } + + rutaCombinacion.setRuta(ruta); rutaCombinacion.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java index faec873c3..02ee5c066 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java @@ -19,6 +19,7 @@ public class RutaTramoVO { private Boolean ventaHandHeld; private Boolean solicitaNombrePasajero; private ClaseServicio claseServicio; + private ClaseServicio claseServicioRutaOrigem; private OrgaoConcedente orgaoConcedente; private List lsSecuenciaRutaTramoVO; private List lsCombinacionRutaTramoVO; @@ -169,6 +170,16 @@ public class RutaTramoVO { this.lsParadaSecuenciaCombinacaoLinhas = lsParadaSecuenciaCombinacaoLinhas; } + + + public ClaseServicio getClaseServicioRutaOrigem() { + return claseServicioRutaOrigem; + } + + public void setClaseServicioRutaOrigem(ClaseServicio claseServicioRutaOrigem) { + this.claseServicioRutaOrigem = claseServicioRutaOrigem; + } + public Map getParadasComKmEntradaSaida(){ Map kmEntradaSaida = new HashMap(); for (SecuenciaRutaTramoVO s : getLsSecuenciaRutaTramoVO()){ diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java index 20ac91431..c0a961028 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java @@ -28,6 +28,7 @@ public class SecuenciaRutaTramoCoeficienteVO { private CoeficienteTarifa coeficienteTarifa3; private BigDecimal kmCoeficiente3; private Boolean permiteVenda; + private Boolean claseServicioRutaOrigemUtilizadaNaPesquisa; public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido) { super(); @@ -259,4 +260,14 @@ public class SecuenciaRutaTramoCoeficienteVO { this.kmEntradaDestino = kmEntradaDestino; } + public Boolean getClaseServicioRutaOrigemUtilizadaNaPesquisa() { + return claseServicioRutaOrigemUtilizadaNaPesquisa==null?false:claseServicioRutaOrigemUtilizadaNaPesquisa; + } + + public void setClaseServicioRutaOrigemUtilizadaNaPesquisa(Boolean claseServicioRutaOrigemUtilizadaNaPesquisa) { + this.claseServicioRutaOrigemUtilizadaNaPesquisa = claseServicioRutaOrigemUtilizadaNaPesquisa; + } + + + }