gleimar 2017-09-19 01:16:23 +00:00
parent 5d9647f3f9
commit 88794f9039
4 changed files with 139 additions and 142 deletions

View File

@ -64,4 +64,14 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao); public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao);
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe); 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);
} }

View File

@ -106,6 +106,22 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
return (cant > 0); 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 @Override
public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao) { public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao) {
@ -190,7 +206,6 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
Disjunction or = Restrictions.disjunction(); Disjunction or = Restrictions.disjunction();
if(isDoublePiso){ if(isDoublePiso){
or.add(Restrictions.or(Restrictions.eq("numCorridaPisoExtra", numCorridaPisoExtra), Restrictions.eq("numCorrida", numCorrida))); or.add(Restrictions.or(Restrictions.eq("numCorridaPisoExtra", numCorridaPisoExtra), Restrictions.eq("numCorrida", numCorrida)));
or.add(Restrictions.eq("numCorrida", numCorridaPisoExtra)); or.add(Restrictions.eq("numCorrida", numCorridaPisoExtra));
}else{ }else{
@ -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 @Override
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataGeracao) { public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataGeracao) {
Criteria c = makeCriteria(); Criteria c = makeCriteria();

View File

@ -74,9 +74,6 @@ public class EsquemaCorrida implements Serializable {
@JoinColumn(name = "ROLOPERATIVO_ID", referencedColumnName = "ROLOPERATIVO_ID") @JoinColumn(name = "ROLOPERATIVO_ID", referencedColumnName = "ROLOPERATIVO_ID")
@ManyToOne(cascade = CascadeType.ALL) @ManyToOne(cascade = CascadeType.ALL)
private RolOperativo rolOperativo; private RolOperativo rolOperativo;
@JoinColumn(name = "ROLOPERATIVO2_ID", referencedColumnName = "ROLOPERATIVO_ID")
@ManyToOne(cascade = CascadeType.ALL)
private RolOperativo rolOperativo2;
@JoinColumn(name = "MARCA_ID", referencedColumnName = "MARCA_ID") @JoinColumn(name = "MARCA_ID", referencedColumnName = "MARCA_ID")
@ManyToOne @ManyToOne
private Marca marca; private Marca marca;
@ -92,9 +89,6 @@ public class EsquemaCorrida implements Serializable {
@JoinColumn(name = "CLASESERVICIO_ID", referencedColumnName = "CLASESERVICIO_ID") @JoinColumn(name = "CLASESERVICIO_ID", referencedColumnName = "CLASESERVICIO_ID")
@ManyToOne(cascade = CascadeType.ALL) @ManyToOne(cascade = CascadeType.ALL)
private ClaseServicio claseServicio; private ClaseServicio claseServicio;
@JoinColumn(name = "CLASESERVICIO2_ID", referencedColumnName = "CLASESERVICIO_ID")
@ManyToOne(cascade = CascadeType.ALL)
private ClaseServicio claseServicio2;
@OneToMany(cascade = CascadeType.ALL) @OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID")
private List<EsquemaTramo> esquemaTramoList; private List<EsquemaTramo> esquemaTramoList;
@ -417,21 +411,6 @@ public class EsquemaCorrida implements Serializable {
this.esquemaCorridaRebote = esquemaCorridaRebote; 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() { public Integer getNumCorrida() {
return numCorrida; return numCorrida;

View File

@ -44,7 +44,6 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaTramo;
import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.entidad.Estado;
import com.rjconsultores.ventaboletos.entidad.Marca; import com.rjconsultores.ventaboletos.entidad.Marca;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.RolOperativo;
import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
@ -450,7 +449,7 @@ public class CorridaServiceImpl implements CorridaService {
Marca marca = esquemaCorrida.getMarca(); Marca marca = esquemaCorrida.getMarca();
Date horario = esquemaCorrida.getHorasalida(); Date horario = esquemaCorrida.getHorasalida();
horario = DateUtil.normalizar(horario); horario = DateUtil.normalizar(horario);
Integer numCorrida = (!isPisoExtra) ? esquemaCorrida.getNumCorrida() : esquemaCorrida.getNumCorridaPisoExtra(); Integer numCorrida = esquemaCorrida.getNumCorrida();
Corrida.Id id = new Corrida.Id(); Corrida.Id id = new Corrida.Id();
@ -560,12 +559,6 @@ public class CorridaServiceImpl implements CorridaService {
corrida.setRolOperativo(esquemaCorrida.getRolOperativo()); corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
corrida.setZona(null); corrida.setZona(null);
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
if (hayCorrida) {
return null;
}
// corrida Tramo: // corrida Tramo:
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>(); List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
Integer numSec = 1; Integer numSec = 1;
@ -837,7 +830,15 @@ public class CorridaServiceImpl implements CorridaService {
log.info("esquema=" + esquemaCorrida.getEsquemacorridaId() + " numCorrida=" + esquemaCorrida.getNumCorrida()); log.info("esquema=" + esquemaCorrida.getEsquemacorridaId() + " numCorrida=" + esquemaCorrida.getNumCorrida());
if (!esquemaCorridaDAO.esHijoRebote(esquemaCorrida)) { boolean esHijoRebote = esquemaCorridaDAO.esHijoRebote(esquemaCorrida);
boolean esSegundoPiso = esquemaCorridaDAO.esSegundoPiso(esquemaCorrida);
//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;
}
Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado); Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado);
Corrida corridaPisoExtra = null; Corrida corridaPisoExtra = null;
@ -849,19 +850,14 @@ public class CorridaServiceImpl implements CorridaService {
// PISO EXTRA // PISO EXTRA
if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) { if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) {
// Invertendo RolOperativo e Classe de Servico para o Piso
// Extra
RolOperativo ro = esquemaCorrida.getRolOperativo();
ClaseServicio cs = esquemaCorrida.getClaseServicio();
esquemaCorrida.setRolOperativo(esquemaCorrida.getRolOperativo2()); EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(esquemaCorrida.getNumCorridaPisoExtra());
esquemaCorrida.setClaseServicio(esquemaCorrida.getClaseServicio2());
log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",esquemaCorrida.getEsquemacorridaId(),esquemaCorrida.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() ));
corridaPisoExtra = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado);
corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado);
if (corrida != null && corridaPisoExtra != null) { if (corrida != null && corridaPisoExtra != null) {
// Voltando RolOperativo e Classe de Servico
esquemaCorrida.setRolOperativo(ro);
esquemaCorrida.setClaseServicio(cs);
// Salvando Referencia da Corrida no piso extra // Salvando Referencia da Corrida no piso extra
corridaPisoExtra.setCorridaPiso(corrida); corridaPisoExtra.setCorridaPiso(corrida);
@ -872,12 +868,6 @@ public class CorridaServiceImpl implements CorridaService {
corrida.setCorridaPiso(corridaPisoExtra); corrida.setCorridaPiso(corridaPisoExtra);
corrida.setNumPiso(1); corrida.setNumPiso(1);
corrida = corridaDAO.actualizacion(corrida); 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);
} }
} }
@ -891,26 +881,19 @@ public class CorridaServiceImpl implements CorridaService {
if (corridaRebote != null) { if (corridaRebote != null) {
EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote(); EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote();
if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) { if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) {
// Invertendo RolOperativo e Classe de Servico
// para
// o Piso Extra
RolOperativo ro = ecRebote.getRolOperativo();
ClaseServicio cs = ecRebote.getClaseServicio();
ecRebote.setRolOperativo(ecRebote.getRolOperativo2()); EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(ecRebote.getNumCorridaPisoExtra());
ecRebote.setClaseServicio(ecRebote.getClaseServicio2());
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);
corridaPisoExtraRebote = generarCorrida(ecRebote, dataGeracao, true, isFeriado);
if (corridaRebote != null && corridaPisoExtraRebote != null) { if (corridaRebote != null && corridaPisoExtraRebote != null) {
// Salvando Referencia da Corrida no piso extra // Salvando Referencia da Corrida no piso extra
corridaPisoExtraRebote.setCorridaPiso(corridaRebote); corridaPisoExtraRebote.setCorridaPiso(corridaRebote);
corridaPisoExtraRebote.setNumPiso(2); corridaPisoExtraRebote.setNumPiso(2);
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote); corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
// Voltando RolOperativo e Classe de Servico
ecRebote.setRolOperativo(ro);
ecRebote.setClaseServicio(cs);
// Referencia do Piso extra na Corrida // Referencia do Piso extra na Corrida
corridaRebote.setCorridaPiso(corridaPisoExtraRebote); corridaRebote.setCorridaPiso(corridaPisoExtraRebote);
corridaRebote.setNumPiso(1); corridaRebote.setNumPiso(1);
@ -956,7 +939,7 @@ public class CorridaServiceImpl implements CorridaService {
corridaDAO.actualizacion(corridaPisoExtra); corridaDAO.actualizacion(corridaPisoExtra);
} }
} }
}
if (cantCorridaGenerada >= cantCorridaCommit) { if (cantCorridaGenerada >= cantCorridaCommit) {
cantCorridaGenerada = 0; cantCorridaGenerada = 0;