267 lines
12 KiB
Java
267 lines
12 KiB
Java
package com.rjconsultores.ventaboletos.service.impl;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigInteger;
|
|
import java.util.Calendar;
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.zkoss.zul.Comboitem;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.CorridaTramoDAO;
|
|
import com.rjconsultores.ventaboletos.dao.TarjetaViajeDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Corrida;
|
|
import com.rjconsultores.ventaboletos.entidad.CorridaTramo;
|
|
import com.rjconsultores.ventaboletos.entidad.RhPagoConductor;
|
|
import com.rjconsultores.ventaboletos.entidad.TarjetaViaje;
|
|
import com.rjconsultores.ventaboletos.service.CorridaService;
|
|
import com.rjconsultores.ventaboletos.service.RhPagoConductorService;
|
|
import com.rjconsultores.ventaboletos.service.RutaService;
|
|
import com.rjconsultores.ventaboletos.service.TarjetaViajeService;
|
|
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
|
|
|
|
@Service("tarjetaViajeService")
|
|
public class TarjetaViajeServiceImpl implements TarjetaViajeService {
|
|
|
|
@Autowired
|
|
private TarjetaViajeDAO tarjetaViajeDAO;
|
|
@Autowired
|
|
private CorridaTramoDAO corridaTramoDAO;
|
|
@Autowired
|
|
private CorridaService corridaService;
|
|
@Autowired
|
|
private RhPagoConductorService rhPagoConductorService;
|
|
@Autowired
|
|
private RutaService rutaService;
|
|
private static final Logger log = LogManager.getLogger(TarjetaViajeServiceImpl.class);
|
|
|
|
@Override
|
|
public List<TarjetaViaje> obtenerTodos() {
|
|
return tarjetaViajeDAO.obtenerTodos();
|
|
}
|
|
|
|
@Override
|
|
public TarjetaViaje obtenerID(Integer id) {
|
|
return tarjetaViajeDAO.obtenerID(id);
|
|
}
|
|
|
|
@Transactional
|
|
public TarjetaViaje suscribir(TarjetaViaje entidad) {
|
|
entidad.setActivo(true);
|
|
entidad.setFecmodif(Calendar.getInstance().getTime());
|
|
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
return tarjetaViajeDAO.suscribir(entidad);
|
|
}
|
|
|
|
@Transactional
|
|
public TarjetaViaje actualizacion(TarjetaViaje entidad) {
|
|
entidad.setActivo(true);
|
|
entidad.setFecmodif(Calendar.getInstance().getTime());
|
|
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
return tarjetaViajeDAO.actualizacion(entidad);
|
|
}
|
|
|
|
@Transactional
|
|
public void borrar(TarjetaViaje entidad) {
|
|
if (entidad.getIndstatustarjeta().equals("M")) {
|
|
tarjetaViajeDAO.borrar(entidad);
|
|
} else {
|
|
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
entidad.setFecmodif(Calendar.getInstance().getTime());
|
|
entidad.setActivo(false);
|
|
entidad.setIndstatustarjeta("B");
|
|
tarjetaViajeDAO.actualizacion(entidad);
|
|
}
|
|
}
|
|
|
|
@Transactional
|
|
public void grabarTarjetaViaje(List<CorridaTramo> lsCorridaTramo) {
|
|
try {
|
|
TarjetaViaje tarjeta = null;
|
|
for (CorridaTramo ct : lsCorridaTramo) {
|
|
|
|
if (ct.getCorrida() == null) {
|
|
log.debug("Corrida Tramo sem Corrida: " + ct.getCorridatramoId());
|
|
continue;
|
|
}
|
|
|
|
tarjeta = new TarjetaViaje();
|
|
tarjeta.setActivo(true);
|
|
if (ct.getCorrida().getCorridaRebote() != null) {
|
|
tarjeta.setIndRebote(1);
|
|
} else {
|
|
tarjeta.setIndRebote(0);
|
|
}
|
|
tarjeta.setFecenvionomina(null);
|
|
tarjeta.setFecmodif(new Date());
|
|
tarjeta.setFoliotarjetaviaje(ct.getFolioTarjeta() == null ? null : ct.getFolioTarjeta().toString());// checar
|
|
tarjeta.setIndstatustarjeta("N");
|
|
tarjeta.setNumsecuencia(ct.getNumsecuencia() != null ? Integer.getInteger(ct.getNumsecuencia().toString()) : null);
|
|
tarjeta.setUsuarioId(ct.getUsuarioId());
|
|
tarjeta.setAutobus(ct.getAutobus());
|
|
tarjeta.setClaseServicio(ct.getCorrida().getClaseServicio());
|
|
tarjeta.setConductor(ct.getConductor());
|
|
tarjeta.setConductor1(ct.getConductor1());
|
|
tarjeta.setEmpresa(ct.getCorrida().getEmpresa());
|
|
tarjeta.setMarca(ct.getCorrida().getMarca());
|
|
|
|
tarjeta.setFecInicial(ct.getCorrida().getId().getFeccorrida());
|
|
tarjeta.setFecHorSalida(ct.getCorrida().getFechorsalida());
|
|
|
|
tarjeta.setNumCorrida(ct.getCorrida().getId().getCorridaId());
|
|
|
|
BigDecimal kmPagoCondutor = new BigDecimal(BigInteger.ZERO);
|
|
BigDecimal kmReal = new BigDecimal(BigInteger.ZERO);
|
|
// BigDecimal teste = corridaTramoDAO.buscarSumTarjetaMesmaCorrida(ct);
|
|
// tarjeta.setKmPagoConductor(teste);
|
|
// tarjeta.setKmReal(teste);
|
|
//
|
|
List<CorridaTramo> lsCorridasAdicionais = corridaTramoDAO.buscarTarjetaMesmaCorrida(ct);
|
|
if (!lsCorridasAdicionais.isEmpty()) {
|
|
for (CorridaTramo ct2 : lsCorridasAdicionais) {
|
|
if (ct2.getTramo() == null) {
|
|
log.debug("Corrida Tramo Sem Tramo: " + ct2.getCorridatramoId().toString());
|
|
continue;
|
|
}
|
|
if (ct2.getTramo().getKmPagoConductor() != null) {
|
|
|
|
log.debug("Corrida Tramo Id: " + ct2.getCorridatramoId().toString());
|
|
kmPagoCondutor = kmPagoCondutor.add(ct2.getTramo().getKmPagoConductor());
|
|
kmReal = kmReal.add(ct2.getTramo().getKmReal());
|
|
}
|
|
}
|
|
}
|
|
|
|
tarjeta.setKmPagoConductor(kmPagoCondutor);
|
|
tarjeta.setKmReal(kmReal);
|
|
|
|
//Origem Destino Inicial e Final da Corrida
|
|
Corrida corrida = ct.getCorrida();
|
|
tarjeta.setOrigen(corrida.getOrigem().getCveparada());
|
|
tarjeta.setDestino(corrida.getDestino().getCveparada());
|
|
|
|
tarjetaViajeDAO.suscribir(tarjeta);
|
|
ct.setIndmanttarjeta(true);
|
|
corridaTramoDAO.actualizacion(ct);
|
|
|
|
}
|
|
} catch (Exception e) {
|
|
log.error("Geracao de Tarjetas");
|
|
log.error(e);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void verificaCorridaDuplicada(List<TarjetaViaje> lsTarjetaViaje, boolean todasTarjetas) {
|
|
|
|
for (TarjetaViaje t : lsTarjetaViaje) {
|
|
List<TarjetaViaje> ls = tarjetaViajeDAO.buscarTarjetaPorFiltros(t);
|
|
if (ls.size() > 1) {
|
|
//Vermelho
|
|
t.seteCorridaDuplicada(true);
|
|
|
|
//Esse teste checa se houve uma volta para o autobus/condutor,
|
|
//Se teve volta a TarjetaViaje tem que ser preta
|
|
boolean existeCorridaVolta = tarjetaViajeDAO.buscarTarjetaExisteVolta(t);
|
|
|
|
//Se não existe corrida de volta Vermelho
|
|
t.seteCorridaDuplicada(!existeCorridaVolta);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public List<TarjetaViaje> buscarTarjetaPorFiltros(Integer autoIni,
|
|
Integer autoFin, Date dataIni, Date dataFin, Comboitem empresa) {
|
|
|
|
return tarjetaViajeDAO.buscarTarjetaPorFiltros(autoIni, autoFin,
|
|
dataIni, dataFin, empresa);
|
|
}
|
|
|
|
@Override
|
|
public List<TarjetaViaje> generarArchivoNomina(Date fecIni, Date fecFin) {
|
|
Calendar c = Calendar.getInstance();
|
|
c.setTime(fecFin);
|
|
c.add(Calendar.HOUR, 23);
|
|
c.add(Calendar.MINUTE, 59);
|
|
c.add(Calendar.SECOND, 59);
|
|
fecFin = c.getTime();
|
|
List<TarjetaViaje> lsTarjetas = tarjetaViajeDAO.buscarTarjetasParaEnvioNomina(fecIni, fecFin);
|
|
|
|
try {
|
|
for (TarjetaViaje tv : lsTarjetas) {
|
|
RhPagoConductor rh = new RhPagoConductor();
|
|
|
|
Corrida.Id id = new Corrida.Id();
|
|
id.setCorridaId(tv.getNumCorrida());
|
|
id.setFeccorrida(tv.getFecInicial());
|
|
Corrida corrida = corridaService.obtenerID(id);
|
|
|
|
if (tv.getAutobus() != null) {
|
|
rh.setNumautobus(Integer.parseInt(tv.getAutobus().getNumautobus()));
|
|
}
|
|
rh.setNumcorrida(tv.getNumCorrida());
|
|
rh.setFechorsalida(tv.getFecHorSalida());
|
|
|
|
rh.setCantkmsoperador1(tv.getKmPagoConductor());
|
|
rh.setCantkmsoperador2(tv.getKmPagoConductor());
|
|
|
|
if (tv.getConductor() != null) {
|
|
if (tv.getConductor().getEmpleado() != null) {
|
|
rh.setCveoperador1(tv.getConductor().getEmpleado().getCveEmpleado());
|
|
rh.setNombreoperador1(tv.getConductor().getEmpleado().getNombEmpleado());
|
|
}
|
|
}
|
|
if (tv.getConductor1() != null) {
|
|
if (tv.getConductor1().getEmpleado() != null) {
|
|
rh.setCveoperador2(tv.getConductor1().getEmpleado().getCveEmpleado());
|
|
rh.setNombreoperador2(tv.getConductor1().getEmpleado().getNombEmpleado());
|
|
}
|
|
}
|
|
if (tv.getMarca() != null) {
|
|
rh.setMarca(tv.getMarca().getMarcaId());
|
|
}
|
|
if (corrida != null) {
|
|
if (corrida.getRuta() != null) {
|
|
rh.setRuta(corrida.getRuta().getRutaId());
|
|
String descRuta = corrida.getRuta().getDescruta();
|
|
rh.setDescruta(descRuta.length() > 29 ? descRuta.substring(0, 30) : descRuta);
|
|
rh.setCveOrigen(rutaService.getOrigem(corrida.getRuta()).getCveparada());
|
|
rh.setCveDestino(rutaService.getDestino(corrida.getRuta()).getCveparada());
|
|
}
|
|
|
|
boolean pisoExtra = (corrida.getNumPiso() == null) ? false
|
|
: corrida.getNumPiso() == 2 ? true : false;
|
|
rh.setIndextra(pisoExtra);
|
|
}
|
|
log.debug("RH_SALIDAS: NUMAUTOBUS: " + rh.getNumautobus() + " NUMCORRIDA: " + rh.getNumcorrida()
|
|
+ " DESCRUTA: " + rh.getDescruta() + " FECHORSALIDA: " + rh.getFechorsalida()
|
|
+ " CVEOPERADOR1: " + rh.getCveoperador1() + " NOMBREOPERADOR1: " + rh.getNombreoperador1() + " CANTKMSOPERADOR1: " + rh.getCantkmsoperador1()
|
|
+ " CVEOPERADOR2: " + rh.getCveoperador2() + " NOMBREOPERADOR2: " + rh.getNombreoperador2() + " CANTKMSOPERADOR2: " + rh.getCantkmsoperador2()
|
|
+ " INDEXTRA: " + rh.getIndextra() + " CVEORIGEN: " + rh.getCveOrigen() + " CVEDESTINO: " + rh.getCveDestino() + " RUTA_ID: " + rh.getRuta());
|
|
rhPagoConductorService.suscribir(rh);
|
|
}
|
|
|
|
} catch (Exception e) {
|
|
log.error(e);
|
|
return null;
|
|
}
|
|
|
|
return lsTarjetas;
|
|
}
|
|
|
|
@Transactional
|
|
public void actulizarTarjetasEnviadas(List<TarjetaViaje> lsTarjetas) {
|
|
for (TarjetaViaje tarjeta : lsTarjetas) {
|
|
tarjeta.setFecenvionomina(new Date());
|
|
tarjetaViajeDAO.actualizacion(tarjeta);
|
|
}
|
|
}
|
|
}
|