fix: 部门视角下的累计积分统计逻辑 - 需求部门统计消耗积分,接单部门统计获得积分

This commit is contained in:
Your Name 2026-01-08 18:23:26 +08:00
parent 008441a929
commit 74ce489724

View File

@ -1964,18 +1964,44 @@ public class TaskService {
Long todayNewCount = taskMapper.selectCount(todayNewQuery);
// 获取总积分
LambdaQueryWrapper<Task> scoreQuery = new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "completed")
.select(Task::getScoreReward);
if (!isAdmin) {
scoreQuery.eq(Task::getReceiverId, userId);
int totalScore = 0;
if (isDeptView && "demand".equals(deptType)) {
// 需求部门视角:统计该部门发布任务消耗的总积分
LambdaQueryWrapper<Task> scoreQuery = new LambdaQueryWrapper<Task>()
.in(Task::getPublisherDeptId, deptAndChildIds)
.select(Task::getScore);
List<Task> publishedTasks = taskMapper.selectList(scoreQuery);
totalScore = publishedTasks.stream()
.filter(t -> t.getScore() != null)
.mapToInt(Task::getScore)
.sum();
log.debug("需求部门积分统计: deptIds={}, totalScore={}", deptAndChildIds, totalScore);
} else if (isDeptView && "receiving".equals(deptType)) {
// 接单部门视角:统计该部门设计师获得的总积分
LambdaQueryWrapper<Task> scoreQuery = new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "completed")
.in(Task::getReceiverDeptId, deptAndChildIds)
.select(Task::getScoreReward);
List<Task> completedTasks = taskMapper.selectList(scoreQuery);
totalScore = completedTasks.stream()
.filter(t -> t.getScoreReward() != null)
.mapToInt(t -> t.getScoreReward().intValue())
.sum();
log.debug("接单部门积分统计: deptIds={}, totalScore={}", deptAndChildIds, totalScore);
} else {
// 个人视角:统计当前用户获得的积分
LambdaQueryWrapper<Task> scoreQuery = new LambdaQueryWrapper<Task>()
.eq(Task::getStatus, "completed")
.select(Task::getScoreReward);
if (!isAdmin) {
scoreQuery.eq(Task::getReceiverId, userId);
}
List<Task> completedTasks = taskMapper.selectList(scoreQuery);
totalScore = completedTasks.stream()
.filter(t -> t.getScoreReward() != null)
.mapToInt(t -> t.getScoreReward().intValue())
.sum();
}
List<Task> completedTasks = taskMapper.selectList(scoreQuery);
int totalScore = completedTasks.stream()
.filter(t -> t.getScoreReward() != null)
.mapToInt(t -> t.getScoreReward().intValue())
.sum();
// 获取当月发布的任务数
Long publishedCount = 0L;