From 422acd9b641f4f1e7b690a21b431829af5f2e0c3 Mon Sep 17 00:00:00 2001 From: "eduardo.dicarde" Date: Mon, 1 Aug 2016 19:32:24 +0000 Subject: [PATCH] fixes bug #7459 Merge com Branch mantis7459 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@58622 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ParadaSecuenciaCombinacaoLinha.java | 39 ++++++ .../ventaboletos/service/RutaService.java | 11 ++ .../service/TramoRutaService.java | 15 +++ .../service/impl/RutaServiceImpl.java | 42 +++++++ .../service/impl/TramoRutaServiceImpl.java | 119 ++++++++++++++++++ .../vo/esquemaoperacional/RutaTramoVO.java | 12 +- 6 files changed, 236 insertions(+), 2 deletions(-) create mode 100644 src/com/rjconsultores/ventaboletos/entidad/ParadaSecuenciaCombinacaoLinha.java diff --git a/src/com/rjconsultores/ventaboletos/entidad/ParadaSecuenciaCombinacaoLinha.java b/src/com/rjconsultores/ventaboletos/entidad/ParadaSecuenciaCombinacaoLinha.java new file mode 100644 index 000000000..66a99ac50 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/entidad/ParadaSecuenciaCombinacaoLinha.java @@ -0,0 +1,39 @@ +package com.rjconsultores.ventaboletos.entidad; + +import java.util.List; + +/** + * + * @author Eduardo Classe responsável pela geração das linhas automaticamente identificando origem e destino + */ +public class ParadaSecuenciaCombinacaoLinha { + + private ParadaSecuencia origem; + private List destinos; + private Via via; + + + public ParadaSecuencia getOrigem() { + return origem; + } + + public void setOrigem(ParadaSecuencia origem) { + this.origem = origem; + } + + public List getDestinos() { + return destinos; + } + + public void setDestinos(List destinos) { + this.destinos = destinos; + } + + public Via getVia() { + return via; + } + + public void setVia(Via via) { + this.via = via; + } +} \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/service/RutaService.java b/src/com/rjconsultores/ventaboletos/service/RutaService.java index 30ce40196..6a7539f16 100644 --- a/src/com/rjconsultores/ventaboletos/service/RutaService.java +++ b/src/com/rjconsultores/ventaboletos/service/RutaService.java @@ -9,6 +9,7 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.ParadaSecuencia; +import com.rjconsultores.ventaboletos.entidad.ParadaSecuenciaCombinacaoLinha; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException; @@ -93,4 +94,14 @@ public interface RutaService { public Integer getNumSecuenciaOrigen(Integer rutaId, Integer origenId); public Integer getNumSecuenciaDestino(Integer rutaId, Integer destinoId); + /** + * Método verifica na listagem de sequencias quais precisam ser geradas + * @author Eduardo Dicarte + * @param ruta Ruta Ruta + * @param lsParadasSequencia Sequencias + * @param sequenciasInformadas Novas sequencias que foram inseridas pelo usuário + * @return Retorna a coleção de sequencias que precisam ser geradas + */ + public List verificarSeqRutaNaoGerada(Ruta ruta, List lsParadasSequencia); + } diff --git a/src/com/rjconsultores/ventaboletos/service/TramoRutaService.java b/src/com/rjconsultores/ventaboletos/service/TramoRutaService.java index 558b9a70f..62db54193 100644 --- a/src/com/rjconsultores/ventaboletos/service/TramoRutaService.java +++ b/src/com/rjconsultores/ventaboletos/service/TramoRutaService.java @@ -42,4 +42,19 @@ public interface TramoRutaService { * @return */ public RutaTramoVO generarRutaRegreso(RutaTramoVO rutaTramoVO); + + /** + * Gera combinação na tela de Rutas + * @param rutaTramoVO + * @return + */ + public List generarCombinacionTrechoRuta(RutaTramoVO rutaTramoVO); + + /** + * Gera tramos para uma ruta existente + * @param rutaTramoVO + * @param ruta Ruta para qual serão criados os tramos + * @throws BusinessException + */ + public void generarTramosRutaExistente(RutaTramoVO rutaTramoVO, Ruta ruta) throws BusinessException; } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java index 34b56066f..350adb9c9 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/RutaServiceImpl.java @@ -26,6 +26,7 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.ParadaSecuencia; +import com.rjconsultores.ventaboletos.entidad.ParadaSecuenciaCombinacaoLinha; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaCombinacion; import com.rjconsultores.ventaboletos.entidad.RutaEmpresa; @@ -363,4 +364,45 @@ public class RutaServiceImpl implements RutaService { public Integer getNumSecuenciaDestino(Integer rutaId, Integer destinoId){ return obtenerID(rutaId).numSecuenciaDestino(destinoId); } + + @Override + public List verificarSeqRutaNaoGerada(Ruta ruta, List lsParadasSecuencia) { + + List sequencias = null; + + if (lsParadasSecuencia != null) { + ClaseServicio claseServicio = ruta.getClaseServicio(); + sequencias = new ArrayList(); + + for (ParadaSecuencia sequenciaInformada : lsParadasSecuencia) { + + Parada origem = sequenciaInformada.getParada(); + Via via = sequenciaInformada.getVia(); + + ParadaSecuenciaCombinacaoLinha paradaSecuenciaCombinacaoLinha = new ParadaSecuenciaCombinacaoLinha(); + paradaSecuenciaCombinacaoLinha.setOrigem(sequenciaInformada); + paradaSecuenciaCombinacaoLinha.setVia(via); + paradaSecuenciaCombinacaoLinha.setDestinos(new ArrayList()); + + for (ParadaSecuencia sequenciaExistente : lsParadasSecuencia) { + if (sequenciaInformada.getParada().getParadaId() == sequenciaExistente.getParada().getParadaId()) { + continue; + } + + Parada destino = sequenciaExistente.getParada(); + Tramo tramo = tramoService.obtenerTramoUnicoRuta(origem, destino, via, claseServicio); + + if (tramo == null) { + paradaSecuenciaCombinacaoLinha.getDestinos().add(sequenciaExistente); + } + } + + if (!paradaSecuenciaCombinacaoLinha.getDestinos().isEmpty()) { + sequencias.add(paradaSecuenciaCombinacaoLinha); + } + } + } + + return sequencias; + } } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java index 9864839f3..ae3d041fc 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java @@ -11,6 +11,8 @@ import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.zkoss.util.resource.Labels; +import org.zkoss.zhtml.Messagebox; import com.rjconsultores.ventaboletos.dao.OrgaoTramoDAO; import com.rjconsultores.ventaboletos.dao.RutaDAO; @@ -21,6 +23,8 @@ import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; import com.rjconsultores.ventaboletos.entidad.OrgaoTramo; import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.entidad.ParadaSecuencia; +import com.rjconsultores.ventaboletos.entidad.ParadaSecuenciaCombinacaoLinha; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaCombinacion; import com.rjconsultores.ventaboletos.entidad.RutaEmpresa; @@ -288,6 +292,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { @Override public List generarCombinacion(RutaTramoVO rutaTramoVO) { // una nueva lista que va a ser ordenada. Con eso, no afecta la lista original + + rutaTramoVO.getLsCombinacionRutaTramoVO(); List lsSecuenciaRutaTramoVO = new ArrayList(rutaTramoVO.getLsSecuenciaRutaTramoVO()); List lsSecuenciaCombinacionRutaTramoVO = new ArrayList(); @@ -388,6 +394,37 @@ public class TramoRutaServiceImpl implements TramoRutaService { return lsSecuenciaCombinacionRutaTramoVO; } + + @Override + public List generarCombinacionTrechoRuta(RutaTramoVO rutaTramoVO) { + // una nueva lista que va a ser ordenada. Con eso, no afecta la lista original + + List lsSecuenciaCombinacionRutaTramoVO = new ArrayList(); + + for (ParadaSecuenciaCombinacaoLinha secuencia: rutaTramoVO.getLsParadaSecuenciaCombinacaoLinhas()){ + Parada origem = secuencia.getOrigem().getParada(); + Via via = secuencia.getVia(); + BigDecimal kmReal = new BigDecimal(secuencia.getOrigem().getKmReal() != null && !secuencia.getOrigem().getKmReal().isEmpty() ? secuencia.getOrigem().getKmReal() : "0"); + + for (ParadaSecuencia secuenciaDestino: secuencia.getDestinos()){ + + Parada destino = secuenciaDestino.getParada(); + + SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origem, destino, via, + secuencia.getOrigem().getSecuencia().intValue(), kmReal, new HoraSistema(), rutaTramoVO.getNumRuta()); + + if (nuevaSecuencia.getKmCoeficiente1() == null) { + nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); + } + + nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); + + lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); + } + } + + return lsSecuenciaCombinacionRutaTramoVO; + } /** * Genera los datos de tramo, tramo tiempo e coeficiente tarifa sino existen los datos @@ -448,4 +485,86 @@ public class TramoRutaServiceImpl implements TramoRutaService { return false; } + + @Transactional(rollbackFor = BusinessException.class) + @Override + public void generarTramosRutaExistente(RutaTramoVO rutaTramoVO, Ruta ruta) throws BusinessException { + + this.validarGenerarTramosRutas(rutaTramoVO); + + // Genero los tramos y tramos servicios de la combinacion que no existen + // Aqui si genera tambien los tramos de la secuencia + for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { + log.debug("Origen:" + s.getOrigen() + ";Destino:" + s.getDestino() + ";Via:" + s.getVia()); + boolean fueGenerado = generarDatos(s, rutaTramoVO.getClaseServicio(), rutaTramoVO.getOrgaoConcedente()); + log.debug("Fue Generado:" + fueGenerado); + } + + /*// Genero la ruta + Ruta ruta = new Ruta(); + ruta.setDescruta(rutaTramoVO.getDescRuta()); + ruta.setRutaId(rutaTr); + ruta.setClaseServicio(rutaTramoVO.getClaseServicio()); + ruta.setOrgaoConcedente(rutaTramoVO.getOrgaoConcedente()); + ruta.setIndNombreObligatorio(rutaTramoVO.getSolicitaNombrePasajero()); + ruta.setIndSentidoIda(rutaTramoVO.getIndSentidoIda()); + if (rutaTramoVO.getVentaHandHeld() == null) { + ruta.setVentaOffLine(false); + } else { + ruta.setVentaOffLine(rutaTramoVO.getVentaHandHeld()); + } + + ruta.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + ruta.setActivo(Boolean.TRUE); + ruta.setFecmodif(new java.util.Date()); + ruta.setPrefixo(rutaTramoVO.getPrefixo()); + ruta.setNumRuta(rutaTramoVO.getNumRuta()); + //valores de tributação para ecf + ruta.setIndTribPedagio(Boolean.FALSE); + ruta.setIndTribTarifa(Boolean.TRUE); + ruta.setIndTribTaxaEmbarque(Boolean.FALSE); + + ruta = rutaDAO.suscribir(ruta);*/ + + // Genero la secuencia de la ruta + for (SecuenciaRutaTramoVO s : rutaTramoVO.getLsSecuenciaRutaTramoVO()) { + RutaSecuencia rutaSecuencia = new RutaSecuencia(); + rutaSecuencia.setNumsecuencia(s.getSecuencia().shortValue()); + rutaSecuencia.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); + rutaSecuencia.setRuta(ruta); + rutaSecuencia = rutaSecuenciaService.suscribir(rutaSecuencia); + + if (rutaSecuencia.getRutasecuenciaId() == null){ + throw new BusinessException(Labels.getLabel("gerarCombinacionTramoRutaController.MSG.error.rutaSecuencia")); + } + } + + for (SecuenciaRutaTramoCoeficienteVO s : rutaTramoVO.getLsCombinacionRutaTramoVO()) { + RutaCombinacion rutaCombinacion = new RutaCombinacion(); + rutaCombinacion.setIndventa(s.getPermiteVenda() == null ? true : s.getPermiteVenda()); + rutaCombinacion.setRuta(ruta); + rutaCombinacion.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); + + rutaCombinacion = rutaCombinacionService.suscribir(rutaCombinacion); + + if (rutaCombinacion.getRutacombinacionId() == null){ + throw new BusinessException(Labels.getLabel("gerarCombinacionTramoRutaController.MSG.error.rutaCombinacion")); + } + } + + for (Empresa e : rutaTramoVO.getLsEmpresa()) { + RutaEmpresa rutaEmpresa = new RutaEmpresa(); + rutaEmpresa.setEmpresa(e); + rutaEmpresa.setActivo(Boolean.TRUE); + rutaEmpresa.setFecmodif(Calendar.getInstance().getTime()); + rutaEmpresa.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + rutaEmpresa.setRuta(ruta); + + rutaEmpresa = rutaEmpresaService.suscribir(rutaEmpresa); + + if (rutaEmpresa.getRutaEmpresaId() == null){ + throw new BusinessException(Labels.getLabel("gerarCombinacionTramoRutaController.MSG.error.rutaEmpresa")); + } + } + } } diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java index c25edb3af..e567d8402 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java @@ -8,6 +8,7 @@ import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente; +import com.rjconsultores.ventaboletos.entidad.ParadaSecuenciaCombinacaoLinha; public class RutaTramoVO { @@ -24,6 +25,7 @@ public class RutaTramoVO { private String descRuta; private Boolean indSentidoIda; private String numRuta; + private List lsParadaSecuenciaCombinacaoLinhas; public RutaTramoVO() { lsSecuenciaRutaTramoVO = new ArrayList(); @@ -145,6 +147,12 @@ public class RutaTramoVO { public void setCoeficienteDefaul2(CoeficienteTarifa coeficienteDefaul2) { this.coeficienteDefaul2 = coeficienteDefaul2; } - - + + public List getLsParadaSecuenciaCombinacaoLinhas() { + return lsParadaSecuenciaCombinacaoLinhas; + } + + public void setLsParadaSecuenciaCombinacaoLinhas(List lsParadaSecuenciaCombinacaoLinhas) { + this.lsParadaSecuenciaCombinacaoLinhas = lsParadaSecuenciaCombinacaoLinhas; + } }