mirror of https://gitee.com/xiaonuobase/snowy
【修复】修复多个根节点组织机构情况下tree接口排序不一致的问题
parent
64d121f702
commit
76ec2a7c79
|
@ -114,16 +114,18 @@ public class BizOrgServiceImpl extends ServiceImpl<BizOrgMapper, BizOrg> impleme
|
|||
} else {
|
||||
return CollectionUtil.newArrayList();
|
||||
}
|
||||
// 先根据排序码排序
|
||||
List<BizOrg> bizOrgArrayList = CollectionUtil.sort(bizOrgSet, Comparator.comparingInt(BizOrg::getSortCode));
|
||||
// 再重置排序码,解决每次相同排序码顺序不一致的问题
|
||||
for (int i = 0; i < bizOrgArrayList.size(); i++) {
|
||||
bizOrgArrayList.get(i).setSortCode(i);
|
||||
}
|
||||
|
||||
// 修复:使用稳定的排序方式,首先按排序码排序,然后按机构ID排序作为次级条件
|
||||
List<BizOrg> bizOrgArrayList = new ArrayList<>(bizOrgSet);
|
||||
bizOrgArrayList.sort(Comparator.comparingInt(BizOrg::getSortCode)
|
||||
.thenComparing(BizOrg::getId)); // 添加ID作为次级排序条件
|
||||
|
||||
// 转换为TreeNode并构建树
|
||||
List<TreeNode<String>> treeNodeList = bizOrgArrayList.stream().map(bizOrg ->
|
||||
new TreeNode<>(bizOrg.getId(), bizOrg.getParentId(),
|
||||
bizOrg.getName(), bizOrg.getSortCode()).setExtra(JSONUtil.parseObj(bizOrg)))
|
||||
new TreeNode<>(bizOrg.getId(), bizOrg.getParentId(),
|
||||
bizOrg.getName(), bizOrg.getSortCode()).setExtra(JSONUtil.parseObj(bizOrg)))
|
||||
.collect(Collectors.toList());
|
||||
|
||||
return TreeUtil.build(treeNodeList, "0");
|
||||
}
|
||||
|
||||
|
|
|
@ -50,6 +50,7 @@ import vip.xiaonuo.sys.modular.user.entity.SysUser;
|
|||
import vip.xiaonuo.sys.modular.user.enums.SysUserStatusEnum;
|
||||
import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
||||
|
||||
import java.util.Comparator;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
@ -100,6 +101,9 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
|||
@Override
|
||||
public List<Tree<String>> tree() {
|
||||
List<SysOrg> sysOrgList = this.getAllOrgList();
|
||||
// 使用稳定的排序方式,首先按排序码排序,然后按机构ID排序作为次级条件
|
||||
sysOrgList.sort(Comparator.comparingInt(SysOrg::getSortCode)
|
||||
.thenComparing(SysOrg::getId)); // 添加ID作为次级排序条件
|
||||
List<TreeNode<String>> treeNodeList = sysOrgList.stream().map(sysOrg ->
|
||||
new TreeNode<>(sysOrg.getId(), sysOrg.getParentId(),
|
||||
sysOrg.getName(), sysOrg.getSortCode()).setExtra(JSONUtil.parseObj(sysOrg)))
|
||||
|
|
Loading…
Reference in New Issue