diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index e4ba5af..206ee98 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -2391,8 +2391,18 @@ public class TaskService { log.info("部门负责人视角: deptId={}, deptType={}, childDeptCount={}", deptId, deptType, deptAndChildIds.size()); } - log.info("获取工作台统计数据: userId={}, isAdmin={}, month={}, deptId={}, isDeptView={}, deptType={}, deptAndChildIds={}", - userId, isAdmin, month, deptId, isDeptView, deptType, deptAndChildIds); + // 获取用户自己的部门类型(用于普通用户统计) + String userDeptType = null; + User currentUser = userMapper.selectById(userId); + if (currentUser != null && currentUser.getDeptId() != null) { + Department userDept = departmentMapper.selectById(currentUser.getDeptId()); + if (userDept != null) { + userDeptType = userDept.getDeptType(); + } + } + + log.info("获取工作台统计数据: userId={}, isAdmin={}, month={}, deptId={}, isDeptView={}, deptType={}, userDeptType={}, deptAndChildIds={}", + userId, isAdmin, month, deptId, isDeptView, deptType, userDeptType, deptAndChildIds); // 解析月份,如果不传则使用当前月份 LocalDate targetMonth; @@ -2441,9 +2451,18 @@ public class TaskService { .eq(Task::getStatus, "in_progress") .in(Task::getPublisherDeptId, deptAndChildIds)); } else if (!isAdmin) { - inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "in_progress") - .eq(Task::getReceiverId, userId)); + // 普通用户:根据部门类型决定统计方式 + if ("demand".equals(userDeptType)) { + // 需求部门用户:统计自己发起的任务 + inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "in_progress") + .eq(Task::getPublisherId, userId)); + } else { + // 接单部门用户:统计自己接收的任务 + inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "in_progress") + .eq(Task::getReceiverId, userId)); + } } else { inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() .eq(Task::getStatus, "in_progress")); @@ -2460,9 +2479,18 @@ public class TaskService { .eq(Task::getStatus, "completed") .in(Task::getPublisherDeptId, deptAndChildIds)); } else if (!isAdmin) { - completedCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "completed") - .eq(Task::getReceiverId, userId)); + // 普通用户:根据部门类型决定统计方式 + if ("demand".equals(userDeptType)) { + // 需求部门用户:统计自己发起的任务 + completedCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "completed") + .eq(Task::getPublisherId, userId)); + } else { + // 接单部门用户:统计自己接收的任务 + completedCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "completed") + .eq(Task::getReceiverId, userId)); + } } else { completedCount = taskMapper.selectCount(new LambdaQueryWrapper() .eq(Task::getStatus, "completed")); @@ -2479,9 +2507,18 @@ public class TaskService { .eq(Task::getStatus, "review") .in(Task::getPublisherDeptId, deptAndChildIds)); } else if (!isAdmin) { - reviewCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "review") - .eq(Task::getReceiverId, userId)); + // 普通用户:根据部门类型决定统计方式 + if ("demand".equals(userDeptType)) { + // 需求部门用户:统计自己发起的任务 + reviewCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "review") + .eq(Task::getPublisherId, userId)); + } else { + // 接单部门用户:统计自己接收的任务 + reviewCount = taskMapper.selectCount(new LambdaQueryWrapper() + .eq(Task::getStatus, "review") + .eq(Task::getReceiverId, userId)); + } } else { reviewCount = taskMapper.selectCount(new LambdaQueryWrapper() .eq(Task::getStatus, "review"));