From 7c84e185a6a85f44c1e0c9c53ed89df77c5f9274 Mon Sep 17 00:00:00 2001 From: wsw Date: Sun, 2 Jun 2024 14:57:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E5=91=98=E9=83=A8=E9=97=A8=E5=8C=85?= =?UTF-8?q?=E5=90=AB=E5=AD=90=E9=83=A8=E9=97=A8=E6=89=80=E6=9C=89=E5=AD=A6?= =?UTF-8?q?=E5=91=98=E6=95=B0=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../backend/DepartmentController.java | 30 ++++++++++++++++++- .../controller/backend/UserController.java | 30 +++++++++++++++---- .../common/service/DepartmentService.java | 2 ++ .../service/impl/DepartmentServiceImpl.java | 13 ++++++++ 4 files changed, 69 insertions(+), 6 deletions(-) diff --git a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java index 8572688..317055b 100644 --- a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java +++ b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/DepartmentController.java @@ -38,6 +38,7 @@ import xyz.playedu.common.domain.Department; import xyz.playedu.common.domain.User; import xyz.playedu.common.exception.NotFoundException; import xyz.playedu.common.service.DepartmentService; +import xyz.playedu.common.service.UserDepartmentService; import xyz.playedu.common.service.UserService; import xyz.playedu.common.types.JsonResponse; import xyz.playedu.common.types.paginate.PaginationResult; @@ -71,12 +72,39 @@ public class DepartmentController { @Autowired private LDAPBus ldapBus; + @Autowired private UserDepartmentService userDepartmentService; + @GetMapping("/index") @Log(title = "部门-列表", businessType = BusinessTypeConstant.GET) public JsonResponse index() { HashMap data = new HashMap<>(); data.put("departments", departmentService.groupByParent()); - data.put("dep_user_count", departmentService.getDepartmentsUserCount()); + + HashMap depUserCount = new HashMap<>(); + List allDepartmentList = departmentService.all(); + if (StringUtil.isNotEmpty(allDepartmentList)) { + for (Department dep : allDepartmentList) { + List depIds = new ArrayList<>(); + depIds.add(dep.getId()); + String parentChain = ""; + if (StringUtil.isEmpty(dep.getParentChain())) { + parentChain = dep.getId() + ""; + } else { + parentChain = dep.getParentChain() + "," + dep.getId(); + } + // 获取所有子部门ID + List childDepartmentList = + departmentService.getChildDepartmentsByParentChain( + dep.getId(), parentChain); + if (StringUtil.isNotEmpty(childDepartmentList)) { + depIds.addAll(childDepartmentList.stream().map(Department::getId).toList()); + } + List departmentUserIds = userDepartmentService.getUserIdsByDepIds(depIds); + depUserCount.put( + dep.getId(), departmentUserIds.stream().distinct().toList().size()); + } + } + data.put("dep_user_count", depUserCount); data.put("user_total", userService.total()); return JsonResponse.data(data); } diff --git a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/UserController.java b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/UserController.java index 6c1e56a..8b4e906 100644 --- a/playedu-api/src/main/java/xyz/playedu/api/controller/backend/UserController.java +++ b/playedu-api/src/main/java/xyz/playedu/api/controller/backend/UserController.java @@ -107,11 +107,31 @@ public class UserController { String createdAt = MapUtils.getString(params, "created_at"); String depIdsStr = MapUtils.getString(params, "dep_ids"); List depIds = null; - if (depIdsStr != null && !depIdsStr.trim().isEmpty()) { - if ("0".equals(depIdsStr)) { - depIds = new ArrayList<>(); - } else { - depIds = Arrays.stream(depIdsStr.split(",")).map(Integer::valueOf).toList(); + if (StringUtil.isNotEmpty(depIdsStr)) { + depIds = new ArrayList<>(); + if (!"0".equals(depIdsStr)) { + List departmentList = + departmentService.chunk( + Arrays.stream(depIdsStr.split(",")).map(Integer::valueOf).toList()); + if (StringUtil.isNotEmpty(departmentList)) { + for (Department dep : departmentList) { + depIds.add(dep.getId()); + String parentChain = ""; + if (StringUtil.isEmpty(dep.getParentChain())) { + parentChain = dep.getId() + ""; + } else { + parentChain = dep.getParentChain() + "," + dep.getId(); + } + // 获取所有子部门ID + List childDepartmentList = + departmentService.getChildDepartmentsByParentChain( + dep.getId(), parentChain); + if (StringUtil.isNotEmpty(childDepartmentList)) { + depIds.addAll( + childDepartmentList.stream().map(Department::getId).toList()); + } + } + } } } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java b/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java index cc0e090..989aefd 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/DepartmentService.java @@ -70,4 +70,6 @@ public interface DepartmentService extends IService { Department findByName(String name, Integer parentId); List getChildDepartmentsByParentId(Integer parentId); + + List getChildDepartmentsByParentChain(Integer parentId, String parentChain); } diff --git a/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java b/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java index 6f8cf25..b96cc91 100644 --- a/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java +++ b/playedu-common/src/main/java/xyz/playedu/common/service/impl/DepartmentServiceImpl.java @@ -32,6 +32,7 @@ import xyz.playedu.common.mapper.DepartmentMapper; import xyz.playedu.common.service.DepartmentService; import xyz.playedu.common.service.UserDepartmentService; import xyz.playedu.common.types.mapper.DepartmentsUserCountMapRes; +import xyz.playedu.common.util.StringUtil; import java.util.*; import java.util.stream.Collectors; @@ -302,4 +303,16 @@ public class DepartmentServiceImpl extends ServiceImpl getChildDepartmentsByParentChain(Integer parentId, String parentChain) { + if (StringUtil.isEmpty(parentChain)) { + return new ArrayList<>(); + } + return list( + query().getWrapper() + .eq("parent_id", parentId) + .or() + .likeRight("parent_chain", parentChain + ",")); + } }