Ajustes na geração de corridas: fixes bug#6566
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@46907 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
211ebda930
commit
50c97f60d1
|
@ -13,6 +13,7 @@ import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
|
|||
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
|
||||
import com.rjconsultores.ventaboletos.entidad.Estado;
|
||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -57,8 +58,9 @@ public interface CorridaService extends GenericService<Corrida, Corrida.Id> {
|
|||
* @param dataDe
|
||||
* @param dataAte
|
||||
* @return A quantidade de corridas geradas
|
||||
* @throws BusinessException
|
||||
*/
|
||||
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte);
|
||||
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) throws BusinessException;
|
||||
|
||||
public List<Corrida> buscarGroupCorrridaId(Integer corridaId, Date dateInicio, Date dateFin);
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ import java.util.List;
|
|||
|
||||
import javax.persistence.Transient;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.math.NumberUtils;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
|
@ -48,6 +49,7 @@ import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
|
|||
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
||||
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
||||
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
||||
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||
import com.rjconsultores.ventaboletos.service.AsientoExclusivoService;
|
||||
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
||||
import com.rjconsultores.ventaboletos.service.CorridaCtrlService;
|
||||
|
@ -73,6 +75,7 @@ import com.rjconsultores.ventaboletos.utilerias.UtileriasFiscal;
|
|||
@Service("corridaService")
|
||||
public class CorridaServiceImpl implements CorridaService {
|
||||
|
||||
private static int CANT_MAX_CORRIDA_GERA_MANUAL = 40;
|
||||
@Autowired
|
||||
private CorridaDAO corridaDAO;
|
||||
@Autowired
|
||||
|
@ -757,6 +760,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
private void generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida) {
|
||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||
|
||||
//TODO: Melhorar o tratamento às transações manuais em caso de erro,etc
|
||||
TransactionStatus status = transactionManager.getTransaction(def);
|
||||
cantCorridaGenerada = 0;
|
||||
cantCorridaCommit = 1;
|
||||
|
@ -1010,6 +1014,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
|
||||
log.debug(" Generacion cant dias " + sdf.format(dataDeOriginal));
|
||||
|
||||
//TODO: Melhorar o tratamento às transações manuais em caso de erro,etc
|
||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||
TransactionStatus status = transactionManager.getTransaction(def);
|
||||
|
||||
|
@ -1052,9 +1057,17 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
calendarData.add(Calendar.DATE, 1);
|
||||
dataDe = calendarData.getTime();
|
||||
}
|
||||
|
||||
log.info("commit bloco corridas");
|
||||
|
||||
transactionManager.commit(status);
|
||||
status = transactionManager.getTransaction(def);
|
||||
|
||||
}
|
||||
|
||||
if (!status.isCompleted()) {
|
||||
log.info("commit bloco final");
|
||||
|
||||
transactionManager.commit(status);
|
||||
}
|
||||
|
||||
|
@ -1079,7 +1092,10 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
|
||||
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
|
||||
if (dentroVigenciaEsquemaOperacional) {
|
||||
log.debug("Geracao de servicos sem cant dias especifico. Adotando o padrao");
|
||||
|
||||
this.generarCorrida(dataDe, lsEsquemaCorrida);
|
||||
|
||||
} else {
|
||||
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
|
||||
}
|
||||
|
@ -1096,8 +1112,36 @@ public class CorridaServiceImpl implements CorridaService {
|
|||
return generacionExitosa;
|
||||
}
|
||||
|
||||
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
|
||||
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) {
|
||||
|
||||
private int cantDiasMaxGerarCorridasManual(){
|
||||
|
||||
Constante constante = constanteService.buscarPorNomeConstante("CANT_MAX_CORRIDA_GERA_MANUAL");
|
||||
|
||||
if ((constante == null) ||(StringUtils.isBlank(constante.getValorconstante()))){
|
||||
return CANT_MAX_CORRIDA_GERA_MANUAL;
|
||||
}
|
||||
|
||||
return Integer.valueOf(constante.getValorconstante());
|
||||
|
||||
}
|
||||
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS,rollbackFor=BusinessException.class)
|
||||
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) throws BusinessException {
|
||||
|
||||
if ( (DateUtil.compareOnlyDate(dataDe) < 0) || (DateUtil.compareOnlyDate(dataAte) < 0)){
|
||||
throw new BusinessException("corridaServiceImpl.geracaoCorrida.dataMenorQueAtual");
|
||||
}
|
||||
|
||||
int cantDiasGeneracion = DateUtil.getElapsedDias(dataDe, dataAte);
|
||||
|
||||
int cantDiasMaxGerarCorridasManual = cantDiasMaxGerarCorridasManual();
|
||||
|
||||
log.info("cantDiasGeneracion="+cantDiasGeneracion);
|
||||
log.info("cantDiasMaxGerarCorridasManual="+cantDiasMaxGerarCorridasManual);
|
||||
|
||||
if (cantDiasGeneracion > cantDiasMaxGerarCorridasManual()){
|
||||
throw new BusinessException("corridaServiceImpl.geracaoCorrida.cantDiasManual", new Object[]{cantDiasMaxGerarCorridasManual});
|
||||
}
|
||||
|
||||
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
|
||||
|
||||
log.info("** SELECIONADOS - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte));
|
||||
|
|
|
@ -187,6 +187,11 @@ public final class DateUtil {
|
|||
return compareDate(d1, new java.util.Date());
|
||||
}
|
||||
|
||||
/**
|
||||
* Compara a data atual com d1 de forma que a chama fica compareOnlyDate(d1, new java.util.Date());
|
||||
*
|
||||
* {@link #compareOnlyDate(Date, Date)}
|
||||
*/
|
||||
public static int compareOnlyDate(java.util.Date d1) {
|
||||
return compareOnlyDate(d1, new java.util.Date());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue