diff --git a/pom.xml b/pom.xml
index e511bdcc1..8122a1a65 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
br.com.rjconsultores
ModelWeb
- 1.40.6
+ 1.40.7
diff --git a/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java b/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java
index bb5a71da9..8d8a032da 100644
--- a/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java
+++ b/src/com/rjconsultores/ventaboletos/service/CorridaTramoService.java
@@ -18,5 +18,6 @@ public interface CorridaTramoService extends GenericService criaCorridaTramoList(Autobus autobus, Date dataGeracao, Date fechorSalidaOriginalH ,
List lsEsquemaTramo, Nodo nodo, ClaseServicio claseServicio, String statusCorrida);
- public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida);
+ public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida, List lsParadaEsquemaOrignal);
+
}
diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java
index 456101ab3..51b1bb431 100644
--- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java
+++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java
@@ -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 lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
+ List 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 lsEsquemaTramo, boolean isGeraCorridaInativa){
+ Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra,
+ List 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 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())) {
diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java
index b193b5bff..6ce10e545 100644
--- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java
+++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaTramoServiceImpl.java
@@ -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 recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida) {
- //Busca todas as corridas tramo
+ public List recriaCorridaTramo(EsquemaCorrida esquemaCorrida, Date dataCorrida, List esquemaTramoNovoList, Corrida corrida, List lsEsquemaTramoOrignal) {
List 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 lsParadaEsquemaOrignal, List corridaTramoListAntigas) {
+ List corridaTramoInexistenteList = new ArrayList();
+ 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;
+ }
+
/**