fixes bug#23906

dev: Wallace
qua: 

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@110090 d1611594-4594-4d17-8e1d-87c2c4800839
master
julio 2021-12-21 21:30:04 +00:00
parent 179555eb79
commit e494df0924
1 changed files with 54 additions and 7 deletions

View File

@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
@ -90,7 +91,7 @@ public class ConexionHibernateDAO extends GenericHibernateDAO<Conexion, Integer>
@Override
public List<ConexionVO> buscarConexiones(boolean isBuscaAgrupada, Integer origenId, Integer destinoId) {
String queryStr = getQueryConexiones(isBuscaAgrupada, origenId, destinoId);
String queryStr = getQueryConexiones(origenId, destinoId);
Query query = getSession().createSQLQuery(queryStr);
List<Object[]> list = query.list();
@ -109,15 +110,62 @@ public class ConexionHibernateDAO extends GenericHibernateDAO<Conexion, Integer>
vos.add(vo);
}
if (isBuscaAgrupada) {
return agruparConexiones(vos);
}
return vos;
}
private String getQueryConexiones(boolean isBuscaAgrupada, Integer origenId, Integer destinoId) {
private List<ConexionVO> agruparConexiones(List<ConexionVO> conexiones) {
LinkedHashMap<String, List<ConexionVO>> map = new LinkedHashMap<String, List<ConexionVO>>();
List<ConexionVO> agrpVo = new ArrayList<ConexionVO>();
String grupoTrecho = null;
Integer grupo = null;
for (ConexionVO vo : conexiones) {
if (grupo == null)
grupo = vo.getGrupo();
if (!grupo.equals(vo.getGrupo())) {
if (!map.containsKey(grupoTrecho)) {
map.put(grupoTrecho, agrpVo);
}
grupo = vo.getGrupo();
grupoTrecho = null;
agrpVo = new ArrayList<ConexionVO>();
}
if (grupo.equals(vo.getGrupo())) {
if (grupoTrecho == null) {
grupoTrecho = vo.getTramoOrigen() + ";" + vo.getTramoDestino() + ";";
} else {
grupoTrecho += vo.getTramoOrigen() + ";" + vo.getTramoDestino() + ";";
}
agrpVo.add(vo);
}
}
List<ConexionVO> agrupados = new ArrayList<ConexionVO>();
for (Map.Entry<String, List<ConexionVO>> entry : map.entrySet()) {
agrupados.addAll(entry.getValue());
}
return agrupados;
}
private String getQueryConexiones(Integer origenId, Integer destinoId) {
StringBuilder sb = new StringBuilder();
sb.append(" select ");
sb.append(isBuscaAgrupada ? " max(c.numgrupo) as grupo, " : " c.numgrupo as grupo, ");
sb.append(" c.numgrupo as grupo, ");
sb.append(" cc.conexionctrl_id as conexionCtrlId, occ.descparada as conOrigen, dcc.descparada as conDestino, ");
sb.append(" oc.descparada as tramoOrigen, dc.descparada as tramoDestino, c.numsecuencia as numsecuencia ");
sb.append(" from conexion_ctrl cc ");
@ -137,14 +185,13 @@ public class ConexionHibernateDAO extends GenericHibernateDAO<Conexion, Integer>
sb.append(" and dc.parada_id = c.destino_id ");
if (origenId != null) {
sb.append(" and cc.origen_id = ").append(origenId);
sb.append(" and cc.origen_id = ").append(origenId);
}
if (destinoId != null) {
sb.append(" and cc.destino_id = ").append(destinoId);
sb.append(" and cc.destino_id = ").append(destinoId);
}
sb.append(isBuscaAgrupada ? " group by cc.conexionctrl_id , occ.descparada, dcc.descparada, oc.descparada, dc.descparada, c.numsecuencia " : "");
sb.append(" order by conOrigen, conDestino, conexionCtrlId, grupo, numsecuencia, tramoOrigen, tramoDestino ");
return sb.toString();
}