feat: 体系树支持根据字段nodeOrder排序,如果字段为null则视为0

This commit is contained in:
2023-12-22 10:05:06 +08:00
parent 9b1b4191e4
commit b88ace30fd
@@ -70,6 +70,7 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
}
// 调用wrapTreeDataToTreeList方法生成树状数据
List<LawsTreeNodeModel> lawsTreeNodeModels = FindsTreeNodeChildrenUtil.wrapTreeDataToTreeList(lawsTreeNodes);
this.sortTreeNodes(lawsTreeNodeModels);
// 添加我的收藏节点
if ("我的收藏".contains(nodeName) && StringUtils.isBlank(option)) {
LawsTreeNodeModel myCollect = new LawsTreeNodeModel();
@@ -83,6 +84,25 @@ public class LawsTreeNodeServiceImpl extends ServiceImpl<LawsTreeNodeMapper, Law
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) {
Set<LawsTreeNode> pathNodes = new HashSet<>();
LawsTreeNode[] currentHolder = new LawsTreeNode[1];