From 65d77a80fe26096ed6af09143eb7be8378c5c197 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 22 Feb 2026 18:29:11 +0800 Subject: [PATCH] fix: avoid lambda capture issue in analytics month query --- .../designhub/service/AnalyticsService.java | 22 ++++++++++--------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/AnalyticsService.java b/backend/src/main/java/com/designhub/service/AnalyticsService.java index cf22004..9d4ec30 100644 --- a/backend/src/main/java/com/designhub/service/AnalyticsService.java +++ b/backend/src/main/java/com/designhub/service/AnalyticsService.java @@ -596,6 +596,8 @@ public class AnalyticsService { endTime = LocalDateTime.now(); currentMonth = now.format(DateTimeFormatter.ofPattern("yyyy-MM")); } + final LocalDateTime queryStartTime = startTime; + final LocalDateTime queryEndTime = endTime; // 获取所有设计师(接单部门成员,所有用户均可查看所有设计师) List designers = getDesigners(deptId); @@ -605,15 +607,15 @@ public class AnalyticsService { // 2) 当月完成的任务(修复跨月创建、当月完成积分未计入问题) LambdaQueryWrapper taskQuery = new LambdaQueryWrapper() .isNotNull(Task::getReceiverId) - .and(wrapper -> wrapper - .and(created -> created - .ge(Task::getCreateTime, startTime) - .le(Task::getCreateTime, endTime)) + .and(wrapper -> wrapper + .and(created -> created + .ge(Task::getCreateTime, queryStartTime) + .le(Task::getCreateTime, queryEndTime)) .or(completed -> completed .eq(Task::getStatus, "completed") .isNotNull(Task::getActualEndTime) - .ge(Task::getActualEndTime, startTime) - .le(Task::getActualEndTime, endTime))); + .ge(Task::getActualEndTime, queryStartTime) + .le(Task::getActualEndTime, queryEndTime))); List tasks = taskMapper.selectList(taskQuery); @@ -648,13 +650,13 @@ public class AnalyticsService { .eq(TaskItem::getReceiverId, designer.getId()) .and(wrapper -> wrapper .and(created -> created - .ge(TaskItem::getCreateTime, startTime) - .le(TaskItem::getCreateTime, endTime)) + .ge(TaskItem::getCreateTime, queryStartTime) + .le(TaskItem::getCreateTime, queryEndTime)) .or(completed -> completed .eq(TaskItem::getStatus, "completed") .isNotNull(TaskItem::getCompleteTime) - .ge(TaskItem::getCompleteTime, startTime) - .le(TaskItem::getCompleteTime, endTime))) + .ge(TaskItem::getCompleteTime, queryStartTime) + .le(TaskItem::getCompleteTime, queryEndTime))) ); // 主任务统计