From 5aad78362f119332645fa93e02ad3904da53349a Mon Sep 17 00:00:00 2001 From: liumengyi Date: Tue, 9 May 2023 15:43:45 +0800 Subject: [PATCH] * Optimize code after code reviewing. --- module/task/model.php | 52 +++--- module/task/tao.php | 8 +- .../task/test/model/computehours4multiple.php | 171 ------------------ .../task/test/model/computemultiplehours.php | 83 +++++++++ ...nttaskstatus.php => computetaskstatus.php} | 28 +-- module/task/test/tao/fetchexecutiontasks.php | 8 +- module/task/test/task.class.php | 101 ++++++----- module/task/zen.php | 4 +- 8 files changed, 194 insertions(+), 261 deletions(-) delete mode 100755 module/task/test/model/computehours4multiple.php create mode 100755 module/task/test/model/computemultiplehours.php rename module/task/test/tao/{computecurrenttaskstatus.php => computetaskstatus.php} (81%) diff --git a/module/task/model.php b/module/task/model.php index 5ebac0cda3..7271c3e35a 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -17,10 +17,10 @@ class taskModel extends model * 创建一个任务。 * Create a task. * - * @param int $executionID - * @param int $bugID - * @param object $rawData - * @param array $data + * @param object $task + * @param array $assignedToList + * @param int $multiple + * @param array $team * @param bool $selectTestStory * @param array $teamSourceList * @param array $teamEstimateList @@ -31,14 +31,13 @@ class taskModel extends model */ public function create(object $task, array $assignedToList, int $multiple, array $team, bool $selectTestStory, array $teamSourceList, array $teamEstimateList, array|bool $teamConsumedList, array|bool $teamLeftList): bool|array { - $this->loadModel('action'); - /* Remove required fields for creating tasks based on conditions. */ $this->taskTao->removeCreateRequiredFields($task, $selectTestStory); /* Create task. */ $taskIdList = array(); $taskFiles = array(); + $this->loadModel('action'); foreach($assignedToList as $assignedTo) { /* If the type of task is affair and assignedTo is empty, skip it.*/ @@ -60,7 +59,7 @@ class taskModel extends model { $task->id = $taskID; $teams = $this->manageTaskTeam($task->mode, $task, $team, $teamSourceList, $teamEstimateList, $teamConsumedList, $teamLeftList); - if($teams) $this->computeHours4Multiple($task); + if($teams) $this->computeMultipleHours($task); unset($task->id); } @@ -81,7 +80,7 @@ class taskModel extends model * @access public * @return object|bool */ - public function computeHours4Multiple(object $oldTask, object $task = null, array $team = array(), bool $autoStatus = true): object|bool + public function computeMultipleHours(object $oldTask, object $task = null, array $team = array(), bool $autoStatus = true): object|bool { if(!$oldTask) return false; @@ -125,12 +124,12 @@ class taskModel extends model foreach($efforts as $effort) $currentTask->consumed += (float)$effort->consumed; /* If task is not empty, the task status is computed and the task is returned. */ - if(!empty($task)) return $this->taskTao->computeCurrentTaskStatus($currentTask, $oldTask, $task, $autoStatus, empty($efforts), $members); + if(!empty($task)) return $this->taskTao->computeTaskStatus($currentTask, $oldTask, $task, $autoStatus, empty($efforts), $members); /* If task is empty, update the current task. */ $this->dao->update(TABLE_TASK)->data($currentTask)->autoCheck()->where('id')->eq($oldTask->id)->exec(); } - return true; + return !dao::isError(); } /** @@ -245,7 +244,7 @@ class taskModel extends model if(empty($tasks)) { $this->dao->update(TABLE_TASK)->set('consumed')->eq(0)->where('id')->eq($taskID)->exec(); - return true; + return !dao::isError(); } /* Compute task estimate, consumed and left through sub-tasks. */ @@ -284,7 +283,7 @@ class taskModel extends model { /* Get estStarted realStarted and deadline of the sub-tasks. */ $tasks = $this->dao->select('estStarted, realStarted, deadline')->from(TABLE_TASK)->where('parent')->eq($taskID)->andWhere('status')->ne('cancel')->andWhere('deleted')->eq(0)->fetchAll(); - if(empty($tasks)) return true; + if(empty($tasks)) return !dao::isError(); /* Compute the earliest estStarted, the earliest realStarted and the latest deadline. */ $earliestEstStarted = ''; @@ -695,7 +694,7 @@ class taskModel extends model if($this->post->team and count(array_filter($this->post->team)) > 1) { $teams = $this->manageTaskTeam($oldTask->mode, $taskID, $task->status); - if(!empty($teams)) $task = $this->computeHours4Multiple($oldTask, $task, array(), false); + if(!empty($teams)) $task = $this->computeMultipleHours($oldTask, $task, array(), false); } if(empty($teams)) $task->mode = ''; @@ -1213,7 +1212,7 @@ class taskModel extends model if(count(array_filter($team)) > 1) { $teams = $this->manageTaskTeam($oldTask->mode, $task, $team, $teamSource, $teamEstimate, $teamConsumed, $teamLeft); - if(!empty($teams)) $task = $this->computeHours4Multiple($oldTask, $task); + if(!empty($teams)) $task = $this->computeMultipleHours($oldTask, $task); } if(empty($teams)) $task->mode = ''; @@ -1304,7 +1303,7 @@ class taskModel extends model $this->dao->update(TABLE_TASKTEAM)->data($team)->where('id')->eq($currentTeam->id)->exec(); if($oldTask->mode == 'linear' and !empty($estimateID)) $this->updateEstimateOrder($estimateID, $currentTeam->order); - $task = $this->computeHours4Multiple($oldTask, $task); + $task = $this->computeMultipleHours($oldTask, $task); if($team->status == 'done') { $task->assignedTo = $this->getAssignedTo4Multi($oldTask->team, $oldTask, 'next'); @@ -1495,7 +1494,7 @@ class taskModel extends model $currentTeam->status = $teamStatus; } - $newTask = $this->computeHours4Multiple($task, $newTask, $task->team); + $newTask = $this->computeMultipleHours($task, $newTask, $task->team); } $changes = common::createChanges($task, $newTask, 'task'); @@ -1610,7 +1609,7 @@ class taskModel extends model { $this->dao->update(TABLE_TASKTEAM)->set('left')->eq(0)->set('consumed')->eq($task->consumed)->set('status')->eq('done')->where('id')->eq($currentTeam->id)->exec(); if($oldTask->mode == 'linear' and isset($estimateID)) $this->updateEstimateOrder($estimateID, $currentTeam->order); - $task = $this->computeHours4Multiple($oldTask, $task); + $task = $this->computeMultipleHours($oldTask, $task); } if($task->finishedDate == substr($now, 0, 10)) $task->finishedDate = $now; @@ -1841,7 +1840,7 @@ class taskModel extends model if(!empty($oldTask->team)) { $this->manageTaskTeam($oldTask->mode, $oldTask->id, $task->status); - $task = $this->computeHours4Multiple($oldTask, $task); + $task = $this->computeMultipleHours($oldTask, $task); } $task = $this->loadModel('file')->processImgURL($task, $this->config->task->editor->activate['id'], $this->post->uid); @@ -2389,7 +2388,7 @@ class taskModel extends model if($currentTeam->status != 'done' and $newTeamInfo->consumed > 0 and $left == 0) $newTeamInfo->status = 'done'; $this->dao->update(TABLE_TASKTEAM)->data($newTeamInfo)->where('id')->eq($currentTeam->id)->exec(); - $data = $this->computeHours4Multiple($task, $data); + $data = $this->computeMultipleHours($task, $data); } } @@ -2514,7 +2513,7 @@ class taskModel extends model } $this->dao->update(TABLE_EFFORT)->set('deleted')->eq('1')->where('id')->eq($estimateID)->exec(); - if(!empty($task->team)) $data = $this->computeHours4Multiple($task, $data); + if(!empty($task->team)) $data = $this->computeMultipleHours($task, $data); $this->dao->update(TABLE_TASK)->data($data) ->where('id')->eq($estimate->objectID)->exec(); if($task->parent > 0) $this->updateParentStatus($task->id); @@ -2579,7 +2578,7 @@ class taskModel extends model * Batch process tasks. * * @param int $tasks - * @access private + * @access public * @return void */ public function processTasks($tasks) @@ -2602,7 +2601,7 @@ class taskModel extends model * Process a task, judge it's status. * * @param object $task - * @access private + * @access public * @return object */ public function processTask($task) @@ -3647,10 +3646,10 @@ class taskModel extends model * @param int $objectID * @param string $objectType * @param object $postData - * @access private + * @access public * @return bool */ - private function updateExecutionEsDateByGantt($objectID, $postData) + public function updateExecutionEsDateByGantt($objectID, $postData) { $objectData = $this->dao->select('*')->from(TABLE_PROJECT)->where('id')->eq($objectID)->fetch(); $project = $objectData->project; @@ -3787,7 +3786,8 @@ class taskModel extends model * @param object $task * @param array $taskIdList * @param int $bugID - * @param object $rawData + * @param int $todoID + * @param array $testTasks * @access public * @return bool */ @@ -3840,7 +3840,7 @@ class taskModel extends model $this->file->updateObjectID($this->post->uid, $taskID, 'task'); $this->score->create('task', 'create', $taskID); } - return true; + return !dao::isError(); } /** diff --git a/module/task/tao.php b/module/task/tao.php index 1708553e3b..e8cc09157a 100644 --- a/module/task/tao.php +++ b/module/task/tao.php @@ -339,7 +339,7 @@ class taskTao extends taskModel * @access protected * @return object */ - protected function computeCurrentTaskStatus(object $currentTask, object $oldTask, object $task, bool $autoStatus, bool $hasEfforts, array $members): object + protected function computeTaskStatus(object $currentTask, object $oldTask, object $task, bool $autoStatus, bool $hasEfforts, array $members): object { /* If the status is not automatic, return the current task. */ if(!$autoStatus) return $currentTask; @@ -514,19 +514,19 @@ class taskTao extends taskModel protected function removeCreateRequiredFields(object $task, bool $selectTestStory): void { /* Get create required fields and the execution of the task. */ - $requiredFields = "," . $this->config->task->create->requiredFields . ","; + $requiredFields = ',' . $this->config->task->create->requiredFields . ','; $execution = $this->dao->findByID($task->execution)->from(TABLE_PROJECT)->fetch(); /* If the lifetime if the execution is ops and the attribute of execution is request or review, remove story from required fields. */ if($execution and ($execution->lifetime == 'ops' or in_array($execution->attribute, array('request', 'review')))) { - $requiredFields = str_replace(",story,", ',', "$requiredFields"); + $requiredFields = str_replace(',story,', ',', $requiredFields); } /* If the type of the task is test and select story is true, remove some required fields. */ if($task->type == 'test' and $selectTestStory) { - $requiredFields = str_replace(array(",estimate,", ",story,", ",estStarted,", ",deadline,", ",module,"), ',', "$requiredFields"); + $requiredFields = str_replace(array(',estimate,', ',story,', ',estStarted,', ',deadline,', ',module,'), ',', $requiredFields); } $this->config->task->create->requiredFields = trim($requiredFields, ','); diff --git a/module/task/test/model/computehours4multiple.php b/module/task/test/model/computehours4multiple.php deleted file mode 100755 index 1f3cccc6b0..0000000000 --- a/module/task/test/model/computehours4multiple.php +++ /dev/null @@ -1,171 +0,0 @@ -#!/usr/bin/env php -id->range('1-5'); -$task->name->range('1-5')->prefix('任务'); -$task->mode->range('multi'); -$task->status->range('wait,doing,done,pause,cancel,closed'); -$task->assignedTo->range('admin,user1'); -$task->openedBy->range('admin,user2,user1'); -$task->estimate->range('0'); -$task->consumed->range('0'); -$task->left->range('0'); -$task->gen(5); - -$taskTeam = zdTable('taskteam'); -$taskTeam->id->range('1-20'); -$taskTeam->task->range('1{2},2{3},3{2},4{3}'); -$taskTeam->account->range('admin,user1,admin,user1,user2'); -$taskTeam->estimate->range('1{2},2{3},3,4{2},5'); -$taskTeam->left->range('1{2},0{3},1{3},0{2}'); -$taskTeam->consumed->range('0{11},1{4},0{2},1{3}'); -$taskTeam->status->range('wait{11},doing,done,done,done,wait,wait,doing,done,done'); -$taskTeam->gen(20); - -global $tester; -$tester->loadModel('task'); - -$taskIdList = array(1, 2, 3, 4, 5); -$tasks = array(); -$oldTasks = array(); -foreach($taskIdList as $id) -{ - $task = $tester->task->getByID($id); - $oldTasks[] = $task; - $tasks[] = $task; -} - -$tasks[0]->status = 'doing'; -$tasks[0]->finishedDate = null; - -$tasks[1]->status = 'done'; -$tasks[1]->finishedDate = '2023-04-27'; - -$members1 = new stdclass(); -$members1->account = 'admin'; -$members1->estimate = 1; -$members1->left = 1; - -$members2 = new stdclass(); -$members2->account = 'user1'; -$members2->estimate = 2; -$members2->left = 2; - -$members3 = new stdclass(); -$members3->account = 'user3'; -$members3->estimate = 3; -$members3->left = 3; - -$members = array(array($members1, $members2), array($members3)); - -/** - -title=taskModel->computeHours4Multiple(); -timeout=0 -cid=1 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[0] - - 属性id @1 - - 属性assignedTo @admin - - 属性status @doing - - 属性estimate @5 - - 属性consumed @0 - - 属性left @4 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[1] - - 属性id @2 - - 属性assignedTo @user1 - - 属性status @done - - 属性estimate @13 - - 属性consumed @0 - - 属性left @0 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[2] - - 属性id @3 - - 属性assignedTo @admin - - 属性status @done - - 属性estimate @15 - - 属性consumed @0 - - 属性left @4 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[3] - - 属性id @4 - - 属性assignedTo @user1 - - 属性status @pause - - 属性estimate @17 - - 属性consumed @0 - - 属性left @2 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[4] - - 属性id @5 - - 属性assignedTo @admin - - 属性status @cancel - - 属性estimate @0 - - 属性consumed @0 - - 属性left @0 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[0], $tasks[0] - - 属性id @1 - - 属性assignedTo @admin - - 属性status @doing - - 属性estimate @5 - - 属性consumed @0 - - 属性left @4 - -- 执行task模块的computeHours4Multiple方法,参数是$oldTasks[1], $tasks[1] - - 属性id @2 - - 属性assignedTo @user1 - - 属性status @done - - 属性estimate @13 - - 属性consumed @0 - - 属性left @0 - -- 执行task模块的computehours4multiple方法,参数是$oldTasks[0], $tasks[0], $members[0] - - 属性id @1 - - 属性assignedTo @admin - - 属性status @doing - - 属性estimate @3 - - 属性consumed @0 - - 属性left @3 - -- 执行task模块的computehours4multiple方法,参数是$oldTasks[1], $tasks[1], $members[1] - - 属性id @2 - - 属性assignedTo @user1 - - 属性status @done - - 属性estimate @3 - - 属性consumed @0 - - 属性left @3 - -- 执行task模块的computehours4multiple方法,参数是$oldTasks[0], $tasks[0], $members[0], false - - 属性id @1 - - 属性assignedTo @admin - - 属性status @doing - - 属性estimate @3 - - 属性consumed @0 - - 属性left @3 - -- 执行task模块的computehours4multiple方法,参数是$oldTasks[1], $tasks[1], $members[1], false - - 属性id @2 - - 属性assignedTo @user1 - - 属性status @done - - 属性estimate @3 - - 属性consumed @0 - - 属性left @3 - -*/ - -$task = new taskTest(); -r($task->computeHours4MultipleTest($oldTasks[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,5,0,4'); // taskID 1 只有老task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,13,0,0'); // taskID 2 只有老task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[2])) && p('id,assignedTo,status,estimate,consumed,left') && e('3,admin,done,15,0,4'); // taskID 3 只有老task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[3])) && p('id,assignedTo,status,estimate,consumed,left') && e('4,user1,pause,17,0,2'); // taskID 4 只有老task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[4])) && p('id,assignedTo,status,estimate,consumed,left') && e('5,admin,cancel,0,0,0'); // taskID 5 只有老task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[0], $tasks[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,5,0,4'); // taskID 1 有传入task计算多人工时 -r($task->computeHours4MultipleTest($oldTasks[1], $tasks[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,13,0,0'); // taskID 2 有传入task计算多人工时 -r($task->computehours4multipletest($oldTasks[0], $tasks[0], $members[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,3,0,3'); // taskID 1 有传入task 传入members计算多人工时 -r($task->computehours4multipletest($oldTasks[1], $tasks[1], $members[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,3,0,3'); // taskID 2 有传入task 传入members计算多人工时 -r($task->computehours4multipletest($oldTasks[0], $tasks[0], $members[0], false)) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,3,0,3'); // taskID 1 有传入task 传入members 不自动更新状态计算多人工时 -r($task->computehours4multipletest($oldTasks[1], $tasks[1], $members[1], false)) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,3,0,3'); // taskID 2 有传入task 传入members 不自动更新状态计算多人工时 diff --git a/module/task/test/model/computemultiplehours.php b/module/task/test/model/computemultiplehours.php new file mode 100755 index 0000000000..90d768c6ba --- /dev/null +++ b/module/task/test/model/computemultiplehours.php @@ -0,0 +1,83 @@ +#!/usr/bin/env php +id->range('1-5'); +$task->name->range('1-5')->prefix('任务'); +$task->mode->range('multi'); +$task->status->range('wait,doing,done,pause,cancel,closed'); +$task->assignedTo->range('admin,user1'); +$task->openedBy->range('admin,user2,user1'); +$task->estimate->range('0'); +$task->consumed->range('0'); +$task->left->range('0'); +$task->gen(5); + +$taskTeam = zdTable('taskteam'); +$taskTeam->id->range('1-20'); +$taskTeam->task->range('1{2},2{3},3{2},4{3}'); +$taskTeam->account->range('admin,user1,admin,user1,user2'); +$taskTeam->estimate->range('1{2},2{3},3,4{2},5'); +$taskTeam->left->range('1{2},0{3},1{3},0{2}'); +$taskTeam->consumed->range('0{11},1{4},0{2},1{3}'); +$taskTeam->status->range('wait{11},doing,done,done,done,wait,wait,doing,done,done'); +$taskTeam->gen(20); + +global $tester; +$tester->loadModel('task'); + +$taskIdList = array(1, 2, 3, 4, 5); +$tasks = array(); +$oldTasks = array(); +foreach($taskIdList as $id) +{ + $task = $tester->task->getByID($id); + $oldTasks[] = $task; + $tasks[] = $task; +} + +$tasks[0]->status = 'doing'; +$tasks[0]->finishedDate = null; + +$tasks[1]->status = 'done'; +$tasks[1]->finishedDate = '2023-04-27'; + +$members1 = new stdclass(); +$members1->account = 'admin'; +$members1->estimate = 1; +$members1->left = 1; + +$members2 = new stdclass(); +$members2->account = 'user1'; +$members2->estimate = 2; +$members2->left = 2; + +$members3 = new stdclass(); +$members3->account = 'user3'; +$members3->estimate = 3; +$members3->left = 3; + +$members = array(array($members1, $members2), array($members3)); + +/** + +title=taskModel->computeMultipleHours(); +timeout=0 +cid=1 + +*/ + +$task = new taskTest(); +r($task->computeMultipleHoursTest($oldTasks[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,5,34,4'); // taskID 1 只有老task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,13,201,0'); // taskID 2 只有老task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[2])) && p('id,assignedTo,status,estimate,consumed,left') && e('3,admin,done,15,0,4'); // taskID 3 只有老task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[3])) && p('id,assignedTo,status,estimate,consumed,left') && e('4,user1,pause,17,0,2'); // taskID 4 只有老task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[4])) && p('id,assignedTo,status,estimate,consumed,left') && e('5,admin,cancel,0,0,0'); // taskID 5 只有老task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[0], $tasks[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,5,34,4'); // taskID 1 有传入task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[1], $tasks[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,done,13,201,0'); // taskID 2 有传入task计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[0], $tasks[0], $members[0])) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,3,34,3'); // taskID 1 有传入task 传入members计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[1], $tasks[1], $members[1])) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,doing,3,201,3'); // taskID 2 有传入task 传入members计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[0], $tasks[0], $members[0], false)) && p('id,assignedTo,status,estimate,consumed,left') && e('1,admin,doing,3,34,3'); // taskID 1 有传入task 传入members 不自动更新状态计算多人工时 +r($task->computeMultipleHoursTest($oldTasks[1], $tasks[1], $members[1], false)) && p('id,assignedTo,status,estimate,consumed,left') && e('2,user1,doing,3,201,3'); // taskID 2 有传入task 传入members 不自动更新状态计算多人工时 diff --git a/module/task/test/tao/computecurrenttaskstatus.php b/module/task/test/tao/computetaskstatus.php similarity index 81% rename from module/task/test/tao/computecurrenttaskstatus.php rename to module/task/test/tao/computetaskstatus.php index aae518b794..fa112b93a0 100755 --- a/module/task/test/tao/computecurrenttaskstatus.php +++ b/module/task/test/tao/computetaskstatus.php @@ -61,7 +61,7 @@ $hasEfforts = array(true, false); /** -title=taskModel->computeCurrentTaskStatus(); +title=taskModel->computeTaskStatus(); timeout=0 cid=1 @@ -153,18 +153,18 @@ sed: can't read /home/tianshujie/repo/zentaopms/test/config/my.php: No such file */ $task = new taskTest(); -$task1 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[0], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); -$task2 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); -$task3 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[0], $hasEfforts[0], $members[0]); -$task4 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[0], $members[0]); -$task5 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[0]); -$task6 = $task->computeCurrentTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[1]); -$task7 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[0], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); -$task8 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); -$task9 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[0], $hasEfforts[0], $members[0]); -$task10 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[0], $members[0]); -$task11 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[0]); -$task12 = $task->computeCurrentTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[1]); +$task1 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[0], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); +$task2 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); +$task3 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[0], $hasEfforts[0], $members[0]); +$task4 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[0], $members[0]); +$task5 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[0]); +$task6 = $task->computeTaskStatusTest($currentTasks[0], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[1]); +$task7 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[0], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); +$task8 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[0], $autoStatus[0], $hasEfforts[0], $members[0]); +$task9 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[0], $hasEfforts[0], $members[0]); +$task10 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[0], $members[0]); +$task11 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[0]); +$task12 = $task->computeTaskStatusTest($currentTasks[1], $oldTasks[1], $tasks[1], $autoStatus[1], $hasEfforts[1], $members[1]); r($task1) && p('status,assignedTo,estimate,left,consumed') && e('doing,user1,9,0,10'); // 查询 task1 情况的task信息 currentTask[0] taskID 1 currentTasksestimate 状态自动变更 没有工时消耗 团队成员members[0] r($task2) && p('status,assignedTo,estimate,left,consumed') && e('doing,user1,9,0,10'); // 查询 task2 情况的task信息 currentTask[0] taskID 1 currentTasksestimate 状态自动变更 没有工时消耗 团队成员members[0] @@ -177,4 +177,4 @@ r($task8) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8 r($task9) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8,0'); // 查询 task9 情况的task信息 currentTask[1] taskID 2 currentTasksestimate 状态自动变更 有工时消耗 团队成员members[0] r($task10) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8,0'); // 查询 task10 情况的task信息 currentTask[1] taskID 2 currentTasksestimate 状态非自动变更 有工时消耗 团队成员members[0] r($task11) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8,0'); // 查询 task11 情况的task信息 currentTask[1] taskID 2 currentTasksestimate 状态非自动变更 没有工时消耗 团队成员members[0] -r($task12) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8,0'); // 查询 task12 情况的task信息 currentTask[1] taskID 2 currentTasksestimate 状态非自动变更 没有工时消耗 团队成员members[1] \ No newline at end of file +r($task12) && p('status,assignedTo,estimate,left,consumed') && e('done,admin,8,8,0'); // 查询 task12 情况的task信息 currentTask[1] taskID 2 currentTasksestimate 状态非自动变更 没有工时消耗 团队成员members[1] diff --git a/module/task/test/tao/fetchexecutiontasks.php b/module/task/test/tao/fetchexecutiontasks.php index 336ff4b522..08bc89d1b6 100755 --- a/module/task/test/tao/fetchexecutiontasks.php +++ b/module/task/test/tao/fetchexecutiontasks.php @@ -9,6 +9,7 @@ $execution->name->range('项目1,项目2,迭代1,迭代2,迭代3'); $execution->type->range('project{2},sprint,stage,kanban'); $execution->status->range('doing{3},closed,doing'); $execution->parent->range('0,0,1,1,2'); +$execution->project->range('0'); $execution->grade->range('2{2},1{3}'); $execution->path->range('1,2,`1,3`,`1,4`,`2,5`')->prefix(',')->postfix(','); $execution->begin->range('20230102 000000:0')->type('timestamp')->format('YY/MM/DD'); @@ -17,6 +18,7 @@ $execution->gen(5); $task = zdTable('task'); $task->id->range('1-20'); +$task->project->range('0'); $task->name->range('1-20')->prefix('任务'); $task->module->range('1-5'); $task->parent->range('0{15},1{5}'); @@ -33,6 +35,7 @@ $task->gen(20); $story = zdTable('story'); $story->id->range('1-20'); +$story->project->range('0'); $story->title->range('1-20')->prefix('需求'); $story->product->range('1-20'); $story->branch->range('0'); @@ -52,6 +55,7 @@ $taskTeam->status->range('wait{2},doing{3}'); $taskTeam->gen(5); $module = zdTable('module'); +$module->project->range('0'); $module->root->range('1-5'); $module->type->range('story'); $module->gen(5); @@ -228,7 +232,7 @@ $productIdList = array(0, 1, 8); $type = array('all', 'assignedbyme', 'myinvolved', 'undone', 'needconfirm', 'assignedtome', 'finishedbyme', 'delayed', 'wait', 'doing', 'done', 'pause', 'cancel', array('wait', 'doing', 'done', 'pause', 'cancel')); $modules = array(array(), array(2), array(8), array(2,8)); $orderBy = array('status_asc, id_desc', 'pri_desc'); -$count = array('0','1'); +$count = array(0, 1); $task = new taskTest(); @@ -310,4 +314,4 @@ r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[ r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[0])) && p('2:name') && e('任务2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务 r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[3], $orderBy[0], $count[1])) && p() && e('2'); // 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[0])) && p('20:name') && e('任务20'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务 -r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 \ No newline at end of file +r($task->fetchExecutionTasksTest($executionIdList[2], $productIdList[0], $type[0], $modules[0], $orderBy[1], $count[1])) && p() && e('10'); // 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 diff --git a/module/task/test/task.class.php b/module/task/test/task.class.php index 0b3dd6f46f..6b6041f46f 100644 --- a/module/task/test/task.class.php +++ b/module/task/test/task.class.php @@ -910,18 +910,19 @@ class taskTest } /** + * 测试计算多人任务的工时。 * Test compute hours for multiple task. * - * @param object $oldTask - * @param object $task - * @param array $team - * @param bool $autoStatus + * @param object $oldTask + * @param object $task + * @param array $team + * @param bool $autoStatus * @access public - * @return array + * @return array|object */ - public function computeHours4MultipleTest($oldTask, $task = null, $team = array(), $autoStatus = true) + public function computeMultipleHoursTest($oldTask, $task = null, $team = array(), $autoStatus = true): array|object { - $result = $this->objectModel->computeHours4Multiple($oldTask, $task, $team, $autoStatus); + $result = $this->objectModel->computeMultipleHours($oldTask, $task, $team, $autoStatus); if(dao::isError()) { @@ -1563,24 +1564,25 @@ class taskTest } /** + * 测试根据类型查询任务。 * Test fetch tasks of a execution. * * @param int $executionID * @param int $productID * @param string|array $type all|assignedbyme|myinvolved|undone|needconfirm|assignedtome|finishedbyme|delayed|review|wait|doing|done|pause|cancel|closed|array('wait','doing','done','pause','cancel','closed') - * @param string $modules + * @param array $modules * @param string $orderBy - * @param string $count + * @param int $count * @access public - * @return array + * @return object[]|int|bool */ - public function fetchExecutionTasksTest($executionID, $productID = 0, $type = 'all', $modules = array(), $orderBy = 'status_asc, id_desc', $count = '0'): array|int + public function fetchExecutionTasksTest(int $executionID, int $productID = 0, array|string $type = 'all', array $modules = array(), string $orderBy = 'status_asc, id_desc', int $count = 0): array|int|bool { $tasks = $this->objectModel->fetchExecutionTasks($executionID, $productID, $type, $modules, $orderBy); if(dao::isError()) { $error = dao::getError(); - return $error; + return dao::getError(); } elseif($count == "1") { @@ -1593,13 +1595,14 @@ class taskTest } /** - * Change the hierarchy of tasks to a parent-child structure. + * 测试将任务的层级改为父子结构。 + * Test change the hierarchy of tasks to a parent-child structure. * * @param array $taskIdList * @access public * @return object[] */ - public function buildTaskTreeTest($taskIdList): array + public function buildTaskTreeTest(array $taskIdList): array { $tasks = array(); if(!empty($taskIdList)) $tasks = $this->objectModel->getByList($taskIdList); @@ -1632,7 +1635,8 @@ class taskTest } /** - * Test fetch tasks of a execution. + * 测试计算当前任务状态。 + * Test compute the status of the current task. * * @param object $currentTask * @param object $oldTask @@ -1641,11 +1645,11 @@ class taskTest * @param bool $hasEfforts true|false * @param int $teamCount * @access public - * @return object + * @return object|array */ - public function computeCurrentTaskStatusTest($currentTask, $oldTask, $task, $autoStatus, $hasEfforts, $members): object + public function computeTaskStatusTest($currentTask, $oldTask, $task, $autoStatus, $hasEfforts, $members): object|array { - $task = $this->objectModel->computeCurrentTaskStatus($currentTask, $oldTask, $task, $autoStatus, $hasEfforts, $members); + $task = $this->objectModel->computeTaskStatus($currentTask, $oldTask, $task, $autoStatus, $hasEfforts, $members); if(dao::isError()) { return dao::getError(); @@ -1656,16 +1660,16 @@ class taskTest } } - /** + * 测试根据条件移除创建任务的必填项。 * Test remove required fields for creating tasks based on conditions. * * @param object $task * @param bool $selectTestStory * @access public - * @return string + * @return string|array */ - public function removeCreateRequiredFieldsTest(object $task, bool $selectTestStory): string + public function removeCreateRequiredFieldsTest(object $task, bool $selectTestStory): string|array { global $tester; $tester->config->task->create->requiredFields = 'name,type,execution,story,estimate,estStarted,deadline,module'; @@ -1681,18 +1685,28 @@ class taskTest } /** + * 测试创建一个任务。 * Test create a task. * * @param array $param - * @param int $executionID * @access public - * @return object + * @return object|array */ - public function doCreateObject($param = array()) + public function doCreateObject($param = array()): object|array { - $assignedTo = array(''); - $createFields = array('module' => 0, 'story' => 0, 'name' => '', 'type' => '', 'assignedTo' => 'admin', - 'pri' => 3, 'estimate' => '', 'estStarted' => '2021-01-10', 'deadline' => '2021-03-19', 'desc' => '', 'version' => '1'); + $createFields = array( + 'module' => 0, + 'story' => 0, + 'name' => '', + 'type' => '', + 'assignedTo' => 'admin', + 'pri' => 3, + 'estimate' => '', + 'estStarted' => '2021-01-10', + 'deadline' => '2021-03-19', + 'desc' => '', + 'version' => '1' + ); $task = new stdclass(); foreach($createFields as $field => $defaultValue) $task->$field = $defaultValue; @@ -1701,8 +1715,6 @@ class taskTest $objectID = $this->objectModel->doCreate($task); - unset($_POST); - if(dao::isError()) { return dao::getError(); @@ -1715,14 +1727,15 @@ class taskTest } /** - * Set attachments for tasks. + * 测试设置任务的附件。 + * Test set attachments for tasks. * * @param array $taskFiles * @param int $taskID * @access public * @return array */ - public function setTaskFilesTest(array $taskIdList, int $taskID) + public function setTaskFilesTest(array $taskIdList, int $taskID): array { global $tester; @@ -1775,17 +1788,18 @@ class taskTest } /** - * Other data processing after task creation. + * 测试创建任务后的其他数据处理。 + * Test other data processing after task creation. * - * @param int $taskID - * @param int $taskIdList - * @param int $bugID - * @param int $todoID - * @param array $testTasks + * @param int $taskID + * @param array $taskIdList + * @param int $bugID + * @param int $todoID + * @param array $testTasks * @access public * @return object|bool */ - public function afterCreateTest($taskID = 0, $taskIdList = array(), $bugID = 0, $todoID = 0, $testTasks = array()) + public function afterCreateTest($taskID = 0, $taskIdList = array(), $bugID = 0, $todoID = 0, $testTasks = array()): object|bool { global $tester; $_SERVER['HTTP_HOST'] = $tester->config->db->host; @@ -1817,6 +1831,7 @@ class taskTest } /** + * 测试管理多人任务团队。 * Test manage multi task team members. * * @param int $taskID @@ -1848,6 +1863,7 @@ class taskTest } /** + * 测试管理多人任务团队成员。 * Test manage multi task team member. * * @param int $taskID @@ -1887,14 +1903,15 @@ class taskTest } /** - * Create a subtask for the test type story with the story. + * 测试创建关联需求的测试类型的子任务。 + * Test create a subtask for the test type story with the story. * - * @param int $taskID - * @param array $testTasks + * @param int $taskID + * @param array $testTasks * @access public * @return array|object */ - public function createTestChildTasksTest($taskID = 0, $testTasks = array()) + public function createTestChildTasksTest($taskID = 0, $testTasks = array()): array|object { global $tester; $_SERVER['HTTP_HOST'] = $tester->config->db->host; diff --git a/module/task/zen.php b/module/task/zen.php index 4f12ddc23a..dbaee83f02 100644 --- a/module/task/zen.php +++ b/module/task/zen.php @@ -689,7 +689,7 @@ class taskZen extends task return false; } - return true; + return !dao::isError(); } /** @@ -798,7 +798,7 @@ class taskZen extends task } } } - return true; + return !dao::isError(); } /**