fixes bug#9842
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@73958 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
5d9647f3f9
commit
88794f9039
|
@ -64,4 +64,14 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
|
|||
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao);
|
||||
|
||||
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe);
|
||||
|
||||
/**
|
||||
* Indica se o esquema é o indicado como segundo piso nas configuações de doble piso
|
||||
*
|
||||
* @param esquemaCorrida
|
||||
* @return
|
||||
*/
|
||||
public boolean esSegundoPiso(EsquemaCorrida esquemaCorrida);
|
||||
|
||||
EsquemaCorrida buscarPeloNumCorrida(Integer numCorrida);
|
||||
}
|
||||
|
|
|
@ -106,6 +106,22 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
|
|||
|
||||
return (cant > 0);
|
||||
}
|
||||
/**
|
||||
* Indica se o esquema é o indicado como segundo piso nas configuações de doble piso
|
||||
*
|
||||
* @param esquemaCorrida
|
||||
* @return
|
||||
*/
|
||||
public boolean esSegundoPiso(EsquemaCorrida esquemaCorrida) {
|
||||
Criteria c = makeCriteria();
|
||||
c.setProjection(Projections.rowCount());
|
||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
||||
c.add(Restrictions.eq("numCorridaPisoExtra", esquemaCorrida.getNumCorrida()));
|
||||
|
||||
Long cant = HibernateFix.count(c.list());
|
||||
|
||||
return (cant > 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao) {
|
||||
|
@ -190,9 +206,8 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
|
|||
Disjunction or = Restrictions.disjunction();
|
||||
|
||||
if(isDoublePiso){
|
||||
|
||||
or.add(Restrictions.or(Restrictions.eq("numCorridaPisoExtra", numCorridaPisoExtra), Restrictions.eq("numCorrida", numCorrida)));
|
||||
or.add(Restrictions.eq("numCorrida", numCorridaPisoExtra));
|
||||
or.add(Restrictions.or(Restrictions.eq("numCorridaPisoExtra", numCorridaPisoExtra), Restrictions.eq("numCorrida", numCorrida)));
|
||||
or.add(Restrictions.eq("numCorrida", numCorridaPisoExtra));
|
||||
}else{
|
||||
or.add(Restrictions.eq("numCorrida", numCorrida));
|
||||
}
|
||||
|
@ -206,6 +221,16 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public EsquemaCorrida buscarPeloNumCorrida(Integer numCorrida) {
|
||||
|
||||
Criteria c = getSession().createCriteria(getPersistentClass());
|
||||
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
||||
c.add(Restrictions.eq("numCorrida", numCorrida));
|
||||
|
||||
return (EsquemaCorrida) c.uniqueResult();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataGeracao) {
|
||||
Criteria c = makeCriteria();
|
||||
|
|
|
@ -74,9 +74,6 @@ public class EsquemaCorrida implements Serializable {
|
|||
@JoinColumn(name = "ROLOPERATIVO_ID", referencedColumnName = "ROLOPERATIVO_ID")
|
||||
@ManyToOne(cascade = CascadeType.ALL)
|
||||
private RolOperativo rolOperativo;
|
||||
@JoinColumn(name = "ROLOPERATIVO2_ID", referencedColumnName = "ROLOPERATIVO_ID")
|
||||
@ManyToOne(cascade = CascadeType.ALL)
|
||||
private RolOperativo rolOperativo2;
|
||||
@JoinColumn(name = "MARCA_ID", referencedColumnName = "MARCA_ID")
|
||||
@ManyToOne
|
||||
private Marca marca;
|
||||
|
@ -92,9 +89,6 @@ public class EsquemaCorrida implements Serializable {
|
|||
@JoinColumn(name = "CLASESERVICIO_ID", referencedColumnName = "CLASESERVICIO_ID")
|
||||
@ManyToOne(cascade = CascadeType.ALL)
|
||||
private ClaseServicio claseServicio;
|
||||
@JoinColumn(name = "CLASESERVICIO2_ID", referencedColumnName = "CLASESERVICIO_ID")
|
||||
@ManyToOne(cascade = CascadeType.ALL)
|
||||
private ClaseServicio claseServicio2;
|
||||
@OneToMany(cascade = CascadeType.ALL)
|
||||
@JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID")
|
||||
private List<EsquemaTramo> esquemaTramoList;
|
||||
|
@ -417,21 +411,6 @@ public class EsquemaCorrida implements Serializable {
|
|||
this.esquemaCorridaRebote = esquemaCorridaRebote;
|
||||
}
|
||||
|
||||
public ClaseServicio getClaseServicio2() {
|
||||
return claseServicio2;
|
||||
}
|
||||
|
||||
public void setClaseServicio2(ClaseServicio claseServicio2) {
|
||||
this.claseServicio2 = claseServicio2;
|
||||
}
|
||||
|
||||
public RolOperativo getRolOperativo2() {
|
||||
return rolOperativo2;
|
||||
}
|
||||
|
||||
public void setRolOperativo2(RolOperativo rolOperativo2) {
|
||||
this.rolOperativo2 = rolOperativo2;
|
||||
}
|
||||
|
||||
public Integer getNumCorrida() {
|
||||
return numCorrida;
|
||||
|
|
|
@ -44,7 +44,6 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaTramo;
|
|||
import com.rjconsultores.ventaboletos.entidad.Estado;
|
||||
import com.rjconsultores.ventaboletos.entidad.Marca;
|
||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||
import com.rjconsultores.ventaboletos.entidad.RolOperativo;
|
||||
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
||||
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
|
||||
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
||||
|
@ -450,7 +449,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
Marca marca = esquemaCorrida.getMarca();
|
||||
Date horario = esquemaCorrida.getHorasalida();
|
||||
horario = DateUtil.normalizar(horario);
|
||||
Integer numCorrida = (!isPisoExtra) ? esquemaCorrida.getNumCorrida() : esquemaCorrida.getNumCorridaPisoExtra();
|
||||
Integer numCorrida = esquemaCorrida.getNumCorrida();
|
||||
|
||||
Corrida.Id id = new Corrida.Id();
|
||||
|
||||
|
@ -560,12 +559,6 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
|
||||
corrida.setZona(null);
|
||||
|
||||
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
|
||||
|
||||
if (hayCorrida) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// corrida Tramo:
|
||||
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
|
||||
Integer numSec = 1;
|
||||
|
@ -837,127 +830,117 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
|
||||
log.info("esquema=" + esquemaCorrida.getEsquemacorridaId() + " numCorrida=" + esquemaCorrida.getNumCorrida());
|
||||
|
||||
if (!esquemaCorridaDAO.esHijoRebote(esquemaCorrida)) {
|
||||
Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado);
|
||||
Corrida corridaPisoExtra = null;
|
||||
boolean esHijoRebote = esquemaCorridaDAO.esHijoRebote(esquemaCorrida);
|
||||
boolean esSegundoPiso = esquemaCorridaDAO.esSegundoPiso(esquemaCorrida);
|
||||
|
||||
if (corrida == null) {// Si no genera la corrida, no va a
|
||||
// generar el rebote
|
||||
log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao);
|
||||
continue;
|
||||
}
|
||||
//Nessas duas condições, o "filho" só é gerado a partir do esquema corrida "pai"
|
||||
if (esHijoRebote || esSegundoPiso) {
|
||||
log.info(String.format("Esquema nao gerado. esHijoRebote:%s ; esSegundoPiso: %s",esHijoRebote,esSegundoPiso));
|
||||
continue;
|
||||
}
|
||||
|
||||
// PISO EXTRA
|
||||
if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) {
|
||||
// Invertendo RolOperativo e Classe de Servico para o Piso
|
||||
// Extra
|
||||
RolOperativo ro = esquemaCorrida.getRolOperativo();
|
||||
ClaseServicio cs = esquemaCorrida.getClaseServicio();
|
||||
Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado);
|
||||
Corrida corridaPisoExtra = null;
|
||||
|
||||
esquemaCorrida.setRolOperativo(esquemaCorrida.getRolOperativo2());
|
||||
esquemaCorrida.setClaseServicio(esquemaCorrida.getClaseServicio2());
|
||||
if (corrida == null) {// Si no genera la corrida, no va a
|
||||
// generar el rebote
|
||||
log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao);
|
||||
continue;
|
||||
}
|
||||
|
||||
corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado);
|
||||
if (corrida != null && corridaPisoExtra != null) {
|
||||
// Voltando RolOperativo e Classe de Servico
|
||||
esquemaCorrida.setRolOperativo(ro);
|
||||
esquemaCorrida.setClaseServicio(cs);
|
||||
// PISO EXTRA
|
||||
if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) {
|
||||
|
||||
// Salvando Referencia da Corrida no piso extra
|
||||
corridaPisoExtra.setCorridaPiso(corrida);
|
||||
corridaPisoExtra.setNumPiso(2);
|
||||
corridaPisoExtra = corridaDAO.actualizacion(corridaPisoExtra);
|
||||
EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(esquemaCorrida.getNumCorridaPisoExtra());
|
||||
|
||||
// Referencia do Piso extra na Corrida
|
||||
corrida.setCorridaPiso(corridaPisoExtra);
|
||||
corrida.setNumPiso(1);
|
||||
corrida = corridaDAO.actualizacion(corrida);
|
||||
} else {
|
||||
// Voltando RolOperativo e Classe de Servico
|
||||
// estava dando problema porque não estava voltando o roloperativo e nem a classe.
|
||||
// daí, no caso de double piso, passava a gerar os próximos com classe errada. mantis 7075
|
||||
esquemaCorrida.setRolOperativo(ro);
|
||||
esquemaCorrida.setClaseServicio(cs);
|
||||
}
|
||||
}
|
||||
log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",esquemaCorrida.getEsquemacorridaId(),esquemaCorrida.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() ));
|
||||
|
||||
if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
|
||||
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
|
||||
corridaPisoExtra = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado);
|
||||
|
||||
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
|
||||
Corrida corridaPisoExtraRebote = null;
|
||||
boolean generaReboteDiaSeguinte = false;
|
||||
if (corrida != null && corridaPisoExtra != null) {
|
||||
|
||||
if (corridaRebote != null) {
|
||||
EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote();
|
||||
if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) {
|
||||
// Invertendo RolOperativo e Classe de Servico
|
||||
// para
|
||||
// o Piso Extra
|
||||
RolOperativo ro = ecRebote.getRolOperativo();
|
||||
ClaseServicio cs = ecRebote.getClaseServicio();
|
||||
// Salvando Referencia da Corrida no piso extra
|
||||
corridaPisoExtra.setCorridaPiso(corrida);
|
||||
corridaPisoExtra.setNumPiso(2);
|
||||
corridaPisoExtra = corridaDAO.actualizacion(corridaPisoExtra);
|
||||
|
||||
ecRebote.setRolOperativo(ecRebote.getRolOperativo2());
|
||||
ecRebote.setClaseServicio(ecRebote.getClaseServicio2());
|
||||
|
||||
corridaPisoExtraRebote = generarCorrida(ecRebote, dataGeracao, true, isFeriado);
|
||||
if (corridaRebote != null && corridaPisoExtraRebote != null) {
|
||||
// Salvando Referencia da Corrida no piso extra
|
||||
corridaPisoExtraRebote.setCorridaPiso(corridaRebote);
|
||||
corridaPisoExtraRebote.setNumPiso(2);
|
||||
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
|
||||
|
||||
// Voltando RolOperativo e Classe de Servico
|
||||
ecRebote.setRolOperativo(ro);
|
||||
ecRebote.setClaseServicio(cs);
|
||||
|
||||
// Referencia do Piso extra na Corrida
|
||||
corridaRebote.setCorridaPiso(corridaPisoExtraRebote);
|
||||
corridaRebote.setNumPiso(1);
|
||||
corridaRebote = corridaDAO.actualizacion(corridaRebote);
|
||||
}
|
||||
}
|
||||
// RebotePisoExtra
|
||||
if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) {
|
||||
generaReboteDiaSeguinte = true; // si fue generado
|
||||
// con una
|
||||
// fechamenor tienes
|
||||
// que generar para
|
||||
// el dia seguinte
|
||||
}
|
||||
} else {
|
||||
generaReboteDiaSeguinte = true;// si no fue encontrado
|
||||
// para el dia de
|
||||
// hoy,genera para
|
||||
// manhana
|
||||
}
|
||||
|
||||
if (generaReboteDiaSeguinte) {
|
||||
log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy");
|
||||
|
||||
corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||
|
||||
if (corridaPisoExtraRebote != null) {
|
||||
corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||
}
|
||||
|
||||
if (corridaRebote == null) {
|
||||
log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao);
|
||||
}
|
||||
}
|
||||
if (corridaRebote != null) {
|
||||
log.info("Rebote generado=" + corridaRebote.getId());
|
||||
corrida.setCorridaRebote(corridaRebote);
|
||||
corridaDAO.actualizacion(corrida);
|
||||
}
|
||||
if (corridaPisoExtraRebote != null && corridaPisoExtra != null) {
|
||||
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
||||
corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote);
|
||||
corridaDAO.actualizacion(corridaPisoExtra);
|
||||
}
|
||||
// Referencia do Piso extra na Corrida
|
||||
corrida.setCorridaPiso(corridaPisoExtra);
|
||||
corrida.setNumPiso(1);
|
||||
corrida = corridaDAO.actualizacion(corrida);
|
||||
}
|
||||
}
|
||||
|
||||
if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
|
||||
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
|
||||
|
||||
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
|
||||
Corrida corridaPisoExtraRebote = null;
|
||||
boolean generaReboteDiaSeguinte = false;
|
||||
|
||||
if (corridaRebote != null) {
|
||||
EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote();
|
||||
if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) {
|
||||
|
||||
EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(ecRebote.getNumCorridaPisoExtra());
|
||||
|
||||
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);
|
||||
|
||||
if (corridaRebote != null && corridaPisoExtraRebote != null) {
|
||||
// Salvando Referencia da Corrida no piso extra
|
||||
corridaPisoExtraRebote.setCorridaPiso(corridaRebote);
|
||||
corridaPisoExtraRebote.setNumPiso(2);
|
||||
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
|
||||
|
||||
// Referencia do Piso extra na Corrida
|
||||
corridaRebote.setCorridaPiso(corridaPisoExtraRebote);
|
||||
corridaRebote.setNumPiso(1);
|
||||
corridaRebote = corridaDAO.actualizacion(corridaRebote);
|
||||
}
|
||||
}
|
||||
// RebotePisoExtra
|
||||
if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) {
|
||||
generaReboteDiaSeguinte = true; // si fue generado
|
||||
// con una
|
||||
// fechamenor tienes
|
||||
// que generar para
|
||||
// el dia seguinte
|
||||
}
|
||||
} else {
|
||||
generaReboteDiaSeguinte = true;// si no fue encontrado
|
||||
// para el dia de
|
||||
// hoy,genera para
|
||||
// manhana
|
||||
}
|
||||
|
||||
if (generaReboteDiaSeguinte) {
|
||||
log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy");
|
||||
|
||||
corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||
|
||||
if (corridaPisoExtraRebote != null) {
|
||||
corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
|
||||
}
|
||||
|
||||
if (corridaRebote == null) {
|
||||
log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao);
|
||||
}
|
||||
}
|
||||
if (corridaRebote != null) {
|
||||
log.info("Rebote generado=" + corridaRebote.getId());
|
||||
corrida.setCorridaRebote(corridaRebote);
|
||||
corridaDAO.actualizacion(corrida);
|
||||
}
|
||||
if (corridaPisoExtraRebote != null && corridaPisoExtra != null) {
|
||||
log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId());
|
||||
corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote);
|
||||
corridaDAO.actualizacion(corridaPisoExtra);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (cantCorridaGenerada >= cantCorridaCommit) {
|
||||
cantCorridaGenerada = 0;
|
||||
transactionManager.commit(status);
|
||||
|
|
Loading…
Reference in New Issue