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-87c2c4800839master
parent
179555eb79
commit
e494df0924
|
@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
@ -90,7 +91,7 @@ public class ConexionHibernateDAO extends GenericHibernateDAO<Conexion, Integer>
|
||||||
@Override
|
@Override
|
||||||
public List<ConexionVO> buscarConexiones(boolean isBuscaAgrupada, Integer origenId, Integer destinoId) {
|
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);
|
Query query = getSession().createSQLQuery(queryStr);
|
||||||
List<Object[]> list = query.list();
|
List<Object[]> list = query.list();
|
||||||
|
@ -109,15 +110,62 @@ public class ConexionHibernateDAO extends GenericHibernateDAO<Conexion, Integer>
|
||||||
vos.add(vo);
|
vos.add(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isBuscaAgrupada) {
|
||||||
|
return agruparConexiones(vos);
|
||||||
|
}
|
||||||
|
|
||||||
return 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();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
sb.append(" select ");
|
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(" 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(" oc.descparada as tramoOrigen, dc.descparada as tramoDestino, c.numsecuencia as numsecuencia ");
|
||||||
sb.append(" from conexion_ctrl cc ");
|
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 ");
|
sb.append(" and dc.parada_id = c.destino_id ");
|
||||||
|
|
||||||
if (origenId != null) {
|
if (origenId != null) {
|
||||||
sb.append(" and cc.origen_id = ").append(origenId);
|
sb.append(" and cc.origen_id = ").append(origenId);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (destinoId != null) {
|
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 ");
|
sb.append(" order by conOrigen, conDestino, conexionCtrlId, grupo, numsecuencia, tramoOrigen, tramoDestino ");
|
||||||
return sb.toString();
|
return sb.toString();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue