修复:一级需求任务明细完善后子任务状态未正确更新的问题
问题原因: - 当管理员或任务发布人(非明细完善人、非需求部门成员)编辑一级需求任务时 - 原有条件判断 isPrimaryTaskDetailCompletion 为 false - 导致进入 initApprovalStatus 重新初始化审核状态,而不是 handlePrimaryTaskDetailCompletion - 子任务状态没有被更新为 pending_approval,导致接单部门负责人看不到待审核的子任务组 修复方案: - 简化条件判断:只要是一级需求任务且原状态为 pending_detail_completion,都应该调用 handlePrimaryTaskDetailCompletion - 这样可以确保无论谁编辑提交,子任务状态都会被正确更新
This commit is contained in:
parent
f48a43dd9a
commit
b4bafab04f
@ -1842,14 +1842,19 @@ public class TaskService {
|
||||
createPipelineTaskItemsForUpdate(existTask, dto);
|
||||
|
||||
// 判断是否是一级需求任务的明细完善
|
||||
// 条件:1) 是指定的明细完善人 或 2) 是需求部门成员编辑待完善明细的一级需求任务
|
||||
boolean isPrimaryTaskDetailCompletion = (isPrimaryTaskDetailCompleter || isDemandDeptMemberForPrimaryTask)
|
||||
&& "pending_detail_completion".equals(approvalStatus);
|
||||
// 🔥 修复: 一级需求任务在 pending_detail_completion 状态下被编辑提交时,
|
||||
// 无论是谁编辑(明细完善人、需求部门成员、管理员),都应该进入 handlePrimaryTaskDetailCompletion
|
||||
// 因为一级审核已经通过了,不需要再次进入一级审核流程
|
||||
boolean isPrimaryTask = existTask.getIsPrimaryTask() != null && existTask.getIsPrimaryTask() == 1;
|
||||
boolean wasPendingDetailCompletion = "pending_detail_completion".equals(approvalStatus);
|
||||
boolean isPrimaryTaskDetailCompletion = isPrimaryTask && wasPendingDetailCompletion;
|
||||
|
||||
log.info("判断明细完善条件: taskId={}, isPrimaryTask={}, approvalStatus={}, isPrimaryTaskDetailCompletion={}",
|
||||
id, isPrimaryTask, approvalStatus, isPrimaryTaskDetailCompletion);
|
||||
|
||||
if (isPrimaryTaskDetailCompletion) {
|
||||
// 一级需求任务明细完善后,进入接单部门审核流程
|
||||
log.info("一级需求任务明细完善: taskId={}, userId={}, isPrimaryTaskDetailCompleter={}, isDemandDeptMemberForPrimaryTask={}",
|
||||
id, userId, isPrimaryTaskDetailCompleter, isDemandDeptMemberForPrimaryTask);
|
||||
// 一级需求任务明细完善后,进入接单部门审核流程(跳过需求部门审核,因为一级审核已通过)
|
||||
log.info("一级需求任务明细完善: taskId={}, userId={}", id, userId);
|
||||
handlePrimaryTaskDetailCompletion(existTask, userId);
|
||||
} else {
|
||||
// 普通任务:重新初始化审核状态并发送通知
|
||||
@ -3688,6 +3693,10 @@ public class TaskService {
|
||||
taskItemMapper.updateById(item);
|
||||
log.info("一级需求任务子任务 {} 状态已更新为 pending_approval", item.getItemNo());
|
||||
}
|
||||
|
||||
if (taskItems.isEmpty()) {
|
||||
log.warn("警告: 任务 {} 没有找到可更新的子任务,请检查子任务创建逻辑", task.getId());
|
||||
}
|
||||
} else {
|
||||
// 如果无法确定接单部门负责人,直接发布到任务大厅
|
||||
log.warn("无法确定接单部门负责人,任务将直接发布到任务大厅");
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user