From 9da79833246d05d2ad6d8b2e92cc37ff0fc39b0f Mon Sep 17 00:00:00 2001 From: liuruogu Date: Mon, 15 Dec 2025 07:04:25 +0000 Subject: [PATCH] * [bug#67851, done] Multi - person parallel tasks cannot be activated. --- api/v1/entries/taskactive.php | 54 +++++++++++++++++++++++++++++++++-- 1 file changed, 52 insertions(+), 2 deletions(-) diff --git a/api/v1/entries/taskactive.php b/api/v1/entries/taskactive.php index adcaf52874..c4cdcaab3b 100644 --- a/api/v1/entries/taskactive.php +++ b/api/v1/entries/taskactive.php @@ -22,8 +22,58 @@ class taskActiveEntry extends entry { $control = $this->loadController('task', 'activate'); - $fields = 'assignedTo,left,comment'; - $this->batchSetPost($fields); + $assignedTo = $this->request('assignedTo'); + $comment = $this->request('comment'); + + if(is_array($assignedTo)) + { + $task = $this->loadModel('task')->getByID($taskID); + $teamEstimate = $this->request('teamEstimate', array()); + $oldTeam = $this->dao->select('*')->from(TABLE_TASKTEAM)->where('task')->eq($taskID)->orderBy('order')->fetchAll('account'); + + /* 构建旧团队 */ + $teamSource = array(); + foreach($oldTeam as $member) + { + $teamSource[] = $member->account; + } + + /* 根据新传入的数据重新设置团队 */ + $team = array(); + $teamConsumed = array(); + $teamLeft = array(); + + foreach($assignedTo as $index => $account) + { + $team[] = $account; + $teamConsumed[] = $oldTeam[$account]->consumed ?? 0; + $teamLeft[] = $oldTeam[$account]->left ?? $teamEstimate[$index] ?? 0; + } + + /* 根据预计剩余工时计算团队剩余工时 */ + $left = 0; + foreach($teamEstimate as $estimate) + { + $left += $estimate; + } + + $this->setPost('team', $team); + $this->setPost('teamConsumed', $teamConsumed); + $this->setPost('teamSource', $teamSource); + $this->setPost('teamEstimate', $teamEstimate); + $this->setPost('teamLeft', $teamLeft); + $this->setPost('left', $left); + $this->setPost('mode', $task->mode); + $this->setPost('multiple', 'on'); + } + else + { + $left = $this->request('left'); + + $this->setPost('assignedTo', $assignedTo); + $this->setPost('left', $left); + } + $this->setPost('comment', $comment); $control->activate($taskID);