Merge pull request 'fixes bug #AL-3494' (!156) from AL-3494 into master

Reviewed-on: adm/ModelWeb#156
Reviewed-by: aristides <aristides@rjconsultores.com.br>
master
aristides 2024-02-27 17:14:27 +00:00
commit 38e00c557a
6 changed files with 180 additions and 146 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId>
<version>1.40.3</version>
<version>1.40.4</version>
<distributionManagement>
<repository>

View File

@ -36,6 +36,8 @@ public interface CorridaDAO extends GenericDAO<Corrida, Corrida.Id> {
*/
public Boolean existe(Id id);
public Boolean existeActivo(Id id);
public List<Corrida> buscarPorAutobusCorridasFuturas(DiagramaAutobus diagramaAutobus);
public List<Corrida> buscarPorRolOperativoCorridasFuturas(DiagramaAutobus diagramaAutobus);

View File

@ -89,6 +89,20 @@ public class CorridaHibernateDAO extends GenericHibernateDAO<Corrida, Corrida.Id
return (cant > 0);
}
@Override
public Boolean existeActivo(final Id id) {
Criteria c = makeCriteria();
c.setProjection(Projections.rowCount());
c.add(Restrictions.eq("id", id));
c.add(Restrictions.eq("activo", ActivoUtil.ATIVO));
Long cant = HibernateFix.count(c.list());
return (cant > 0);
}
@Override
public Corrida suscribir(final Corrida entity) {

View File

@ -21,7 +21,7 @@ public class IntegracaoTotvsHibernateDAO extends GenericHibernateDAO<IntegracaoT
@Override
public void borrarByCorrida(Corrida corrida) {
StringBuilder sQuery = new StringBuilder("update INTEGRACAO_TOTVS_CORRIDA set activo = 0 WHERE corrida_Id = :corridaId AND TRUNC(feccorrida) = :feccorrida ");
StringBuilder sQuery = new StringBuilder("update INTEGRACAO_TOTVS_CORRIDA set integradototvs = 0 WHERE corrida_Id = :corridaId AND TRUNC(feccorrida) = :feccorrida ");
SQLQuery qrUpdate = getSession().createSQLQuery(sQuery.toString());
qrUpdate.setParameter("feccorrida", corrida.getId().getFeccorrida());

View File

@ -83,7 +83,7 @@ public interface CorridaService extends GenericService<Corrida, Corrida.Id> {
public Integer buscarOcupacaoCorrida(Corrida corrida);
public Boolean generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida, boolean isGeracaoAutomaticaCorrida, List<CorridaTramo> corridaTramoList);
public Boolean generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida, boolean isGeracaoAutomaticaCorrida, List<CorridaTramo> corridaTramoList, boolean isValidaActivo);
public Corrida buscarPorId(Corrida.Id id);

View File

@ -455,7 +455,7 @@ public class CorridaServiceImpl implements CorridaService {
* @return - La corrida generada o null si no fue generada.
*/
@SuppressWarnings("deprecation")
private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado, List<CorridaTramo> corridaTramoList) {
private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado, List<CorridaTramo> corridaTramoList, boolean isValidaActivo) {
Corrida corrida = null;
@ -475,7 +475,7 @@ public class CorridaServiceImpl implements CorridaService {
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo)) {
if(!realizaValidacoesGerais(esquemaCorrida, dataGeracao, diaSemana, isFeriado, ruta, id, numCorrida, horario, claseServicio, marca, isPisoExtra, lsEsquemaTramo, isValidaActivo)) {
return null;
}
@ -489,7 +489,7 @@ public class CorridaServiceImpl implements CorridaService {
CorridaCtrl corridaCtrl = criaCorridaCtrl(isPisoExtra, ruta, claseServicio, marca, horario, numCorrida);
corrida = criaCorrida(esquemaCorrida, dataGeracao, id, lsEsquemaTramo, origemCorrida, destinoCorrida,
corridaCtrl, corridaTramoList);
corridaCtrl, corridaTramoList, isValidaActivo);
cantCorridaGenerada++;
@ -503,7 +503,7 @@ public class CorridaServiceImpl implements CorridaService {
}
private Corrida criaCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, Corrida.Id id,
List<EsquemaTramo> lsEsquemaTramo, Parada origemCorrida, Parada destinoCorrida, CorridaCtrl corridaCtrl, List<CorridaTramo> corridaTramoList) {
List<EsquemaTramo> lsEsquemaTramo, Parada origemCorrida, Parada destinoCorrida, CorridaCtrl corridaCtrl, List<CorridaTramo> corridaTramoList, boolean isCorridaInativa) {
Corrida corrida;
corrida = new Corrida();
corrida.setId(id);
@ -571,7 +571,12 @@ public class CorridaServiceImpl implements CorridaService {
}
corrida.setIndTipoVenta(null);
corrida.setCodProdutoFiscal(UtiliteriasFiscal.defineCodigoProduto(corrida.getOrigem().getParadaId(), corrida.getDestino().getParadaId(), corrida.getRuta().getRutaId()));
if(!isCorridaInativa) {
corrida = corridaDAO.suscribir(corrida);
}else {
corrida = corridaDAO.actualizacion(corrida);
}
return corrida;
}
@ -630,7 +635,7 @@ 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){
Ruta ruta, Corrida.Id id, Integer numCorrida, Date horario, ClaseServicio claseServicio, Marca marca, Boolean isPisoExtra, List<EsquemaTramo> lsEsquemaTramo, boolean isGeraCorridaInativa){
Integer corridaId = esquemaCorrida.getNumCorrida();
String fecCorrida = DateUtil.getStringDate(horario);
if (!vigenciaValida(esquemaCorrida, dataGeracao)) {
@ -659,10 +664,17 @@ public class CorridaServiceImpl implements CorridaService {
return Boolean.FALSE;
}
if(!isGeraCorridaInativa) {
if (corridaDAO.existe(id)) {
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". corrida existe = " + numCorrida + ";" + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
return Boolean.FALSE;
}
}else {
if (corridaDAO.existeActivo(id)) {
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". corrida existe = " + numCorrida + ";" + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
return Boolean.FALSE;
}
}
if (lsEsquemaTramo == null || lsEsquemaTramo.isEmpty()) {
log.error("CorridaId:" + corridaId + " FecCorrida:" + fecCorrida + ". Não contem trechos (EsquemaTramo nulo ou vazio)");
@ -836,7 +848,7 @@ public class CorridaServiceImpl implements CorridaService {
return b - a;
}
public Boolean generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida, boolean isGeracaoAutomaticaCorrida, List<CorridaTramo> corridaTramoList) {
public Boolean generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida, boolean isGeracaoAutomaticaCorrida, List<CorridaTramo> corridaTramoList, boolean isValidaActivo) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
@ -931,7 +943,7 @@ public class CorridaServiceImpl implements CorridaService {
}
Boolean isFeriado = this.isFeriado(data, esquemaCorrida);
corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado, corridaTramoList);
corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado, corridaTramoList, isValidaActivo);
corridaPisoExtra = null;
@ -966,7 +978,7 @@ public class CorridaServiceImpl implements CorridaService {
continue;
}
corridaPisoExtra = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado, null);
corridaPisoExtra = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado, null, false);
Boolean atualizarPisoExtra = false;
// caso corrida segundo piso for gerada antes, atualizar
@ -978,6 +990,8 @@ public class CorridaServiceImpl implements CorridaService {
if(corridaPisoExtra !=null) {
if(unUsuarioId!=null && unPuntoVenta!=null && estacionId!=null) {
validaCriaReservaCliente(corridaPisoExtra, unUsuarioId, unPuntoVenta, estacionId);
}else {
log.error("Usuario ou ponto de venda ou estação não definidos para reserva especial nas contantes");
}
}
@ -996,7 +1010,7 @@ public class CorridaServiceImpl implements CorridaService {
continue;
}
corridaPisoExtra2 = generarCorrida(esquemaCorridaTerceiroPiso, dataGeracao, true, isFeriado, null);
corridaPisoExtra2 = generarCorrida(esquemaCorridaTerceiroPiso, dataGeracao, true, isFeriado, null, false);
atualizarPisoExtra = false;
// caso corrida segundo piso for gerada antes, atualizar
@ -1009,6 +1023,8 @@ public class CorridaServiceImpl implements CorridaService {
if(corridaPisoExtra !=null) {
if(unUsuarioId!=null && unPuntoVenta!=null && estacionId!=null) {
validaCriaReservaCliente(corridaPisoExtra, unUsuarioId, unPuntoVenta, estacionId);
}else {
log.error("Usuario ou ponto de venda ou estação não definidos para reserva nas contantes");
}
}
}
@ -1043,6 +1059,8 @@ public class CorridaServiceImpl implements CorridaService {
if(corrida !=null) {
if(unUsuarioId!=null && unPuntoVenta!=null && estacionId!=null) {
validaCriaReservaCliente(corrida, unUsuarioId, unPuntoVenta, estacionId);
}else {
log.error("Usuario ou ponto de venda ou estação não definidos para reserva especial nas contantes");
}
}
@ -1061,7 +1079,7 @@ public class CorridaServiceImpl implements CorridaService {
Corrida corridaPisoExtra2, EsquemaCorrida esquemaCorrida, Boolean isFeriado) {
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado, null);
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado, null, false);
Corrida corridaPisoExtraRebote = null;
boolean generaReboteDiaSeguinte = false;
@ -1073,7 +1091,7 @@ public class CorridaServiceImpl implements CorridaService {
log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",ecRebote.getEsquemacorridaId(),ecRebote.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() ));
corridaPisoExtraRebote = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado, null);
corridaPisoExtraRebote = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado, null, false);
if (corridaRebote != null && corridaPisoExtraRebote != null) {
// Salvando Referencia da Corrida no piso extra
@ -1337,7 +1355,7 @@ public class CorridaServiceImpl implements CorridaService {
java.sql.Date data = new java.sql.Date(dataGeracao.getTime());
Boolean isFeriado = this.isFeriado(data, esquemaCorrida);
return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false, isFeriado, null);
return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false, isFeriado, null, false);
}
private List<Integer> getDiaDeLaSemana(TramoTiempo tramoTiempo) {
@ -1476,7 +1494,7 @@ public class CorridaServiceImpl implements CorridaService {
List<EsquemaCorrida> lsTmp = new ArrayList<EsquemaCorrida>();
lsTmp.add(esquemaCorrida);
this.generarCorrida(dataDe, lsTmp, true, null);
this.generarCorrida(dataDe, lsTmp, true, null, false);
calendarData.setTime(dataDe);
calendarData.add(Calendar.DATE, 1);
@ -1521,7 +1539,7 @@ public class CorridaServiceImpl implements CorridaService {
if (dentroVigenciaEsquemaOperacional) {
log.debug("Geracao de servicos sem cant dias especifico. Adotando o padrao");
this.generarCorrida(dataDe, lsEsquemaCorrida, true, null);
this.generarCorrida(dataDe, lsEsquemaCorrida, true, null, false);
} else {
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
@ -1604,7 +1622,7 @@ public class CorridaServiceImpl implements CorridaService {
break;
}
boolean corridaGerada = this.generarCorrida(dataAte, Arrays.asList(esquemaCorrida), false, null);
boolean corridaGerada = this.generarCorrida(dataAte, Arrays.asList(esquemaCorrida), false, null, false);
log.info(String.format("Corrida gerada = %s [%s - %s]",corridaGerada,esquemaCorrida.getNumCorrida() ,strDataGeracao));
@ -1674,7 +1692,7 @@ public class CorridaServiceImpl implements CorridaService {
while (DateUtil.compareOnlyDate(dataDe, dataAte) <= 0) {
log.info("*** Data: " + sdfData.format(dataDe));
this.generarCorrida(dataDe, lsEsquemaCorrida, false, null);
this.generarCorrida(dataDe, lsEsquemaCorrida, false, null, false);
calendarData.add(Calendar.DATE, 1);
dataDe = calendarData.getTime();