|
|
@ -4,6 +4,10 @@
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
package com.rjconsultores.ventaboletos.service.impl;
|
|
|
|
package com.rjconsultores.ventaboletos.service.impl;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.sql.Connection;
|
|
|
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
|
|
|
|
|
import java.sql.ResultSet;
|
|
|
|
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.text.SimpleDateFormat;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.Calendar;
|
|
|
|
import java.util.Calendar;
|
|
|
@ -32,6 +36,7 @@ import com.rjconsultores.ventaboletos.entidad.AsientoExclusivo;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Constante;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Constante;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Corrida;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Corrida;
|
|
|
|
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.Corrida.Id;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.CorridaCtrl;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.CorridaCtrl;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.CorridaTramo;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.CorridaTramo;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
|
|
|
|
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
|
|
|
@ -75,7 +80,9 @@ import com.rjconsultores.ventaboletos.utilerias.UtileriasFiscal;
|
|
|
|
@Service("corridaService")
|
|
|
|
@Service("corridaService")
|
|
|
|
public class CorridaServiceImpl implements CorridaService {
|
|
|
|
public class CorridaServiceImpl implements CorridaService {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static Logger log = Logger.getLogger(CorridaServiceImpl.class);
|
|
|
|
private static int CANT_MAX_CORRIDA_GERA_MANUAL = 40;
|
|
|
|
private static int CANT_MAX_CORRIDA_GERA_MANUAL = 40;
|
|
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private CorridaDAO corridaDAO;
|
|
|
|
private CorridaDAO corridaDAO;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
@ -102,7 +109,6 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
private ConstanteService constanteService;
|
|
|
|
private ConstanteService constanteService;
|
|
|
|
@Autowired
|
|
|
|
@Autowired
|
|
|
|
private RutaSecuenciaService rutaSecuenciaService;
|
|
|
|
private RutaSecuenciaService rutaSecuenciaService;
|
|
|
|
private static Logger log = Logger.getLogger(CorridaServiceImpl.class);
|
|
|
|
|
|
|
|
private PlatformTransactionManager transactionManager;
|
|
|
|
private PlatformTransactionManager transactionManager;
|
|
|
|
@Transient
|
|
|
|
@Transient
|
|
|
|
private int cantCorridaGenerada;
|
|
|
|
private int cantCorridaGenerada;
|
|
|
@ -520,10 +526,10 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
|
|
|
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
|
|
|
|
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
|
|
|
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
|
|
|
|
|
|
|
|
|
|
|
|
if(esquemaCorrida.getStatusCorrida().equals("A")){
|
|
|
|
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
|
|
|
corrida.setIndstatuscorrida("H");
|
|
|
|
corrida.setIndstatuscorrida("H");
|
|
|
|
corrida.setActivo(ActivoUtil.ATIVO);
|
|
|
|
corrida.setActivo(ActivoUtil.ATIVO);
|
|
|
|
}else if (esquemaCorrida.getStatusCorrida().equals("L")){
|
|
|
|
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
|
|
|
corrida.setIndstatuscorrida("P");
|
|
|
|
corrida.setIndstatuscorrida("P");
|
|
|
|
corrida.setActivo(ActivoUtil.INATIVO);
|
|
|
|
corrida.setActivo(ActivoUtil.INATIVO);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -607,12 +613,12 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
horaChegadaAnterior = excepcionTiempo;
|
|
|
|
horaChegadaAnterior = excepcionTiempo;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if(esquemaCorrida.getStatusCorrida().equals("A")){
|
|
|
|
if (esquemaCorrida.getStatusCorrida().equals("A")) {
|
|
|
|
corridaTramo.setActivo(ActivoUtil.ATIVO);
|
|
|
|
corridaTramo.setActivo(ActivoUtil.ATIVO);
|
|
|
|
}else if (esquemaCorrida.getStatusCorrida().equals("L")){
|
|
|
|
} else if (esquemaCorrida.getStatusCorrida().equals("L")) {
|
|
|
|
corridaTramo.setActivo(ActivoUtil.INATIVO);
|
|
|
|
corridaTramo.setActivo(ActivoUtil.INATIVO);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
//
|
|
|
|
//
|
|
|
|
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
|
|
|
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
|
|
|
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
|
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
|
|
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
|
|
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
|
@ -643,7 +649,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
lsCorridaTramo.add(corridaTramo);
|
|
|
|
lsCorridaTramo.add(corridaTramo);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
corrida.setCorridaTramoList(lsCorridaTramo);
|
|
|
|
corrida.setCorridaTramoList(lsCorridaTramo);
|
|
|
|
//
|
|
|
|
//
|
|
|
|
corrida.setFecmodif(Calendar.getInstance().getTime());
|
|
|
|
corrida.setFecmodif(Calendar.getInstance().getTime());
|
|
|
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
|
|
if (UsuarioLogado.getUsuarioLogado() != null) {
|
|
|
|
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
|
|
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
|
@ -658,8 +664,8 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
|
|
|
|
|
|
|
|
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
|
|
|
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
|
|
|
|
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
|
|
|
for (EsquemaAsiento ea : lsEsquemaAsiento) {
|
|
|
|
DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(),ea.getNumasiento());
|
|
|
|
DetDiagramaAutobus detDiagramaAutobus = detDiagramaAutobusService.obtenerPorDiagramaAutobusAsiento(esquemaCorrida.getDiagramaAutobusId(), ea.getNumasiento());
|
|
|
|
if(detDiagramaAutobus.getVendible()){
|
|
|
|
if (detDiagramaAutobus.getVendible()) {
|
|
|
|
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
|
|
|
|
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
|
|
|
|
asientoExclusivo.setCorrida(corrida);
|
|
|
|
asientoExclusivo.setCorrida(corrida);
|
|
|
|
asientoExclusivo.setMotivobloqueo(null);
|
|
|
|
asientoExclusivo.setMotivobloqueo(null);
|
|
|
@ -686,7 +692,7 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
} catch (org.springframework.dao.DataIntegrityViolationException ex) {
|
|
|
|
} catch (org.springframework.dao.DataIntegrityViolationException ex) {
|
|
|
|
log.error("",ex);
|
|
|
|
log.error("", ex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return corrida;
|
|
|
|
return corrida;
|
|
|
@ -760,7 +766,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
|
|
|
|
// 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;
|
|
|
@ -1014,7 +1020,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
|
|
|
|
// 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);
|
|
|
|
|
|
|
|
|
|
|
@ -1112,30 +1118,30 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
return generacionExitosa;
|
|
|
|
return generacionExitosa;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private int cantDiasMaxGerarCorridasManual() {
|
|
|
|
private int cantDiasMaxGerarCorridasManual(){
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Constante constante = constanteService.buscarPorNomeConstante("CANT_MAX_CORRIDA_GERA_MANUAL");
|
|
|
|
Constante constante = constanteService.buscarPorNomeConstante("CANT_MAX_CORRIDA_GERA_MANUAL");
|
|
|
|
|
|
|
|
|
|
|
|
if ((constante == null) ||(StringUtils.isBlank(constante.getValorconstante()))){
|
|
|
|
if ((constante == null) || (StringUtils.isBlank(constante.getValorconstante()))) {
|
|
|
|
return CANT_MAX_CORRIDA_GERA_MANUAL;
|
|
|
|
return CANT_MAX_CORRIDA_GERA_MANUAL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return Integer.valueOf(constante.getValorconstante());
|
|
|
|
return Integer.valueOf(constante.getValorconstante());
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS,rollbackFor=BusinessException.class)
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS, rollbackFor = BusinessException.class)
|
|
|
|
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) throws BusinessException {
|
|
|
|
public Long generarCorridasSelecionadas(List<EsquemaCorrida> lsEsquemaCorrida, Date dataDe, Date dataAte) throws BusinessException {
|
|
|
|
|
|
|
|
|
|
|
|
int cantDiasGeneracion = DateUtil.getElapsedDias(dataDe, dataAte);
|
|
|
|
int cantDiasGeneracion = DateUtil.getElapsedDias(dataDe, dataAte);
|
|
|
|
|
|
|
|
|
|
|
|
int cantDiasMaxGerarCorridasManual = cantDiasMaxGerarCorridasManual();
|
|
|
|
int cantDiasMaxGerarCorridasManual = cantDiasMaxGerarCorridasManual();
|
|
|
|
|
|
|
|
|
|
|
|
log.info("cantDiasGeneracion="+cantDiasGeneracion);
|
|
|
|
log.info("cantDiasGeneracion=" + cantDiasGeneracion);
|
|
|
|
log.info("cantDiasMaxGerarCorridasManual="+cantDiasMaxGerarCorridasManual);
|
|
|
|
log.info("cantDiasMaxGerarCorridasManual=" + cantDiasMaxGerarCorridasManual);
|
|
|
|
|
|
|
|
|
|
|
|
if (cantDiasGeneracion > cantDiasMaxGerarCorridasManual()){
|
|
|
|
if (cantDiasGeneracion > cantDiasMaxGerarCorridasManual()) {
|
|
|
|
throw new BusinessException("corridaServiceImpl.geracaoCorrida.cantDiasManual", new Object[]{cantDiasMaxGerarCorridasManual});
|
|
|
|
throw new BusinessException("corridaServiceImpl.geracaoCorrida.cantDiasManual", new Object[] { cantDiasMaxGerarCorridasManual });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
|
SimpleDateFormat sdfData = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
@ -1216,4 +1222,101 @@ public class CorridaServiceImpl implements CorridaService {
|
|
|
|
public Boolean atualizarCorridaFecHusoFecVerano(Estado estado, Date dataInicial) {
|
|
|
|
public Boolean atualizarCorridaFecHusoFecVerano(Estado estado, Date dataInicial) {
|
|
|
|
return atualizarCorridaFecHusoFecVerano(estado, dataInicial, null);
|
|
|
|
return atualizarCorridaFecHusoFecVerano(estado, dataInicial, null);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
|
|
|
public List<Corrida> buscarCorridaRelatorio(Connection conexao, Parada origem, Parada destino,
|
|
|
|
|
|
|
|
Date feccorrida, Integer corridaId) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
List<Corrida> ls = new ArrayList<Corrida>();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
|
|
|
|
|
|
sql.append(" select ");
|
|
|
|
|
|
|
|
sql.append(" c.corrida_id as corrida_id, ");
|
|
|
|
|
|
|
|
sql.append(" c.feccorrida as feccorrida, ");
|
|
|
|
|
|
|
|
sql.append(" c.fechorsalida as fechorsalida, ");
|
|
|
|
|
|
|
|
sql.append(" origen.parada_id as origen_id, ");
|
|
|
|
|
|
|
|
sql.append(" origen.descparada as origen, ");
|
|
|
|
|
|
|
|
sql.append(" destino.parada_id as destino_id, ");
|
|
|
|
|
|
|
|
sql.append(" destino.descparada as destino, ");
|
|
|
|
|
|
|
|
sql.append(" r.ruta_id as ruta_id, ");
|
|
|
|
|
|
|
|
sql.append(" r.descruta as descruta, ");
|
|
|
|
|
|
|
|
sql.append(" cs.claseservicio_id as claseservicio_id, ");
|
|
|
|
|
|
|
|
sql.append(" cs.descclase as descclase ");
|
|
|
|
|
|
|
|
sql.append(" from corrida c ");
|
|
|
|
|
|
|
|
sql.append(" inner join parada origen on c.origen_id = origen.parada_id ");
|
|
|
|
|
|
|
|
sql.append(" inner join parada destino on c.destino_id = destino.parada_id ");
|
|
|
|
|
|
|
|
sql.append(" inner join ruta r on c.ruta_id = r.ruta_id ");
|
|
|
|
|
|
|
|
sql.append(" inner join clase_servicio cs on c.claseservicio_id = cs.claseservicio_id ");
|
|
|
|
|
|
|
|
sql.append(" where c.activo <> 0 ");
|
|
|
|
|
|
|
|
sql.append(corridaId == null ? "" : " and c.corrida_id = ? ");
|
|
|
|
|
|
|
|
sql.append(feccorrida == null ? "" : " and c.feccorrida = ? ");
|
|
|
|
|
|
|
|
sql.append(origem == null ? "" : " and c.origen_id = ? ");
|
|
|
|
|
|
|
|
sql.append(destino == null ? "" : " and c.destino_id = ? ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int atbNum = 1;
|
|
|
|
|
|
|
|
PreparedStatement stmt = conexao.prepareStatement(sql.toString());
|
|
|
|
|
|
|
|
if (corridaId != null) {
|
|
|
|
|
|
|
|
stmt.setInt(atbNum, corridaId);
|
|
|
|
|
|
|
|
atbNum++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (feccorrida != null) {
|
|
|
|
|
|
|
|
stmt.setDate(atbNum, new java.sql.Date(feccorrida.getTime()));
|
|
|
|
|
|
|
|
atbNum++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (origem != null) {
|
|
|
|
|
|
|
|
stmt.setInt(atbNum, origem.getParadaId());
|
|
|
|
|
|
|
|
atbNum++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (destino != null) {
|
|
|
|
|
|
|
|
stmt.setInt(atbNum, destino.getParadaId());
|
|
|
|
|
|
|
|
atbNum++;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ResultSet rset = stmt.executeQuery();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while (rset.next()) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Id id = new Id();
|
|
|
|
|
|
|
|
id.setCorridaId(rset.getInt("corrida_id"));
|
|
|
|
|
|
|
|
id.setFeccorrida(rset.getDate("feccorrida"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parada o = new Parada();
|
|
|
|
|
|
|
|
o.setParadaId(rset.getInt("origen_id"));
|
|
|
|
|
|
|
|
o.setDescparada(rset.getString("origen"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Parada d = new Parada();
|
|
|
|
|
|
|
|
d.setParadaId(rset.getInt("destino_id"));
|
|
|
|
|
|
|
|
d.setDescparada(rset.getString("destino"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ruta ruta = new Ruta();
|
|
|
|
|
|
|
|
ruta.setRutaId(rset.getInt("ruta_id"));
|
|
|
|
|
|
|
|
ruta.setDescruta(rset.getString("descruta"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ClaseServicio claseServicio = new ClaseServicio();
|
|
|
|
|
|
|
|
claseServicio.setClaseservicioId(rset.getInt("claseservicio_id"));
|
|
|
|
|
|
|
|
claseServicio.setDescclase(rset.getString("descclase"));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Corrida corrida = new Corrida();
|
|
|
|
|
|
|
|
corrida.setId(id);
|
|
|
|
|
|
|
|
corrida.setFechorsalida(new Date(rset.getTimestamp("fechorsalida").getTime()));
|
|
|
|
|
|
|
|
corrida.setOrigem(o);
|
|
|
|
|
|
|
|
corrida.setDestino(d);
|
|
|
|
|
|
|
|
corrida.setRuta(ruta);
|
|
|
|
|
|
|
|
corrida.setClaseServicio(claseServicio);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ls.add(corrida);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} catch (SQLException e) {
|
|
|
|
|
|
|
|
log.error("", e);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return ls;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|