feat: 体系树支持根据字段nodeOrder排序,如果字段为null则视为0
This commit is contained in:
+20
@@ -70,6 +70,7 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
|
|||||||
}
|
}
|
||||||
// 调用wrapTreeDataToTreeList方法生成树状数据
|
// 调用wrapTreeDataToTreeList方法生成树状数据
|
||||||
List<LawsTreeNodeModel> lawsTreeNodeModels = FindsTreeNodeChildrenUtil.wrapTreeDataToTreeList(lawsTreeNodes);
|
List<LawsTreeNodeModel> lawsTreeNodeModels = FindsTreeNodeChildrenUtil.wrapTreeDataToTreeList(lawsTreeNodes);
|
||||||
|
this.sortTreeNodes(lawsTreeNodeModels);
|
||||||
// 添加我的收藏节点
|
// 添加我的收藏节点
|
||||||
if ("我的收藏".contains(nodeName) && StringUtils.isBlank(option)) {
|
if ("我的收藏".contains(nodeName) && StringUtils.isBlank(option)) {
|
||||||
LawsTreeNodeModel myCollect = new LawsTreeNodeModel();
|
LawsTreeNodeModel myCollect = new LawsTreeNodeModel();
|
||||||
@@ -83,6 +84,25 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
|
|||||||
return lawsTreeNodeModels;
|
return lawsTreeNodeModels;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对树形结构中的每个节点的子节点按照 nodeOrder 进行排序
|
||||||
|
* @param nodes 树节点列表
|
||||||
|
*/
|
||||||
|
public void sortTreeNodes(List<LawsTreeNodeModel> nodes) {
|
||||||
|
if (nodes == null || nodes.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 对当前层级的节点按 nodeOrder 排序,将 null 视为 0
|
||||||
|
nodes.sort(Comparator.comparingInt(node ->
|
||||||
|
node.getNodeOrder() != null ? node.getNodeOrder() : 0));
|
||||||
|
|
||||||
|
// 递归对每个节点的子节点进行排序
|
||||||
|
for (LawsTreeNodeModel node : nodes) {
|
||||||
|
sortTreeNodes(node.getChildren());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private Set<LawsTreeNode> findPathToRoot(List<LawsTreeNode> allNodes, LawsTreeNode node) {
|
private Set<LawsTreeNode> findPathToRoot(List<LawsTreeNode> allNodes, LawsTreeNode node) {
|
||||||
Set<LawsTreeNode> pathNodes = new HashSet<>();
|
Set<LawsTreeNode> pathNodes = new HashSet<>();
|
||||||
LawsTreeNode[] currentHolder = new LawsTreeNode[1];
|
LawsTreeNode[] currentHolder = new LawsTreeNode[1];
|
||||||
|
|||||||
Reference in New Issue
Block a user