fix: 设计师列表支持递归查询子部门成员

问题:
- 部门负责人指定设计师时,只能看到直属部门成员
- 如果设计师在2级或3级部门,无法被上级部门负责人看到

修改:
- UserService.getDesignersWithWorkload:
  - 增加 getAllSubDepartmentIds 递归查询方法
  - 使用 IN 查询获取该部门及其所有子部门下的成员
This commit is contained in:
Your Name 2026-01-03 13:57:38 +08:00
parent d08f0a3d47
commit 64f3e25714

View File

@ -1213,7 +1213,9 @@ public class UserService {
queryWrapper.eq(User::getStatus, 1); // 只查询启用的用户
queryWrapper.eq(User::getDeleted, 0); // 未删除
if (deptId != null) {
queryWrapper.eq(User::getDeptId, deptId);
// 递归获取所有子部门ID(包含自身)
List<Long> allDeptIds = getAllSubDepartmentIds(deptId);
queryWrapper.in(User::getDeptId, allDeptIds);
}
queryWrapper.orderByAsc(User::getRealName);
@ -1280,6 +1282,28 @@ public class UserService {
return result;
}
/**
* 递归获取所有子部门ID(包括自身)
*/
private List<Long> getAllSubDepartmentIds(Long deptId) {
List<Long> deptIds = new ArrayList<>();
deptIds.add(deptId);
// 查询直接子部门
List<Department> subDepts = departmentMapper.selectList(
new LambdaQueryWrapper<Department>()
.eq(Department::getParentId, deptId)
.eq(Department::getStatus, 1)
.eq(Department::getDeleted, 0)
);
for (Department subDept : subDepts) {
deptIds.addAll(getAllSubDepartmentIds(subDept.getId()));
}
return deptIds;
}
/**
* 设置/取消管理员
*/