From 8c590d4099a37efdb7ba2695f2865260fa86f8d5 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 30 Jan 2026 11:32:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=AD=90=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=8C=87=E6=B4=BE=E6=97=B6=E7=BC=BA=E5=B0=91claim=5Ft?= =?UTF-8?q?ime=E5=92=8Creceiver=5Fname=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题: - approveTaskItemGroup方法在审核指派子任务时,没有设置claim_time和receiver_name - grabAssignedItem方法在指定任务接单时,没有更新receiver_name 修复: - approveTaskItemGroup中增加item.setClaimTime(now)和item.setReceiverName(receiver.getRealName()) - grabAssignedItem SQL增加receiver_name字段更新 - grabAssignedItem方法签名增加receiverName参数 影响:修复后,通过审核指派或指定任务接单的子任务将有完整的接单记录, 确保后续完结任务等流程能正确执行 --- .../src/main/java/com/designhub/mapper/TaskItemMapper.java | 3 +++ .../main/java/com/designhub/service/TaskItemService.java | 6 ++++-- 2 files changed, 7 insertions(+), 2 deletions(-) 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) {