-correção na geração de corrida

-correção na tela de conf de restrição

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@25435 d1611594-4594-4d17-8e1d-87c2c4800839
master
gleimar 2013-03-28 22:10:50 +00:00
parent f00414f96c
commit 56cb33070f
1 changed files with 179 additions and 169 deletions

View File

@ -359,195 +359,205 @@ public class CorridaServiceImpl implements CorridaService {
Marca marca = esquemaCorrida.getMarca(); Marca marca = esquemaCorrida.getMarca();
Date horario = esquemaCorrida.getHorasalida(); Date horario = esquemaCorrida.getHorasalida();
horario = DateUtil.normalizar(horario); horario = DateUtil.normalizar(horario);
Integer numCorrida = (!isPisoExtra)?esquemaCorrida.getNumCorrida():esquemaCorrida.getNumCorridaPisoExtra();
if (corridaDAO.existe(ruta, dataGeracao, horario, claseServicio, marca, isPisoExtra)) { Corrida.Id id = new Corrida.Id();
id.setCorridaId(numCorrida);
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao));
if (corridaDAO.existe(id)) {
log.info("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra); log.info("corrida existe = " + ruta.getDescruta() + ";" + DateUtil.getStringDate(dataGeracao) + ";" + DateUtil.getStringDate(horario, "HH:mm") + ";" + claseServicio.getDescclase() + ";" + marca.getDescmarca() + " Piso: " + isPisoExtra);
return null; return null;
} }
CorridaCtrl corridaCtrl = corridaCtrlService.buscar(ruta, claseServicio, marca, horario, isPisoExtra); //Como o numCorrida corresponde ao corrida_id do corridaCtrl, ou seja, à chave primaria, temos que buscar somente por esse campo
//Caso o registro já exista, atualizamos os dados dele.
//Sendo assim, o que vai indicar a "duplicidade" de uma corrida será apenas o número dela e não mais o conjunto : clase + marca + horario + ruta
CorridaCtrl corridaCtrl = corridaCtrlService.obtenerID(numCorrida);
boolean novoRegistro = false;
if (corridaCtrl == null) { if (corridaCtrl == null) {
corridaCtrl = new CorridaCtrl(); corridaCtrl = new CorridaCtrl();
if (!isPisoExtra) { novoRegistro = true;
corridaCtrl.setCorridaId(esquemaCorrida.getNumCorrida()); }
} else {
corridaCtrl.setCorridaId(esquemaCorrida.getNumCorridaPisoExtra()); corridaCtrl.setCorridaId(numCorrida);
} corridaCtrl.setMarca(marca);
corridaCtrl.setMarca(marca); corridaCtrl.setRuta(ruta);
corridaCtrl.setRuta(ruta); corridaCtrl.setClaseServicio(claseServicio);
corridaCtrl.setClaseServicio(claseServicio); corridaCtrl.setHorario(horario);
corridaCtrl.setHorario(horario);
// parada origem // parada origem
Parada origen = rutaService.getOrigem(ruta); Parada origen = rutaService.getOrigem(ruta);
if (origen == null) { if (origen == null) {
log.info("origen nao encontrado para a ruta = " + ruta.getRutaId()); log.info("origen nao encontrado para a ruta = " + ruta.getRutaId());
} }
corridaCtrl.setNodo((origen == null) ? null : origen.getNodo()); corridaCtrl.setNodo((origen == null) ? null : origen.getNodo());
corridaCtrl.setActivo(Boolean.TRUE); corridaCtrl.setActivo(Boolean.TRUE);
corridaCtrl.setFecmodif(Calendar.getInstance().getTime()); corridaCtrl.setFecmodif(Calendar.getInstance().getTime());
if (UsuarioLogado.getUsuarioLogado() != null) {
corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); if (UsuarioLogado.getUsuarioLogado() != null) {
} corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
corridaCtrl.setPisoExtra(isPisoExtra);
corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
} }
Corrida.Id id = new Corrida.Id(); corridaCtrl.setPisoExtra(isPisoExtra);
id.setCorridaId(corridaCtrl.getCorridaId()); if (novoRegistro){
id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao)); corridaCtrl = corridaCtrlService.suscribir(corridaCtrl);
}else{
corridaCtrl = corridaCtrlService.actualizacion(corridaCtrl);
}
corrida = new Corrida();
corrida.setId(id);
corrida.setEsquemaCorrida(esquemaCorrida);
corrida.setCorridaCtrl(corridaCtrl);
corrida.setAutobus(null);
corrida.setClaseServicio(esquemaCorrida.getClaseServicio());
corrida.setConductor(null);
corrida.setTipoServicio(new Short("1"));
Integer cantparados = esquemaCorrida.getCantparados();
if (cantparados != null) {
corrida.setCantParados(cantparados.shortValue());
}
Boolean existeCorrida = corridaDAO.existe(id); Parada destino = rutaService.getDestino(ruta);
if (!existeCorrida) { if (destino == null) {
corrida = new Corrida(); return null;
corrida.setId(id); }
corrida.setEsquemaCorrida(esquemaCorrida); corrida.setDestino(destino);
corrida.setCorridaCtrl(corridaCtrl);
corrida.setAutobus(null); corrida.setEmpresa(esquemaCorrida.getEmpresa());
corrida.setClaseServicio(esquemaCorrida.getClaseServicio()); corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
corrida.setConductor(null);
corrida.setTipoServicio(new Short("1")); corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
Integer cantparados = esquemaCorrida.getCantparados(); corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
if (cantparados != null) { corrida.setIndstatuscorrida("H");
corrida.setCantParados(cantparados.shortValue()); corrida.setMarca(esquemaCorrida.getMarca());
corrida.setNodo(corridaCtrl.getNodo());
corrida.setDivision(esquemaCorrida.getDivision());
Parada origem = rutaService.getOrigem(ruta);
if (origem == null) {
return null;
}
corrida.setOrigem(origem);
corrida.setRuta(esquemaCorrida.getRuta());
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
corrida.setZona(null);
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
if (hayCorrida) {
return null;
}
// corrida Tramo:
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
Integer numSec = 1;
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
Date horaChegadaAnterior = null;
Date tiempoInstanciaAnterior = null; // indica o tempo
// de instancia
// que fica no
// tramo
// anterior ao
// atual
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
CorridaTramo corridaTramo = new CorridaTramo();
corridaTramo.setAutobus(null);
corridaTramo.setConductor(null);
corridaTramo.setConductor1(null);
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia());
// numSec: 1-2, 2-3, 3-4...
corridaTramo.setNumsecorigen(numSec.shortValue());
numSec = numSec + 1;
corridaTramo.setNumsecdestino(numSec.shortValue());
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, tiempoInstanciaAnterior);
fecHorSalida.setSeconds(0);
corridaTramo.setFechorsalida(fecHorSalida);
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
fecHorallegada.setSeconds(0);
corridaTramo.setFechorllegada(fecHorallegada);
horaChegadaAnterior = fecHorallegada;
tiempoInstanciaAnterior = esquemaTramo.getTiempoEstancia();
corridaTramo.setFechortarjetaviaje(null);
corridaTramo.setNodo(corridaCtrl.getNodo());
corridaTramo.setNumsecuencia(esquemaTramo.getNumsecuencia());
Tramo tramo = esquemaTramo.getTramo();
if (tramo != null) {
corridaTramo.setOrigem(tramo.getOrigem());
corridaTramo.setDestino(tramo.getDestino());
}
corridaTramo.setTramo(tramo);
corridaTramo.setUsuariotarjetaviajeId(null);
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
if (excepcionTiempo != null) {
corridaTramo.setFechorllegada(excepcionTiempo);
horaChegadaAnterior = excepcionTiempo;
} }
Parada destino = rutaService.getDestino(ruta); corridaTramo.setActivo(Boolean.TRUE);
if (destino == null) { corridaTramo.setFecmodif(Calendar.getInstance().getTime());
return null;
}
corrida.setDestino(destino);
corrida.setEmpresa(esquemaCorrida.getEmpresa());
corrida.setEmpresa1(esquemaCorrida.getEmpresa1());
corrida.setFechorsalida(truncarDataHora(dataGeracao, esquemaCorrida.getHorasalida()));
corrida.setFechorSalidaOriginal(corrida.getFechorsalida());
corrida.setIndstatuscorrida("H");
corrida.setMarca(esquemaCorrida.getMarca());
corrida.setNodo(corridaCtrl.getNodo());
corrida.setDivision(esquemaCorrida.getDivision());
Parada origem = rutaService.getOrigem(ruta);
if (origem == null) {
return null;
}
corrida.setOrigem(origem);
corrida.setRuta(esquemaCorrida.getRuta());
corrida.setRolOperativo(esquemaCorrida.getRolOperativo());
corrida.setZona(null);
boolean hayCorrida = corridaDAO.count(corrida.getOrigem(), corrida.getDestino(), corrida.getId().getFeccorrida(), corrida.getClaseServicio(), isPisoExtra);
if (hayCorrida) {
return null;
}
// corrida Tramo:
List<CorridaTramo> lsCorridaTramo = new ArrayList<CorridaTramo>();
Integer numSec = 1;
List<EsquemaTramo> lsEsquemaTramo = esquemaTramoService.obtenerPorEsquemaCorridaOrderNumSec(esquemaCorrida);
Date horaChegadaAnterior = null;
Date tiempoInstanciaAnterior = null; // indica o tempo
// de instancia
// que fica no
// tramo
// anterior ao
// atual
for (EsquemaTramo esquemaTramo : lsEsquemaTramo) {
CorridaTramo corridaTramo = new CorridaTramo();
corridaTramo.setAutobus(null);
corridaTramo.setConductor(null);
corridaTramo.setConductor1(null);
corridaTramo.setPlataforma(esquemaTramo.getPlataforma());
corridaTramo.setTiempoEstancia(esquemaTramo.getTiempoEstancia());
// numSec: 1-2, 2-3, 3-4...
corridaTramo.setNumsecorigen(numSec.shortValue());
numSec = numSec + 1;
corridaTramo.setNumsecdestino(numSec.shortValue());
Date fecHorSalida = calcularFechorsalida(esquemaTramo, dataGeracao, horaChegadaAnterior, tiempoInstanciaAnterior);
fecHorSalida.setSeconds(0);
corridaTramo.setFechorsalida(fecHorSalida);
Date fecHorallegada = calcularFechorllegada(esquemaTramo, corrida.getClaseServicio(), dataGeracao, fecHorSalida);
fecHorallegada.setSeconds(0);
corridaTramo.setFechorllegada(fecHorallegada);
horaChegadaAnterior = fecHorallegada;
tiempoInstanciaAnterior = esquemaTramo.getTiempoEstancia();
corridaTramo.setFechortarjetaviaje(null);
corridaTramo.setNodo(corridaCtrl.getNodo());
corridaTramo.setNumsecuencia(esquemaTramo.getNumsecuencia());
Tramo tramo = esquemaTramo.getTramo();
if (tramo != null) {
corridaTramo.setOrigem(tramo.getOrigem());
corridaTramo.setDestino(tramo.getDestino());
}
corridaTramo.setTramo(tramo);
corridaTramo.setUsuariotarjetaviajeId(null);
Date excepcionTiempo = arreglaExcepcionTiempo(corridaTramo, corrida.getClaseServicio());
if (excepcionTiempo != null) {
corridaTramo.setFechorllegada(excepcionTiempo);
horaChegadaAnterior = excepcionTiempo;
}
corridaTramo.setActivo(Boolean.TRUE);
corridaTramo.setFecmodif(Calendar.getInstance().getTime());
if (UsuarioLogado.getUsuarioLogado() != null) {
corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
}
corridaTramo.setCorrida(corrida);
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
lsCorridaTramo.add(corridaTramo);
}
corrida.setCorridaTramoList(lsCorridaTramo);
corrida.setActivo(Boolean.TRUE);
corrida.setFecmodif(Calendar.getInstance().getTime());
if (UsuarioLogado.getUsuarioLogado() != null) { if (UsuarioLogado.getUsuarioLogado() != null) {
corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
} else {
corrida.setUsuarioId(1);
} }
corrida.setIndTipoVenta(null); corridaTramo.setCorrida(corrida);
corridaTramo.setFechorSalidaOriginal(fecHorSalida);
corrida = corridaDAO.suscribir(corrida); lsCorridaTramo.add(corridaTramo);
cantCorridaGenerada++; }
corrida.setCorridaTramoList(lsCorridaTramo);
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida); corrida.setActivo(Boolean.TRUE);
for (EsquemaAsiento ea : lsEsquemaAsiento) { corrida.setFecmodif(Calendar.getInstance().getTime());
AsientoExclusivo asientoExclusivo = new AsientoExclusivo(); if (UsuarioLogado.getUsuarioLogado() != null) {
asientoExclusivo.setCorrida(corrida); corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
} else {
corrida.setUsuarioId(1);
}
corrida.setIndTipoVenta(null);
corrida = corridaDAO.suscribir(corrida);
cantCorridaGenerada++;
List<EsquemaAsiento> lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida);
for (EsquemaAsiento ea : lsEsquemaAsiento) {
AsientoExclusivo asientoExclusivo = new AsientoExclusivo();
asientoExclusivo.setCorrida(corrida);
asientoExclusivo.setMotivobloqueo(null);
asientoExclusivo.setNodo(corrida.getNodo());
asientoExclusivo.setNumasiento(ea.getNumasiento());
asientoExclusivo.setVendible(ea.getIndvendible());
asientoExclusivo.setParada(ea.getParada());
if (ea.getIndvendible()) {
asientoExclusivo.setMotivobloqueo(null); asientoExclusivo.setMotivobloqueo(null);
asientoExclusivo.setNodo(corrida.getNodo()); } else {
asientoExclusivo.setNumasiento(ea.getNumasiento()); asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo());
asientoExclusivo.setVendible(ea.getIndvendible()); asientoExclusivo.setDestino(ea.getDestino());
asientoExclusivo.setParada(ea.getParada());
if (ea.getIndvendible()) {
asientoExclusivo.setMotivobloqueo(null);
} else {
asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo());
asientoExclusivo.setDestino(ea.getDestino());
}
asientoExclusivo.setActivo(Boolean.TRUE);
asientoExclusivo.setFecmodif(Calendar.getInstance().getTime());
if (UsuarioLogado.getUsuarioLogado() != null) {
asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
}
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
} }
}// if (!existeCorrida)
asientoExclusivo.setActivo(Boolean.TRUE);
asientoExclusivo.setFecmodif(Calendar.getInstance().getTime());
if (UsuarioLogado.getUsuarioLogado() != null) {
asientoExclusivo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
}
asientoExclusivo = asientoExclusivoService.suscribir(asientoExclusivo);
}
} catch (org.springframework.dao.DataIntegrityViolationException ex) { } catch (org.springframework.dao.DataIntegrityViolationException ex) {
log.error(ex); log.error(ex);
} }