AdmMono/src/com/rjconsultores/ventaboletos/service/impl/ConexionRutaConfServiceImpl...

291 lines
13 KiB
Java

package com.rjconsultores.ventaboletos.service.impl;
import java.util.ArrayList;
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.ConexionRutaConfDAO;
import com.rjconsultores.ventaboletos.entidad.Conexion;
import com.rjconsultores.ventaboletos.entidad.ConexionConf;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaConf;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaCtrl;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaExcepcionPtoVta;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaExcepcionTipoPtoVta;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaTramoCtrl;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta;
import com.rjconsultores.ventaboletos.service.ConexionConfService;
import com.rjconsultores.ventaboletos.service.ConexionCtrlService;
import com.rjconsultores.ventaboletos.service.ConexionRutaConfService;
import com.rjconsultores.ventaboletos.service.ConexionRutaCtrlService;
import com.rjconsultores.ventaboletos.service.ConexionRutaExcepcionPtoVtaService;
import com.rjconsultores.ventaboletos.service.ConexionRutaExcepcionTipoPtoVtaService;
import com.rjconsultores.ventaboletos.service.ConexionRutaTramoCtrlService;
import com.rjconsultores.ventaboletos.service.ConexionService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaConfVO;
import com.rjconsultores.ventaboletos.vo.parada.ConexionRutaCtrlVO;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
@Service("conexionRutaConfService")
public class ConexionRutaConfServiceImpl implements ConexionRutaConfService {
@Autowired
private ConexionRutaConfDAO conexionRutaConfDAO;
@Autowired
private ConexionRutaExcepcionTipoPtoVtaService conexionRutaExcepcionTipoPtoVtaService;
@Autowired
private ConexionRutaExcepcionPtoVtaService conexionRutaRestricaoPtoVtaService;
@Autowired
private ConexionRutaCtrlService conexionRutaCtrlService;
@Autowired
private ConexionRutaTramoCtrlService conexionRutaTramoCtrlService;
@Autowired
private ConexionCtrlService conexionCtrlService;
@Autowired
private ConexionConfService conexionConfService;
@Autowired
private ConexionService conexionService;
@Override
@Transactional
public ConexionRutaConf suscribir(ConexionRutaConf conexionRutaConf) {
conexionRutaConf.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
conexionRutaConf.setFecmodif(Calendar.getInstance().getTime());
conexionRutaConf.setActivo(Boolean.TRUE);
return conexionRutaConfDAO.suscribir(conexionRutaConf);
}
@Override
@Transactional
public ConexionRutaConf actualizacion(ConexionRutaConf conexionRutaConf) {
conexionRutaConf.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
conexionRutaConf.setFecmodif(Calendar.getInstance().getTime());
conexionRutaConf.setActivo(Boolean.TRUE);
return conexionRutaConfDAO.actualizacion(conexionRutaConf);
}
@Override
@Transactional
public void borrar(ConexionRutaConf conexionRutaTramoCtrl) {
conexionRutaTramoCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
conexionRutaTramoCtrl.setFecmodif(Calendar.getInstance().getTime());
conexionRutaTramoCtrl.setActivo(Boolean.FALSE);
conexionRutaConfDAO.actualizacion(conexionRutaTramoCtrl);
}
@Transactional
@Override
public void borrar(List<ConexionRutaConf> lsConexionRutaConf) {
for (ConexionRutaConf conexion : lsConexionRutaConf) {
borrar(conexion);
}
}
@Override
@Transactional
public void suscribirTodos(List<ConexionRutaConf> lsConexionRutaConf) {
for (ConexionRutaConf conexion : lsConexionRutaConf) {
suscribir(conexion);
}
}
@Override
public List<ConexionRutaConf> obtenerTodosActivo() {
return conexionRutaConfDAO.obtenerTodosActivo();
}
@Override
public List<ConexionRutaConf> buscarPorDescricao(String descricao) {
return conexionRutaConfDAO.buscarPorDescricao(descricao);
}
@Transactional
@Override
public ConexionRutaConf obtenerID(Integer id) {
return conexionRutaConfDAO.obtenerID(id);
}
@Override
@Transactional
public void excluirConfiguracao(ConexionRutaConf conexion, boolean excluirConexionRutaConf, boolean isConexionGerada) {
conexionRutaConfDAO.excluirConfiguracao(conexion, UsuarioLogado.getUsuarioLogado().getUsuarioId(), excluirConexionRutaConf, isConexionGerada);
}
@Override
@Transactional
public ConexionRutaConf salvarConfiguracao(ConexionRutaConf conexionRutaConf, List<TipoPuntoVenta> canalVentas, List<PuntoVenta> puntoVentas,
List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas,
boolean isConexionGerada) {
conexionRutaConf = suscribirOrActualizacion(conexionRutaConf);
salvarCanalVentasRutaCtrl(conexionRutaConf, canalVentas);
salvarPuntoVentasRutaCtrl(conexionRutaConf, puntoVentas);
if(isConexionGerada) {
salvarConexionesRutaCtrl(conexionRutaConf, conexoesCtrl, rutas, localidadesCombinadas);
} else {
conexionRutaConfDAO.atualizarTempoMinimoEMaximo(conexionRutaConf);
}
return conexionRutaConf;
}
private ConexionRutaConf suscribirOrActualizacion(ConexionRutaConf conexion) {
if(conexion.getConexionRutaConfId() != null) {
return actualizacion(conexion);
} else {
return suscribir(conexion);
}
}
private void salvarCanalVentasRutaCtrl(ConexionRutaConf conexionRutaConf, List<TipoPuntoVenta> canalVentas) {
for (TipoPuntoVenta tipoPuntoVenta : canalVentas) {
ConexionRutaExcepcionTipoPtoVta conexionRutaExcepcionPtoVta = new ConexionRutaExcepcionTipoPtoVta();
conexionRutaExcepcionPtoVta.setTipoPtovta(tipoPuntoVenta);
conexionRutaExcepcionPtoVta.setConexionRutaConf(conexionRutaConf);
conexionRutaExcepcionPtoVta = conexionRutaExcepcionTipoPtoVtaService.suscribir(conexionRutaExcepcionPtoVta);
}
}
private void salvarPuntoVentasRutaCtrl(ConexionRutaConf conexionRutaConf, List<PuntoVenta> puntoVentas) {
for (PuntoVenta puntoVenta : puntoVentas) {
ConexionRutaExcepcionPtoVta conexionRutaExcepcionPtoVta = new ConexionRutaExcepcionPtoVta();
conexionRutaExcepcionPtoVta.setConexionRutaConf(conexionRutaConf);
conexionRutaExcepcionPtoVta.setPuntoVenta(puntoVenta);
conexionRutaExcepcionPtoVta = conexionRutaRestricaoPtoVtaService.suscribir(conexionRutaExcepcionPtoVta);
}
}
private void salvarConexionesRutaCtrl(ConexionRutaConf conexionRutaConf, List<ConexionCtrl> conexoesCtrl, List<ConexionRutaCtrlVO> rutas, List<ParadaVOConexionRuta> localidadesCombinadas) {
List<ConexionRutaCtrl> lsConexionRutaCtrl = new ArrayList<ConexionRutaCtrl>();
for (ConexionRutaCtrlVO conexionRutaCtrlVO : rutas) {
ConexionRutaCtrl conexionRutaCtrl = new ConexionRutaCtrl();
conexionRutaCtrl.setRutaOrigen(new Ruta(conexionRutaCtrlVO.getRutaIdA()));
conexionRutaCtrl.setRutaDestino(new Ruta(conexionRutaCtrlVO.getRutaIdB()));
if(conexionRutaCtrlVO.getRutaIdC() != null) {
conexionRutaCtrl.setRutaDestinoC(new Ruta(conexionRutaCtrlVO.getRutaIdC()));
}
conexionRutaCtrl.setConexionRutaConf(conexionRutaConf);
conexionRutaCtrl = conexionRutaCtrlService.suscribir(conexionRutaCtrl);
lsConexionRutaCtrl.add(conexionRutaCtrl);
}
List<ConexionRutaTramoCtrl> lsConexionRutaTramo = salvarConexionesRutaTramoCtrl(lsConexionRutaCtrl, localidadesCombinadas);
salvarConexao(conexionRutaConf, conexoesCtrl, lsConexionRutaTramo, localidadesCombinadas);
}
private List<ConexionRutaTramoCtrl> salvarConexionesRutaTramoCtrl(List<ConexionRutaCtrl> rutasEntidades, List<ParadaVOConexionRuta> localidadesCombinadas) {
List<ConexionRutaTramoCtrl> lsConexionRutaTramo = new ArrayList<ConexionRutaTramoCtrl>(0);
for (ParadaVOConexionRuta vo : localidadesCombinadas) {
ConexionRutaTramoCtrl conexionRutaTramoCtrl = new ConexionRutaTramoCtrl();
conexionRutaTramoCtrl.setOrigen(vo.getParadaOrigem());
conexionRutaTramoCtrl.setDestino(vo.getParadaDestino());
conexionRutaTramoCtrl.setRuta(new Ruta(vo.getRutaId()));
conexionRutaTramoCtrl.setSecuencia(vo.getSecuencia());
if(vo.getConexionRutaCtrl() != null && vo.getConexionRutaCtrl().getRutaIdC() == null) {
conexionRutaTramoCtrl.setConexionRutaCtrl(ConexionRutaCtrl.getConexionRutaCtrl(rutasEntidades,
vo.getConexionRutaCtrl().getRutaIdA(),
vo.getConexionRutaCtrl().getRutaIdB()));
} else if(vo.getConexionRutaCtrl() != null && vo.getConexionRutaCtrl().getRutaIdC() != null) {
conexionRutaTramoCtrl.setConexionRutaCtrl(ConexionRutaCtrl.getConexionRutaCtrl(rutasEntidades,
vo.getConexionRutaCtrl().getRutaIdA(),
vo.getConexionRutaCtrl().getRutaIdB(),
vo.getConexionRutaCtrl().getRutaIdC()));
} else {
conexionRutaTramoCtrl.setConexionRutaCtrl(ConexionRutaCtrl.getConexionRutaCtrl(rutasEntidades));
}
conexionRutaTramoCtrl.setValido(true);
conexionRutaTramoCtrl.setGrupo(vo.getGrupo());
conexionRutaTramoCtrl = conexionRutaTramoCtrlService.suscribir(conexionRutaTramoCtrl);
vo.setConexionRutaTramoId(conexionRutaTramoCtrl.getConexionRutaTramoId());
lsConexionRutaTramo.add(conexionRutaTramoCtrl);
}
return lsConexionRutaTramo;
}
private void salvarConexao(ConexionRutaConf conexionRutaConf, List<ConexionCtrl> conexoesCtrl, List<ConexionRutaTramoCtrl> lsConexionRutaTramo, List<ParadaVOConexionRuta> localidadesCombinadas) {
for (ConexionCtrl conexionCtrl : conexoesCtrl) {
conexionCtrl = conexionCtrlService.suscribir(conexionCtrl);
salvarConexionesConf(conexionRutaConf, conexionCtrl);
salvarConexiones(conexionCtrl, lsConexionRutaTramo, localidadesCombinadas);
}
}
private void salvarConexionesConf(ConexionRutaConf conexionRutaConf, ConexionCtrl conexionCtrl) {
ConexionConf conexionConf = new ConexionConf();
conexionConf.setConexionCtrl(conexionCtrl);
conexionConf.setGrupo(conexionCtrl.getGrupos());
conexionConf.setIndisponible(false);
conexionConf.setTiempoMin(conexionRutaConf.getTiempoMin());
conexionConf.setTiempoMax(conexionRutaConf.getTiempoMax());
conexionConf = conexionConfService.suscribir(conexionConf);
}
private void salvarConexiones(ConexionCtrl conexionCtrl, List<ConexionRutaTramoCtrl> lsConexionRutaTramo, List<ParadaVOConexionRuta> localidadesCombinadas) {
List<ConexionRutaTramoCtrl> conexionRutaTramoCtrls = recuperarConexionRutaTramoCtrl(conexionCtrl, lsConexionRutaTramo, localidadesCombinadas);
for (ConexionRutaTramoCtrl conexionRutaTramoCtrl : conexionRutaTramoCtrls) {
Conexion conexion = new Conexion();
conexion.setConexionctrlId(conexionCtrl.getConexionctrlId());
conexion.setOrigenId(conexionRutaTramoCtrl.getOrigen().getParadaId());
conexion.setDestinoId(conexionRutaTramoCtrl.getDestino().getParadaId());
conexion.setNumgrupo(conexionRutaTramoCtrl.getGrupo());
conexion.setNumsecuencia(conexionRutaTramoCtrl.getSecuencia());
conexion.setRutaId(conexionRutaTramoCtrl.getRuta().getRutaId());
conexion.setConexionRutaTramoId(conexionRutaTramoCtrl.getConexionRutaTramoId());
conexion = conexionService.suscribir(conexion);
}
}
private List<ConexionRutaTramoCtrl> recuperarConexionRutaTramoCtrl(ConexionCtrl conexionCtrl, List<ConexionRutaTramoCtrl> lsConexionRutaTramo, List<ParadaVOConexionRuta> localidadesCombinadas) {
List<ConexionRutaTramoCtrl> list = new ArrayList<ConexionRutaTramoCtrl>(0);
for (ParadaVOConexionRuta trecho: localidadesCombinadas) {
if(trecho.getConexionCtrl().isOrigemDestinoGrupoIgual(conexionCtrl.getOrigenId(), conexionCtrl.getDestinoId(), conexionCtrl.getGrupos())) {
ConexionRutaTramoCtrl aux = new ConexionRutaTramoCtrl(trecho.getConexionRutaTramoId());
Integer idx = lsConexionRutaTramo.indexOf(aux);
if(idx > -1) {
list.add(lsConexionRutaTramo.get(idx));
}
}
}
return list;
}
@Override
public ConexionRutaConfVO carregarConexoesCadastradas(Integer conexionrutaconfId) {
return conexionRutaConfDAO.carregarConexoesCadastradas(conexionrutaconfId);
}
@Override
public List<List<Ruta>> buscarRutasPorConexionConf(Integer conexionRutaConfId) {
return conexionRutaConfDAO.buscarRutasPorConexionConf(conexionRutaConfId);
}
@Override
public ConexionRutaConf getByIdActivo(Integer conexionRutaConfId) {
return conexionRutaConfDAO.getByIdActivo(conexionRutaConfId);
}
}