diff --git a/backend/src/main/java/com/designhub/service/AnalyticsService.java b/backend/src/main/java/com/designhub/service/AnalyticsService.java index b929a0c..cf22004 100644 --- a/backend/src/main/java/com/designhub/service/AnalyticsService.java +++ b/backend/src/main/java/com/designhub/service/AnalyticsService.java @@ -600,11 +600,20 @@ public class AnalyticsService { // 获取所有设计师(接单部门成员,所有用户均可查看所有设计师) List designers = getDesigners(deptId); - // 获取时间范围内的任务 + // 获取时间范围内的任务: + // 1) 当月创建的任务(用于接单/在途统计) + // 2) 当月完成的任务(修复跨月创建、当月完成积分未计入问题) LambdaQueryWrapper taskQuery = new LambdaQueryWrapper() - .ge(Task::getCreateTime, startTime) - .le(Task::getCreateTime, endTime) - .isNotNull(Task::getReceiverId); + .isNotNull(Task::getReceiverId) + .and(wrapper -> wrapper + .and(created -> created + .ge(Task::getCreateTime, startTime) + .le(Task::getCreateTime, endTime)) + .or(completed -> completed + .eq(Task::getStatus, "completed") + .isNotNull(Task::getActualEndTime) + .ge(Task::getActualEndTime, startTime) + .le(Task::getActualEndTime, endTime))); List tasks = taskMapper.selectList(taskQuery); @@ -631,12 +640,21 @@ public class AnalyticsService { .filter(t -> designer.getId().equals(t.getReceiverId())) .collect(Collectors.toList()); - // 获取该设计师的子任务(流水线任务中的子任务) + // 获取该设计师的子任务(流水线任务中的子任务): + // 1) 当月创建 + // 2) 当月完成(修复跨月创建、当月完成积分未计入问题) List designerTaskItems = taskItemMapper.selectList( new LambdaQueryWrapper() .eq(TaskItem::getReceiverId, designer.getId()) - .ge(TaskItem::getCreateTime, startTime) - .le(TaskItem::getCreateTime, endTime) + .and(wrapper -> wrapper + .and(created -> created + .ge(TaskItem::getCreateTime, startTime) + .le(TaskItem::getCreateTime, endTime)) + .or(completed -> completed + .eq(TaskItem::getStatus, "completed") + .isNotNull(TaskItem::getCompleteTime) + .ge(TaskItem::getCompleteTime, startTime) + .le(TaskItem::getCompleteTime, endTime))) ); // 主任务统计