From 56cb33070f9b70c1be996bfc901a91cc527cf2ae Mon Sep 17 00:00:00 2001 From: gleimar Date: Thu, 28 Mar 2013 22:10:50 +0000 Subject: [PATCH] =?UTF-8?q?-corre=C3=A7=C3=A3o=20na=20gera=C3=A7=C3=A3o=20?= =?UTF-8?q?de=20corrida=20-corre=C3=A7=C3=A3o=20na=20tela=20de=20conf=20de?= =?UTF-8?q?=20restri=C3=A7=C3=A3o?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@25435 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../service/impl/CorridaServiceImpl.java | 348 +++++++++--------- 1 file changed, 179 insertions(+), 169 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index 23754763b..f933af973 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -359,195 +359,205 @@ public class CorridaServiceImpl implements CorridaService { Marca marca = esquemaCorrida.getMarca(); Date horario = esquemaCorrida.getHorasalida(); 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); 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) { corridaCtrl = new CorridaCtrl(); - if (!isPisoExtra) { - corridaCtrl.setCorridaId(esquemaCorrida.getNumCorrida()); - } else { - corridaCtrl.setCorridaId(esquemaCorrida.getNumCorridaPisoExtra()); - } - corridaCtrl.setMarca(marca); - corridaCtrl.setRuta(ruta); - corridaCtrl.setClaseServicio(claseServicio); - corridaCtrl.setHorario(horario); + novoRegistro = true; + } + + corridaCtrl.setCorridaId(numCorrida); + corridaCtrl.setMarca(marca); + corridaCtrl.setRuta(ruta); + corridaCtrl.setClaseServicio(claseServicio); + corridaCtrl.setHorario(horario); - // parada origem - Parada origen = rutaService.getOrigem(ruta); - if (origen == null) { - log.info("origen nao encontrado para a ruta = " + ruta.getRutaId()); - } - corridaCtrl.setNodo((origen == null) ? null : origen.getNodo()); + // parada origem + Parada origen = rutaService.getOrigem(ruta); + if (origen == null) { + log.info("origen nao encontrado para a ruta = " + ruta.getRutaId()); + } + corridaCtrl.setNodo((origen == null) ? null : origen.getNodo()); - corridaCtrl.setActivo(Boolean.TRUE); - corridaCtrl.setFecmodif(Calendar.getInstance().getTime()); - if (UsuarioLogado.getUsuarioLogado() != null) { - corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - } - - corridaCtrl.setPisoExtra(isPisoExtra); - corridaCtrl = corridaCtrlService.suscribir(corridaCtrl); + corridaCtrl.setActivo(Boolean.TRUE); + corridaCtrl.setFecmodif(Calendar.getInstance().getTime()); + + if (UsuarioLogado.getUsuarioLogado() != null) { + corridaCtrl.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); } - Corrida.Id id = new Corrida.Id(); - id.setCorridaId(corridaCtrl.getCorridaId()); - id.setFeccorrida(DateUtil.normalizarToFecha(dataGeracao)); + corridaCtrl.setPisoExtra(isPisoExtra); + if (novoRegistro){ + 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); - if (!existeCorrida) { - 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()); + Parada destino = rutaService.getDestino(ruta); + if (destino == null) { + 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 lsCorridaTramo = new ArrayList(); + Integer numSec = 1; + List 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); - if (destino == null) { - 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 lsCorridaTramo = new ArrayList(); - Integer numSec = 1; - List 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()); + corridaTramo.setActivo(Boolean.TRUE); + corridaTramo.setFecmodif(Calendar.getInstance().getTime()); if (UsuarioLogado.getUsuarioLogado() != null) { - corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - } else { - corrida.setUsuarioId(1); + corridaTramo.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); } - corrida.setIndTipoVenta(null); + corridaTramo.setCorrida(corrida); + corridaTramo.setFechorSalidaOriginal(fecHorSalida); - corrida = corridaDAO.suscribir(corrida); - cantCorridaGenerada++; + lsCorridaTramo.add(corridaTramo); + } + corrida.setCorridaTramoList(lsCorridaTramo); - List lsEsquemaAsiento = esquemaAsientoService.obtenerPorCorrida(esquemaCorrida); - for (EsquemaAsiento ea : lsEsquemaAsiento) { - AsientoExclusivo asientoExclusivo = new AsientoExclusivo(); - asientoExclusivo.setCorrida(corrida); + corrida.setActivo(Boolean.TRUE); + corrida.setFecmodif(Calendar.getInstance().getTime()); + if (UsuarioLogado.getUsuarioLogado() != null) { + corrida.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + } else { + corrida.setUsuarioId(1); + } + corrida.setIndTipoVenta(null); + + corrida = corridaDAO.suscribir(corrida); + cantCorridaGenerada++; + + List 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.setNodo(corrida.getNodo()); - asientoExclusivo.setNumasiento(ea.getNumasiento()); - asientoExclusivo.setVendible(ea.getIndvendible()); - 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); + } else { + asientoExclusivo.setMotivobloqueo(ea.getMotivobloqueo()); + asientoExclusivo.setDestino(ea.getDestino()); } - }// 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) { log.error(ex); }