diff --git a/module/task/model.php b/module/task/model.php index 52ec65bc16..783f39ee76 100755 --- a/module/task/model.php +++ b/module/task/model.php @@ -1557,30 +1557,31 @@ class taskModel extends model } /** - * Get execution parent tasks pairs. + * 获取父任务 id:name 的数组。 + * Get an array of parent task id:name. * * @param int $executionID - * @param string $append + * @param string $appendIdList * @access public * @return array */ - public function getParentTaskPairs($executionID, $append = '') + public function getParentTaskPairs(int $executionID, string $appendIdList = ''): array { - $tasks = $this->dao->select('id, name')->from(TABLE_TASK) + $taskPairs = $this->dao->select('id, name')->from(TABLE_TASK) ->where('deleted')->eq(0) ->andWhere('parent')->le(0) ->andWhere('status')->notin('cancel,closed') ->andWhere('consumed')->eq('0') ->andWhere('execution')->eq($executionID) - ->beginIF($append)->orWhere('id')->in($append)->fi() + ->beginIF($appendIdList)->orWhere('id')->in($appendIdList)->fi() ->fetchPairs(); - $taskTeams = $this->dao->select('task, count(*) as count')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($tasks))->groupBy('task')->fetchPairs('task', 'count'); - foreach($tasks as $id => $name) + $taskTeams = $this->dao->select('task')->from(TABLE_TASKTEAM)->where('task')->in(array_keys($taskPairs))->fetchPairs('task', 'task'); + foreach($taskPairs as $id => $name) { - if(!empty($taskTeams[$id])) unset($tasks[$id]); + if(!empty($taskTeams[$id])) unset($taskPairs[$id]); } - return array('' => '') + $tasks ; + return $taskPairs; } /** diff --git a/module/task/test/model/getparenttaskpairs.php b/module/task/test/model/getparenttaskpairs.php index aabbb00de3..39b1953ed4 100755 --- a/module/task/test/model/getparenttaskpairs.php +++ b/module/task/test/model/getparenttaskpairs.php @@ -4,41 +4,30 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/task.class.php'; su('admin'); +zdTable('project')->config('project', true)->gen(5); +zdTable('task')->config('task')->gen(11); +zdTable('taskteam')->config('taskteam')->gen(6); + /** title=taskModel->getParentTaskPairs(); +timeout=0 cid=1 -pid=1 - -查找有父任务的执行下的父任务 普通任务和特定任务601 >> 更多任务1 -查找有父任务的执行下的父任务 普通任务和特定任务602 >> 更多任务2 -查找有父任务的执行下的父任务 普通任务和特定任务603 >> 更多任务3 -查找有父任务的执行下的父任务 普通任务和特定任务11 >> 开发任务21 -查找有父任务的执行下的父任务 普通任务和特定任务22 >> 开发任务32 -查找有父任务的执行下的父任务 普通任务601 >> 更多任务1 -查找有父任务的执行下的父任务 普通任务602 >> 更多任务2 -查找有父任务的执行下的父任务 普通任务603 >> 更多任务3 -查找没有父任务的执行下的父任务 普通任务12 >> 开发任务12 -查找没有父任务的执行下的父任务 普通任务604 >> 更多任务4 -查找不是执行的父任务 >> 0 -查找不存在的执行下的父任务 >> 0 */ -$executionIDList = array('101','102','1','100001'); -$append = '11,22'; +$executionIDList = array(3, 2, 1, 10); +$append = '1,2'; -$task = new taskTest(); +$taskModel = $tester->loadModel('task'); -r($task->getParentTaskPairsTest($executionIDList[0], $append)) && p('601') && e('更多任务1'); // 查找有父任务的执行下的父任务 普通任务和特定任务601 -r($task->getParentTaskPairsTest($executionIDList[0], $append)) && p('602') && e('更多任务2'); // 查找有父任务的执行下的父任务 普通任务和特定任务602 -r($task->getParentTaskPairsTest($executionIDList[0], $append)) && p('603') && e('更多任务3'); // 查找有父任务的执行下的父任务 普通任务和特定任务603 -r($task->getParentTaskPairsTest($executionIDList[0], $append)) && p('11') && e('开发任务21');// 查找有父任务的执行下的父任务 普通任务和特定任务11 -r($task->getParentTaskPairsTest($executionIDList[0], $append)) && p('22') && e('开发任务32');// 查找有父任务的执行下的父任务 普通任务和特定任务22 -r($task->getParentTaskPairsTest($executionIDList[0])) && p('601') && e('更多任务1'); // 查找有父任务的执行下的父任务 普通任务601 -r($task->getParentTaskPairsTest($executionIDList[0])) && p('602') && e('更多任务2'); // 查找有父任务的执行下的父任务 普通任务602 -r($task->getParentTaskPairsTest($executionIDList[0])) && p('603') && e('更多任务3'); // 查找有父任务的执行下的父任务 普通任务603 -r($task->getParentTaskPairsTest($executionIDList[1])) && p('2') && e('开发任务12'); // 查找没有父任务的执行下的父任务 普通任务12 -r($task->getParentTaskPairsTest($executionIDList[1])) && p('604') && e('更多任务4'); // 查找没有父任务的执行下的父任务 普通任务604 -r($task->getParentTaskPairsTest($executionIDList[2])) && p('name') && e('0'); // 查找不是执行的父任务 -r($task->getParentTaskPairsTest($executionIDList[3])) && p('name') && e('0'); // 查找不存在的执行下的父任务 +r($taskModel->getParentTaskPairs($executionIDList[0], $append)) && p('1') && e('开发任务11'); // 查找有父任务的执行下的开发任务11 +r($taskModel->getParentTaskPairs($executionIDList[0], $append)) && p('2') && e('开发任务12'); // 查找有父任务的执行下的开发任务12 +r($taskModel->getParentTaskPairs($executionIDList[0], $append)) && p('6') && e('开发任务16'); // 查找有父任务的执行下的父任务开发任务16 +r($taskModel->getParentTaskPairs($executionIDList[0])) && p('6') && e('开发任务16'); // 查找有父任务的执行下的父任务开发任务16 +r($taskModel->getParentTaskPairs($executionIDList[0])) && p('10') && e('`^$`'); // 查找有父任务的执行下的父任务开发任务20 +r($taskModel->getParentTaskPairs($executionIDList[1])) && p() && e('0'); // 查找没有父任务的执行 +r($taskModel->getParentTaskPairs($executionIDList[1], $append)) && p('1') && e('开发任务11'); // 查找没有父任务的执行下的开发任务11 +r($taskModel->getParentTaskPairs($executionIDList[1], $append)) && p('2') && e('开发任务12'); // 查找没有父任务的执行下的开发任务12 +r($taskModel->getParentTaskPairs($executionIDList[2])) && p() && e('0'); // 查找不是执行的父任务 +r($taskModel->getParentTaskPairs($executionIDList[3])) && p() && e('0'); // 查找不存在的执行下的父任务 diff --git a/module/task/test/model/yaml/getparenttaskpairs/task.yaml b/module/task/test/model/yaml/getparenttaskpairs/task.yaml new file mode 100755 index 0000000000..75d8849a84 --- /dev/null +++ b/module/task/test/model/yaml/getparenttaskpairs/task.yaml @@ -0,0 +1,20 @@ +title: zt_task +author: Mengyi Liu +version: "1.0" +fields: +- field: execution + range: 3 +- field: module + range: 0{3},1{3},2{3},3{3} +- field: story + range: 1,0{9} +- field: consumed + range: 0,2{4},0{3},3,0{2} +- field: parent + range: "0{5},`-1`,6,0{2},`-1`,10" +- field: status + range: "wait,doing,done,cancel,closed,wait{3},doing,wait{2}" +- field: mode + range: "[]{7},linear,multi,[]{2}" +- field: deleted + range: 0 diff --git a/module/task/test/model/yaml/getparenttaskpairs/taskteam.yaml b/module/task/test/model/yaml/getparenttaskpairs/taskteam.yaml new file mode 100644 index 0000000000..d445f1baee --- /dev/null +++ b/module/task/test/model/yaml/getparenttaskpairs/taskteam.yaml @@ -0,0 +1,20 @@ +title: zt_taskteam +author: Shujie Tian +version: "1.0" +fields: +- field: task + range: 8{3},10{3} +- field: left + range: 1-10 +- field: estimate + range: 1-10 +- field: consumed + range: 0 +- field: account + fields: + - field: account1 + range: admin,user{2} + - field: account2 + range: "[],1-2" +- field: status + range: "wait{4},done{2}" diff --git a/module/task/test/task.class.php b/module/task/test/task.class.php index 0c6522f1dd..5f2a55e5ea 100755 --- a/module/task/test/task.class.php +++ b/module/task/test/task.class.php @@ -865,21 +865,6 @@ class taskTest } } - public function getParentTaskPairsTest($executionID, $append = '') - { - $objectList = $this->objectModel->getParentTaskPairs($executionID, $append); - $objectList = count($objectList) == 1 ? array('name' => 0): $objectList; - - if(dao::isError()) - { - return dao::getError(); - } - else - { - return $objectList; - } - } - /** * Test process a task, judge it's status. * diff --git a/module/task/test/yaml/task.yaml b/module/task/test/yaml/task.yaml index bd46414b80..9acbf4aaff 100755 --- a/module/task/test/yaml/task.yaml +++ b/module/task/test/yaml/task.yaml @@ -8,6 +8,8 @@ fields: range: 0{3},1{3},2{3},3{3} - field: story range: 1,0{9} +- field: consumed + range: 0,2{4},0{3},3 - field: parent range: "0{5},`-1`,6,0{2}" - field: status