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; + } + // ==================== 配置相关 ==================== /**