gleimar 2013-04-01 22:11:01 +00:00
parent e23c010fd8
commit a30cdadab1
10 changed files with 373 additions and 84 deletions

View File

@ -4,11 +4,25 @@
*/
package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/**
*
* @author Administrador
*/
public interface DetDiagramaAutobusDAO extends GenericDAO<DetDiagramaAutobus, Short> {
public interface DetDiagramaAutobusDAO {
public List<DetDiagramaAutobus> obtenerTodos();
public DetDiagramaAutobus obtenerID(Short id);
public DetDiagramaAutobus suscribir(DetDiagramaAutobus entidad);
public DetDiagramaAutobus actualizacion(DetDiagramaAutobus entidad);
public void borrar(DetDiagramaAutobus entidad);
public Long count(String campo, Object o);
}

View File

@ -4,9 +4,11 @@
*/
package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import java.util.List;
/**
*
@ -15,5 +17,17 @@ import java.util.List;
public interface RutaSecuenciaDAO extends GenericDAO<RutaSecuencia, Integer> {
public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta);
public int borrarSecuencias(Ruta ruta);
/**
* Hace la validación de la origen y destino dentro de la secuencia de la ruta. <br/>
*
* La parada de origen no puede tener el numero de secuencia mayor o igual a la parada de destino<br/>
* @param ruta
* @param origen
* @param destino
* @return
*/
public boolean paradaSecuenciaValida(Ruta ruta, Parada origen,Parada destino);
}

View File

@ -4,9 +4,8 @@
*/
package com.rjconsultores.ventaboletos.dao.hibernate;
import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
@ -14,13 +13,15 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/**
*
* @author Administrador
*/
@Repository("detDiagramaAutobusDAO")
public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO<DetDiagramaAutobus, Short>
implements DetDiagramaAutobusDAO {
public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO<DetDiagramaAutobus, Short> implements DetDiagramaAutobusDAO {
@Autowired
public DetDiagramaAutobusHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {

View File

@ -43,9 +43,13 @@ public class EsquemaAsientoHibernateDAO extends GenericHibernateDAO<EsquemaAsien
c.add(Restrictions.eq("activo", Boolean.TRUE));
EsquemaAsiento ea = new EsquemaAsiento();
if (c.list().size() > 0) {
ea = (EsquemaAsiento) c.uniqueResult();
List<EsquemaAsiento> lsAsientos = c.list();
if (!lsAsientos.isEmpty()) {
ea = lsAsientos.get(0);
}
return ea;
}
}

View File

@ -5,6 +5,7 @@
package com.rjconsultores.ventaboletos.dao.hibernate;
import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@ -13,6 +14,7 @@ import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@ -40,9 +42,9 @@ public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO<RutaSecuencia
c.addOrder(Order.asc("numsecuencia"));
return c.list();
}
public int borrarSecuencias(Ruta ruta) {
Query query = this.getSession().createQuery("UPDATE RutaSecuencia SET activo = false, fecmodif = current_timestamp(), usuarioId= :usuario where ruta = :ruta");
query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId());
@ -50,4 +52,49 @@ public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO<RutaSecuencia
return query.executeUpdate();
}
@Override
public boolean paradaSecuenciaValida(Ruta ruta, Parada origen, Parada destino) {
Criteria cOrigen = makeCriteria();
cOrigen.add(Restrictions.eq("activo", Boolean.TRUE));
cOrigen.add(Restrictions.eq("ruta", ruta));
cOrigen.setProjection(Projections.property("numsecuencia"));
Criteria cOrigenTramo = cOrigen.createCriteria("tramo");
cOrigenTramo.add(Restrictions.eq("origem", origen));
Short numSecOrigen = (Short) cOrigen.uniqueResult();
Criteria cDestino = makeCriteria();
cDestino.add(Restrictions.eq("activo", Boolean.TRUE));
cDestino.add(Restrictions.eq("ruta", ruta));
cDestino.setProjection(Projections.property("numsecuencia"));
Criteria cDestinoTramo = cDestino.createCriteria("tramo");
cDestinoTramo.add(Restrictions.eq("origem", destino));
Short numSecDestino = (Short) cDestino.uniqueResult();
// destino final da ruta
if (numSecDestino == null) {
cDestino = makeCriteria();
cDestino.add(Restrictions.eq("activo", Boolean.TRUE));
cDestino.add(Restrictions.eq("ruta", ruta));
cDestino.setProjection(Projections.property("numsecuencia"));
cDestinoTramo = cDestino.createCriteria("tramo");
cDestinoTramo.add(Restrictions.eq("destino", destino));
numSecDestino = (Short) cDestino.uniqueResult();
}
if ((numSecOrigen != null) && (numSecDestino != null)) {
return (numSecOrigen.compareTo(numSecDestino) < 0);
}
return false;
}
}

View File

@ -4,11 +4,23 @@
*/
package com.rjconsultores.ventaboletos.service;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/**
*
* @author Administrador
*/
public interface DetDiagramaAutobusService extends GenericService<DetDiagramaAutobus, Short> {
public interface DetDiagramaAutobusService {
public List<DetDiagramaAutobus> obtenerTodos();
public DetDiagramaAutobus obtenerID(Short id);
public DetDiagramaAutobus suscribir(DetDiagramaAutobus entidad);
public DetDiagramaAutobus actualizacion(DetDiagramaAutobus entidad);
public void borrar(DetDiagramaAutobus entidad);
}

View File

@ -4,17 +4,27 @@
*/
package com.rjconsultores.ventaboletos.service;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
/**
*
* @author Administrador
*/
public interface DiagramaAutobusService extends GenericService<DiagramaAutobus, Short> {
public interface DiagramaAutobusService {
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados,
Short cantasientos);
public List<DiagramaAutobus> obtenerTodos();
public DiagramaAutobus obtenerID(Short id);
public DiagramaAutobus suscribir(DiagramaAutobus entidad);
public DiagramaAutobus actualizacion(DiagramaAutobus entidad);
public void borrar(DiagramaAutobus entidad);
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados, Short cantasientos);
public List<DiagramaAutobus> buscar(String descDiagrama);
}

View File

@ -4,17 +4,50 @@
*/
package com.rjconsultores.ventaboletos.service;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.exception.BusinessException;
/**
*
* @author Rafius
*/
public interface EsquemaAsientoService extends GenericService<EsquemaAsiento, Integer> {
public interface EsquemaAsientoService {
public EsquemaAsiento obtenerID(Integer id);
public EsquemaAsiento suscribir(EsquemaAsiento entidad);
public EsquemaAsiento actualizacion(EsquemaAsiento entidad);
public void borrar(EsquemaAsiento entidad);
public List<EsquemaAsiento> obtenerPorCorrida(EsquemaCorrida esquemaCorrida);
public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento);
/***
* Hace la configuración de bloqueo de asientos de acuerdo la origen informada. <br/>
*
*
*
* @param asiento - Indica los asientos. Ej.: 1,2,3,4 o 1-4,
* @param origenId
* @return
*/
public void bloqueoAsientoExclusivo(EsquemaCorrida esquemaCorrida,String asiento,Parada origen) throws BusinessException;
/**
* Hace la configuración de ocupación de bloqueo de asientos de acuerdo con el tramo informado (origen - destino). <br/>
*
* @param asiento- Indica los asientos. Ej.: 1,2,3,4 o 1-4,
* @param origenId
* @param destinoId
* @param motivoOcupacion
* @return
*/
public void bloqueoAsientoOcupacion(EsquemaCorrida esquemaCorrida,String asiento,Parada origen,Parada destino,String motivoOcupacion) throws BusinessException;
}

View File

@ -4,16 +4,18 @@
*/
package com.rjconsultores.ventaboletos.service.impl;
import java.util.Calendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.DiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import com.rjconsultores.ventaboletos.service.DiagramaAutobusService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import java.util.Calendar;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
*
@ -67,8 +69,7 @@ public class DiagramaAutobusServiceImpl implements DiagramaAutobusService {
diagramaAutobusDAO.actualizacion(entidad);
}
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados,
Short cantasientos) {
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados,Short cantasientos) {
return diagramaAutobusDAO.buscar(descDiagrama, maxparados, cantasientos);
}

View File

@ -4,17 +4,29 @@
*/
package com.rjconsultores.ventaboletos.service.impl;
import com.rjconsultores.ventaboletos.dao.EsquemaAsientoDAO;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.service.EsquemaAsientoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.EsquemaAsientoDAO;
import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.service.DiagramaAutobusService;
import com.rjconsultores.ventaboletos.service.EsquemaAsientoService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
/**
*
* @author Rafius
@ -22,12 +34,15 @@ import org.springframework.transaction.annotation.Transactional;
@Service("esquemaAsientoService")
public class EsquemaAsientoServiceImpl implements EsquemaAsientoService {
private static Logger log = LoggerFactory.getLogger(EsquemaAsientoServiceImpl.class);
private static final String BLOQUEO_EXCLUSIVO = "BLOQUEO_EXCLUSIVO";
private static final String BLOQUEO_OCUPACION = "BLOQUEO_OCUPACION";
@Autowired
private EsquemaAsientoDAO esquemaAsientoDAO;
public List<EsquemaAsiento> obtenerTodos() {
return esquemaAsientoDAO.obtenerTodos();
}
@Autowired
private RutaSecuenciaDAO rutaSecuenciaDAO;
@Autowired
private DiagramaAutobusService diagramaAutobusService;
public EsquemaAsiento obtenerID(Integer id) {
return esquemaAsientoDAO.obtenerID(id);
@ -67,4 +82,142 @@ public class EsquemaAsientoServiceImpl implements EsquemaAsientoService {
public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento) {
return esquemaAsientoDAO.obtenerPorCorridaeAsiento(esquemaCorrida, asiento);
}
@Transactional(rollbackFor=BusinessException.class)
@Override
public void bloqueoAsientoExclusivo(EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen) throws BusinessException {
if (origen == null) {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.origenObligatoria");
}
hacerBloqueo(BLOQUEO_EXCLUSIVO, esquemaCorrida, strAsiento, origen, null, null);
}
private boolean hacerBloqueo(String tipoBloqueo,EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen, Parada destino, String motivoOcupacion) throws BusinessException {
List<String> asientos = cargarAsientos(strAsiento);
DiagramaAutobus da = diagramaAutobusService.obtenerID(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId());
for (String asiento : asientos) {
boolean vende = true;
List<DetDiagramaAutobus> listDda = da.getDetDiagramaAutobusList();
for (DetDiagramaAutobus dd : listDda) {
if (dd.getAsiento().equals(asiento)) {
if (!dd.getVendible()) {
vende = false;
}
}
}
if (vende) {
EsquemaAsiento es = new EsquemaAsiento();
es.setActivo(Boolean.TRUE);
es.setFecmodif(Calendar.getInstance().getTime());
es.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
es.setNumasiento(asiento.toString());
if (tipoBloqueo.equals(BLOQUEO_EXCLUSIVO)){
es.setIndvendible(Boolean.TRUE);
es.setParada(origen);
}else{
es.setIndvendible(Boolean.FALSE);
es.setParada(origen);
es.setDestino(destino);
es.setMotivobloqueo(motivoOcupacion);
}
es.setEsquemaCorrida(esquemaCorrida);
EsquemaAsiento esquemaAsientoBusqueda = obtenerPorCorridaeAsiento(esquemaCorrida, asiento);
if (esquemaAsientoBusqueda.getEsquemaasientoId() == null) {
es = suscribir(es);
//validação extra para garantir que salvou corretamente
if (tipoBloqueo.equals(BLOQUEO_EXCLUSIVO)){
if ( !(es.getIndvendible() && (es.getParada() != null) && (es.getDestino() == null))){
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.validacionGrabacion");
}
}else{
//validação extra para garantir que salvou corretamente
if ( !(!es.getIndvendible() && (es.getParada() != null) && (es.getDestino() != null))){
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.validacionGrabacion");
}
}
} else {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.poltronaJahConfigurada",new Object[]{asiento});
}
} else {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.poltronaNoVendible",new Object[]{asiento});
}
}
return true;
}
@Transactional(rollbackFor=BusinessException.class)
@Override
public void bloqueoAsientoOcupacion(EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen, Parada destino, String motivoOcupacion) throws BusinessException {
if (origen == null) {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.origenObligatoria");
}
if (destino == null) {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.destinoObligatoria");
}
if (StringUtils.isBlank(motivoOcupacion)) {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.motivo");
}
if (!rutaSecuenciaDAO.paradaSecuenciaValida(esquemaCorrida.getRuta(), origen, destino)){
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.tramo");
}
hacerBloqueo(BLOQUEO_OCUPACION, esquemaCorrida, strAsiento, origen, destino, motivoOcupacion);
}
/**
* Hace la conversion de la string strAsientos en una lista de asientos
* válidos<br/>
*
* @param strAsientos
* @return
* @throws BusinessException
*/
private List<String> cargarAsientos(String strAsientos) throws BusinessException {
List<String> todosAsientos = new ArrayList<String>();
try {
String asientos[] = strAsientos.split(",");
for (int i = 0; i < asientos.length; i++) {
if (asientos[i].contains("-")) {
String intervalo[] = asientos[i].split("-");
Integer ini = Integer.parseInt(intervalo[0]);
Integer fim = Integer.parseInt(intervalo[1]);
while (ini <= fim) {
todosAsientos.add(ini.toString());
ini++;
}
} else {
Integer.parseInt(asientos[i]);//para validar
todosAsientos.add(asientos[i]);
}
}
} catch (NumberFormatException t) {
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.invalido");
} catch (Throwable t) {
log.error("", t);
throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.invalido");
}
return todosAsientos;
}
}