From 88794f903926bebc743e5cd62bca19c80f51d4b2 Mon Sep 17 00:00:00 2001 From: gleimar Date: Tue, 19 Sep 2017 01:16:23 +0000 Subject: [PATCH] fixes bug#9842 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@73958 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/EsquemaCorridaDAO.java | 10 + .../hibernate/EsquemaCorridaHibernateDAO.java | 31 ++- .../ventaboletos/entidad/EsquemaCorrida.java | 21 -- .../service/impl/CorridaServiceImpl.java | 219 ++++++++---------- 4 files changed, 139 insertions(+), 142 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/EsquemaCorridaDAO.java b/src/com/rjconsultores/ventaboletos/dao/EsquemaCorridaDAO.java index 77c7c3b8c..003dbee68 100644 --- a/src/com/rjconsultores/ventaboletos/dao/EsquemaCorridaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/EsquemaCorridaDAO.java @@ -64,4 +64,14 @@ public interface EsquemaCorridaDAO extends GenericDAO { public List buscaDentroVigenciaQtdeDiasNull(Date dataGeracao); public List buscaDentroVigenciaQtdeDiasNotNull(Date dataDe); + + /** + * Indica se o esquema é o indicado como segundo piso nas configuações de doble piso + * + * @param esquemaCorrida + * @return + */ + public boolean esSegundoPiso(EsquemaCorrida esquemaCorrida); + + EsquemaCorrida buscarPeloNumCorrida(Integer numCorrida); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaCorridaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaCorridaHibernateDAO.java index 7a0ee2d3f..95d294e10 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaCorridaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaCorridaHibernateDAO.java @@ -106,6 +106,22 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO 0); } + /** + * Indica se o esquema é o indicado como segundo piso nas configuações de doble piso + * + * @param esquemaCorrida + * @return + */ + public boolean esSegundoPiso(EsquemaCorrida esquemaCorrida) { + Criteria c = makeCriteria(); + c.setProjection(Projections.rowCount()); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("numCorridaPisoExtra", esquemaCorrida.getNumCorrida())); + + Long cant = HibernateFix.count(c.list()); + + return (cant > 0); + } @Override public List buscaDentroVigencia(Date dataGeracao) { @@ -190,9 +206,8 @@ public class EsquemaCorridaHibernateDAO extends GenericHibernateDAO buscaDentroVigenciaQtdeDiasNotNull(Date dataGeracao) { diff --git a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java index 6343a2a55..fee397ec1 100644 --- a/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java +++ b/src/com/rjconsultores/ventaboletos/entidad/EsquemaCorrida.java @@ -74,9 +74,6 @@ public class EsquemaCorrida implements Serializable { @JoinColumn(name = "ROLOPERATIVO_ID", referencedColumnName = "ROLOPERATIVO_ID") @ManyToOne(cascade = CascadeType.ALL) private RolOperativo rolOperativo; - @JoinColumn(name = "ROLOPERATIVO2_ID", referencedColumnName = "ROLOPERATIVO_ID") - @ManyToOne(cascade = CascadeType.ALL) - private RolOperativo rolOperativo2; @JoinColumn(name = "MARCA_ID", referencedColumnName = "MARCA_ID") @ManyToOne private Marca marca; @@ -92,9 +89,6 @@ public class EsquemaCorrida implements Serializable { @JoinColumn(name = "CLASESERVICIO_ID", referencedColumnName = "CLASESERVICIO_ID") @ManyToOne(cascade = CascadeType.ALL) private ClaseServicio claseServicio; - @JoinColumn(name = "CLASESERVICIO2_ID", referencedColumnName = "CLASESERVICIO_ID") - @ManyToOne(cascade = CascadeType.ALL) - private ClaseServicio claseServicio2; @OneToMany(cascade = CascadeType.ALL) @JoinColumn(name = "ESQUEMACORRIDA_ID", referencedColumnName = "ESQUEMACORRIDA_ID") private List esquemaTramoList; @@ -417,21 +411,6 @@ public class EsquemaCorrida implements Serializable { this.esquemaCorridaRebote = esquemaCorridaRebote; } - public ClaseServicio getClaseServicio2() { - return claseServicio2; - } - - public void setClaseServicio2(ClaseServicio claseServicio2) { - this.claseServicio2 = claseServicio2; - } - - public RolOperativo getRolOperativo2() { - return rolOperativo2; - } - - public void setRolOperativo2(RolOperativo rolOperativo2) { - this.rolOperativo2 = rolOperativo2; - } public Integer getNumCorrida() { return numCorrida; diff --git a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java index dbef73882..7a5ab7235 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/CorridaServiceImpl.java @@ -44,7 +44,6 @@ import com.rjconsultores.ventaboletos.entidad.EsquemaTramo; import com.rjconsultores.ventaboletos.entidad.Estado; import com.rjconsultores.ventaboletos.entidad.Marca; import com.rjconsultores.ventaboletos.entidad.Parada; -import com.rjconsultores.ventaboletos.entidad.RolOperativo; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.Tramo; @@ -450,7 +449,7 @@ public class CorridaServiceImpl implements CorridaService { Marca marca = esquemaCorrida.getMarca(); Date horario = esquemaCorrida.getHorasalida(); horario = DateUtil.normalizar(horario); - Integer numCorrida = (!isPisoExtra) ? esquemaCorrida.getNumCorrida() : esquemaCorrida.getNumCorridaPisoExtra(); + Integer numCorrida = esquemaCorrida.getNumCorrida(); Corrida.Id id = new Corrida.Id(); @@ -560,12 +559,6 @@ public class CorridaServiceImpl implements CorridaService { 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; @@ -837,126 +830,116 @@ public class CorridaServiceImpl implements CorridaService { log.info("esquema=" + esquemaCorrida.getEsquemacorridaId() + " numCorrida=" + esquemaCorrida.getNumCorrida()); - if (!esquemaCorridaDAO.esHijoRebote(esquemaCorrida)) { - Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado); - Corrida corridaPisoExtra = null; + boolean esHijoRebote = esquemaCorridaDAO.esHijoRebote(esquemaCorrida); + boolean esSegundoPiso = esquemaCorridaDAO.esSegundoPiso(esquemaCorrida); + + //Nessas duas condições, o "filho" só é gerado a partir do esquema corrida "pai" + if (esHijoRebote || esSegundoPiso) { + log.info(String.format("Esquema nao gerado. esHijoRebote:%s ; esSegundoPiso: %s",esHijoRebote,esSegundoPiso)); + continue; + } + + Corrida corrida = generarCorrida(esquemaCorrida, dataGeracao, false, isFeriado); + Corrida corridaPisoExtra = null; - if (corrida == null) {// Si no genera la corrida, no va a - // generar el rebote - log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao); - continue; + if (corrida == null) {// Si no genera la corrida, no va a + // generar el rebote + log.info("No fue generado corrida. Esquema " + esquemaCorrida.getEsquemacorridaId() + " Data" + dataGeracao); + continue; + } + + // PISO EXTRA + if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) { + + EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(esquemaCorrida.getNumCorridaPisoExtra()); + + log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",esquemaCorrida.getEsquemacorridaId(),esquemaCorrida.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() )); + + corridaPisoExtra = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado); + + if (corrida != null && corridaPisoExtra != null) { + + // Salvando Referencia da Corrida no piso extra + corridaPisoExtra.setCorridaPiso(corrida); + corridaPisoExtra.setNumPiso(2); + corridaPisoExtra = corridaDAO.actualizacion(corridaPisoExtra); + + // Referencia do Piso extra na Corrida + corrida.setCorridaPiso(corridaPisoExtra); + corrida.setNumPiso(1); + corrida = corridaDAO.actualizacion(corrida); + } + } + + if (esquemaCorrida.getEsquemaCorridaRebote() != null) { + log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId()); + + Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado); + Corrida corridaPisoExtraRebote = null; + boolean generaReboteDiaSeguinte = false; + + if (corridaRebote != null) { + EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote(); + if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) { + + EsquemaCorrida esquemaCorridaSegundoPiso = esquemaCorridaDAO.buscarPeloNumCorrida(ecRebote.getNumCorridaPisoExtra()); + + log.info(String.format("Esquema/Corrida primeiro piso: %s/%s ; Esquema/Corrida segundo piso: %s/%s ",ecRebote.getEsquemacorridaId(),ecRebote.getNumCorrida(), esquemaCorridaSegundoPiso.getEsquemacorridaId(),esquemaCorridaSegundoPiso.getNumCorrida() )); + + corridaPisoExtraRebote = generarCorrida(esquemaCorridaSegundoPiso, dataGeracao, true, isFeriado); + + if (corridaRebote != null && corridaPisoExtraRebote != null) { + // Salvando Referencia da Corrida no piso extra + corridaPisoExtraRebote.setCorridaPiso(corridaRebote); + corridaPisoExtraRebote.setNumPiso(2); + corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote); + + // Referencia do Piso extra na Corrida + corridaRebote.setCorridaPiso(corridaPisoExtraRebote); + corridaRebote.setNumPiso(1); + corridaRebote = corridaDAO.actualizacion(corridaRebote); + } + } + // RebotePisoExtra + if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) { + generaReboteDiaSeguinte = true; // si fue generado + // con una + // fechamenor tienes + // que generar para + // el dia seguinte + } + } else { + generaReboteDiaSeguinte = true;// si no fue encontrado + // para el dia de + // hoy,genera para + // manhana } - // PISO EXTRA - if (esquemaCorrida.getPisoExtra() != null && esquemaCorrida.getPisoExtra()) { - // Invertendo RolOperativo e Classe de Servico para o Piso - // Extra - RolOperativo ro = esquemaCorrida.getRolOperativo(); - ClaseServicio cs = esquemaCorrida.getClaseServicio(); + if (generaReboteDiaSeguinte) { + log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy"); - esquemaCorrida.setRolOperativo(esquemaCorrida.getRolOperativo2()); - esquemaCorrida.setClaseServicio(esquemaCorrida.getClaseServicio2()); + corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao); - corridaPisoExtra = generarCorrida(esquemaCorrida, dataGeracao, true, isFeriado); - if (corrida != null && corridaPisoExtra != null) { - // Voltando RolOperativo e Classe de Servico - esquemaCorrida.setRolOperativo(ro); - esquemaCorrida.setClaseServicio(cs); + if (corridaPisoExtraRebote != null) { + corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao); + } - // Salvando Referencia da Corrida no piso extra - corridaPisoExtra.setCorridaPiso(corrida); - corridaPisoExtra.setNumPiso(2); - corridaPisoExtra = corridaDAO.actualizacion(corridaPisoExtra); - - // Referencia do Piso extra na Corrida - corrida.setCorridaPiso(corridaPisoExtra); - corrida.setNumPiso(1); - corrida = corridaDAO.actualizacion(corrida); - } else { - // Voltando RolOperativo e Classe de Servico - // estava dando problema porque não estava voltando o roloperativo e nem a classe. - // daí, no caso de double piso, passava a gerar os próximos com classe errada. mantis 7075 - esquemaCorrida.setRolOperativo(ro); - esquemaCorrida.setClaseServicio(cs); + if (corridaRebote == null) { + log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao); } } - - if (esquemaCorrida.getEsquemaCorridaRebote() != null) { - log.info("Corrida Rebote=" + esquemaCorrida.getEsquemacorridaId()); - - Corrida corridaRebote = generarCorrida(esquemaCorrida.getEsquemaCorridaRebote(), dataGeracao, false, isFeriado); - Corrida corridaPisoExtraRebote = null; - boolean generaReboteDiaSeguinte = false; - - if (corridaRebote != null) { - EsquemaCorrida ecRebote = esquemaCorrida.getEsquemaCorridaRebote(); - if (ecRebote.getPisoExtra() != null && ecRebote.getPisoExtra()) { - // Invertendo RolOperativo e Classe de Servico - // para - // o Piso Extra - RolOperativo ro = ecRebote.getRolOperativo(); - ClaseServicio cs = ecRebote.getClaseServicio(); - - ecRebote.setRolOperativo(ecRebote.getRolOperativo2()); - ecRebote.setClaseServicio(ecRebote.getClaseServicio2()); - - corridaPisoExtraRebote = generarCorrida(ecRebote, dataGeracao, true, isFeriado); - if (corridaRebote != null && corridaPisoExtraRebote != null) { - // Salvando Referencia da Corrida no piso extra - corridaPisoExtraRebote.setCorridaPiso(corridaRebote); - corridaPisoExtraRebote.setNumPiso(2); - corridaPisoExtraRebote = corridaDAO.actualizacion(corridaPisoExtraRebote); - - // Voltando RolOperativo e Classe de Servico - ecRebote.setRolOperativo(ro); - ecRebote.setClaseServicio(cs); - - // Referencia do Piso extra na Corrida - corridaRebote.setCorridaPiso(corridaPisoExtraRebote); - corridaRebote.setNumPiso(1); - corridaRebote = corridaDAO.actualizacion(corridaRebote); - } - } - // RebotePisoExtra - if (DateUtil.compareDate(corrida.getFechorsalida(), corridaRebote.getFechorsalida()) > 0) { - generaReboteDiaSeguinte = true; // si fue generado - // con una - // fechamenor tienes - // que generar para - // el dia seguinte - } - } else { - generaReboteDiaSeguinte = true;// si no fue encontrado - // para el dia de - // hoy,genera para - // manhana - } - - if (generaReboteDiaSeguinte) { - log.info("Haciendo la busqueda por el esquema rebote para el dia seguiente pues ya existe al dia de hoy"); - - corridaRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao); - - if (corridaPisoExtraRebote != null) { - corridaPisoExtraRebote = generarReboteDiaSeguinte(esquemaCorrida, dataGeracao); - } - - if (corridaRebote == null) { - log.info("No fue posible generar la corrida rebote. No fue encontrado esquema para la fecha del dia seguinte a " + dataGeracao); - } - } - if (corridaRebote != null) { - log.info("Rebote generado=" + corridaRebote.getId()); - corrida.setCorridaRebote(corridaRebote); - corridaDAO.actualizacion(corrida); - } - if (corridaPisoExtraRebote != null && corridaPisoExtra != null) { - log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId()); - corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote); - corridaDAO.actualizacion(corridaPisoExtra); - } + if (corridaRebote != null) { + log.info("Rebote generado=" + corridaRebote.getId()); + corrida.setCorridaRebote(corridaRebote); + corridaDAO.actualizacion(corrida); + } + if (corridaPisoExtraRebote != null && corridaPisoExtra != null) { + log.info("Rebote Piso Extra Generado=" + corridaPisoExtraRebote.getId()); + corridaPisoExtra.setCorridaRebote(corridaPisoExtraRebote); + corridaDAO.actualizacion(corridaPisoExtra); } } + if (cantCorridaGenerada >= cantCorridaCommit) { cantCorridaGenerada = 0;