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() {
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;
}

View File

@ -157,37 +157,23 @@ public class TramoRutaServiceImpl implements TramoRutaService {
ruta = rutaDAO.suscribir(ruta);
Map<Parada, BigDecimal> 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<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoRegresoVO = new ArrayList<SecuenciaRutaTramoVO>();
List<SecuenciaRutaTramoVO> lsSecuenciaRutaTramoIdaVO = new ArrayList<SecuenciaRutaTramoVO>(rutaTramoVO.getLsSecuenciaRutaTramoVO());
// Reordena a lista
Collections.sort(lsSecuenciaRutaTramoIdaVO, new Comparator<SecuenciaRutaTramoVO>() {
@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<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<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;
Map<Parada, BigDecimal> kmEntradaSaida = rutaTramoVO.getParadasComKmEntradaSaida();
for (int i = 0; i < qtdTramos; i++) {
SecuenciaRutaTramoVO secuenciaInicial = lsSecuenciaRutaTramoVO.get(i);
Parada origen = secuenciaInicial.getOrigen();
List<SecuenciaRutaTramoVO> listSecuenciaCalculada = new ArrayList<SecuenciaRutaTramoVO>(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<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) {
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);

View File

@ -172,8 +172,8 @@ public class RutaTramoVO {
public Map<Parada, BigDecimal> getParadasComKmEntradaSaida(){
Map<Parada, BigDecimal> kmEntradaSaida = new HashMap<Parada, BigDecimal>();
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;

View File

@ -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;
}
}

View File

@ -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<SecuenciaRutaTramoVO>{
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;
}
}