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.EsquemaCorrida;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Estado;
|
import com.rjconsultores.ventaboletos.entidad.Estado;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Parada;
|
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 dataDe
|
||||||
* @param dataAte
|
* @param dataAte
|
||||||
* @return A quantidade de corridas geradas
|
* @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);
|
public List<Corrida> buscarGroupCorrridaId(Integer corridaId, Date dateInicio, Date dateFin);
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ import java.util.List;
|
||||||
|
|
||||||
import javax.persistence.Transient;
|
import javax.persistence.Transient;
|
||||||
|
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.commons.lang.math.NumberUtils;
|
import org.apache.commons.lang.math.NumberUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.Tramo;
|
||||||
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
|
||||||
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
import com.rjconsultores.ventaboletos.entidad.TramoTiempo;
|
||||||
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
||||||
import com.rjconsultores.ventaboletos.service.AsientoExclusivoService;
|
import com.rjconsultores.ventaboletos.service.AsientoExclusivoService;
|
||||||
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
import com.rjconsultores.ventaboletos.service.ConstanteService;
|
||||||
import com.rjconsultores.ventaboletos.service.CorridaCtrlService;
|
import com.rjconsultores.ventaboletos.service.CorridaCtrlService;
|
||||||
|
@ -73,6 +75,7 @@ import com.rjconsultores.ventaboletos.utilerias.UtileriasFiscal;
|
||||||
@Service("corridaService")
|
@Service("corridaService")
|
||||||
public class CorridaServiceImpl implements CorridaService {
|
public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
|
private static int CANT_MAX_CORRIDA_GERA_MANUAL = 40;
|
||||||
@Autowired
|
@Autowired
|
||||||
private CorridaDAO corridaDAO;
|
private CorridaDAO corridaDAO;
|
||||||
@Autowired
|
@Autowired
|
||||||
|
@ -757,6 +760,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
private void generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida) {
|
private void generarCorrida(Date dataGeracao, List<EsquemaCorrida> lsEsquemaCorrida) {
|
||||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
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);
|
TransactionStatus status = transactionManager.getTransaction(def);
|
||||||
cantCorridaGenerada = 0;
|
cantCorridaGenerada = 0;
|
||||||
cantCorridaCommit = 1;
|
cantCorridaCommit = 1;
|
||||||
|
@ -1010,6 +1014,7 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
log.debug(" Generacion cant dias " + sdf.format(dataDeOriginal));
|
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);
|
DefaultTransactionDefinition def = new DefaultTransactionDefinition(DefaultTransactionDefinition.PROPAGATION_REQUIRES_NEW);
|
||||||
TransactionStatus status = transactionManager.getTransaction(def);
|
TransactionStatus status = transactionManager.getTransaction(def);
|
||||||
|
|
||||||
|
@ -1052,9 +1057,17 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
calendarData.add(Calendar.DATE, 1);
|
calendarData.add(Calendar.DATE, 1);
|
||||||
dataDe = calendarData.getTime();
|
dataDe = calendarData.getTime();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.info("commit bloco corridas");
|
||||||
|
|
||||||
|
transactionManager.commit(status);
|
||||||
|
status = transactionManager.getTransaction(def);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!status.isCompleted()) {
|
if (!status.isCompleted()) {
|
||||||
|
log.info("commit bloco final");
|
||||||
|
|
||||||
transactionManager.commit(status);
|
transactionManager.commit(status);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1079,7 +1092,10 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
|
|
||||||
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
|
Boolean dentroVigenciaEsquemaOperacional = !lsEsquemaCorrida.isEmpty();
|
||||||
if (dentroVigenciaEsquemaOperacional) {
|
if (dentroVigenciaEsquemaOperacional) {
|
||||||
|
log.debug("Geracao de servicos sem cant dias especifico. Adotando o padrao");
|
||||||
|
|
||||||
this.generarCorrida(dataDe, lsEsquemaCorrida);
|
this.generarCorrida(dataDe, lsEsquemaCorrida);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
|
log.info("No hay esquema vigente para la fecha " + sdfData.format(dataDe));
|
||||||
}
|
}
|
||||||
|
@ -1096,8 +1112,36 @@ public class CorridaServiceImpl implements CorridaService {
|
||||||
return generacionExitosa;
|
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");
|
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
|
||||||
|
|
||||||
log.info("** SELECIONADOS - Data De: " + sdfData.format(dataDe) + " **Data Ateh: " + sdfData.format(dataAte));
|
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());
|
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) {
|
public static int compareOnlyDate(java.util.Date d1) {
|
||||||
return compareOnlyDate(d1, new java.util.Date());
|
return compareOnlyDate(d1, new java.util.Date());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue