rodrigo 2013-02-08 14:21:08 +00:00
parent 5192a9aa9d
commit 61c2cf55c7
7 changed files with 987 additions and 875 deletions

View File

@ -28,11 +28,8 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
public List<EsquemaCorrida> buscar(EsquemaCorrida ec); public List<EsquemaCorrida> buscar(EsquemaCorrida ec);
public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra); public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra);
/** /**
* Indica se el esquema corrida es hijo de un esquemCorrida. * Indica se el esquema corrida es hijo de un esquemCorrida.
* *
@ -42,7 +39,9 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
public boolean esHijoRebote(EsquemaCorrida esquemaCorrida); public boolean esHijoRebote(EsquemaCorrida esquemaCorrida);
/** /**
* Busca los esquema corrida que tiene esquema operacional en la fecha indicada * Busca los esquema corrida que tiene esquema operacional en la fecha
* indicada
*
* @param dataGeracao * @param dataGeracao
* @return * @return
*/ */
@ -51,7 +50,8 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo); public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo);
/** /**
* Indica cuál son los Id's de EsquemaCorrida que tienen la paradaId en su secuencia * Indica cuál son los Id's de EsquemaCorrida que tienen la paradaId en su
* secuencia
* *
* @param ruta * @param ruta
* @param paradaId * @param paradaId
@ -59,5 +59,7 @@ public interface EsquemaCorridaDAO extends GenericDAO<EsquemaCorrida, Integer> {
*/ */
public List<Integer> existe(Ruta ruta, Integer paradaId); public List<Integer> existe(Ruta ruta, Integer paradaId);
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao);
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe);
} }

View File

@ -160,9 +160,6 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
return c.list(); return c.list();
} }
public boolean esHijoRebote(EsquemaCorrida esquemaCorrida) { public boolean esHijoRebote(EsquemaCorrida esquemaCorrida) {
Criteria c = makeCriteria(); Criteria c = makeCriteria();
c.setProjection(Projections.rowCount()); c.setProjection(Projections.rowCount());
@ -187,6 +184,20 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
return c.list(); return c.list();
} }
@Override
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao) {
Criteria c = makeCriteria();
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.isNull("cantDiasGeracion"));
Criteria cEsquemaOperacional = c.createCriteria("esquemaOperacional");
cEsquemaOperacional.add(Restrictions.le("fecniciovigencia", dataGeracao));
cEsquemaOperacional.add(Restrictions.ge("fecfinvigencia", dataGeracao));
cEsquemaOperacional.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo) { public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo) {
Criteria c = makeCriteria(); Criteria c = makeCriteria();
c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("activo", Boolean.TRUE));
@ -223,22 +234,17 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
return c.list(); return c.list();
} }
@Override @Override
public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra) { public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra) {
Criteria c = getSession().createCriteria(getPersistentClass()); Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("activo", Boolean.TRUE));
Disjunction or = Restrictions.disjunction(); Disjunction or = Restrictions.disjunction();
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));
c.add(or); c.add(or);
if (c.list().isEmpty()) { if (c.list().isEmpty()) {
return false; return false;
} else { } else {
@ -246,6 +252,17 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO<EsquemaCorri
} }
} }
@Override
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataGeracao) {
Criteria c = makeCriteria();
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.isNotNull("cantDiasGeracion"));
Criteria cEsquemaOperacional = c.createCriteria("esquemaOperacional");
cEsquemaOperacional.add(Restrictions.le("fecniciovigencia", dataGeracao));
cEsquemaOperacional.add(Restrictions.ge("fecfinvigencia", dataGeracao));
cEsquemaOperacional.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
} }

View File

@ -118,6 +118,8 @@ public class EsquemaCorrida implements Serializable {
private Integer numCorridaPisoExtra; private Integer numCorridaPisoExtra;
@Column(name = "INDGENERAFERIADO") @Column(name = "INDGENERAFERIADO")
private String indGeneraFeriado; private String indGeneraFeriado;
@Column(name = "CANTDIASGENERACION")
private Integer cantDiasGeracion;
public enum GerarFeriado { public enum GerarFeriado {
// Declaração dos enum // Declaração dos enum
@ -434,6 +436,14 @@ public class EsquemaCorrida implements Serializable {
this.indGeneraFeriado = indGeneraFeriado; this.indGeneraFeriado = indGeneraFeriado;
} }
public Integer getCantDiasGeracion() {
return cantDiasGeracion;
}
public void setCantDiasGeracion(Integer cantDiasGeracion) {
this.cantDiasGeracion = cantDiasGeracion;
}
@Override @Override
public int hashCode() { public int hashCode() {
int hash = 0; int hash = 0;

View File

@ -40,14 +40,28 @@ public interface CorridaService extends GenericService<Corrida, Corrida.Id> {
public List<Corrida> buscarFiltro(Parada ori, Parada des, Date hora, ClaseServicio cs); public List<Corrida> buscarFiltro(Parada ori, Parada des, Date hora, ClaseServicio cs);
/** /**
* Regresa la fecha final para el período de generación automatica de corridas. * Regresa la fecha final para el período de generación automatica de
* corridas.
* *
* *
* @return * @return
*/ */
public Date calcularDataFinalGeneracionCorrida(); public Date calcularDataFinalGeneracionCorrida();
public boolean generarCorridaAutomatica(Date dataDe, Date dataAte); public boolean generarCorridaAutomaticaConstanteDias(Date dataDe, Date dataAte);
public List<Corrida> buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId); public List<Corrida> buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId);
/**
* Gera corrida a partir dos servicos selecionados na tela de
* "Selecionar Servicos a Gerar". Menu->Esquema Operacional->Selecionar
* Servicos a Gerar
*
* @param lsEsquemaCorrida
* @param dataDe
* @param dataAte
*/
public void generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte);
public boolean generarCorridaAutomaticaQtdeDias(Date dataDe);
} }

View File

@ -32,7 +32,6 @@ public interface EsquemaCorridaService extends GenericService<EsquemaCorrida, In
public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra); public boolean buscarNumCorrida(Integer numCorrida, Integer numCorridaPisoExtra);
public void actualizaEsquemaTramo(List<ParadaEsquema> listParadaEsquema, EsquemaCorrida ec); public void actualizaEsquemaTramo(List<ParadaEsquema> listParadaEsquema, EsquemaCorrida ec);
public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao); public List<EsquemaCorrida> buscaDentroVigencia(Date dataGeracao);
@ -41,9 +40,14 @@ public interface EsquemaCorridaService extends GenericService<EsquemaCorrida, In
/** /**
* See {@link EsquemaCorridaDAO#existe(Ruta, Integer)} * See {@link EsquemaCorridaDAO#existe(Ruta, Integer)}
*
* @param ruta * @param ruta
* @param paradaId * @param paradaId
* @return * @return
*/ */
public List<Integer> existe(Ruta ruta, Integer paradaId); public List<Integer> existe(Ruta ruta, Integer paradaId);
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao);
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe);
} }

View File

@ -108,6 +108,19 @@ public class CorridaServiceImpl implements CorridaService {
return corridaDAO.obtenerID(id); return corridaDAO.obtenerID(id);
} }
public List<Corrida> buscarPorFecCorrida(Date value) {
return corridaDAO.buscarPorFecCorrida(value);
}
public List<Corrida> buscarPorId(Integer idCorrida) {
return corridaDAO.buscarPorId(idCorrida);
}
@Override
public List<Corrida> buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId) {
return corridaDAO.buscarDistinct(ori, des, (horaSalidaInicio == null) ? null : DateUtil.getFecInicio(horaSalidaInicio).getTime(), (horaSalidaFin == null) ? null : DateUtil.getFecInicio(horaSalidaFin).getTime(), cs, corridaId);
}
@Transactional @Transactional
public Corrida suscribir(Corrida entidad) { public Corrida suscribir(Corrida entidad) {
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
@ -147,7 +160,6 @@ public class CorridaServiceImpl implements CorridaService {
return corridaDAO.buscarFiltro(ori, des, hora, cs); return corridaDAO.buscarFiltro(ori, des, hora, cs);
} }
private Boolean geraDiaSemana(Integer diaSemana, EsquemaCorrida esquemaCorrida) { private Boolean geraDiaSemana(Integer diaSemana, EsquemaCorrida esquemaCorrida) {
Boolean retorno = Boolean.FALSE; Boolean retorno = Boolean.FALSE;
switch (diaSemana) { switch (diaSemana) {
@ -216,6 +228,7 @@ public class CorridaServiceImpl implements CorridaService {
break; break;
} }
} }
return retorno; return retorno;
} }
@ -235,7 +248,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
return retorno; return retorno;
} }
private Date calcularFechorllegada(EsquemaTramo esquemaTramo, ClaseServicio clase, Date dataGeracao, Date horaChegada) { private Date calcularFechorllegada(EsquemaTramo esquemaTramo, ClaseServicio clase, Date dataGeracao, Date horaChegada) {
@ -260,6 +272,7 @@ public class CorridaServiceImpl implements CorridaService {
private Date calcularFechorsalida(EsquemaTramo esquemaTramo, Date dataGeracao, Date horaChegadaAnterior, java.util.Date tiempoEstanciaAnterior) { private Date calcularFechorsalida(EsquemaTramo esquemaTramo, Date dataGeracao, Date horaChegadaAnterior, java.util.Date tiempoEstanciaAnterior) {
Date horaSaida; Date horaSaida;
if (horaChegadaAnterior == null) { if (horaChegadaAnterior == null) {
horaSaida = truncarDataHora(dataGeracao, esquemaTramo.getEsquemaCorrida().getHorasalida()); horaSaida = truncarDataHora(dataGeracao, esquemaTramo.getEsquemaCorrida().getHorasalida());
} else { } else {
@ -276,7 +289,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
horaSaida = gHoraSaidaProximo.getTime(); horaSaida = gHoraSaidaProximo.getTime();
} }
GregorianCalendar gHoraSaida = new GregorianCalendar(); GregorianCalendar gHoraSaida = new GregorianCalendar();
@ -288,7 +300,7 @@ public class CorridaServiceImpl implements CorridaService {
/** /**
* Adiciciona as horas do parametro hora na data dataGeracao. * Adiciciona as horas do parametro hora na data dataGeracao.
* *
* Al<EFBFBD>m disso <EFBFBD> zerado os campos segundos e milisegundos. * Alem disso eh zerado os campos segundos e milisegundos.
* *
* @param dataGeracao * @param dataGeracao
* @param hora * @param hora
@ -312,7 +324,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
public boolean isFeriado(java.sql.Date data) { public boolean isFeriado(java.sql.Date data) {
List<Feriado> feriadoList = feriadoService.buscar(data); List<Feriado> feriadoList = feriadoService.buscar(data);
if (feriadoList.isEmpty()) { if (feriadoList.isEmpty()) {
return false; return false;
@ -332,7 +343,7 @@ public class CorridaServiceImpl implements CorridaService {
* @param dataGeracao * @param dataGeracao
* @return - La corrida generada o null si no fue generada. * @return - La corrida generada o null si no fue generada.
*/ */
public Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado) { private Corrida generarCorrida(EsquemaCorrida esquemaCorrida, Date dataGeracao, boolean isPisoExtra, Boolean isFeriado) {
GregorianCalendar calendario = new GregorianCalendar(); GregorianCalendar calendario = new GregorianCalendar();
calendario.setTime(dataGeracao); calendario.setTime(dataGeracao);
@ -388,7 +399,6 @@ public class CorridaServiceImpl implements CorridaService {
Boolean existeCorrida = corridaDAO.existe(id); Boolean existeCorrida = corridaDAO.existe(id);
if (!existeCorrida) { if (!existeCorrida) {
corrida = new Corrida(); corrida = new Corrida();
corrida.setId(id); corrida.setId(id);
corrida.setEsquemaCorrida(esquemaCorrida); corrida.setEsquemaCorrida(esquemaCorrida);
@ -535,7 +545,6 @@ public class CorridaServiceImpl implements CorridaService {
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo); asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
} }
}// if (!existeCorrida) }// if (!existeCorrida)
} catch (org.springframework.dao.DataIntegrityViolationException ex) { } catch (org.springframework.dao.DataIntegrityViolationException ex) {
log.error(ex); log.error(ex);
@ -547,7 +556,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
public void generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida) { public void generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW); DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = transactionManager.getTransaction(def); TransactionStatus status = transactionManager.getTransaction(def);
@ -560,11 +568,10 @@ 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)) { if (!esquemaCorridaDAO.esHijoRebote(esquemaCorrida)) {
Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado); Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado);
Corrida corridaPisoExtra = null; Corrida corridaPisoExtra = null;
if (corrida == null) {// Si no gener<EFBFBD> la corrida, no va a if (corrida == null) {// Si no genera la corrida, no va a
// generar el rebote // generar el rebote
log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao); log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao);
continue; continue;
@ -572,7 +579,7 @@ 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 Servi<76>o para o Piso // Invertendo RolOperativo e Classe de Servico para o Piso
// Extra // Extra
RolOperativo ro = esquemaCorrida.getRolOperativo(); RolOperativo ro = esquemaCorrida.getRolOperativo();
ClaseServicio cs = esquemaCorrida.getClaseServicio(); ClaseServicio cs = esquemaCorrida.getClaseServicio();
@ -582,7 +589,7 @@ public class CorridaServiceImpl implements CorridaService {
corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado); corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado);
if (corrida != null && corridaPisoExtra != null) { if (corrida != null && corridaPisoExtra != null) {
// Voltando RolOperativo e Classe de Servi<76>o // Voltando RolOperativo e Classe de Servico
esquemaCorrida.setRolOperativo(ro); esquemaCorrida.setRolOperativo(ro);
esquemaCorrida.setClaseServicio(cs); esquemaCorrida.setClaseServicio(cs);
@ -599,7 +606,6 @@ public class CorridaServiceImpl implements CorridaService {
} }
if (esquemaCorrida.getEsquemaCorridaRebote() != null) { if (esquemaCorrida.getEsquemaCorridaRebote() != null) {
log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId()); log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId());
Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado); Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado);
@ -610,7 +616,8 @@ 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 Servi<76>o para // Invertendo RolOperativo e Classe de Servico
// para
// o Piso Extra // o Piso Extra
RolOperativo ro = ecRebote.getRolOperativo(); RolOperativo ro = ecRebote.getRolOperativo();
ClaseServicio cs = ecRebote.getClaseServicio(); ClaseServicio cs = ecRebote.getClaseServicio();
@ -625,7 +632,7 @@ public class CorridaServiceImpl implements CorridaService {
corridaPisoExtraRebote.setNumPiso(2); corridaPisoExtraRebote.setNumPiso(2);
corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote); corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote);
// Voltando RolOperativo e Classe de Serviço // Voltando RolOperativo e Classe de Servico
ecRebote.setRolOperativo(ro); ecRebote.setRolOperativo(ro);
ecRebote.setClaseServicio(cs); ecRebote.setClaseServicio(cs);
@ -641,17 +648,17 @@ public class CorridaServiceImpl implements CorridaService {
// con una // con una
// fechamenor tienes // fechamenor tienes
// que generar para // que generar para
// el d<>a seguinte // el dia seguinte
} }
} else { } else {
generaReboteDiaSeguinte = true;// si no fue encontrado generaReboteDiaSeguinte = true;// si no fue encontrado
// para el d<>a de // para el dia de
// hoy,genera para // hoy,genera para
// ma<6D>ana // manhana
} }
if (generaReboteDiaSeguinte) { if (generaReboteDiaSeguinte) {
log.info("Haciendo la b<>squeda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy"); log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy");
corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao); corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao);
@ -675,6 +682,7 @@ public class CorridaServiceImpl implements CorridaService {
} }
} }
} }
if (cantCorridaGenerada >= cantCorridaCommit) { if (cantCorridaGenerada >= cantCorridaCommit) {
cantCorridaGenerada = 0; cantCorridaGenerada = 0;
transactionManager.commit(status); transactionManager.commit(status);
@ -685,7 +693,6 @@ public class CorridaServiceImpl implements CorridaService {
if (!status.isCompleted()) { if (!status.isCompleted()) {
transactionManager.commit(status); transactionManager.commit(status);
} }
} }
/** /**
@ -704,7 +711,6 @@ public class CorridaServiceImpl implements CorridaService {
List<TramoTiempo> lsExcepciones = tramoTiempoDAO.buscar(tramo, claseServicio, corridaTramo.getFechorsalida(), corridaTramo.getFechorllegada()); List<TramoTiempo> lsExcepciones = tramoTiempoDAO.buscar(tramo, claseServicio, corridaTramo.getFechorsalida(), corridaTramo.getFechorllegada());
if (!lsExcepciones.isEmpty()) { if (!lsExcepciones.isEmpty()) {
TramoTiempo tramoTiempo = lsExcepciones.get(0); TramoTiempo tramoTiempo = lsExcepciones.get(0);
List<Integer> diasSemana = getDiaDeLaSemana(tramoTiempo); List<Integer> diasSemana = getDiaDeLaSemana(tramoTiempo);
@ -725,6 +731,7 @@ public class CorridaServiceImpl implements CorridaService {
nuevaFecLlegada = fechorsalida.getTime(); nuevaFecLlegada = fechorsalida.getTime();
} }
} }
return nuevaFecLlegada; return nuevaFecLlegada;
} }
@ -734,6 +741,7 @@ public class CorridaServiceImpl implements CorridaService {
tmp.add(Calendar.DAY_OF_MONTH, 1); tmp.add(Calendar.DAY_OF_MONTH, 1);
java.sql.Date data = new java.sql.Date(dataGeracao.getTime()); java.sql.Date data = new java.sql.Date(dataGeracao.getTime());
Boolean isFeriado = this.isFeriado(data); Boolean isFeriado = this.isFeriado(data);
return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false, isFeriado); return generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), tmp.getTime(), false, isFeriado);
} }
@ -765,14 +773,6 @@ public class CorridaServiceImpl implements CorridaService {
return diasValidos; return diasValidos;
} }
public List<Corrida> buscarPorFecCorrida(Date value) {
return corridaDAO.buscarPorFecCorrida(value);
}
public List<Corrida> buscarPorId(Integer idCorrida) {
return corridaDAO.buscarPorId(idCorrida);
}
@Override @Override
public Date calcularDataFinalGeneracionCorrida() { public Date calcularDataFinalGeneracionCorrida() {
Date dataDe = new Date(); Date dataDe = new Date();
@ -788,21 +788,53 @@ public class CorridaServiceImpl implements CorridaService {
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public boolean generarCorridaAutomatica() { public boolean generarCorridaAutomatica() {
Date dataDe = Calendar.getInstance().getTime();
// Date dataDe = new GregorianCalendar(2012, 4, 25).getTime(); Date dataAteConstante = calcularDataFinalGeneracionCorrida();
Date dataDe = new java.util.Date(); Boolean hayErroConstante = generarCorridaAutomaticaConstanteDias(dataDe, dataAteConstante);
Date dataAte = calcularDataFinalGeneracionCorrida();
// Date dataAte = new GregorianCalendar(2012, 4, 25).getTime();
return generarCorridaAutomatica(dataDe, dataAte); Boolean hayErroQtdeDias = generarCorridaAutomaticaQtdeDias(dataDe);
return hayErroConstante && hayErroQtdeDias;
} }
public boolean generarCorridaAutomatica(Date dataDe, Date dataAte) { public boolean generarCorridaAutomaticaQtdeDias(Date dataDe) {
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
TransactionStatus status = transactionManager.getTransaction(def);
List<EsquemaCorrida> lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigenciaQtdeDiasNotNull(dataDe);
for (EsquemaCorrida esquemaCorrida : lsEsquemaCorrida) {
Integer qtdeDiasGerar = esquemaCorrida.getCantDiasGeracion();
Calendar calendarData = Calendar.getInstance();
calendarData.setTime(dataDe);
calendarData.add(Calendar.DATE, qtdeDiasGerar);
Date dataAte = calendarData.getTime();
while (dataDe.before(dataAte)) {
java.sql.Date data = new java.sql.Date(dataDe.getTime());
Boolean isFeriado = this.isFeriado(data);
generarCorrida(esquemaCorrida, dataDe, false, isFeriado);
calendarData.setTime(dataDe);
calendarData.add(Calendar.DATE, 1);
dataDe = calendarData.getTime();
}
}
if (!status.isCompleted()) {
transactionManager.commit(status);
}
return Boolean.TRUE;
}
public boolean generarCorridaAutomaticaConstanteDias(Date dataDe, Date dataAte) {
boolean hayError = false; boolean hayError = false;
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy"); SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
log.debug("** AUTO - Data De: " + sdfData.format(dataDe) + " **Data At<41>: " + sdfData.format(dataAte)); log.debug("** AUTO - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte));
Calendar calendarData = Calendar.getInstance(); Calendar calendarData = Calendar.getInstance();
calendarData.setTime(dataAte); calendarData.setTime(dataAte);
@ -810,10 +842,9 @@ public class CorridaServiceImpl implements CorridaService {
dataAte = calendarData.getTime(); dataAte = calendarData.getTime();
try { try {
while (dataDe.before(dataAte)) { while (dataDe.before(dataAte)) {
log.debug("*** Data: " + sdfData.format(dataDe)); log.debug("*** Data: " + sdfData.format(dataDe));
List<EsquemaCorrida> lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigencia(dataDe); List<EsquemaCorrida> lsEsquemaCorrida = esquemaCorridaService.buscaDentroVigenciaQtdeDiasNull(dataDe);
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty(); Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
if (dentroVigenciaEsquemaOperacional) { if (dentroVigenciaEsquemaOperacional) {
@ -826,17 +857,46 @@ public class CorridaServiceImpl implements CorridaService {
calendarData.add(Calendar.DATE, 1); calendarData.add(Calendar.DATE, 1);
dataDe = calendarData.getTime(); dataDe = calendarData.getTime();
} }
} catch (Exception ex) { } catch (Exception ex) {
log.error("Erro ao gerar corridas: " + ex, ex); log.error("Erro ao gerar corridas: " + ex, ex);
hayError = true; hayError = true;
} }
return hayError; return hayError;
} }
@Override /**
public List<Corrida> buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId) { * Gera corrida a partir dos servicos selecionados na tela de
return corridaDAO.buscarDistinct(ori, des, (horaSalidaInicio == null) ? null : DateUtil.getFecInicio(horaSalidaInicio).getTime(), (horaSalidaFin == null) ? null : DateUtil.getFecInicio(horaSalidaFin).getTime(), cs, corridaId); * "Selecionar Servicos a Gerar". Menu->Esquema Operacional->Selecionar
* Servicos a Gerar
*
* @param lsEsquemaCorrida
* @param dataDe
* @param dataAte
*/
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public void generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) {
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
log.debug("** SELECIONADOS - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte));
Calendar calendarData = Calendar.getInstance();
calendarData.setTime(dataAte);
calendarData.add(Calendar.DATE, 1);
dataAte = calendarData.getTime();
while (dataDe.before(dataAte)) {
log.debug("*** Data: " + sdfData.format(dataDe));
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
if (dentroVigenciaEsquemaOperacional) {
this.generarCorrida(dataDe, lsEsquemaCorrida);
} else {
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
}
calendarData.setTime(dataDe);
calendarData.add(Calendar.DATE, 1);
dataDe = calendarData.getTime();
}
} }
} }

View File

@ -106,8 +106,6 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService {
return esquemaCorridaDAO.buscarNumCorrida(numCorrida, numCorridaPisoExtra); return esquemaCorridaDAO.buscarNumCorrida(numCorrida, numCorridaPisoExtra);
} }
@Transactional @Transactional
public void actualizaEsquemaTramo(List<ParadaEsquema> listParadaEsquema, EsquemaCorrida ec) { public void actualizaEsquemaTramo(List<ParadaEsquema> listParadaEsquema, EsquemaCorrida ec) {
@ -151,12 +149,19 @@ public class EsquemaCorridaServiceImpl implements EsquemaCorridaService {
return esquemaCorridaDAO.buscaDentroVigencia(dataGeracao); return esquemaCorridaDAO.buscaDentroVigencia(dataGeracao);
} }
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNull(Date dataGeracao) {
return esquemaCorridaDAO.buscaDentroVigenciaQtdeDiasNull(dataGeracao);
}
@Override
public List<EsquemaCorrida> buscaDentroVigenciaQtdeDiasNotNull(Date dataDe) {
return esquemaCorridaDAO.buscaDentroVigenciaQtdeDiasNotNull(dataDe);
}
public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo) { public boolean buscarEsquemaCorridaExisteTramo(Tramo tramo) {
return esquemaCorridaDAO.buscarEsquemaCorridaExisteTramo(tramo); return esquemaCorridaDAO.buscarEsquemaCorridaExisteTramo(tramo);
} }
@Override @Override
public List<Integer> existe(Ruta ruta, Integer paradaId) { public List<Integer> existe(Ruta ruta, Integer paradaId) {
return esquemaCorridaDAO.existe(ruta, paradaId); return esquemaCorridaDAO.existe(ruta, paradaId);