fix: 接单部门Dashboard统计应包含主任务+子任务数量

This commit is contained in:
Your Name 2026-01-16 21:30:35 +08:00
parent 8f00871b6d
commit aee1138de0

View File

@ -2571,11 +2571,19 @@ public class TaskService {
List<String> excludeStatuses = java.util.Arrays.asList("draft", "completed", "cancelled");
if (isDeptView && "receiving".equals(deptType)) {
// 接单部门视角:统计该部门(含子部门)设计师接单的任务
inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
// 接单部门视角:统计该部门(含子部门)设计师接单的任务(主任务+子任务)
// 主任务数量
Long mainTaskCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "in_progress")
.in(Task::getReceiverDeptId, deptAndChildIds)
.eq(Task::getDeleted, 0));
// 子任务数量(TaskItem表没有deleted字段)
Long subTaskCount = taskItemMapper.selectCount(new LambdaQueryWrapper<TaskItem>()
.eq(TaskItem::getStatus, "in_progress")
.in(TaskItem::getReceiverDeptId, deptAndChildIds));
inProgressCount = mainTaskCount + subTaskCount;
log.info("接单部门进行中任务统计: mainTaskCount={}, subTaskCount={}, total={}",
mainTaskCount, subTaskCount, inProgressCount);
} else if (isDeptView && "demand".equals(deptType)) {
// 需求部门视角:统计该部门发起的所有处理中任务(与前端列表显示一致)
inProgressCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
@ -2606,9 +2614,17 @@ public class TaskService {
// 已完成的任务数
Long completedCount = 0L;
if (isDeptView && "receiving".equals(deptType)) {
completedCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
// 接单部门视角:统计主任务+子任务
Long mainCompleted = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "completed")
.in(Task::getReceiverDeptId, deptAndChildIds));
.in(Task::getReceiverDeptId, deptAndChildIds)
.eq(Task::getDeleted, 0));
Long subCompleted = taskItemMapper.selectCount(new LambdaQueryWrapper<TaskItem>()
.eq(TaskItem::getStatus, "completed")
.in(TaskItem::getReceiverDeptId, deptAndChildIds));
completedCount = mainCompleted + subCompleted;
log.info("接单部门已完成任务统计: mainCompleted={}, subCompleted={}, total={}",
mainCompleted, subCompleted, completedCount);
} else if (isDeptView && "demand".equals(deptType)) {
completedCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "completed")
@ -2770,13 +2786,20 @@ public class TaskService {
.ne(Task::getStatus, "draft") // 排除草稿
.eq(Task::getDeleted, 0));
} else if (isDeptView && "receiving".equals(deptType)) {
// 接单部门视角:统计该部门接单的任务数
publishedCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
// 接单部门视角:统计该部门接单的任务数(主任务+子任务)
Long mainPublished = taskMapper.selectCount(new LambdaQueryWrapper<Task>()
.in(Task::getReceiverDeptId, deptAndChildIds)
.ge(Task::getCreateTime, monthStart)
.le(Task::getCreateTime, monthEnd)
.ne(Task::getStatus, "draft") // 排除草稿
.ne(Task::getStatus, "draft")
.eq(Task::getDeleted, 0));
Long subPublished = taskItemMapper.selectCount(new LambdaQueryWrapper<TaskItem>()
.in(TaskItem::getReceiverDeptId, deptAndChildIds)
.ge(TaskItem::getCreateTime, monthStart)
.le(TaskItem::getCreateTime, monthEnd));
publishedCount = mainPublished + subPublished;
log.info("接单部门接单任务统计: mainPublished={}, subPublished={}, total={}",
mainPublished, subPublished, publishedCount);
} else {
// 当前用户发布的任务数
publishedCount = taskMapper.selectCount(new LambdaQueryWrapper<Task>()