fix: 设计师绩效榜单添加子任务的接单数、完成数和积分统计

This commit is contained in:
Your Name 2026-01-15 16:42:07 +08:00
parent 23e413984c
commit 6f522a9b95

View File

@ -594,19 +594,42 @@ public class AnalyticsService {
int designerWithData = 0;
for (User designer : designers) {
// 获取该设计师的任务
// 获取该设计师的主任务
List<Task> designerTasks = tasks.stream()
.filter(t -> designer.getId().equals(t.getReceiverId()))
.collect(Collectors.toList());
int receivedCount = designerTasks.size();
int completedCount = (int) designerTasks.stream()
// 获取该设计师的子任务(流水线任务中的子任务)
List<TaskItem> designerTaskItems = taskItemMapper.selectList(
new LambdaQueryWrapper<TaskItem>()
.eq(TaskItem::getReceiverId, designer.getId())
.ge(TaskItem::getCreateTime, startTime)
.le(TaskItem::getCreateTime, endTime)
);
// 主任务统计
int mainReceivedCount = designerTasks.size();
int mainCompletedCount = (int) designerTasks.stream()
.filter(t -> "completed".equals(t.getStatus()))
.count();
int inProgressCount = (int) designerTasks.stream()
int mainInProgressCount = (int) designerTasks.stream()
.filter(t -> "in_progress".equals(t.getStatus()))
.count();
// 子任务统计
int subReceivedCount = designerTaskItems.size();
int subCompletedCount = (int) designerTaskItems.stream()
.filter(t -> "completed".equals(t.getStatus()))
.count();
int subInProgressCount = (int) designerTaskItems.stream()
.filter(t -> "in_progress".equals(t.getStatus()))
.count();
// 合计(主任务 + 子任务)
int receivedCount = mainReceivedCount + subReceivedCount;
int completedCount = mainCompletedCount + subCompletedCount;
int inProgressCount = mainInProgressCount + subInProgressCount;
// 计算准时完成数
int onTimeCount = 0;
int overdueCount = 0;
@ -729,6 +752,16 @@ public class AnalyticsService {
}
}
// 计算子任务的获得积分
for (TaskItem item : designerTaskItems) {
if ("completed".equals(item.getStatus()) && item.getCompleteTime() != null
&& !item.getCompleteTime().isBefore(startTime)
&& !item.getCompleteTime().isAfter(endTime)) {
BigDecimal itemScore = item.getTotalScore() != null ? item.getTotalScore() : BigDecimal.ZERO;
totalScore = totalScore.add(itemScore);
}
}
// 计算子任务的延误扣分(与getDesignerDeductionDetails保持一致)
try {
// 查询已完成的子任务(按完成时间查询)