From c1d3e72e4ebbd3293f64a6b866a11753177c55d3 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 16 Jan 2026 10:38:07 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=97=B6=E9=83=A8=E9=97=A8=E7=A7=AF=E5=88=86?= =?UTF-8?q?=E6=B1=A0=E4=B8=8D=E5=AD=98=E5=9C=A8=E5=AF=BC=E8=87=B4=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1=E5=9B=9E=E6=BB=9A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/designhub/service/TaskService.java | 40 ++++++++++++------- 1 file changed, 25 insertions(+), 15 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/TaskService.java b/backend/src/main/java/com/designhub/service/TaskService.java index 833b9d3..1373aed 100644 --- a/backend/src/main/java/com/designhub/service/TaskService.java +++ b/backend/src/main/java/com/designhub/service/TaskService.java @@ -3388,19 +3388,24 @@ public class TaskService { Long taskId = task.getId(); - // 1. 如果任务已完成,需要回退积分 + // 1. 如果任务已完成,需要回退积分(积分回退失败不影响删除) if ("completed".equals(task.getStatus())) { // 回退主任务积分 if (task.getReceiverDeptId() != null && task.getScoreReward() != null && task.getScoreReward().compareTo(BigDecimal.ZERO) > 0) { try { - // 从团队积分池扣除已奖励的积分 - teamScorePoolService.deductScore(task.getReceiverDeptId(), task.getScoreReward().intValue()); - log.info("已回退主任务积分: deptId={}, score={}", task.getReceiverDeptId(), task.getScoreReward()); - - // 回退部门月度积分统计 - deptMonthlyScoreService.deductEarnedScore(task.getReceiverDeptId(), task.getScoreReward()); - log.info("已回退部门月度积分: deptId={}, score={}", task.getReceiverDeptId(), task.getScoreReward()); + // 检查积分池是否存在 + if (teamScorePoolService.getByDeptId(task.getReceiverDeptId()) != null) { + // 从团队积分池扣除已奖励的积分 + teamScorePoolService.deductScore(task.getReceiverDeptId(), task.getScoreReward().intValue()); + log.info("已回退主任务积分: deptId={}, score={}", task.getReceiverDeptId(), task.getScoreReward()); + + // 回退部门月度积分统计 + deptMonthlyScoreService.deductEarnedScore(task.getReceiverDeptId(), task.getScoreReward()); + log.info("已回退部门月度积分: deptId={}, score={}", task.getReceiverDeptId(), task.getScoreReward()); + } else { + log.warn("部门积分池不存在,跳过主任务积分回退: deptId={}", task.getReceiverDeptId()); + } } catch (Exception e) { log.warn("回退主任务积分失败: {}", e.getMessage()); } @@ -3417,13 +3422,18 @@ public class TaskService { if ("completed".equals(item.getStatus()) && item.getReceiverDeptId() != null && item.getTotalScore() != null && item.getTotalScore().compareTo(BigDecimal.ZERO) > 0) { try { - // 从团队积分池扣除已奖励的积分 - teamScorePoolService.deductScore(item.getReceiverDeptId(), item.getTotalScore().intValue()); - log.info("已回退子任务积分: itemNo={}, deptId={}, score={}", - item.getItemNo(), item.getReceiverDeptId(), item.getTotalScore()); - - // 回退部门月度积分统计 - deptMonthlyScoreService.deductEarnedScore(item.getReceiverDeptId(), item.getTotalScore()); + // 检查积分池是否存在 + if (teamScorePoolService.getByDeptId(item.getReceiverDeptId()) != null) { + // 从团队积分池扣除已奖励的积分 + teamScorePoolService.deductScore(item.getReceiverDeptId(), item.getTotalScore().intValue()); + log.info("已回退子任务积分: itemNo={}, deptId={}, score={}", + item.getItemNo(), item.getReceiverDeptId(), item.getTotalScore()); + + // 回退部门月度积分统计 + deptMonthlyScoreService.deductEarnedScore(item.getReceiverDeptId(), item.getTotalScore()); + } else { + log.warn("部门积分池不存在,跳过子任务积分回退: itemNo={}, deptId={}", item.getItemNo(), item.getReceiverDeptId()); + } } catch (Exception e) { log.warn("回退子任务积分失败: itemNo={}, error={}", item.getItemNo(), e.getMessage()); }