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-87c2c4800839
master
gleimar 2015-08-18 22:36:22 +00:00
parent 211ebda930
commit 50c97f60d1
3 changed files with 54 additions and 3 deletions

View File

@ -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);

View File

@ -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));

View File

@ -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());
}