fix: 修复指派模式流水线任务审核通过后状态未正确更新为in_progress的BUG
This commit is contained in:
parent
7b92476bc5
commit
b7038e8531
@ -843,8 +843,23 @@ public class TaskApprovalService {
|
||||
// recruitment模式:发布到任务大厅
|
||||
task.setStatus("pending");
|
||||
} else if ("assigned".equals(task.getReleaseType()) && task.getReceiverId() != null) {
|
||||
// assigned模式:如果指定了接收人,状态已经是in_progress(在approveDemandLevel中已设置)
|
||||
// 这里不需要再次设置
|
||||
// assigned模式:如果指定了接收人,主任务直接进入进行中状态
|
||||
task.setStatus("in_progress");
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
task.setStartTime(now);
|
||||
task.setActualStartTime(now);
|
||||
|
||||
// 重新计算deadline:从接单时间开始计算
|
||||
if (task.getEstimatedHours() != null) {
|
||||
int hours = task.getEstimatedHours().intValue();
|
||||
if (hours > 0) {
|
||||
task.setDeadline(now.plusHours(hours));
|
||||
}
|
||||
}
|
||||
|
||||
// 更新子任务状态为in_progress(第一组或全部,取决于流水线模式)
|
||||
taskService.updatePipelineSubTasksForAssigned(task.getId(), dto.getPipelineMode());
|
||||
log.info("指派流水线任务已设置为进行中:taskId={}, receiverId={}", task.getId(), task.getReceiverId());
|
||||
} else {
|
||||
// default模式或其他模式:流水线任务的主任务状态设置为pending
|
||||
// 子任务会根据is_locked字段控制可见性
|
||||
|
||||
@ -2422,5 +2422,50 @@ public class TaskService {
|
||||
// TODO: 实现流水线子任务拆分逻辑
|
||||
// 可以参考createPipelineTask方法中的实现
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新指派模式流水线任务的子任务状态为in_progress
|
||||
* @param taskId 主任务ID
|
||||
* @param pipelineMode 流水线模式:sequential(顺序)或 parallel(并行)
|
||||
*/
|
||||
public void updatePipelineSubTasksForAssigned(Long taskId, String pipelineMode) {
|
||||
log.info("更新指派流水线任务的子任务状态:taskId={}, mode={}", taskId, pipelineMode);
|
||||
|
||||
List<TaskItem> taskItems = taskItemMapper.selectList(
|
||||
new LambdaQueryWrapper<TaskItem>()
|
||||
.eq(TaskItem::getTaskId, taskId)
|
||||
.orderByAsc(TaskItem::getGroupNo)
|
||||
);
|
||||
|
||||
if (taskItems.isEmpty()) {
|
||||
log.warn("未找到任务的子任务:taskId={}", taskId);
|
||||
return;
|
||||
}
|
||||
|
||||
LocalDateTime now = LocalDateTime.now();
|
||||
|
||||
if ("parallel".equals(pipelineMode)) {
|
||||
// 并行模式:所有子任务都进入in_progress状态
|
||||
for (TaskItem item : taskItems) {
|
||||
item.setStatus("in_progress");
|
||||
item.setIsLocked(0);
|
||||
item.setActualStartTime(now);
|
||||
taskItemMapper.updateById(item);
|
||||
}
|
||||
log.info("并行流水线任务的所有子任务已更新为in_progress:count={}", taskItems.size());
|
||||
} else {
|
||||
// 顺序模式:只有第一组进入in_progress状态
|
||||
Integer firstGroupNo = taskItems.get(0).getGroupNo();
|
||||
for (TaskItem item : taskItems) {
|
||||
if (item.getGroupNo().equals(firstGroupNo)) {
|
||||
item.setStatus("in_progress");
|
||||
item.setIsLocked(0);
|
||||
item.setActualStartTime(now);
|
||||
taskItemMapper.updateById(item);
|
||||
log.info("顺序流水线任务第一组子任务已更新为in_progress:itemId={}", item.getId());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user