diff --git a/backend/src/main/java/com/designhub/service/AnalyticsService.java b/backend/src/main/java/com/designhub/service/AnalyticsService.java index 7dc6f32..e193f09 100644 --- a/backend/src/main/java/com/designhub/service/AnalyticsService.java +++ b/backend/src/main/java/com/designhub/service/AnalyticsService.java @@ -843,9 +843,11 @@ public class AnalyticsService { LambdaQueryWrapper userQuery = new LambdaQueryWrapper() .eq(User::getStatus, 1); - // 如果指定了部门ID,则按部门过滤 + // 如果指定了部门ID,获取该部门及其所有子部门 if (deptId != null) { - userQuery.eq(User::getDeptId, deptId); + List targetDeptIds = getDeptAndChildIds(deptId); + log.debug("筛选部门: deptId={}, targetDeptIds={}", deptId, targetDeptIds); + userQuery.in(User::getDeptId, targetDeptIds); } List allUsers = userMapper.selectList(userQuery); @@ -867,6 +869,25 @@ public class AnalyticsService { return designers; } + /** + * 递归获取部门及其所有子部门ID + */ + private List getDeptAndChildIds(Long deptId) { + List deptIds = new ArrayList<>(); + deptIds.add(deptId); + + List children = departmentMapper.selectList( + new LambdaQueryWrapper() + .eq(Department::getParentId, deptId) + .eq(Department::getStatus, 1) + ); + + for (Department child : children) { + deptIds.addAll(getDeptAndChildIds(child.getId())); + } + return deptIds; + } + // ==================== 流程效率统计 ==================== /**