diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 3224d66..4367056 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -2499,34 +2499,42 @@ public class TaskService { LocalDateTime lastWeekStartTime = LocalDateTime.of(lastWeekStart, LocalTime.MIN); LocalDateTime lastWeekEndTime = LocalDateTime.of(lastWeekEnd, LocalTime.MAX); - // 进行中的任务数 + // 进行中的任务数(处理中的任务,包括 pending、in_progress、review 等,排除 draft、completed、cancelled) + // 🔥 需求部门统计:所有非草稿、非已完成的任务都算"处理中" Long inProgressCount = 0L; + List excludeStatuses = java.util.Arrays.asList("draft", "completed", "cancelled"); + if (isDeptView && "receiving".equals(deptType)) { // 接单部门视角:统计该部门(含子部门)设计师接单的任务 inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() .eq(Task::getStatus, "in_progress") - .in(Task::getReceiverDeptId, deptAndChildIds)); + .in(Task::getReceiverDeptId, deptAndChildIds) + .eq(Task::getDeleted, 0)); } else if (isDeptView && "demand".equals(deptType)) { - // 需求部门视角:统计该部门发起的任务 + // 需求部门视角:统计该部门发起的所有处理中任务(与前端列表显示一致) inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "in_progress") - .in(Task::getPublisherDeptId, deptAndChildIds)); + .notIn(Task::getStatus, excludeStatuses) + .in(Task::getPublisherDeptId, deptAndChildIds) + .eq(Task::getDeleted, 0)); } else if (!isAdmin) { // 普通用户:根据部门类型决定统计方式 if ("demand".equals(userDeptType)) { - // 需求部门用户:统计自己发起的任务 + // 需求部门用户:统计自己发起的所有处理中任务 inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "in_progress") - .eq(Task::getPublisherId, userId)); + .notIn(Task::getStatus, excludeStatuses) + .eq(Task::getPublisherId, userId) + .eq(Task::getDeleted, 0)); } else { - // 接单部门用户:统计自己接收的任务 + // 接单部门用户:统计自己接收的进行中任务 inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() .eq(Task::getStatus, "in_progress") - .eq(Task::getReceiverId, userId)); + .eq(Task::getReceiverId, userId) + .eq(Task::getDeleted, 0)); } } else { inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper() - .eq(Task::getStatus, "in_progress")); + .eq(Task::getStatus, "in_progress") + .eq(Task::getDeleted, 0)); } // 已完成的任务数