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
master
thiago 2019-01-21 17:03:00 +00:00
parent 52d1338435
commit c750a00654
5 changed files with 166 additions and 191 deletions

View File

@ -162,6 +162,9 @@ public class Tramo implements Serializable {
} }
public BigDecimal getKmEntradaSaidaDestino() { public BigDecimal getKmEntradaSaidaDestino() {
if(kmEntradaSaidaDestino == null) {
return BigDecimal.ZERO;
}
return kmEntradaSaidaDestino; return kmEntradaSaidaDestino;
} }
@ -268,6 +271,9 @@ public class Tramo implements Serializable {
} }
public BigDecimal getKmEntradaSaida() { public BigDecimal getKmEntradaSaida() {
if(kmEntradaSaida == null) {
return BigDecimal.ZERO;
}
return kmEntradaSaida; return kmEntradaSaida;
} }

View File

@ -157,37 +157,23 @@ public class TramoRutaServiceImpl implements TramoRutaService {
ruta = rutaDAO.suscribir(ruta); ruta = rutaDAO.suscribir(ruta);
Map<Parada, BigDecimal> kmEntradaSaida = rutaTramoVO.getParadasComKmEntradaSaida();
// Genero la secuencia de la ruta // Genero la secuencia de la ruta
for (SecuenciaRutaTramoVO s : rutaTramoVO.getLsSecuenciaRutaTramoVO()) { for (SecuenciaRutaTramoVO s : rutaTramoVO.getLsSecuenciaRutaTramoVO()) {
RutaSecuencia rutaSecuencia = new RutaSecuencia(); RutaSecuencia rutaSecuencia = new RutaSecuencia();
rutaSecuencia.setNumsecuencia(s.getSecuencia().shortValue()); rutaSecuencia.setNumsecuencia(s.getSecuencia().shortValue());
rutaSecuencia.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia())); rutaSecuencia.setTramo(tramoService.obtenerTramotPorOrigemDestinoVia(s.getOrigen(), s.getDestino(), s.getVia()));
rutaSecuencia.setCantKmEntradaSaida(s.getKmEntradaSaida()); rutaSecuencia.setCantKmEntradaSaida(s.getKmEntradaSaida());
rutaSecuencia.setKmOriginal(s.getKmReal().subtract(s.getKmEntradaSaida())); rutaSecuencia.setKmOriginal(s.getKmOriginal());
BigDecimal KmESOrigem = BigDecimal.ZERO;
BigDecimal KmESDestino = BigDecimal.ZERO;
if (kmEntradaSaida.containsKey(s.getOrigen())){
KmESOrigem = kmEntradaSaida.get(s.getOrigen());
}
if (kmEntradaSaida.containsKey(s.getDestino())){
KmESDestino = kmEntradaSaida.get(s.getDestino());
}
if(rutaSecuencia.getTramo() == null ){ if(rutaSecuencia.getTramo() == null ){
Tramo tramo = new Tramo(); Tramo tramo = new Tramo();
tramo.setDesctramo(tramoService.gerarDescripcionTramo(s.getOrigen(), s.getDestino(), s.getVia())); tramo.setDesctramo(tramoService.gerarDescripcionTramo(s.getOrigen(), s.getDestino(), s.getVia()));
tramo.setOrigem(s.getOrigen()); tramo.setOrigem(s.getOrigen());
tramo.setDestino(s.getDestino()); tramo.setDestino(s.getDestino());
tramo.setKmReal(s.getKmReal().add(KmESOrigem).add(KmESDestino)); tramo.setKmReal(s.getKmReal());
if (KmESOrigem.compareTo(BigDecimal.ZERO) == 1){ tramo.setKmEntradaSaida(s.getKmSaidaOrigen());
tramo.setKmEntradaSaida(KmESOrigem); tramo.setKmEntradaSaidaDestino(s.getKmEntradaDestino());
}
if (KmESDestino.compareTo(BigDecimal.ZERO) == 1){
tramo.setKmEntradaSaidaDestino(KmESDestino);
}
tramo.setVia(s.getVia()); tramo.setVia(s.getVia());
tramo.setActivo(Boolean.TRUE); tramo.setActivo(Boolean.TRUE);
tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
@ -197,8 +183,8 @@ public class TramoRutaServiceImpl implements TramoRutaService {
rutaSecuencia.setTramo(tramo); rutaSecuencia.setTramo(tramo);
} else { } else {
Tramo tramo = rutaSecuencia.getTramo(); Tramo tramo = rutaSecuencia.getTramo();
tramo.setKmEntradaSaida(KmESOrigem); tramo.setKmEntradaSaida(s.getKmSaidaOrigen());
tramo.setKmEntradaSaidaDestino(KmESDestino);; tramo.setKmEntradaSaidaDestino(s.getKmEntradaDestino());
tramo = tramoDAO.actualizacion(tramo); tramo = tramoDAO.actualizacion(tramo);
} }
rutaSecuencia.setRuta(ruta); rutaSecuencia.setRuta(ruta);
@ -253,13 +239,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoRegresoVO = new ArrayList<SecuenciaRutaTramoVO>(); List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoRegresoVO = new ArrayList<SecuenciaRutaTramoVO>();
List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoIdaVO = new ArrayList<SecuenciaRutaTramoVO>(rutaTramoVO.getLsSecuenciaRutaTramoVO()); List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoIdaVO = new ArrayList<SecuenciaRutaTramoVO>(rutaTramoVO.getLsSecuenciaRutaTramoVO());
// Reordena a lista // Reordena a lista
Collections.sort(lsSecuenciaRutaTramoIdaVO, new Comparator<SecuenciaRutaTramoVO>() { Collections.reverse(lsSecuenciaRutaTramoIdaVO);
@Override
public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) {
return o2.getSecuencia().compareTo(o1.getSecuencia());
}
});
int secuencia = 0; int secuencia = 0;
@ -297,7 +277,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
s.setTramoServicioId(tramoServicio.getTramoservicioId()); s.setTramoServicioId(tramoServicio.getTramoservicioId());
SecuenciaRutaTramoCoeficienteVO secuenciaRutaTramoCoeficienteVO = new SecuenciaRutaTramoCoeficienteVO(s.getDestino(), s.getOrigen(), s.getVia(), ++secuencia, s.getKmReal(), s.getTiempoRecorrido(), 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()); 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()); secuenciaRutaTramoCoeficienteVO.setPermiteVenda(s.getPermiteVenda());
lsCombinacionRutaTramoRegresoVO.add(secuenciaRutaTramoCoeficienteVO); lsCombinacionRutaTramoRegresoVO.add(secuenciaRutaTramoCoeficienteVO);
} else { } 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.setCoeficienteTarifa1(s.getCoeficienteTarifa1());
secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(s.getKmCoeficiente1()); secuenciaRutaTramoCoeficienteVO.setKmCoeficiente1(s.getKmCoeficiente1());
@ -344,133 +324,93 @@ public class TramoRutaServiceImpl implements TramoRutaService {
@Override @Override
public List<SecuenciaRutaTramoCoeficienteVO> generarCombinacion(RutaTramoVO rutaTramoVO) { public List<SecuenciaRutaTramoCoeficienteVO> generarCombinacion(RutaTramoVO rutaTramoVO) {
// una nueva lista que va a ser ordenada. Con eso, no afecta la lista original
rutaTramoVO.getLsCombinacionRutaTramoVO();
List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoVO = new ArrayList<SecuenciaRutaTramoVO>(rutaTramoVO.getLsSecuenciaRutaTramoVO()); List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoVO = new ArrayList<SecuenciaRutaTramoVO>(rutaTramoVO.getLsSecuenciaRutaTramoVO());
List<SecuenciaRutaTramoCoeficienteVO> lsSecuenciaCombinacionRutaTramoVO = new ArrayList<SecuenciaRutaTramoCoeficienteVO>(); List<SecuenciaRutaTramoCoeficienteVO> lsSecuenciaCombinacionRutaTramoVO = new ArrayList<SecuenciaRutaTramoCoeficienteVO>();
Collections.sort(lsSecuenciaRutaTramoVO, new Comparator<SecuenciaRutaTramoVO>() { Collections.sort(lsSecuenciaRutaTramoVO);
@Override
public int compare(SecuenciaRutaTramoVO o1, SecuenciaRutaTramoVO o2) {
return o1.getSecuencia().compareTo(o2.getSecuencia());
}
});
int qtdTramos = lsSecuenciaRutaTramoVO.size();
int secuencia = 0; int secuencia = 0;
Map<Parada, BigDecimal> kmEntradaSaida = rutaTramoVO.getParadasComKmEntradaSaida(); List<SecuenciaRutaTramoVO> listSecuenciaCalculada = new ArrayList<SecuenciaRutaTramoVO>(lsSecuenciaRutaTramoVO);
for (int i = 0; i < qtdTramos; i++) { for (SecuenciaRutaTramoVO secuenciaInicial : lsSecuenciaRutaTramoVO) {
SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i);
Parada origen = secuenciaInicial.getOrigen(); Parada origen = secuenciaInicial.getOrigen();
Parada destino = secuenciaInicial.getDestino();
listSecuenciaCalculada.remove(secuenciaInicial);
BigDecimal totalKmsReal = secuenciaInicial.getKmReal(); BigDecimal totalKmsReal = secuenciaInicial.getKmReal();
if (kmEntradaSaida.containsKey(origen)){ totalKmsReal = totalKmsReal.add(secuenciaInicial.getKmSaidaOrigen().add(secuenciaInicial.getKmEntradaDestino()));
totalKmsReal = totalKmsReal.add(kmEntradaSaida.get(origen));
}
HoraSistema totalTiempoRecorrido = secuenciaInicial.getTiempoRecorrido(); 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(); Via via = secuenciaInicial.getVia();
SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origen, destino, via, ++secuencia, secuencia = criaSecuenciaRutaTramoCoeficienteVO(rutaTramoVO, lsSecuenciaCombinacionRutaTramoVO, secuencia, totalKmsReal, origen, destino, secuenciaInicial.getKmSaidaOrigen(), secuenciaInicial.getKmEntradaDestino(), totalTiempoRecorrido, via);
totalKmsReal, totalTiempoRecorrido, rutaTramoVO.getNumRuta()); totalKmsReal = totalKmsReal.subtract(secuenciaInicial.getKmEntradaDestino());
if (via != null) { for (SecuenciaRutaTramoVO secuenciaInterna : listSecuenciaCalculada) {
TramoServicio tramoServicio = tramoServicioService.buscar(origen, destino, via, rutaTramoVO.getClaseServicio()); destino = secuenciaInterna.getDestino();
if (tramoServicio != null) { totalKmsReal = totalKmsReal.add(secuenciaInterna.getKmReal());
log.debug("TRAMO EXISTE"); totalKmsReal = totalKmsReal.add(secuenciaInterna.getKmEntradaDestino());
totalTiempoRecorrido = totalTiempoRecorrido.sumar(secuenciaInterna.getTiempoRecorrido());
nuevaSecuencia.setKmReal(tramoServicio.getTramo().getKmReal()); secuencia = criaSecuenciaRutaTramoCoeficienteVO(rutaTramoVO, lsSecuenciaCombinacionRutaTramoVO, secuencia, totalKmsReal, origen, destino, secuenciaInicial.getKmSaidaOrigen(), secuenciaInterna.getKmEntradaDestino(), totalTiempoRecorrido, via);
totalKmsReal = totalKmsReal.subtract(secuenciaInterna.getKmEntradaDestino());
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");
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; return lsSecuenciaCombinacionRutaTramoVO;
} }
private int criaSecuenciaRutaTramoCoeficienteVO(RutaTramoVO rutaTramoVO, List<SecuenciaRutaTramoCoeficienteVO> 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) { private void incluirCoeficiente(SecuenciaRutaTramoCoeficienteVO nuevaSecuencia) {
if (nuevaSecuencia.getKmCoeficiente1() == null) { if (nuevaSecuencia.getKmCoeficiente1() == null) {
nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal()); nuevaSecuencia.setKmCoeficiente1(nuevaSecuencia.getKmReal());
@ -495,9 +435,9 @@ public class TramoRutaServiceImpl implements TramoRutaService {
Parada origem = secuencia.getOrigem().getParada(); Parada origem = secuencia.getOrigem().getParada();
Via via = secuencia.getVia(); 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()); new BigDecimal(secuencia.getKmReal());
totalKmsReal = totalKmsReal.add(kmsRealOrigem); totalKmsReal = totalKmsReal.add(kmsRealOrigem);
@ -522,32 +462,8 @@ public class TramoRutaServiceImpl implements TramoRutaService {
SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origem, destino, via, SecuenciaRutaTramoCoeficienteVO nuevaSecuencia = new SecuenciaRutaTramoCoeficienteVO(origem, destino, via,
secuencia.getOrigem().getSecuencia().intValue(), totalKmsReal, tempoTotalOrigemDestino, rutaTramoVO.getNumRuta()); secuencia.getOrigem().getSecuencia().intValue(), totalKmsReal, tempoTotalOrigemDestino, rutaTramoVO.getNumRuta());
if (via != null) { atualizandoSecuenciaPorViaExistente(rutaTramoVO, origem, destino, via, nuevaSecuencia);
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());
}
nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta()); nuevaSecuencia.setNumRuta(rutaTramoVO.getNumRuta());
@ -581,7 +497,8 @@ public class TramoRutaServiceImpl implements TramoRutaService {
tramo.setOrigem(secuencia.getOrigen()); tramo.setOrigem(secuencia.getOrigen());
tramo.setDestino(secuencia.getDestino()); tramo.setDestino(secuencia.getDestino());
tramo.setKmReal(secuencia.getKmReal()); 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.setVia(secuencia.getVia());
tramo.setActivo(Boolean.TRUE); tramo.setActivo(Boolean.TRUE);
tramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); 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, //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 //inicializando com o valor da km da origem e incrementando as sequencias anteriores
private BigDecimal calcularKmDestino(ParadaSecuenciaCombinacaoLinha sequenciaOrigem, int numSeqAtual) { 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()); new BigDecimal(sequenciaOrigem.getKmReal());
for (ParadaSecuencia destino: sequenciaOrigem.getDestinos()) { for (ParadaSecuencia destino: sequenciaOrigem.getDestinos()) {
@ -718,7 +635,7 @@ public class TramoRutaServiceImpl implements TramoRutaService {
break; 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()); new BigDecimal(destino.getKmReal());
kmTotal = kmTotal.add(kmDestino); kmTotal = kmTotal.add(kmDestino);

View File

@ -172,8 +172,8 @@ public class RutaTramoVO {
public Map<Parada, BigDecimal> getParadasComKmEntradaSaida(){ public Map<Parada, BigDecimal> getParadasComKmEntradaSaida(){
Map<Parada, BigDecimal> kmEntradaSaida = new HashMap<Parada, BigDecimal>(); Map<Parada, BigDecimal> kmEntradaSaida = new HashMap<Parada, BigDecimal>();
for (SecuenciaRutaTramoVO s : getLsSecuenciaRutaTramoVO()){ for (SecuenciaRutaTramoVO s : getLsSecuenciaRutaTramoVO()){
if (s.getKmEntradaSaida() != null && s.getKmEntradaSaida().compareTo(BigDecimal.ZERO) == 1){ if (s.getKmSaidaOrigen() != null && s.getKmSaidaOrigen().compareTo(BigDecimal.ZERO) == 1){
kmEntradaSaida.put(s.getOrigen(), s.getKmEntradaSaida()); kmEntradaSaida.put(s.getOrigen(), s.getKmSaidaOrigen());
} }
} }
return kmEntradaSaida; return kmEntradaSaida;

View File

@ -14,7 +14,8 @@ public class SecuenciaRutaTramoCoeficienteVO {
private Via via; private Via via;
private Integer secuencia; private Integer secuencia;
private BigDecimal kmReal; private BigDecimal kmReal;
private BigDecimal kmEntradaSaida; private BigDecimal kmSaidaOrigen;
private BigDecimal kmEntradaDestino;
private HoraSistema tiempoRecorrido; private HoraSistema tiempoRecorrido;
private Integer tramoId; private Integer tramoId;
private Integer tramoServicioId; private Integer tramoServicioId;
@ -43,10 +44,10 @@ public class SecuenciaRutaTramoCoeficienteVO {
this.numRuta = numruta; 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(origen, destino, via, secuencia, kmReal, tiempoRecorrido);
this.numRuta = numruta; this.numRuta = numruta;
this.kmEntradaSaida = kmEntradaSaida; this.kmSaidaOrigen = kmSaidaOrigen;
} }
public SecuenciaRutaTramoCoeficienteVO(Parada origen, Parada destino, Integer secuencia, Via via) { 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, 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(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId);
this.numRuta = numruta; this.numRuta = numruta;
this.kmEntradaSaida = kmEntradaSaida; this.kmSaidaOrigen = kmSaidaOrigen;
} }
public Parada getOrigen() { public Parada getOrigen() {
@ -236,12 +237,26 @@ public class SecuenciaRutaTramoCoeficienteVO {
this.permiteVenda = permiteVenda; this.permiteVenda = permiteVenda;
} }
public BigDecimal getKmEntradaSaida() { public BigDecimal getKmSaidaOrigen() {
return kmEntradaSaida; return kmSaidaOrigen;
} }
public void setKmEntradaSaida(BigDecimal kmEntradaSaida) { public void setKmSaidaOrigen(BigDecimal kmSaidaOrigen) {
this.kmEntradaSaida = kmEntradaSaida; 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;
} }
} }

View File

@ -2,19 +2,19 @@ package com.rjconsultores.ventaboletos.vo.esquemaoperacional;
import java.math.BigDecimal; import java.math.BigDecimal;
import com.rjconsultores.ventaboletos.entidad.CoeficienteTarifa;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.Via;
import com.rjconsultores.ventaboletos.utilerias.HoraSistema; import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
public class SecuenciaRutaTramoVO { public class SecuenciaRutaTramoVO implements Comparable<SecuenciaRutaTramoVO>{
private Parada origen; private Parada origen;
private Parada destino; private Parada destino;
private Via via; private Via via;
private Integer secuencia; private Integer secuencia;
private BigDecimal kmReal; private BigDecimal kmReal;
private BigDecimal kmEntradaSaida; private BigDecimal kmSaidaOrigen;
private BigDecimal kmEntradaDestino;
private HoraSistema tiempoRecorrido; private HoraSistema tiempoRecorrido;
private Integer tramoId; private Integer tramoId;
private Integer tramoServicioId; private Integer tramoServicioId;
@ -37,11 +37,11 @@ public class SecuenciaRutaTramoVO {
this.indSentidoIda = indSentidoIda; 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(origen, destino, via, secuencia, kmReal, tiempoRecorrido);
this.numRuta = numruta; this.numRuta = numruta;
this.indSentidoIda = indSentidoIda; this.indSentidoIda = indSentidoIda;
this.kmEntradaSaida = kmEntradaSaida; this.kmSaidaOrigen = kmSaidaOrigen;
} }
public SecuenciaRutaTramoVO(Parada origen, Parada destino, Integer secuencia, Via via) { 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, 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(origen, destino, via, secuencia, kmReal, tiempoRecorrido, tramoId, tramoServicioId);
this.numRuta = numruta; this.numRuta = numruta;
this.indSentidoIda = indSentidoIda; this.indSentidoIda = indSentidoIda;
this.kmEntradaSaida = kmEntradaSaida; this.kmSaidaOrigen = kmSaidaOrigen;
} }
public Parada getOrigen() { public Parada getOrigen() {
@ -170,12 +170,12 @@ public class SecuenciaRutaTramoVO {
this.numRuta = numRuta; this.numRuta = numRuta;
} }
public BigDecimal getKmEntradaSaida() { public BigDecimal getKmSaidaOrigen() {
return kmEntradaSaida; return kmSaidaOrigen;
} }
public void setKmEntradaSaida(BigDecimal kmEntradaSaida) { public void setKmSaidaOrigen(BigDecimal kmSaidaOrigen) {
this.kmEntradaSaida = kmEntradaSaida; this.kmSaidaOrigen = kmSaidaOrigen;
} }
@Override @Override
@ -185,4 +185,41 @@ public class SecuenciaRutaTramoVO {
return secuencia + ";" + origen + ";" + destino + ";" + via + ";" + kmReal + ";" return secuencia + ";" + origen + ";" + destino + ";" + via + ";" + kmReal + ";"
+ ((hora != null) ? hora.getHora() : "-") + ";" + ((hora != null) ? hora.getMinuto() : "-"); + ((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;
}
} }