fix: 修复需求部门进行中任务统计与列表显示不一致的问题

需求部门视角的'进行中任务'统计现在包含所有处理中的任务(pending、in_progress、review等),
排除 draft、completed、cancelled 状态,与前端列表显示逻辑保持一致
This commit is contained in:
Your Name 2026-01-16 15:35:53 +08:00
parent 5573a89e41
commit 0818db76b2

View File

@ -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<String> excludeStatuses = java.util.Arrays.asList("draft", "completed", "cancelled");
if (isDeptView && "receiving".equals(deptType)) {
// 接单部门视角:统计该部门(含子部门)设计师接单的任务
inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.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<Task>()
.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<Task>()
.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<Task>()
.eq(Task::getStatus, "in_progress")
.eq(Task::getReceiverId, userId));
.eq(Task::getReceiverId, userId)
.eq(Task::getDeleted, 0));
}
} else {
inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "in_progress"));
.eq(Task::getStatus, "in_progress")
.eq(Task::getDeleted, 0));
}
// 已完成的任务数