fixes bug #AL-3494
parent
d306752cdd
commit
4f7871cc67
2
pom.xml
2
pom.xml
|
@ -3,7 +3,7 @@
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>br.com.rjconsultores</groupId>
|
<groupId>br.com.rjconsultores</groupId>
|
||||||
<artifactId>ModelWeb</artifactId>
|
<artifactId>ModelWeb</artifactId>
|
||||||
<version>1.40.6</version>
|
<version>1.40.7</version>
|
||||||
|
|
||||||
<distributionManagement>
|
<distributionManagement>
|
||||||
<repository>
|
<repository>
|
||||||
|
|
|
@ -18,5 +18,6 @@ public interface CorridaTramoService extends GenericService<CorridaTramo, Intege
|
||||||
public List<CorridaTramo> criaCorridaTramoList(Autobus autobus, Date dataGeracao, Date fechorSalidaOriginalH ,
|
public List<CorridaTramo> criaCorridaTramoList(Autobus autobus, Date dataGeracao, Date fechorSalidaOriginalH ,
|
||||||
List<EsquemaTramo> lsEsquemaTramo, Nodo nodo, ClaseServicio claseServicio, String statusCorrida);
|
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.DateUtil;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.FeriadoCache;
|
import com.rjconsultores.ventaboletos.utilerias.FeriadoCache;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
|
import com.rjconsultores.ventaboletos.utilerias.HoraSistema;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.LocaleUtil;
|
|
||||||
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
|
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal;
|
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();
|
Corrida.Id id = new Corrida.Id();
|
||||||
id.setCorridaId(numCorrida);
|
id.setCorridaId(numCorrida);
|
||||||
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
|
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;
|
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
|
/* 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*/
|
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,
|
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();
|
Integer corridaId = esquemaCorrida.getNumCorrida();
|
||||||
String fecCorrida = DateUtil.getStringDate(horario);
|
String fecCorrida = DateUtil.getStringDate(horario);
|
||||||
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
|
||||||
|
@ -672,12 +682,26 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(isValidaTrecho) {
|
||||||
|
if(!realizaValidacoesTrecho(corridaId, fecCorrida, lsEsquemaTramo)) {
|
||||||
|
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");
|
||||||
|
return Boolean.FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean realizaValidacoesTrecho(Integer corridaId, String fecCorrida,List<EsquemaTramo> lsEsquemaTramo ) {
|
||||||
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
|
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
|
||||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
|
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0);
|
EsquemaTramo primeiroTrechoCorrida = lsEsquemaTramo.get(0);
|
||||||
Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem();
|
Parada origemCorrida = primeiroTrechoCorrida.getTramo().getOrigem();
|
||||||
if (origemCorrida == null) {
|
if (origemCorrida == null) {
|
||||||
|
@ -685,6 +709,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
EsquemaTramo ultimoTrechoCorrida = lsEsquemaTramo.get(lsEsquemaTramo.size() - 1);
|
||||||
Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino();
|
Parada destinoCorrida = ultimoTrechoCorrida.getTramo().getDestino();
|
||||||
if (destinoCorrida == null) {
|
if (destinoCorrida == null) {
|
||||||
|
@ -692,12 +717,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return Boolean.FALSE;
|
return Boolean.FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(marca !=null && Boolean.FALSE.equals(marca.getActivo())){
|
return true;
|
||||||
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". MarcaId=" + marca.getMarcaId() +" inativa, corrida não pode ser gerada");
|
|
||||||
return Boolean.FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Boolean.TRUE;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Boolean validaCorridaDiaSimDiaNao(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer numCorrida ){
|
private Boolean validaCorridaDiaSimDiaNao(EsquemaCorrida esquemaCorrida, Date dataGeracao, Integer numCorrida ){
|
||||||
|
|
|
@ -28,6 +28,7 @@ import com.rjconsultores.ventaboletos.entidad.Nodo;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
||||||
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
||||||
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
||||||
|
import com.rjconsultores.ventaboletos.service.BoletoService;
|
||||||
import com.rjconsultores.ventaboletos.service.CorridaService;
|
import com.rjconsultores.ventaboletos.service.CorridaService;
|
||||||
import com.rjconsultores.ventaboletos.service.CorridaTramoService;
|
import com.rjconsultores.ventaboletos.service.CorridaTramoService;
|
||||||
import com.rjconsultores.ventaboletos.service.TramoServicioService;
|
import com.rjconsultores.ventaboletos.service.TramoServicioService;
|
||||||
|
@ -48,6 +49,9 @@ public class CorridaTramoServiceImpl implements CorridaTramoService {
|
||||||
@Autowired
|
@Autowired
|
||||||
private CorridaService corridaService;
|
private CorridaService corridaService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
BoletoService boletoService;
|
||||||
|
|
||||||
public CorridaTramoServiceImpl() {
|
public CorridaTramoServiceImpl() {
|
||||||
super();
|
super();
|
||||||
log = LogManager.getLogger(CorridaTramoServiceImpl.class);
|
log = LogManager.getLogger(CorridaTramoServiceImpl.class);
|
||||||
|
@ -96,9 +100,13 @@ public class CorridaTramoServiceImpl implements CorridaTramoService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional
|
@Transactional
|
||||||
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> lsEsquemaTramoOrignal) {
|
||||||
//Busca todas as corridas tramo
|
|
||||||
List<CorridaTramo> corridaTramoListAntigas = corridaTramoDAO.buscaCorridaTramoByFecCorridaECorridaId(dataCorrida, esquemaCorrida.getNumCorrida(), false);
|
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);
|
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