fix: 修复子任务指派时缺少claim_time和receiver_name的bug

问题:
- approveTaskItemGroup方法在审核指派子任务时,没有设置claim_time和receiver_name
- grabAssignedItem方法在指定任务接单时,没有更新receiver_name

修复:
- approveTaskItemGroup中增加item.setClaimTime(now)和item.setReceiverName(receiver.getRealName())
- grabAssignedItem SQL增加receiver_name字段更新
- grabAssignedItem方法签名增加receiverName参数

影响:修复后,通过审核指派或指定任务接单的子任务将有完整的接单记录,
确保后续完结任务等流程能正确执行
This commit is contained in:
Your Name 2026-01-30 11:32:44 +08:00
parent 72f23a782a
commit 8c590d4099
2 changed files with 7 additions and 2 deletions

View File

@ -439,9 +439,11 @@ public interface TaskItemMapper extends BaseMapper<TaskItem> {
/**
* 指定任务接单(用于已预先指定设计师的任务)
* 只有被指定的设计师才能接单
* 🔥 修复:增加 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<TaskItem> {
"AND receiver_id = #{receiverId}")
int grabAssignedItem(@Param("itemId") Long itemId,
@Param("receiverId") Long receiverId,
@Param("receiverName") String receiverName,
@Param("deadline") LocalDateTime deadline);
/**

View File

@ -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) {