diff --git a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java index 0a215c0..60229ba 100644 --- a/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java +++ b/backend/src/main/java/com/designhub/mapper/TaskItemMapper.java @@ -439,9 +439,11 @@ public interface TaskItemMapper extends BaseMapper { /** * 指定任务接单(用于已预先指定设计师的任务) * 只有被指定的设计师才能接单 + * 🔥 修复:增加 receiver_name 更新,确保接单记录完整 */ @Update("UPDATE task_item SET " + "status = 'in_progress', " + + "receiver_name = #{receiverName}, " + "claim_time = NOW(), " + "deadline = CASE WHEN #{deadline} IS NOT NULL THEN #{deadline} ELSE deadline END, " + "update_time = NOW() " + @@ -451,6 +453,7 @@ public interface TaskItemMapper extends BaseMapper { "AND receiver_id = #{receiverId}") int grabAssignedItem(@Param("itemId") Long itemId, @Param("receiverId") Long receiverId, + @Param("receiverName") String receiverName, @Param("deadline") LocalDateTime deadline); /** diff --git a/backend/src/main/java/com/designhub/service/TaskItemService.java b/backend/src/main/java/com/designhub/service/TaskItemService.java index 9e7a6b5..dc35696 100644 --- a/backend/src/main/java/com/designhub/service/TaskItemService.java +++ b/backend/src/main/java/com/designhub/service/TaskItemService.java @@ -511,8 +511,8 @@ public class TaskItemService { // 🔥 根据是否是指定任务使用不同的抢单方法 int result; if (isAssignedItem) { - // 指定任务:使用专用方法,只更新状态和deadline - result = taskItemMapper.grabAssignedItem(itemId, userId, deadline); + // 指定任务:使用专用方法,更新状态、接收人姓名和deadline + result = taskItemMapper.grabAssignedItem(itemId, userId, user.getRealName(), deadline); } else { // 普通任务:乐观锁抢单(同时设置接单部门ID和deadline) result = taskItemMapper.grabItem(itemId, userId, user.getRealName(), user.getDeptId(), deadline); @@ -1223,7 +1223,9 @@ public class TaskItemService { for (TaskItem item : groupItems) { item.setStatus("in_progress"); item.setReceiverId(assignedReceiverId); + item.setReceiverName(receiver.getRealName()); // 🔥 修复:设置接收人姓名 item.setReceiverDeptId(receiver.getDeptId()); // 设置接单部门ID + item.setClaimTime(now); // 🔥 修复:设置接单时间 item.setUpdateTime(now); // 计算并设置deadline(使用工作时间计算) if (item.getEstimatedHours() != null && item.getEstimatedHours().compareTo(java.math.BigDecimal.ZERO) > 0) {