From c750a00654ec8a5d0458bd1e1ba80471a8725587 Mon Sep 17 00:00:00 2001 From: thiago Date: Mon, 21 Jan 2019 17:03:00 +0000 Subject: [PATCH] fixes bug#13034 dev:Wilian qua:Amarildo git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@89108 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/entidad/Tramo.java | 6 + .../service/impl/TramoRutaServiceImpl.java | 255 ++++++------------ .../vo/esquemaoperacional/RutaTramoVO.java | 4 +- .../SecuenciaRutaTramoCoeficienteVO.java | 33 ++- .../SecuenciaRutaTramoVO.java | 59 +++- 5 files changed, 166 insertions(+), 191 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/entidad/Tramo.java b/src/com/rjconsultores/ventaboletos/entidad/Tramo.java index 1708df6db..e8c45e688 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/Tramo.java +++ b/src/com/rjconsultores/ventaboletos/entidad/Tramo.java @@ -162,6 +162,9 @@ public class Tramo implements Serializable { } public BigDecimal getKmEntradaSaidaDestino() { + if(kmEntradaSaidaDestino == null) { + return BigDecimal.ZERO; + } return kmEntradaSaidaDestino; } @@ -268,6 +271,9 @@ public class Tramo implements Serializable { } public BigDecimal getKmEntradaSaida() { + if(kmEntradaSaida == null) { + return BigDecimal.ZERO; + } return kmEntradaSaida; } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java index eccb79ec9..18966baa1 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java @@ -157,37 +157,23 @@ public class TramoRutaServiceImpl implements TramoRutaService { ruta = rutaDAO.suscribir(ruta); - Map kmEntradaSaida = rutaTramoVO.getParadasComKmEntradaSaida(); - // 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.setCantKmEntradaSaida(s.getKmEntradaSaida()); - rutaSecuencia.setKmOriginal(s.getKmReal().subtract(s.getKmEntradaSaida())); - BigDecimal KmESOrigem = BigDecimal.ZERO; - BigDecimal KmESDestino = BigDecimal.ZERO; + rutaSecuencia.setKmOriginal(s.getKmOriginal()); - if (kmEntradaSaida.containsKey(s.getOrigen())){ - KmESOrigem = kmEntradaSaida.get(s.getOrigen()); - } - if (kmEntradaSaida.containsKey(s.getDestino())){ - KmESDestino = kmEntradaSaida.get(s.getDestino()); - } if(rutaSecuencia.getTramo() == null ){ Tramo tramo = new Tramo(); tramo.setDesctramo(tramoService.gerarDescripcionTramo(s.getOrigen(), s.getDestino(), s.getVia())); tramo.setOrigem(s.getOrigen()); tramo.setDestino(s.getDestino()); - tramo.setKmReal(s.getKmReal().add(KmESOrigem).add(KmESDestino)); - if (KmESOrigem.compareTo(BigDecimal.ZERO) == 1){ - tramo.setKmEntradaSaida(KmESOrigem); - } - if (KmESDestino.compareTo(BigDecimal.ZERO) == 1){ - tramo.setKmEntradaSaidaDestino(KmESDestino); - } + tramo.setKmReal(s.getKmReal()); + tramo.setKmEntradaSaida(s.getKmSaidaOrigen()); + tramo.setKmEntradaSaidaDestino(s.getKmEntradaDestino()); tramo.setVia(s.getVia()); tramo.setActivo(Boolean.TRUE); tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); @@ -197,8 +183,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { rutaSecuencia.setTramo(tramo); } else { Tramo tramo = rutaSecuencia.getTramo(); - tramo.setKmEntradaSaida(KmESOrigem); - tramo.setKmEntradaSaidaDestino(KmESDestino);; + tramo.setKmEntradaSaida(s.getKmSaidaOrigen()); + tramo.setKmEntradaSaidaDestino(s.getKmEntradaDestino()); tramo = tramoDAO.actualizacion(tramo); } rutaSecuencia.setRuta(ruta); @@ -253,13 +239,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { List lsSecuenciaRutaTramoRegresoVO = new ArrayList(); List lsSecuenciaRutaTramoIdaVO = new ArrayList(rutaTramoVO.getLsSecuenciaRutaTramoVO()); // Reordena a lista - Collections.sort(lsSecuenciaRutaTramoIdaVO, new Comparator() { - - @Override - public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) { - return o2.getSecuencia().compareTo(o1.getSecuencia()); - } - }); + Collections.reverse(lsSecuenciaRutaTramoIdaVO); int secuencia = 0; @@ -297,7 +277,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { s.setTramoServicioId(tramoServicio.getTramoservicioId()); SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), - s.getTramoId(), s.getTramoServicioId(), rutaTramoRegresoVO.getNumRuta(), s.getKmEntradaSaida()); + s.getTramoId(), s.getTramoServicioId(), rutaTramoRegresoVO.getNumRuta(), s.getKmSaidaOrigen()); OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(s.getDestino().getParadaId(), s.getOrigen().getParadaId(), s.getVia().getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); @@ -321,7 +301,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { secuenciaRutaTramoCoeficienteVO.setPermiteVenda(s.getPermiteVenda()); lsCombinacionRutaTramoRegresoVO.add(secuenciaRutaTramoCoeficienteVO); } else { - SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), rutaTramoRegresoVO.getNumRuta(), s.getKmEntradaSaida()); + SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), rutaTramoRegresoVO.getNumRuta(), s.getKmSaidaOrigen()); secuenciaRutaTramoCoeficienteVO.setCoeficienteTarifa1(s.getCoeficienteTarifa1()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(s.getKmCoeficiente1()); @@ -344,133 +324,93 @@ 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(); - Collections.sort(lsSecuenciaRutaTramoVO, new Comparator() { + Collections.sort(lsSecuenciaRutaTramoVO); - @Override - public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) { - return o1.getSecuencia().compareTo(o2.getSecuencia()); - } - }); - - int qtdTramos = lsSecuenciaRutaTramoVO.size(); int secuencia = 0; - Map kmEntradaSaida = rutaTramoVO.getParadasComKmEntradaSaida(); - - for (int i = 0; i < qtdTramos; i++) { - SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i); - Parada origen = secuenciaInicial.getOrigen(); - + List listSecuenciaCalculada = new ArrayList(lsSecuenciaRutaTramoVO); + + for (SecuenciaRutaTramoVO secuenciaInicial : lsSecuenciaRutaTramoVO) { + Parada origen = secuenciaInicial.getOrigen(); + Parada destino = secuenciaInicial.getDestino(); + + listSecuenciaCalculada.remove(secuenciaInicial); + BigDecimal totalKmsReal = secuenciaInicial.getKmReal(); - if (kmEntradaSaida.containsKey(origen)){ - totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(origen)); - } - - + totalKmsReal = totalKmsReal.add(secuenciaInicial.getKmSaidaOrigen().add(secuenciaInicial.getKmEntradaDestino())); + HoraSistema totalTiempoRecorrido = secuenciaInicial.getTiempoRecorrido(); - int j = i + 1; - for (; j < (qtdTramos); j++) { - Parada destino = lsSecuenciaRutaTramoVO.get(j).getOrigen(); - - if (kmEntradaSaida.containsKey(destino)){ - totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(destino)); - } - - Via via = secuenciaInicial.getVia(); - - SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, - totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); - - if (via != null) { - TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); - if (tramoServicio != null) { - log.debug("TRAMO EXISTE"); - - nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); - - nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); - nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); - nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); - - } - OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); - if (orgaoTramo != null) { - nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); - nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); - nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); - nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); - nuevaSecuencia.setCoeficienteTarifa3(orgaoTramo.getCoeficienteTarifa3()); - nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); - nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); - } - } - - incluirCoeficiente(nuevaSecuencia); - - nuevaSecuencia.setKmEntradaSaida(kmEntradaSaida.get(destino)); - lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); - - // se somou o kmEntradaSaida tem que tirar agora para o novo trecho ser calculado corretamente. - if (kmEntradaSaida.containsKey(destino)){ - totalKmsReal = totalKmsReal.subtract(kmEntradaSaida.get(destino)).add(lsSecuenciaRutaTramoVO.get(j).getKmReal()); - } else { - totalKmsReal = totalKmsReal.add(lsSecuenciaRutaTramoVO.get(j).getKmReal()); - } - - totalTiempoRecorrido = totalTiempoRecorrido.sumar(lsSecuenciaRutaTramoVO.get(j).getTiempoRecorrido()); - - log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" - + nuevaSecuencia.getVia() + ";KmsReal:" + nuevaSecuencia.getKmReal() + ";hora:" + nuevaSecuencia.getTiempoRecorrido()); - - } - - Parada destino = lsSecuenciaRutaTramoVO.get(qtdTramos - 1).getDestino(); - if (kmEntradaSaida.containsKey(destino)){ - totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(destino)); - } Via via = secuenciaInicial.getVia(); - SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, - totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); - if (via != null) { - TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); - if (tramoServicio != null) { - log.debug("TRAMO EXISTE"); + secuencia = criaSecuenciaRutaTramoCoeficienteVO(rutaTramoVO, lsSecuenciaCombinacionRutaTramoVO, secuencia, totalKmsReal, origen, destino, secuenciaInicial.getKmSaidaOrigen(), secuenciaInicial.getKmEntradaDestino(), totalTiempoRecorrido, via); + totalKmsReal = totalKmsReal.subtract(secuenciaInicial.getKmEntradaDestino()); + + for (SecuenciaRutaTramoVO secuenciaInterna : listSecuenciaCalculada) { + destino = secuenciaInterna.getDestino(); + totalKmsReal = totalKmsReal.add(secuenciaInterna.getKmReal()); + totalKmsReal = totalKmsReal.add(secuenciaInterna.getKmEntradaDestino()); + totalTiempoRecorrido = totalTiempoRecorrido.sumar(secuenciaInterna.getTiempoRecorrido()); + + secuencia = criaSecuenciaRutaTramoCoeficienteVO(rutaTramoVO, lsSecuenciaCombinacionRutaTramoVO, secuencia, totalKmsReal, origen, destino, secuenciaInicial.getKmSaidaOrigen(), secuenciaInterna.getKmEntradaDestino(), totalTiempoRecorrido, via); + totalKmsReal = totalKmsReal.subtract(secuenciaInterna.getKmEntradaDestino()); - nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); - - nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); - nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); - nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); - } - OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); - if (orgaoTramo != null) { - nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); - nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); - nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); - nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); - nuevaSecuencia.setCoeficienteTarifa3(orgaoTramo.getCoeficienteTarifa3()); - nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); - nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); - } } - incluirCoeficiente(nuevaSecuencia); - nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); - lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); - log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" - + nuevaSecuencia.getVia() + ";KmsReal:" + nuevaSecuencia.getKmReal() + ";hora:" + nuevaSecuencia.getTiempoRecorrido()); } return lsSecuenciaCombinacionRutaTramoVO; } + private int criaSecuenciaRutaTramoCoeficienteVO(RutaTramoVO rutaTramoVO, List lsSecuenciaCombinacionRutaTramoVO, int secuencia, BigDecimal totalKmsReal, Parada origen, Parada destino, BigDecimal kmSaidaOrigen, BigDecimal kmEntradaDestino, HoraSistema totalTiempoRecorrido, Via via) { + SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, + totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); + + atualizandoSecuenciaPorViaExistente(rutaTramoVO, origen, destino, via, nuevaSecuencia); + + nuevaSecuencia.setKmSaidaOrigen(kmSaidaOrigen); + nuevaSecuencia.setKmEntradaDestino(kmEntradaDestino); + nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); + lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); + + log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" + + nuevaSecuencia.getVia() + ";KmsReal:" + nuevaSecuencia.getKmReal() + ";hora:" + nuevaSecuencia.getTiempoRecorrido()); + return secuencia; + } + + private void atualizandoSecuenciaPorViaExistente(RutaTramoVO rutaTramoVO, Parada origen, Parada destino, Via via, SecuenciaRutaTramoCoeficienteVO nuevaSecuencia) { + if (via != null) { + atualizandoSecuenciaPorTramosExistente(rutaTramoVO, origen, destino, via, nuevaSecuencia); + atualizandoSecuenciaPorOrgaoTramosExistentes(rutaTramoVO, origen, destino, via, nuevaSecuencia); + } + } + + private void atualizandoSecuenciaPorOrgaoTramosExistentes(RutaTramoVO rutaTramoVO, Parada origen, Parada destino, Via via, SecuenciaRutaTramoCoeficienteVO nuevaSecuencia) { + OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origen.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); + if (orgaoTramo != null) { + nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); + nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); + nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); + nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); + nuevaSecuencia.setCoeficienteTarifa3(orgaoTramo.getCoeficienteTarifa3()); + nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); + nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); + } + incluirCoeficiente(nuevaSecuencia); + } + + private void atualizandoSecuenciaPorTramosExistente(RutaTramoVO rutaTramoVO, Parada origen, Parada destino, Via via, SecuenciaRutaTramoCoeficienteVO nuevaSecuencia) { + TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); + if (tramoServicio != null) { + nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); + nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); + nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); + nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); + } + } + private void incluirCoeficiente(SecuenciaRutaTramoCoeficienteVO nuevaSecuencia) { if (nuevaSecuencia.getKmCoeficiente1() == null) { nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); @@ -495,9 +435,9 @@ public class TramoRutaServiceImpl implements TramoRutaService { Parada origem = secuencia.getOrigem().getParada(); Via via = secuencia.getVia(); - BigDecimal totalKmsReal = new BigDecimal(0); + BigDecimal totalKmsReal = BigDecimal.ZERO; - BigDecimal kmsRealOrigem = secuencia.getKmReal() == null || secuencia.getKmReal().isEmpty() ? new BigDecimal("0.0") : + BigDecimal kmsRealOrigem = secuencia.getKmReal() == null || secuencia.getKmReal().isEmpty() ? BigDecimal.ZERO : new BigDecimal(secuencia.getKmReal()); totalKmsReal = totalKmsReal.add(kmsRealOrigem); @@ -522,32 +462,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origem, destino, via, secuencia.getOrigem().getSecuencia().intValue(), totalKmsReal, tempoTotalOrigemDestino, rutaTramoVO.getNumRuta()); - if (via != null) { - TramoServicio tramoServicio = tramoServicioService.buscar(origem, destino, via, rutaTramoVO.getClaseServicio()); - if (tramoServicio != null) { - log.debug("TRAMO EXISTE"); - - nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); - - nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); - nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); - nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); - } - OrgaoTramo orgaoTramo = orgaoTramoDAO.buscar(origem.getParadaId(), destino.getParadaId(), via.getViaId(), rutaTramoVO.getOrgaoConcedente().getOrgaoConcedenteId(), rutaTramoVO.getClaseServicio().getClaseservicioId()); - if (orgaoTramo != null) { - nuevaSecuencia.setCoeficienteTarifa1(orgaoTramo.getCoeficienteTarifa1()); - nuevaSecuencia.setKmCoeficiente1(orgaoTramo.getKmCoeficiente1()); - nuevaSecuencia.setCoeficienteTarifa2(orgaoTramo.getCoeficienteTarifa2()); - nuevaSecuencia.setKmCoeficiente2(orgaoTramo.getKmCoeficiente2()); - nuevaSecuencia.setCoeficienteTarifa3(orgaoTramo.getCoeficienteTarifa3()); - nuevaSecuencia.setKmCoeficiente3(orgaoTramo.getKmCoeficiente3()); - nuevaSecuencia.setOrgaoTramoId(orgaoTramo.getOrgaoTramoId()); - } - } - - if (nuevaSecuencia.getKmCoeficiente1() == null) { - nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); - } + atualizandoSecuenciaPorViaExistente(rutaTramoVO, origem, destino, via, nuevaSecuencia); + nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); @@ -581,7 +497,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { tramo.setOrigem(secuencia.getOrigen()); tramo.setDestino(secuencia.getDestino()); tramo.setKmReal(secuencia.getKmReal()); - tramo.setKmEntradaSaida(secuencia.getKmEntradaSaida() == null ? BigDecimal.ZERO : secuencia.getKmEntradaSaida()); + tramo.setKmEntradaSaida(secuencia.getKmSaidaOrigen() == null ? BigDecimal.ZERO : secuencia.getKmSaidaOrigen()); + tramo.setKmEntradaSaidaDestino(secuencia.getKmEntradaDestino() == null ? BigDecimal.ZERO : secuencia.getKmEntradaDestino()); tramo.setVia(secuencia.getVia()); tramo.setActivo(Boolean.TRUE); tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); @@ -704,7 +621,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { //calculo da km sempre considerando que o calculo deve ser feito desconsiderando o valor da km, //inicializando com o valor da km da origem e incrementando as sequencias anteriores private BigDecimal calcularKmDestino(ParadaSecuenciaCombinacaoLinha sequenciaOrigem, int numSeqAtual) { - BigDecimal kmTotal= sequenciaOrigem.getKmReal() == null || sequenciaOrigem.getKmReal().isEmpty() ? new BigDecimal("0.0") : + BigDecimal kmTotal= sequenciaOrigem.getKmReal() == null || sequenciaOrigem.getKmReal().isEmpty() ? BigDecimal.ZERO : new BigDecimal(sequenciaOrigem.getKmReal()); for (ParadaSecuencia destino: sequenciaOrigem.getDestinos()) { @@ -718,7 +635,7 @@ public class TramoRutaServiceImpl implements TramoRutaService { break; } - BigDecimal kmDestino= destino.getKmReal() == null || destino.getKmReal().isEmpty() ? new BigDecimal("0.0") : + BigDecimal kmDestino= destino.getKmReal() == null || destino.getKmReal().isEmpty() ? BigDecimal.ZERO : new BigDecimal(destino.getKmReal()); kmTotal = kmTotal.add(kmDestino); diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java index 13510b50e..faec873c3 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/RutaTramoVO.java @@ -172,8 +172,8 @@ public class RutaTramoVO { public Map getParadasComKmEntradaSaida(){ Map kmEntradaSaida = new HashMap(); for (SecuenciaRutaTramoVO s : getLsSecuenciaRutaTramoVO()){ - if (s.getKmEntradaSaida() != null && s.getKmEntradaSaida().compareTo(BigDecimal.ZERO) == 1){ - kmEntradaSaida.put(s.getOrigen(), s.getKmEntradaSaida()); + if (s.getKmSaidaOrigen() != null && s.getKmSaidaOrigen().compareTo(BigDecimal.ZERO) == 1){ + kmEntradaSaida.put(s.getOrigen(), s.getKmSaidaOrigen()); } } return kmEntradaSaida; diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java index 4077079d4..20ac91431 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoCoeficienteVO.java @@ -14,7 +14,8 @@ public class SecuenciaRutaTramoCoeficienteVO { private Via via; private Integer secuencia; private BigDecimal kmReal; - private BigDecimal kmEntradaSaida; + private BigDecimal kmSaidaOrigen; + private BigDecimal kmEntradaDestino; private HoraSistema tiempoRecorrido; private Integer tramoId; private Integer tramoServicioId; @@ -43,10 +44,10 @@ public class SecuenciaRutaTramoCoeficienteVO { this.numRuta = numruta; } - public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta, BigDecimal kmEntradaSaida) { + public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta, BigDecimal kmSaidaOrigen) { this(origen, destino, via, secuencia, kmReal, tiempoRecorrido); this.numRuta = numruta; - this.kmEntradaSaida = kmEntradaSaida; + this.kmSaidaOrigen = kmSaidaOrigen; } public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Integer secuencia, Via via) { @@ -83,10 +84,10 @@ public class SecuenciaRutaTramoCoeficienteVO { } public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, - HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta, BigDecimal kmEntradaSaida) { + HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta, BigDecimal kmSaidaOrigen) { this(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId); this.numRuta = numruta; - this.kmEntradaSaida = kmEntradaSaida; + this.kmSaidaOrigen = kmSaidaOrigen; } public Parada getOrigen() { @@ -236,12 +237,26 @@ public class SecuenciaRutaTramoCoeficienteVO { this.permiteVenda = permiteVenda; } - public BigDecimal getKmEntradaSaida() { - return kmEntradaSaida; + public BigDecimal getKmSaidaOrigen() { + return kmSaidaOrigen; } - public void setKmEntradaSaida(BigDecimal kmEntradaSaida) { - this.kmEntradaSaida = kmEntradaSaida; + public void setKmSaidaOrigen(BigDecimal kmSaidaOrigen) { + this.kmSaidaOrigen = kmSaidaOrigen; + } + + /** + * @return the kmEntradaDestino + */ + public BigDecimal getKmEntradaDestino() { + return kmEntradaDestino; + } + + /** + * @param kmEntradaDestino the kmEntradaDestino to set + */ + public void setKmEntradaDestino(BigDecimal kmEntradaDestino) { + this.kmEntradaDestino = kmEntradaDestino; } } diff --git a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoVO.java b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoVO.java index 7c41d300c..335fe9071 100644 --- a/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/esquemaoperacional/SecuenciaRutaTramoVO.java @@ -2,19 +2,19 @@ package com.rjconsultores.ventaboletos.vo.esquemaoperacional; import java.math.BigDecimal; -import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa; import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.utilerias.HoraSistema; -public class SecuenciaRutaTramoVO { +public class SecuenciaRutaTramoVO implements Comparable{ private Parada origen; private Parada destino; private Via via; private Integer secuencia; private BigDecimal kmReal; - private BigDecimal kmEntradaSaida; + private BigDecimal kmSaidaOrigen; + private BigDecimal kmEntradaDestino; private HoraSistema tiempoRecorrido; private Integer tramoId; private Integer tramoServicioId; @@ -37,11 +37,11 @@ public class SecuenciaRutaTramoVO { this.indSentidoIda = indSentidoIda; } - public SecuenciaRutaTramoVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta, Boolean indSentidoIda, BigDecimal kmEntradaSaida) { + public SecuenciaRutaTramoVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, HoraSistema tiempoRecorrido, String numruta, Boolean indSentidoIda, BigDecimal kmSaidaOrigen) { this(origen, destino, via, secuencia, kmReal, tiempoRecorrido); this.numRuta = numruta; this.indSentidoIda = indSentidoIda; - this.kmEntradaSaida = kmEntradaSaida; + this.kmSaidaOrigen = kmSaidaOrigen; } public SecuenciaRutaTramoVO(Parada origen, Parada destino, Integer secuencia, Via via) { @@ -80,11 +80,11 @@ public class SecuenciaRutaTramoVO { } public SecuenciaRutaTramoVO(Parada origen, Parada destino, Via via, Integer secuencia, BigDecimal kmReal, - HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta, Boolean indSentidoIda, BigDecimal kmEntradaSaida) { + HoraSistema tiempoRecorrido, Integer tramoId, Integer tramoServicioId, String numruta, Boolean indSentidoIda, BigDecimal kmSaidaOrigen) { this(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId); this.numRuta = numruta; this.indSentidoIda = indSentidoIda; - this.kmEntradaSaida = kmEntradaSaida; + this.kmSaidaOrigen = kmSaidaOrigen; } public Parada getOrigen() { @@ -170,12 +170,12 @@ public class SecuenciaRutaTramoVO { this.numRuta = numRuta; } - public BigDecimal getKmEntradaSaida() { - return kmEntradaSaida; + public BigDecimal getKmSaidaOrigen() { + return kmSaidaOrigen; } - public void setKmEntradaSaida(BigDecimal kmEntradaSaida) { - this.kmEntradaSaida = kmEntradaSaida; + public void setKmSaidaOrigen(BigDecimal kmSaidaOrigen) { + this.kmSaidaOrigen = kmSaidaOrigen; } @Override @@ -185,4 +185,41 @@ public class SecuenciaRutaTramoVO { return secuencia + ";" + origen + ";" + destino + ";" + via + ";" + kmReal + ";" + ((hora != null) ? hora.getHora() : "-") + ";" + ((hora != null) ? hora.getMinuto() : "-"); } + + @Override + public int compareTo(SecuenciaRutaTramoVO o) { + return this.getSecuencia().compareTo(o.getSecuencia()); + } + + /** + * @return the kmEntradaDestino + */ + public BigDecimal getKmEntradaDestino() { + return kmEntradaDestino; + } + + /** + * Método retorna valor de km sem considerar a distancia de entrada e saída da localidade. + * + * @return + */ + public BigDecimal getKmOriginal() { + return kmReal.subtract(kmEntradaDestino == null ? BigDecimal.ZERO : kmEntradaDestino).subtract(kmSaidaOrigen == null ? BigDecimal.ZERO : kmSaidaOrigen); + } + + /** + * Método retorna valor de km sem considerar a distancia de entrada e saída da localidade. + * + * @return + */ + public BigDecimal getKmEntradaSaida() { + return (kmEntradaDestino == null ? BigDecimal.ZERO : kmEntradaDestino).add(kmSaidaOrigen == null ? BigDecimal.ZERO : kmSaidaOrigen); + } + + /** + * @param kmEntradaDestino the kmEntradaDestino to set + */ + public void setKmEntradaDestino(BigDecimal kmEntradaDestino) { + this.kmEntradaDestino = kmEntradaDestino; + } }