fix: avoid lambda capture issue in analytics month query

This commit is contained in:
Your Name 2026-02-22 18:29:11 +08:00
parent 4354d6d736
commit 65d77a80fe

View File

@ -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<User> designers = getDesigners(deptId);
@ -605,15 +607,15 @@ public class AnalyticsService {
// 2) 当月完成的任务(修复跨月创建、当月完成积分未计入问题)
LambdaQueryWrapper<Task> taskQuery = new LambdaQueryWrapper<Task>()
.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<Task> 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)))
);
// 主任务统计