diff --git a/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java b/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java index e60037b57..ab6a61a2f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RutaCombinacionDAO.java @@ -22,6 +22,7 @@ import com.rjconsultores.ventaboletos.vo.tarifa.TarifaOficialEscalaGroupVO; import com.rjconsultores.ventaboletos.vo.tarifa.TarifaOficialEscalaVO; import java.util.List; +import java.util.Set; /** * @@ -84,4 +85,6 @@ public interface RutaCombinacionDAO extends GenericDAO public boolean existeTramo(Tramo tramo, ClaseServicio claseServicio); boolean isRutaCombinacionVenda(Integer rutaId, Integer origenId, Integer destinoId); + + public Set rutasCombinacionVenda(List rutas); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java index 291b8a88f..fa7ab0830 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaCombinacionHibernateDAO.java @@ -6,7 +6,9 @@ package com.rjconsultores.ventaboletos.dao.hibernate; import java.math.BigDecimal; import java.util.ArrayList; +import java.util.HashSet; import java.util.List; +import java.util.Set; import org.hibernate.Criteria; import org.hibernate.Query; @@ -868,4 +870,34 @@ public class RutaCombinacionHibernateDAO extends GenericHibernateDAO rutasCombinacionVenda(List rutas) { + if(rutas == null || rutas.isEmpty()) { + return new HashSet(); + } + + List rutasIN = new ArrayList(); + for(Ruta r : rutas) { + rutasIN.add(r.getRutaId()); + } + + StringBuilder sQuery = new StringBuilder(); + sQuery.append("select rc.ruta_id || '-' || t.origen_id || '-' || t.destino_id ") + .append("from ruta_combinacion rc ") + .append("join tramo t on t.tramo_id = rc.tramo_id ") + .append("where rc.activo = 1 ") + .append("and rc.indventa = 1 ") + .append("and t.activo = 1 ") + .append("and rc.ruta_id in (:rutas) "); + + Query qr = getSession().createSQLQuery(sQuery.toString()); + + qr.setParameterList("rutas", rutasIN); + + List lista = qr.list(); + + return new HashSet(lista); + } + } diff --git a/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java b/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java index c7c819439..604ea0ae6 100644 --- a/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java +++ b/src/com/rjconsultores/ventaboletos/service/RutaCombinacionService.java @@ -19,6 +19,7 @@ import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa; import java.util.ArrayList; import java.util.List; +import java.util.Set; import org.apache.poi.hssf.usermodel.HSSFWorkbook; @@ -72,4 +73,6 @@ public interface RutaCombinacionService extends GenericService rutasCombinacionVenda(List rutas); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConexionRutaCombinacionServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConexionRutaCombinacionServiceImpl.java index e07f8faa3..08cff34f6 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConexionRutaCombinacionServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConexionRutaCombinacionServiceImpl.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -55,18 +56,22 @@ public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinaci combinacoes = novasCombinacoes; } //System.out.println(combinacoes); + + Set rutasVendaA = rutaCombinacionService.rutasCombinacionVenda(rutasEixoA); + Set rutasVendaB = rutaCombinacionService.rutasCombinacionVenda(rutasEixoB); if(rutasEixoC == null) { - gerarLocalidadesEixoAB(rutasEixoA, rutasEixoB, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades); + gerarLocalidadesEixoAB(rutasEixoA, rutasEixoB, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades, rutasVendaA, rutasVendaB); }else { - gerarLocalidadesEixoABC(rutasEixoA, rutasEixoB,rutasEixoC, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades); + Set rutasVendaC = rutaCombinacionService.rutasCombinacionVenda(rutasEixoC); + gerarLocalidadesEixoABC(rutasEixoA, rutasEixoB,rutasEixoC, localidadesGeradas, combinacoes, conexoesCtrl, cacheLocalidades, rutasVendaA, rutasVendaB, rutasVendaC ); } Collections.sort(localidadesGeradas, new OrdenarLocalidadesGeradas()); } - private void gerarLocalidadesEixoAB(List rutasEixoA, List rutasEixoB, List localidadesGeradas, Set combinacoes, List conexoesCtrl, Map cacheLocalidades) { + private void gerarLocalidadesEixoAB(List rutasEixoA, List rutasEixoB, List localidadesGeradas, Set combinacoes, List conexoesCtrl, Map cacheLocalidades, Set rutasVendaA, Set rutasVendaB) { short i = 1; String[] valoresCalculados; @@ -95,7 +100,7 @@ public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinaci conexionCtrl, conexionRutaCtrl, rutaEixoB.getDescSentido()); i++; - adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, null); + adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, null, rutasVendaA, rutasVendaB, new HashSet()); i = 1; } @@ -141,22 +146,22 @@ public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinaci } - private void adicionarLocalidadeGerada(ConexionCtrlVO conexionCtrl, List localidadesGeradas, ParadaVOConexionRuta trechoA, ParadaVOConexionRuta trechoB, ParadaVOConexionRuta trechoC) { + private void adicionarLocalidadeGerada(ConexionCtrlVO conexionCtrl, List localidadesGeradas, ParadaVOConexionRuta trechoA, ParadaVOConexionRuta trechoB, ParadaVOConexionRuta trechoC, Set rutasVendaA, Set rutasVendaB, Set rutasVendaC) { boolean isTrechoAVende = false; boolean isTrechoBVende = false; if(isDadosNotNull(trechoA)) { - isTrechoAVende = rutaCombinacionService.isRutaCombinacionVenda(trechoA.getRutaId(), trechoA.getParadaOrigem().getParadaId(), trechoA.getParadaDestino().getParadaId()); + isTrechoAVende = rutasVendaA == null ? false : rutasVendaA.contains(trechoA.getRutaId() + "-" + trechoA.getParadaOrigem().getParadaId() + "-" + trechoA.getParadaDestino().getParadaId()); } if(isDadosNotNull(trechoB)) { - isTrechoBVende = rutaCombinacionService.isRutaCombinacionVenda(trechoB.getRutaId(), trechoB.getParadaOrigem().getParadaId(), trechoB.getParadaDestino().getParadaId()); + isTrechoBVende = rutasVendaB == null ? false : rutasVendaB.contains(trechoB.getRutaId() + "-" + trechoB.getParadaOrigem().getParadaId() + "-" + trechoB.getParadaDestino().getParadaId()); } boolean isTrechoCVende = true; if(trechoC != null) { if(isDadosNotNull(trechoC)) { - isTrechoCVende = rutaCombinacionService.isRutaCombinacionVenda(trechoC.getRutaId(), trechoC.getParadaOrigem().getParadaId(), trechoC.getParadaDestino().getParadaId()); + isTrechoCVende = rutasVendaC == null ? false : rutasVendaC.contains(trechoC.getRutaId() + "-" + trechoC.getParadaOrigem().getParadaId() + "-" + trechoC.getParadaDestino().getParadaId()); } else { isTrechoCVende = false; } @@ -174,7 +179,7 @@ public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinaci } } - private void gerarLocalidadesEixoABC(List rutasEixoA, List rutasEixoB, List rutasEixoC, List localidadesGeradas, Set combinations, List conexoesCtrl, Map cacheLocalidades) { + private void gerarLocalidadesEixoABC(List rutasEixoA, List rutasEixoB, List rutasEixoC, List localidadesGeradas, Set combinations, List conexoesCtrl, Map cacheLocalidades, Set rutasVendaA, Set rutasVendaB, Set rutasVendaC) { short i = 1; String[] valoresCalculados = null; @@ -210,7 +215,7 @@ public class ConexionRutaCombinacionServiceImpl implements ConexionRutaCombinaci conexionCtrl, conexionRutaCtrl, rutaEixoC.getDescSentido()); i++; - adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, trechoC); + adicionarLocalidadeGerada(conexionCtrl, localidadesGeradas, trechoA, trechoB, trechoC, rutasVendaA, rutasVendaB, rutasVendaC); i = 1; } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java index 6e69a282a..5bb37f7c1 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/RutaCombinacionServiceImpl.java @@ -29,6 +29,7 @@ import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.List; +import java.util.Set; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFCellStyle; @@ -445,4 +446,9 @@ public class RutaCombinacionServiceImpl implements RutaCombinacionService { public boolean isRutaCombinacionVenda(Integer rutaId, Integer origenId, Integer destinoId) { return rutaCombinacionDAO.isRutaCombinacionVenda(rutaId, origenId, destinoId); } + + @Override + public Set rutasCombinacionVenda(List rutas) { + return rutaCombinacionDAO.rutasCombinacionVenda(rutas); + } }