| | |
| | | import annotation.DataScope; |
| | | import com.ycl.exception.ServiceException; |
| | | import com.ycl.platform.base.BaseSelect; |
| | | import com.ycl.platform.base.Cascader; |
| | | import com.ycl.platform.domain.vo.screen.DeptAreaVO; |
| | | import com.ycl.system.Result; |
| | | import com.ycl.system.domain.TreeSelect; |
| | | import com.ycl.system.entity.SysDept; |
| | |
| | | import org.springframework.stereotype.Service; |
| | | import utils.text.Convert; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.Iterator; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * 部门管理 服务实现 |
| | | * |
| | | * |
| | | * @author ruoyi |
| | | */ |
| | | @Service |
| | |
| | | |
| | | /** |
| | | * 查询部门管理数据 |
| | | * |
| | | * |
| | | * @param dept 部门信息 |
| | | * @return 部门信息集合 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询部门树结构信息 |
| | | * |
| | | * |
| | | * @param dept 部门信息 |
| | | * @return 部门树信息集合 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 构建前端所需要树结构 |
| | | * |
| | | * |
| | | * @param depts 部门列表 |
| | | * @return 树结构列表 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 构建前端所需要下拉树结构 |
| | | * |
| | | * |
| | | * @param depts 部门列表 |
| | | * @return 下拉树结构列表 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 根据角色ID查询部门树信息 |
| | | * |
| | | * |
| | | * @param roleId 角色ID |
| | | * @return 选中部门列表 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 根据部门ID查询信息 |
| | | * |
| | | * |
| | | * @param deptId 部门ID |
| | | * @return 部门信息 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 根据ID查询所有子部门(正常状态) |
| | | * |
| | | * |
| | | * @param deptId 部门ID |
| | | * @return 子部门数 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 是否存在子节点 |
| | | * |
| | | * |
| | | * @param deptId 部门ID |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 查询部门是否存在用户 |
| | | * |
| | | * |
| | | * @param deptId 部门ID |
| | | * @return 结果 true 存在 false 不存在 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 校验部门名称是否唯一 |
| | | * |
| | | * |
| | | * @param dept 部门信息 |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 校验部门是否有数据权限 |
| | | * |
| | | * |
| | | * @param deptId 部门id |
| | | */ |
| | | @Override |
| | |
| | | |
| | | /** |
| | | * 新增保存部门信息 |
| | | * |
| | | * |
| | | * @param dept 部门信息 |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 修改保存部门信息 |
| | | * |
| | | * |
| | | * @param dept 部门信息 |
| | | * @return 结果 |
| | | */ |
| | |
| | | |
| | | /** |
| | | * 修改该部门的父级部门状态 |
| | | * |
| | | * |
| | | * @param dept 当前部门 |
| | | */ |
| | | private void updateParentDeptStatusNormal(SysDept dept) |
| | |
| | | |
| | | /** |
| | | * 修改子元素关系 |
| | | * |
| | | * |
| | | * @param deptId 被修改的部门ID |
| | | * @param newAncestors 新的父ID集合 |
| | | * @param oldAncestors 旧的父ID集合 |
| | |
| | | |
| | | /** |
| | | * 删除部门管理信息 |
| | | * |
| | | * |
| | | * @param deptId 部门ID |
| | | * @return 结果 |
| | | */ |
| | |
| | | return deptMapper.deleteDeptById(deptId); |
| | | } |
| | | |
| | | /** |
| | | * 部门下拉列表 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result all() { |
| | | List<BaseSelect> vos = deptMapper.selectDeptList(new SysDept()).stream().map(sysDept -> { |
| | |
| | | } |
| | | ).collect(Collectors.toList()); |
| | | return Result.ok().data(vos); |
| | | } |
| | | /** |
| | | * 区域下拉列表 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public Result pullList() { |
| | | List<BaseSelect> vos = deptMapper.selectDeptList(new SysDept()).stream().filter(sysDept -> sysDept.getArea()!=null).map(sysDept -> { |
| | | BaseSelect baseSelect = new BaseSelect(); |
| | | baseSelect.setId(Integer.parseInt(sysDept.getDeptId() + "")); |
| | | baseSelect.setValue(sysDept.getArea()); |
| | | return baseSelect; |
| | | } |
| | | ).collect(Collectors.toList()); |
| | | return Result.ok().data(vos); |
| | | } |
| | | |
| | | @Override |
| | | public Result cascader() { |
| | | List<Cascader> data = deptMapper.cascader(); |
| | | return Result.ok().data(this.buildTree(data)); |
| | | } |
| | | |
| | | public List<Cascader> buildTree(List<Cascader> cascaders) { |
| | | // 创建一个映射,以parentId为键,对应的子节点列表为值 |
| | | Map<Long, List<Cascader>> map = new HashMap<>(); |
| | | for (Cascader cascader : cascaders) { |
| | | Long parentId = cascader.getParentId(); |
| | | map.computeIfAbsent(parentId, k -> new ArrayList<>()).add(cascader); |
| | | } |
| | | |
| | | // 递归函数,用于构建树 |
| | | List<Cascader> tree = new ArrayList<>(); |
| | | for (Cascader cascader : cascaders) { |
| | | if (cascader.getParentId().equals(0L)) { // 根节点 |
| | | tree.add(setChildren(cascader, map)); |
| | | } |
| | | } |
| | | |
| | | // 更新原始列表为树形结构 |
| | | cascaders.clear(); |
| | | cascaders.addAll(tree); |
| | | return cascaders; |
| | | } |
| | | |
| | | private Cascader setChildren(Cascader cascader, Map<Long, List<Cascader>> map) { |
| | | List<Cascader> children = map.getOrDefault(cascader.getValue(), new ArrayList<>()); |
| | | for (Cascader child : children) { |
| | | setChildren(child, map); // 递归设置子节点的子节点 |
| | | } |
| | | cascader.setChildren(children); |
| | | return cascader; |
| | | } |
| | | |
| | | /** |
| | |
| | | { |
| | | return getChildList(list, t).size() > 0; |
| | | } |
| | | |
| | | @Override |
| | | public List<DeptAreaVO> dashboard() { |
| | | return deptMapper.dashboard(); |
| | | } |
| | | } |