From 4b3cc6624f7efb3ce0a56eb756d2da8b745f5108 Mon Sep 17 00:00:00 2001 From: leonardo Date: Tue, 23 May 2017 19:48:55 +0000 Subject: [PATCH] fixes bug #9032 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@69217 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../service/impl/TramoRutaServiceImpl.java | 44 ++++++++++++++++--- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java index cb6b21899..d2049f60c 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TramoRutaServiceImpl.java @@ -5,7 +5,9 @@ import java.util.ArrayList; import java.util.Calendar; import java.util.Collections; import java.util.Comparator; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -319,16 +321,35 @@ public class TramoRutaServiceImpl implements TramoRutaService { int qtdTramos = lsSecuenciaRutaTramoVO.size(); int secuencia = 0; + Map kmEntradaSaida = new HashMap(); + for (SecuenciaRutaTramoVO sec : lsSecuenciaRutaTramoVO){ + if (sec.getKmEntradaSaida() != null){ + kmEntradaSaida.put(sec.getOrigen(), sec.getKmEntradaSaida()); + } + } + + for (int i = 0; i < qtdTramos; i++) { SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i); Parada origen = secuenciaInicial.getOrigen(); - BigDecimal totalKmsReal = secuenciaInicial.getKmReal().add((secuenciaInicial.getKmEntradaSaida() != null ? secuenciaInicial.getKmEntradaSaida() : BigDecimal.ZERO)); + + + BigDecimal totalKmsReal = secuenciaInicial.getKmReal(); + if (kmEntradaSaida.containsKey(origen)){ + totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(origen)); + } + + 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, @@ -339,7 +360,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { if (tramoServicio != null) { log.debug("TRAMO EXISTE"); - nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal().add((secuenciaInicial.getKmEntradaSaida() != null ? secuenciaInicial.getKmEntradaSaida() : BigDecimal.ZERO))); + nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); + nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId()); @@ -361,7 +383,16 @@ public class TramoRutaServiceImpl implements TramoRutaService { lsSecuenciaCombinacionRutaTramoVO.add(nuevaSecuencia); - totalKmsReal = totalKmsReal.add(lsSecuenciaRutaTramoVO.get(j).getKmReal().add((lsSecuenciaRutaTramoVO.get(j).getKmEntradaSaida() != null ? lsSecuenciaRutaTramoVO.get(j).getKmEntradaSaida() : BigDecimal.ZERO))); + // 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()); + } +// if (kmEntradaSaida.containsKey(destino)){ +// totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(destino)); +// } + totalTiempoRecorrido = totalTiempoRecorrido.sumar(lsSecuenciaRutaTramoVO.get(j).getTiempoRecorrido()); log.debug("Origen:" + nuevaSecuencia.getOrigen() + ";Destino:" + nuevaSecuencia.getDestino() + ";Via:" @@ -370,7 +401,9 @@ public class TramoRutaServiceImpl implements TramoRutaService { } 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, @@ -380,7 +413,8 @@ public class TramoRutaServiceImpl implements TramoRutaService { if (tramoServicio != null) { log.debug("TRAMO EXISTE"); - nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal().add((secuenciaInicial.getKmEntradaSaida() != null ? secuenciaInicial.getKmEntradaSaida() : BigDecimal.ZERO))); + nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); + nuevaSecuencia.setTiempoRecorrido(new HoraSistema(tramoServicio.getTiemporecorrido())); nuevaSecuencia.setTramoId(tramoServicio.getTramo().getTramoId()); nuevaSecuencia.setTramoServicioId(tramoServicio.getTramoservicioId());