From 00504db138b50e70937e4771455780cc6aaabf31 Mon Sep 17 00:00:00 2001 From: daitingting Date: Wed, 27 Aug 2025 10:27:13 +0800 Subject: [PATCH] * [task#148826,done,3h] Check last date for left of team. --- module/task/model.php | 2 +- module/task/tao.php | 12 ++++++------ module/task/test/lib/task.unittest.class.php | 4 ++-- module/task/test/tao/updateteambyeffort.php | 14 ++++++++------ 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/module/task/model.php b/module/task/model.php index 84c1af9424..2fd3fccaeb 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -2948,7 +2948,7 @@ class taskModel extends model if(!empty($currentTeam)) { $currentTeam->status = $record->left == 0 ? 'done' : 'doing'; - $this->taskTao->updateTeamByEffort($effortID, $record, $currentTeam, $task); + $this->taskTao->updateTeamByEffort($effortID, $record, $currentTeam, $task, (string)$lastDate); $newTask = $this->computeMultipleHours($task, $newTask); } diff --git a/module/task/tao.php b/module/task/tao.php index d8698cf0fa..2dca7af66a 100644 --- a/module/task/tao.php +++ b/module/task/tao.php @@ -1068,14 +1068,14 @@ class taskTao extends taskModel * @access protected * @return void */ - protected function updateTeamByEffort(int $effortID, object $record, object $currentTeam, object $task) + protected function updateTeamByEffort(int $effortID, object $record, object $currentTeam, object $task, string $lastDate) { $this->dao->update(TABLE_TASKTEAM) - ->set('left')->eq($record->left) - ->set("consumed = consumed + {$record->consumed}") - ->set('status')->eq($currentTeam->status) - ->where('id')->eq($currentTeam->id) - ->exec(); + ->set("consumed = consumed + {$record->consumed}") + ->set('status')->eq($currentTeam->status) + ->beginIF($record->date >= $lastDate)->set('left')->eq($record->left)->fi() + ->where('id')->eq($currentTeam->id) + ->exec(); if($task->mode == 'linear' && empty($record->order)) $this->updateEffortOrder($effortID, $currentTeam->order); } diff --git a/module/task/test/lib/task.unittest.class.php b/module/task/test/lib/task.unittest.class.php index 197183340f..6f7f7ae2a4 100755 --- a/module/task/test/lib/task.unittest.class.php +++ b/module/task/test/lib/task.unittest.class.php @@ -685,11 +685,11 @@ class taskTest * @access public * @return array */ - public function updateTeamByEffortTest(int $effortID, object $record, int $taskID): array + public function updateTeamByEffortTest(int $effortID, object $record, int $taskID, object $task = null, string $lastDate): array { $task = $this->objectModel->getByID($taskID); $currentTeam = $this->objectModel->getTeamByAccount($task->team); - $this->objectModel->updateTeamByEffort($effortID, $record, $currentTeam, $task); + $this->objectModel->updateTeamByEffort($effortID, $record, $currentTeam, $task, $lastDate); if(dao::isError()) { return dao::getError(); diff --git a/module/task/test/tao/updateteambyeffort.php b/module/task/test/tao/updateteambyeffort.php index a9ad95802e..feb214b543 100755 --- a/module/task/test/tao/updateteambyeffort.php +++ b/module/task/test/tao/updateteambyeffort.php @@ -71,10 +71,12 @@ $normalTaskEffort->left = 5; $normalTaskEffort->work = "记录了日志"; $normalTaskEffort->date = "2022-01-01"; +$lastDate = '2022-01-01'; + $task = new taskTest(); -r($task->updateTeamByEffortTest(1, $finishTaskEffort, 1, null)) && p('0:estimate') && e('5.00'); // 通过ID为1的日志更新任务团队工时 -r($task->updateTeamByEffortTest(2, $finishTaskEffort, 1, null)) && p('0:consumed') && e('10.00'); // 通过ID为2的日志更新任务团队工时 -r($task->updateTeamByEffortTest(3, $startTaskEffort, 3, null)) && p('0:consumed') && e('0.00'); // 通过ID为3的日志更新任务团队工时 -r($task->updateTeamByEffortTest(3, $startTaskEffort, 4, null)) && p('0:consumed') && e('1.00'); // 通过ID为3的日志更新任务团队工时 -r($task->updateTeamByEffortTest(4, $normalTaskEffort, 3, null)) && p('0:consumed') && e('0.00'); // 通过ID为4的日志更新任务团队工时 -r($task->updateTeamByEffortTest(4, $normalTaskEffort, 4, null)) && p('0:consumed') && e('1.00'); // 通过ID为4的日志更新任务团队工时 +r($task->updateTeamByEffortTest(1, $finishTaskEffort, 1, null, $lastDate)) && p('0:estimate') && e('5.00'); // 通过ID为1的日志更新任务团队工时 +r($task->updateTeamByEffortTest(2, $finishTaskEffort, 1, null, $lastDate)) && p('0:consumed') && e('10.00'); // 通过ID为2的日志更新任务团队工时 +r($task->updateTeamByEffortTest(3, $startTaskEffort, 3, null, $lastDate)) && p('0:consumed') && e('0.00'); // 通过ID为3的日志更新任务团队工时 +r($task->updateTeamByEffortTest(3, $startTaskEffort, 4, null, $lastDate)) && p('0:consumed') && e('1.00'); // 通过ID为3的日志更新任务团队工时 +r($task->updateTeamByEffortTest(4, $normalTaskEffort, 3, null, $lastDate)) && p('0:consumed') && e('0.00'); // 通过ID为4的日志更新任务团队工时 +r($task->updateTeamByEffortTest(4, $normalTaskEffort, 4, null, $lastDate)) && p('0:consumed') && e('1.00'); // 通过ID为4的日志更新任务团队工时 \ No newline at end of file