diff --git a/backend/src/main/java/com/designhub/service/TaskUnlockService.java b/backend/src/main/java/com/designhub/service/TaskUnlockService.java index d923208..89120ca 100644 --- a/backend/src/main/java/com/designhub/service/TaskUnlockService.java +++ b/backend/src/main/java/com/designhub/service/TaskUnlockService.java @@ -425,6 +425,7 @@ public class TaskUnlockService { LocalDate publishDate = task.getCreateTime() != null ? task.getCreateTime().toLocalDate() : LocalDate.now(); int addedRows = 0; + Set affectedDeptIds = new LinkedHashSet<>(); for (TaskItem item : items) { if (item.getId() == null) { @@ -441,12 +442,28 @@ public class TaskUnlockService { if (deptId == null) { continue; } - addedRows += unlockStatusMapper.insertIfNotExists(item.getId(), deptId, publishDate, 0); + int inserted = unlockStatusMapper.insertIfNotExists(item.getId(), deptId, publishDate, 0); + addedRows += inserted; + if (inserted > 0) { + affectedDeptIds.add(deptId); + } } } if (addedRows > 0) { log.info("任务 {} 已写入 {} 条排队记录", task.getTaskNo(), addedRows); + + int minUnlockedCount = getDailyUnlockMin(); + for (Long deptId : affectedDeptIds) { + try { + int unlocked = unlockTasksForDept(deptId, minUnlockedCount); + if (unlocked > 0) { + log.info("任务 {} 入队后,为部门 {} 立即补充解锁 {} 个任务", task.getTaskNo(), deptId, unlocked); + } + } catch (Exception e) { + log.error("任务 {} 入队后补充部门 {} 可接任务失败: {}", task.getTaskNo(), deptId, e.getMessage(), e); + } + } } } diff --git a/frontend/src/views/Settings.vue b/frontend/src/views/Settings.vue index b114564..6891d25 100644 --- a/frontend/src/views/Settings.vue +++ b/frontend/src/views/Settings.vue @@ -1916,7 +1916,7 @@
- 每个接单部门每天凌晨自动解锁的最少任务数量(按发布时间从早到晚解锁) + 每个接单部门至少维持的可接任务数量。新任务入队和每天凌晨检查时,都会按发布时间从早到晚补足到这个数量