fixes bug #AL-3494
parent
d306752cdd
commit
4f7871cc67
2
pom.xml
2
pom.xml
|
@ -3,7 +3,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>br.com.rjconsultores</groupId>
|
||||
<artifactId>ModelWeb</artifactId>
|
||||
<version>1.40.6</version>
|
||||
<version>1.40.7</version>
|
||||
|
||||
<distributionManagement>
|
||||
<repository>
|
||||
|
|
|
@ -18,5 +18,6 @@ public interface CorridaTramoService extends GenericService<CorridaTramo, Intege
|
|||
public List<CorridaTramo> criaCorridaTramoList(Autobus autobus, Date dataGeracao, Date fechorSalidaOriginalH ,
|
||||
List<EsquemaTramo> lsEsquemaTramo, Nodo nodo, ClaseServicio claseServicio, String statusCorrida);
|
||||
|
||||
public List<CorridaTramo> recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List<EsquemaTramo> esquemaTramoNovoList, Corrida corrida);
|
||||
public List<CorridaTramo> recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List<EsquemaTramo> esquemaTramoNovoList, Corrida corrida, List<EsquemaTramo> lsParadaEsquemaOrignal);
|
||||
|
||||
}
|
||||
|
|
|
@ -91,10 +91,8 @@ import com.rjconsultores.ventaboletos.utilerias.ActivoUtil;
|
|||
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
||||
import com.rjconsultores.ventaboletos.utilerias.FeriadoCache;
|
||||
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
|
||||
import com.rjconsultores.ventaboletos.utilerias.LocaleUtil;
|
||||
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
|
||||
import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal;
|
||||
import com.rjconsultores.ventaboletos.vo.esquemaoperacional.TarefaGeracaoCorridaVO;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -473,15 +471,26 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
Corrida.Id id = new Corrida.Id();
|
||||
id.setCorridaId(numCorrida);
|
||||
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
||||
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
||||
List<EsquemaTramo> lsEsquemaTramo = null;
|
||||
Parada origemCorrida = null;
|
||||
Parada destinoCorrida =null;
|
||||
boolean isValidaTrecho = true;
|
||||
if(corridaTramoList !=null && !corridaTramoList.isEmpty()) {
|
||||
origemCorrida = corridaTramoList.get(0).getOrigem();
|
||||
destinoCorrida = corridaTramoList.get(corridaTramoList.size()-1).getDestino();
|
||||
isValidaTrecho = false;
|
||||
}else {
|
||||
lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
|
||||
origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem();
|
||||
destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino();
|
||||
}
|
||||
|
||||
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo, isValidaActivo)) {
|
||||
|
||||
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida,
|
||||
horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo, isValidaActivo, isValidaTrecho)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
Parada origemCorrida = lsEsquemaTramo.get(0).getTramo().getOrigem();
|
||||
|
||||
Parada destinoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1).getTramo().getDestino();
|
||||
|
||||
/* Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, é chave primaria, temos que buscar somente por esse campo
|
||||
Caso o registro já exista, atualizamos os dados dele. Sendo assim, o que vai indicar a "duplicidade" de uma corrida será apenas o número dela e não mais o conjunto : clase + marca + horario + ruta*/
|
||||
|
@ -635,7 +644,8 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
}
|
||||
|
||||
private Boolean realizaValidacoesGerais(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer diaSemana, Boolean isFeriado,
|
||||
Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra, List<EsquemaTramo> lsEsquemaTramo, boolean isGeraCorridaInativa){
|
||||
Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra,
|
||||
List<EsquemaTramo> lsEsquemaTramo, boolean isGeraCorridaInativa, boolean isValidaTrecho ){
|
||||
Integer corridaId = esquemaCorrida.getNumCorrida();
|
||||
String fecCorrida = DateUtil.getStringDate(horario);
|
||||
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
||||
|
@ -672,25 +682,12 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
|
||||
return Boolean.FALSE;
|
||||
if(isValidaTrecho) {
|
||||
if(!realizaValidacoesTrecho(corridaId, fecCorrida, lsEsquemaTramo)) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0);
|
||||
Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem();
|
||||
if (origemCorrida == null) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Origem não preenchido (Primeiro trecho EsquemaTramo)");
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
||||
Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino();
|
||||
if (destinoCorrida == null) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Destino não preenchido (Último trecho EsquemaTramo)");
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
if(marca !=null && Boolean.FALSE.equals(marca.getActivo())){
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". MarcaId=" + marca.getMarcaId() +" inativa, corrida não pode ser gerada");
|
||||
|
@ -699,6 +696,29 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
|
||||
private boolean realizaValidacoesTrecho(Integer corridaId, String fecCorrida,List<EsquemaTramo> lsEsquemaTramo ) {
|
||||
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0);
|
||||
Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem();
|
||||
if (origemCorrida == null) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Origem não preenchido (Primeiro trecho EsquemaTramo)");
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
|
||||
EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
||||
Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino();
|
||||
if (destinoCorrida == null) {
|
||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Destino não preenchido (Último trecho EsquemaTramo)");
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
private Boolean validaCorridaDiaSimDiaNao(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer numCorrida ){
|
||||
if (Boolean.TRUE.equals(esquemaCorrida.getIndDiaSimDiaNao())) {
|
||||
|
|
|
@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Nodo;
|
|||
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
||||
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
||||
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
||||
import com.rjconsultores.ventaboletos.service.BoletoService;
|
||||
import com.rjconsultores.ventaboletos.service.CorridaService;
|
||||
import com.rjconsultores.ventaboletos.service.CorridaTramoService;
|
||||
import com.rjconsultores.ventaboletos.service.TramoServicioService;
|
||||
|
@ -48,6 +49,9 @@ public class CorridaTramoServiceImpl implements CorridaTramoService {
|
|||
@Autowired
|
||||
private CorridaService corridaService;
|
||||
|
||||
@Autowired
|
||||
BoletoService boletoService;
|
||||
|
||||
public CorridaTramoServiceImpl() {
|
||||
super();
|
||||
log = LogManager.getLogger(CorridaTramoServiceImpl.class);
|
||||
|
@ -96,9 +100,13 @@ public class CorridaTramoServiceImpl implements CorridaTramoService {
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<CorridaTramo> recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List<EsquemaTramo> esquemaTramoNovoList, Corrida corrida) {
|
||||
//Busca todas as corridas tramo
|
||||
public List<CorridaTramo> recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List<EsquemaTramo> esquemaTramoNovoList, Corrida corrida, List<EsquemaTramo> lsEsquemaTramoOrignal) {
|
||||
List<CorridaTramo> corridaTramoListAntigas = corridaTramoDAO.buscaCorridaTramoByFecCorridaECorridaId(dataCorrida, esquemaCorrida.getNumCorrida(), false);
|
||||
//Caso encontre nas CorridaTramo existente algum trecho vendido que não está nas configurações do serviço retorna null
|
||||
if(!validaTramoInexistenteServicoComVenda(esquemaCorrida, dataCorrida, lsEsquemaTramoOrignal,
|
||||
corridaTramoListAntigas)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
inativaCorridasTramos(corridaTramoListAntigas);
|
||||
|
||||
|
@ -115,6 +123,39 @@ public class CorridaTramoServiceImpl implements CorridaTramoService {
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Valida se existe alguma CorrridaTramo atualmente que contem venda e não está nas configurações de Serviço.
|
||||
* @param esquemaCorrida
|
||||
* @param dataCorrida
|
||||
* @param lsParadaEsquemaOrignal
|
||||
* @param corridaTramoListAntigas
|
||||
* @return
|
||||
*/
|
||||
private boolean validaTramoInexistenteServicoComVenda(EsquemaCorrida esquemaCorrida, Date dataCorrida,
|
||||
List<EsquemaTramo> lsParadaEsquemaOrignal, List<CorridaTramo> corridaTramoListAntigas) {
|
||||
List<CorridaTramo> corridaTramoInexistenteList = new ArrayList<CorridaTramo>();
|
||||
for (CorridaTramo corridaTramo : corridaTramoListAntigas) {
|
||||
boolean isTrechoExiste = false;
|
||||
for (EsquemaTramo esquemaTramo : lsParadaEsquemaOrignal) {
|
||||
if(esquemaTramo.getTramo().getOrigem().equals(corridaTramo.getTramo().getOrigem()) &&
|
||||
esquemaTramo.getTramo().getDestino().equals(corridaTramo.getDestino())) {
|
||||
isTrechoExiste = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!isTrechoExiste) {
|
||||
corridaTramoInexistenteList.add(corridaTramo);
|
||||
}
|
||||
}
|
||||
for (CorridaTramo corridaTramo : corridaTramoInexistenteList) {
|
||||
if(boletoService.isExisteBoletoPorCorridaOrigemIdOuDestinoId(esquemaCorrida.getNumCorrida(), dataCorrida, corridaTramo.getOrigem().getParadaId(), corridaTramo.getDestino().getParadaId())){
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue