- ajustes geração de corrida

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@24279 d1611594-4594-4d17-8e1d-87c2c4800839
master
gleimar 2013-02-13 20:03:46 +00:00
parent 61c2cf55c7
commit 1411f6fba2
6 changed files with 64 additions and 34 deletions

View File

@ -57,7 +57,15 @@ public interface CorridaDAO extends GenericDAO<Corrida, Corrida.Id> {
*/
public List<Corrida> buscarDistinct(Parada ori, Parada des, Date horaSalidaInicio, Date horaSalidaFin, ClaseServicio cs, Integer corridaId);
boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, Marca marca, boolean pisoExtra);
public boolean existe(Ruta ruta, Date dataGeracao, Date horario, ClaseServicio claseServicio, Marca marca, boolean pisoExtra);
boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, boolean pisoExtra);
}
public boolean count(Parada origem, Parada destino, Date feccorrida, ClaseServicio claseServicio, boolean pisoExtra);
/**
* Regresa la cantidad de corridas que fue generada hoy.
*
* @return
*/
public Long cantCorridaGeneradasHoy();
}

View File

@ -302,4 +302,28 @@ public class CorridaHibernateDAO extends GenericHibernateDAO<Corrida, Corrida.Id
return (cant > 0);
}
@Override
public Long cantCorridaGeneradasHoy() {
Calendar cTmp1 = Calendar.getInstance();
Calendar cTmp2 = Calendar.getInstance();
cTmp1.set(Calendar.HOUR_OF_DAY, 0);
cTmp1.set(Calendar.MINUTE, 0);
cTmp1.set(Calendar.MILLISECOND, 0);
cTmp1.set(Calendar.SECOND, 0);
cTmp2.set(Calendar.HOUR_OF_DAY, 23);
cTmp2.set(Calendar.MINUTE, 59);
cTmp2.set(Calendar.SECOND, 59);
cTmp2.set(Calendar.MILLISECOND, 99);
Query query = getSession().createQuery("select count(c.fecmodif) from Corrida c where c.fecmodif between :inicio and :fim");
query.setParameter("inicio", cTmp1.getTime());
query.setParameter("fim", cTmp2.getTime());
Long count = HibernateFix.count(query.uniqueResult());
return count;
}
}

View File

@ -19,6 +19,9 @@ import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.SequenceGenerator;
import org.hibernate.annotations.NotFound;
import org.hibernate.annotations.NotFoundAction;
/**
*
* @author Administrador
@ -46,6 +49,7 @@ public class CategoriaCorrida implements Serializable {
private CorridaCtrl corridaCtrl;
@JoinColumn(name = "CATEGORIACTRL_ID", referencedColumnName = "CATEGORIACTRL_ID")
@ManyToOne
@NotFound(action=NotFoundAction.IGNORE)
private CategoriaCtrl categoriaCtrl;
public CategoriaCorrida() {

View File

@ -53,15 +53,14 @@ public interface CorridaService extends GenericService<Corrida, Corrida.Id> {
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
* Gera corrida a partir dos servicos selecionados e no intervalo de dias informados. <br/>
*
* @param lsEsquemaCorrida
* @param dataDe
* @param dataAte
* @return A quantidade de corridas geradas
*/
public void generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte);
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte);
public boolean generarCorridaAutomaticaQtdeDias(Date dataDe);
}

View File

@ -245,6 +245,8 @@ public class CorridaServiceImpl implements CorridaService {
} else if (esquemaCorrida.getIndGeneraFeriado().equals("N")) {
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
}
}else{
retorno = geraDiaSemana(diaSemana, esquemaCorrida);
}
return retorno;
@ -359,7 +361,7 @@ public class CorridaServiceImpl implements CorridaService {
horario = DateUtil.normalizar(horario);
if (corridaDAO.existe(ruta, dataGeracao, horario, claseServicio, marca, isPisoExtra)) {
log.debug("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
log.info("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
return null;
}
@ -379,7 +381,7 @@ public class CorridaServiceImpl implements CorridaService {
// parada origem
Parada origen = rutaService.getOrigem(ruta);
if (origen == null) {
log.debug("origen nao encontrado para a ruta = " + ruta.getRutaId());
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
}
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
@ -718,7 +720,7 @@ public class CorridaServiceImpl implements CorridaService {
fecCorrida.setTime(corridaTramo.getFechorllegada());
if (diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK)) || diasSemana.contains(fecCorrida.get(Calendar.DAY_OF_WEEK))) {
log.debug("Hay Excepcione de tiempo");
log.info("Hay Excepcione de tiempo");
Calendar fechorsalida = Calendar.getInstance();
fechorsalida.setTime(corridaTramo.getFechorsalida());
@ -865,38 +867,29 @@ public class CorridaServiceImpl implements CorridaService {
return hayError;
}
/**
* 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
*/
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public void generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) {
public Long 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));
log.info("** 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));
calendarData.setTime(dataDe);
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
if (dentroVigenciaEsquemaOperacional) {
this.generarCorrida(dataDe, lsEsquemaCorrida);
} else {
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
}
Long cantInicio = corridaDAO.cantCorridaGeneradasHoy();
while (DateUtil.compareOnlyDate(dataDe,dataAte) <= 0) {
log.info("*** Data: " + sdfData.format(dataDe));
this.generarCorrida(dataDe, lsEsquemaCorrida);
calendarData.setTime(dataDe);
calendarData.add(Calendar.DATE, 1);
dataDe = calendarData.getTime();
}
Long cantFim = corridaDAO.cantCorridaGeneradasHoy();
return cantFim - cantInicio;
}
}

View File

@ -189,7 +189,9 @@ public final class DateUtil {
}
/**
* Não leva em consideração os segundos
* Não leva em consideração os segundos/minutos. Só é considerado o dia/mes/ano <br/>
*
* Retorno igual a {@link #compareDate(Date, Date)}
*/
public static int compareOnlyDate(java.util.Date d1, java.util.Date d2) {
java.util.Calendar cal = Calendar.getInstance();