|
@@ -1,20 +1,61 @@
|
|
|
package com.xy.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.lang.tree.Tree;
|
|
|
+import cn.hutool.core.lang.tree.TreeNode;
|
|
|
+import cn.hutool.core.lang.tree.TreeUtil;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import com.xy.entity.SysDept;
|
|
|
import com.xy.mapper.SysDeptMapper;
|
|
|
import com.xy.service.SysDeptService;
|
|
|
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.xy.utils.R;
|
|
|
+import io.swagger.annotations.Api;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-/**
|
|
|
- * <p>
|
|
|
- * 部门表; 服务实现类
|
|
|
- * </p>
|
|
|
- *
|
|
|
- * @author lijin
|
|
|
- * @since 2022-12-09
|
|
|
+import java.util.Comparator;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+/***
|
|
|
+ * 部门管理实现类
|
|
|
+ * @author 谭斌
|
|
|
+ * @date 2022/12/13 14:01
|
|
|
*/
|
|
|
+@Api(tags = "部门管理")
|
|
|
@Service
|
|
|
public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> implements SysDeptService {
|
|
|
|
|
|
+ @Override
|
|
|
+ public R<List<Tree<Long>>> deptTrees(Long sysId) {
|
|
|
+ List<Tree<Long>> deptTree = getDeptTree(this.list(Wrappers.<SysDept>lambdaQuery().eq(SysDept::getSysId, sysId)), 0L);
|
|
|
+ return R.ok(deptTree);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获得部门树
|
|
|
+ *
|
|
|
+ * @param deptList 部门集合
|
|
|
+ * @param parentId 父级id
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ private List<Tree<Long>> getDeptTree(List<SysDept> deptList, Long parentId) {
|
|
|
+ List<TreeNode<Long>> collect = deptList.stream().filter(dept -> dept.getId() != dept.getParentId())
|
|
|
+ .sorted(Comparator.comparingInt(SysDept::getSortNum)).map(dept -> {
|
|
|
+ TreeNode<Long> treeNode = new TreeNode();
|
|
|
+ treeNode.setId(dept.getId());
|
|
|
+ treeNode.setParentId(dept.getParentId());
|
|
|
+ treeNode.setName(dept.getName());
|
|
|
+ treeNode.setWeight(dept.getSortNum());
|
|
|
+ // 扩展属性
|
|
|
+ Map<String, Object> extra = new HashMap<>(16);
|
|
|
+ extra.put("createTime", dept.getCreateTime());
|
|
|
+ extra.put("code", dept.getCode());
|
|
|
+ treeNode.setExtra(extra);
|
|
|
+ return treeNode;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+
|
|
|
+ return TreeUtil.build(collect, parentId);
|
|
|
+ }
|
|
|
}
|