diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java index 25afd054..16dd52b2 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/DeptController.java @@ -25,10 +25,7 @@ import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; import javax.validation.Valid; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; @@ -128,6 +125,48 @@ public class DeptController { return success(BeanUtils.toBean(list, DeptSimpleRespVO.class)); } + @GetMapping(value = {"/address-book-list"}) + @Operation(summary = "获取通讯录部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项") + public CommonResult> getAddressBookDeptList(@RequestParam("id") Long id) { + List list = deptService.getDeptList( + new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); + + // 获得所有得虚机构部门信息 + List virtuallyDeptId = list.stream() + .filter(dept -> dept.getVirtuallyStatus() == 1) + .collect(Collectors.toList()); + + virtuallyDeptId.forEach(data -> { + + // 将虚机构的子部门,父部门设置为虚机构的父部门 + list.stream().filter(dept -> dept.getParentId().equals(data.getId())) + .map(dept -> dept.setParentId(data.getParentId())) + .collect(Collectors.toList()); + + }); + + // 移除虚机构,不展示 + list.removeIf(dept -> dept.getVirtuallyStatus() == 1); + + //根据当前用户的部门ID,查询部门信息 -- 这里需要一个不用数据权限查询部门信息的方法 + DeptDO userDept = deptService.getDeptNoPermission(id); + //部门类型 + String type = userDept.getType() ; + // + List list1 = deptService.getDeptListByType( + new DeptListReqVO().setType(type).setStatus(CommonStatusEnum.ENABLE.getStatus())); + + // 合并list和list1(根据ID去重) + Set existingIds = list.stream().map(DeptDO::getId).collect(Collectors.toSet()); + List combinedList = new ArrayList<>(list); // 初始化为list的副本 + // 添加list1中不重复的部门 + list1.stream() + .filter(dept -> !existingIds.contains(dept.getId())) + .forEach(combinedList::add); + + return success(BeanUtils.toBean(combinedList, DeptSimpleRespVO.class)); + } + @GetMapping(value = {"/list-all-simple", "/simple-list"}) @Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项") public CommonResult> getSimpleDeptList() { diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java index e8496de4..e9ce9491 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/dept/vo/dept/DeptListReqVO.java @@ -18,4 +18,7 @@ public class DeptListReqVO { @Schema(description = "是否为虚机构 | 0否 1是") private Integer virtuallyStatus; + + @Schema(description = "部门类型") + private String type; } diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java index 6a94d5a6..df568faa 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/user/UserController.java @@ -145,7 +145,7 @@ public class UserController { @GetMapping("/page-permission") @Operation(summary = "获得用户分页列表 | 无数据权限接口") - @PreAuthorize("@ss.hasPermission('system:user:list')") +// @PreAuthorize("@ss.hasPermission('system:user:list')") @DataPermission(enable = false) public CommonResult> getUserPageNoPermission(@Valid UserPageReqVO pageReqVO) { // 获得用户分页列表 diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java index 33d8352b..c460bc06 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/dept/DeptMapper.java @@ -16,6 +16,13 @@ import java.util.List; @Mapper public interface DeptMapper extends BaseMapperX { + + default List selectListByType(DeptListReqVO reqVO) { + return selectList(new LambdaQueryWrapperX() + .eqIfPresent(DeptDO::getType, reqVO.getType()) + .eqIfPresent(DeptDO::getStatus, reqVO.getStatus())); + } + default List selectList(DeptListReqVO reqVO) { return selectList(new LambdaQueryWrapperX() .likeIfPresent(DeptDO::getName, reqVO.getName()) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java index 406bf3c2..3ce1e8ce 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptService.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.system.service.dept; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.datapermission.core.annotation.DataPermission; import cn.iocoder.yudao.module.system.api.dept.dto.DeptApiDTO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptListReqVO; import cn.iocoder.yudao.module.system.controller.admin.dept.vo.dept.DeptSaveReqVO; @@ -53,6 +54,10 @@ public interface DeptService { */ DeptDO getDept(Long id); + @DataPermission(enable = false) + DeptDO getDeptNoPermission(Long id); + + List getDeptListNoPermission(Collection ids); /** * 获得部门信息数组 * @@ -69,6 +74,15 @@ public interface DeptService { */ List getDeptList(DeptListReqVO reqVO); + /** + * 根据部门类型筛选部门列表 + * + * @param reqVO 筛选条件请求 VO + * @return 部门列表 + */ + @DataPermission(enable = false) + List getDeptListByType(DeptListReqVO reqVO); + /** * 获得指定编号的部门 Map * diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java index 8b750416..c980d756 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java @@ -234,6 +234,21 @@ public class DeptServiceImpl implements DeptService { return deptMapper.selectById(id); } + @DataPermission(enable = false) + @Override + public DeptDO getDeptNoPermission(Long id) { + return deptMapper.selectById(id); + } + + @DataPermission(enable = false) + @Override + public List getDeptListNoPermission(Collection ids){ + if (CollUtil.isEmpty(ids)) { + return Collections.emptyList(); + } + return deptMapper.selectBatchIds(ids); + } + @Override public List getDeptList(Collection ids) { if (CollUtil.isEmpty(ids)) { @@ -249,6 +264,14 @@ public class DeptServiceImpl implements DeptService { return list; } + @Override + @DataPermission(enable = false) + public List getDeptListByType(DeptListReqVO reqVO) { + List list = deptMapper.selectListByType(reqVO); + list.sort(Comparator.comparing(DeptDO::getSort)); + return list; + } + @Override public List getChildDeptList(Long id) { List children = new LinkedList<>();