fix: 工作流存在已离职人员

This commit is contained in:
kuaifan 2025-03-13 15:02:53 +08:00
parent e5efcd3d26
commit e6f6b3fee2
2 changed files with 15 additions and 3 deletions

View File

@ -419,6 +419,7 @@ class Project extends AbstractModel
$hasStart = false; $hasStart = false;
$hasEnd = false; $hasEnd = false;
$upTaskList = []; $upTaskList = [];
$projectUserids = $this->relationUserids();
foreach ($flows as $item) { foreach ($flows as $item) {
$id = intval($item['id']); $id = intval($item['id']);
$turns = Base::arrayRetainInt($item['turns'] ?: [], true); $turns = Base::arrayRetainInt($item['turns'] ?: [], true);
@ -435,6 +436,12 @@ class Project extends AbstractModel
if ($userlimit && empty($userids)) { if ($userlimit && empty($userids)) {
throw new ApiException("状态[{$item['name']}]设置错误,设置限制负责人时必须填写状态负责人"); throw new ApiException("状态[{$item['name']}]设置错误,设置限制负责人时必须填写状态负责人");
} }
foreach ($userids as $userid) {
if (!in_array($userid, $projectUserids)) {
$nickname = User::userid2nickname($userid);
throw new ApiException("状态[{$item['name']}]设置错误,状态负责人[{$nickname}]不在项目成员内");
}
}
$flow = ProjectFlowItem::updateInsert([ $flow = ProjectFlowItem::updateInsert([
'id' => $id, 'id' => $id,
'project_id' => $this->id, 'project_id' => $this->id,

View File

@ -618,7 +618,12 @@ class ProjectTask extends AbstractModel
$data['complete_at'] = false; $data['complete_at'] = false;
} }
} }
if ($newFlowItem->userids) { $flowUserids = $newFlowItem->userids;
if ($flowUserids) {
// 确认负责人在任务中
$flowUserids = ProjectUser::whereProjectId($this->project_id)->whereIn('userid', $flowUserids)->pluck('userid')->toArray();
}
if ($flowUserids) {
// 判断自动添加负责人 // 判断自动添加负责人
$flowData['owner'] = $data['owner'] = $this->taskUser->where('owner', 1)->pluck('userid')->toArray(); $flowData['owner'] = $data['owner'] = $this->taskUser->where('owner', 1)->pluck('userid')->toArray();
if (in_array($newFlowItem->usertype, ["replace", "merge"])) { if (in_array($newFlowItem->usertype, ["replace", "merge"])) {
@ -627,14 +632,14 @@ class ProjectTask extends AbstractModel
$flowData['assist'] = $data['assist'] = $this->taskUser->where('owner', 0)->pluck('userid')->toArray(); $flowData['assist'] = $data['assist'] = $this->taskUser->where('owner', 0)->pluck('userid')->toArray();
$data['assist'] = array_merge($data['assist'], $data['owner']); $data['assist'] = array_merge($data['assist'], $data['owner']);
} }
$data['owner'] = $newFlowItem->userids; $data['owner'] = $flowUserids;
// 判断剔除模式:保留操作状态的人员 // 判断剔除模式:保留操作状态的人员
if ($newFlowItem->usertype == "merge") { if ($newFlowItem->usertype == "merge") {
$data['owner'][] = User::userid(); $data['owner'][] = User::userid();
} }
} else { } else {
// 添加模式 // 添加模式
$data['owner'] = array_merge($data['owner'], $newFlowItem->userids); $data['owner'] = array_merge($data['owner'], $flowUserids);
} }
$data['owner'] = array_values(array_unique($data['owner'])); $data['owner'] = array_values(array_unique($data['owner']));
if (isset($data['assist'])) { if (isset($data['assist'])) {