* Refactor getParentTaskPairs method of task module.

This commit is contained in:
tianshujie
2023-05-30 09:01:17 +08:00
parent dbe589a4aa
commit 6d7fa5964e
6 changed files with 70 additions and 53 deletions
+10 -9
View File
@@ -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;
}
/**
+18 -29
View File
@@ -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'); // 查找不存在的执行下的父任务
+20
View File
@@ -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
@@ -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}"
-15
View File
@@ -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.
*
+2
View File
@@ -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