fix: 任务节点查询显示流水线任务当前待处理子任务的接单人
问题:流水线任务完成子任务1后,节点查询仍显示子任务1的接单人 修复:查询当前pending状态的子任务接单人,而不是主任务的receiver_id
This commit is contained in:
parent
7332e48f0d
commit
2ca9626e50
@ -4727,17 +4727,72 @@ public class TaskService {
|
||||
com.designhub.vo.TaskFlowStatusVO.WaitingUser waitingUser = new com.designhub.vo.TaskFlowStatusVO.WaitingUser();
|
||||
waitingUser.setRoleName("等待设计师接单");
|
||||
info.setWaitingFor(waitingUser);
|
||||
} else if ("in_progress".equals(status) && task.getReceiverId() != null) {
|
||||
// 进行中状态
|
||||
} else if ("in_progress".equals(status)) {
|
||||
// 进行中状态 - 对于流水线任务,查找当前待处理的子任务
|
||||
com.designhub.vo.TaskFlowStatusVO.WaitingUser waitingUser = new com.designhub.vo.TaskFlowStatusVO.WaitingUser();
|
||||
waitingUser.setUserId(task.getReceiverId());
|
||||
|
||||
User receiver = userMapper.selectById(task.getReceiverId());
|
||||
if (receiver != null) {
|
||||
waitingUser.setUserName(receiver.getRealName());
|
||||
waitingUser.setDeptName(receiver.getDeptName());
|
||||
if (task.getIsPipeline() != null && task.getIsPipeline() == 1) {
|
||||
// 🔥 流水线任务:查找当前待处理的子任务(pending状态且未锁定)
|
||||
TaskItem currentItem = taskItemMapper.selectOne(
|
||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<TaskItem>()
|
||||
.eq(TaskItem::getTaskId, task.getId())
|
||||
.eq(TaskItem::getStatus, "pending")
|
||||
.eq(TaskItem::getIsLocked, 0)
|
||||
.orderByAsc(TaskItem::getId)
|
||||
.last("LIMIT 1")
|
||||
);
|
||||
|
||||
if (currentItem != null && currentItem.getReceiverId() != null) {
|
||||
// 有待处理的子任务,显示该子任务的接单人
|
||||
waitingUser.setUserId(currentItem.getReceiverId());
|
||||
User receiver = userMapper.selectById(currentItem.getReceiverId());
|
||||
if (receiver != null) {
|
||||
waitingUser.setUserName(receiver.getRealName());
|
||||
waitingUser.setDeptName(receiver.getDeptName());
|
||||
}
|
||||
waitingUser.setRoleName("等待设计师接单");
|
||||
} else if (currentItem != null) {
|
||||
// 有待处理子任务但未指定接单人
|
||||
waitingUser.setRoleName("等待设计师接单");
|
||||
} else {
|
||||
// 没有待处理子任务,查找进行中的子任务
|
||||
TaskItem inProgressItem = taskItemMapper.selectOne(
|
||||
new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<TaskItem>()
|
||||
.eq(TaskItem::getTaskId, task.getId())
|
||||
.eq(TaskItem::getStatus, "in_progress")
|
||||
.orderByAsc(TaskItem::getId)
|
||||
.last("LIMIT 1")
|
||||
);
|
||||
if (inProgressItem != null && inProgressItem.getReceiverId() != null) {
|
||||
waitingUser.setUserId(inProgressItem.getReceiverId());
|
||||
User receiver = userMapper.selectById(inProgressItem.getReceiverId());
|
||||
if (receiver != null) {
|
||||
waitingUser.setUserName(receiver.getRealName());
|
||||
waitingUser.setDeptName(receiver.getDeptName());
|
||||
}
|
||||
waitingUser.setRoleName("设计师正在执行任务");
|
||||
} else if (task.getReceiverId() != null) {
|
||||
// 回退到主任务的接单人
|
||||
waitingUser.setUserId(task.getReceiverId());
|
||||
User receiver = userMapper.selectById(task.getReceiverId());
|
||||
if (receiver != null) {
|
||||
waitingUser.setUserName(receiver.getRealName());
|
||||
waitingUser.setDeptName(receiver.getDeptName());
|
||||
}
|
||||
waitingUser.setRoleName("设计师正在执行任务");
|
||||
}
|
||||
}
|
||||
} else if (task.getReceiverId() != null) {
|
||||
// 普通任务:使用主任务的接单人
|
||||
waitingUser.setUserId(task.getReceiverId());
|
||||
User receiver = userMapper.selectById(task.getReceiverId());
|
||||
if (receiver != null) {
|
||||
waitingUser.setUserName(receiver.getRealName());
|
||||
waitingUser.setDeptName(receiver.getDeptName());
|
||||
}
|
||||
waitingUser.setRoleName("设计师正在执行任务");
|
||||
}
|
||||
waitingUser.setRoleName("设计师执行中");
|
||||
|
||||
info.setWaitingFor(waitingUser);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user