From 6f522a9b95706b874042b27d4b9d6784b73a99e7 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 15 Jan 2026 16:42:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E8=AE=BE=E8=AE=A1=E5=B8=88=E7=BB=A9?= =?UTF-8?q?=E6=95=88=E6=A6=9C=E5=8D=95=E6=B7=BB=E5=8A=A0=E5=AD=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E7=9A=84=E6=8E=A5=E5=8D=95=E6=95=B0=E3=80=81=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E6=95=B0=E5=92=8C=E7=A7=AF=E5=88=86=E7=BB=9F=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designhub/service/AnalyticsService.java | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/AnalyticsService.java b/backend/src/main/java/com/designhub/service/AnalyticsService.java index 61d0d81..c6824b1 100644 --- a/backend/src/main/java/com/designhub/service/AnalyticsService.java +++ b/backend/src/main/java/com/designhub/service/AnalyticsService.java @@ -594,19 +594,42 @@ public class AnalyticsService { int designerWithData = 0; for (User designer : designers) { - // 获取该设计师的任务 + // 获取该设计师的主任务 List designerTasks = tasks.stream() .filter(t -> designer.getId().equals(t.getReceiverId())) .collect(Collectors.toList()); - int receivedCount = designerTasks.size(); - int completedCount = (int) designerTasks.stream() + // 获取该设计师的子任务(流水线任务中的子任务) + List designerTaskItems = taskItemMapper.selectList( + new LambdaQueryWrapper() + .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 { // 查询已完成的子任务(按完成时间查询)