1. 数据表结构
数据库名称 | 表名 TREE(帮助文档业务树) | |||||||
---|---|---|---|---|---|---|---|---|
项次 | 主键 | 字段名称 | 数据属性 | 字段别名(英文) Column Heading |
数据值范围 | 字段说明 Text |
||
类型 | 长度 | 小数 | ||||||
1 | 公司别ID | VARCHAR | 50 | compid | 公司别ID | |||
2 | Y | 节点ID | VARCHAR | 50 | nodeId | 节点ID | ||
3 | 上级节点 | VARCHAR | 50 | nodeDir | 上级节点ID | |||
4 | 节点名称 | VARCHAR | 50 | nodeName | 节点名称 | |||
5 | 节点类型 | VARCHAR | 50 | nodeType | 节点类型 | |||
6 | 节点描述 | VARCHAR | 50 | nodeExplain | 节点描述 | |||
7 | 信息代码 | VARCHAR | 50 | uriCode | 信息代码 | |||
8 | 路径地址 | VARCHAR | 50 | url | 路径地址 | |||
9 | 父节点下排序 | VARCHAR | 50 | nextNodeId | 父节点下排序节点,最后节点为“0”,下一个节点指向节点ID | |||
10 | 新增日期 | VARCHAR | 50 | createDate | 新增日期 | |||
11 | 新增时间 | VARCHAR | 50 | createTime | 新增时间 | |||
12 | 修改日期 | VARCHAR | 50 | updateDate | 修改日期 | |||
13 | 修改时间 | VARCHAR | 50 | updateTime | 修改时间 |
2. 数据结构处理方案
先只查询点击的节点ID,查询节点下的子节点,再进行对子节点进行排序
2.1 排序逻辑代码
/**
* @param treeVOList 节点列表
* @param nodeDir 父节点ID
* @return List 返回排序后的父节点下的子节点
*/
private List<TreeVO> getChildren(List<TreeVO> treeVOList, String nodeDir) {
List<TreeVO> treeVOListChildren = new ArrayList();
// 创建迭代器进行数据的循环
Iterator it = treeVOList.iterator();
// 创建一个Map容器进装值
Map<String, TreeVO> entityMap = new HashMap<>();
// 循环列表
while (it.hasNext()) {
TreeVO treeVO = (TreeVO) it.next();
// 判断该节点是否是父节点下的子节点
if (treeVO.getNodeDir().equals(nodeDir)) {
// 进行添加节点数据到集合中
entityMap.put(treeVO.getNextNodeId(), treeVO);
}
}
TreeVO treeVO = null;
for (int i = 0; i < entityMap.size(); i++) {
// 查找最后节点
if (i == 0) {
// 拿到最后节点的数据内容
treeVO = entityMap.get("0");
} else {
// 根据上一个节点的下一个节点拿到当前节点
treeVO = entityMap.get(treeVO.getNodeId());
}
// 提交数据到列表中
treeVOListChildren.add(treeVO);
}
// 倒序
Collections.reverse(treeVOListChildren);
return treeVOListChildren;
}