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;
$hasEnd = false;
$upTaskList = [];
$projectUserids = $this->relationUserids();
foreach ($flows as $item) {
$id = intval($item['id']);
$turns = Base::arrayRetainInt($item['turns'] ?: [], true);
@ -435,6 +436,12 @@ class Project extends AbstractModel
if ($userlimit && empty($userids)) {
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([
'id' => $id,
'project_id' => $this->id,

View File

@ -618,7 +618,12 @@ class ProjectTask extends AbstractModel
$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();
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();
$data['assist'] = array_merge($data['assist'], $data['owner']);
}
$data['owner'] = $newFlowItem->userids;
$data['owner'] = $flowUserids;
// 判断剔除模式:保留操作状态的人员
if ($newFlowItem->usertype == "merge") {
$data['owner'][] = User::userid();
}
} else {
// 添加模式
$data['owner'] = array_merge($data['owner'], $newFlowItem->userids);
$data['owner'] = array_merge($data['owner'], $flowUserids);
}
$data['owner'] = array_values(array_unique($data['owner']));
if (isset($data['assist'])) {