From bf2f720fe74ec2cd32368e12fb1c3c44bb5ff80d Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 29 Jan 2026 11:50:12 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8E=92=E9=98=9F?= =?UTF-8?q?=E7=8A=B6=E6=80=81=E6=9F=A5=E8=AF=A2=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 当任务没有 receiver_dept_id 时,从 task_unlock_status 表中查询对应的部门ID --- .../com/designhub/service/TaskItemService.java | 15 ++++++++++++++- .../com/designhub/service/TaskUnlockService.java | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index 10dfa8c..2b28872 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -187,14 +187,27 @@ public class TaskItemService { // 确定目标部门 Long targetDeptId = deptId; if (targetDeptId == null) { + // 优先使用已接单的部门 targetDeptId = item.getReceiverDeptId(); } + if (targetDeptId == null) { + // 🔥 从 task_unlock_status 表中查询该任务对应的部门 + com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper wrapper = + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); + wrapper.eq(com.designhub.entity.TaskUnlockStatus::getTaskItemId, item.getId()) + .last("LIMIT 1"); + com.designhub.entity.TaskUnlockStatus unlockStatus = taskUnlockService.getUnlockStatusMapper().selectOne(wrapper); + if (unlockStatus != null) { + targetDeptId = unlockStatus.getDeptId(); + } + } + // 填充解锁状态 if (targetDeptId != null) { taskUnlockService.fillUnlockStatus(item, targetDeptId, releaseType); } else { - // 无法确定部门,默认可抢 + // 无法确定部门,默认可抢(兼容旧数据) item.setUnlockStatus("unlocked"); item.setCanGrab(true); } diff --git a/backend/src/main/java/com/designhub/service/TaskUnlockService.java b/backend/src/main/java/com/designhub/service/TaskUnlockService.java index ed9d6a1..e3f5733 100644 --- a/backend/src/main/java/com/designhub/service/TaskUnlockService.java +++ b/backend/src/main/java/com/designhub/service/TaskUnlockService.java @@ -46,6 +46,13 @@ public class TaskUnlockService { private static final int DEFAULT_DAILY_UNLOCK_MIN = 5; private static final int DEFAULT_BATCH_SIZE = 5; + /** + * 获取 TaskUnlockStatusMapper(供其他 Service 使用) + */ + public TaskUnlockStatusMapper getUnlockStatusMapper() { + return unlockStatusMapper; + } + // ==================== 配置相关 ==================== /**