Merge branch dev/task-143677 of zentao/zentaopms (#8937)
This commit is contained in:
+1
-1
@@ -39,7 +39,7 @@ spec:
|
||||
type: run
|
||||
spec:
|
||||
container:
|
||||
image: hub.zentao.net/ci/zentao-package:master
|
||||
image: hub.zentao.net/ci/zentao-package:master-250527
|
||||
script:
|
||||
- DOWNGRADE_CODE_DIR=$(mktemp -d)
|
||||
- mkdir $DOWNGRADE_CODE_DIR/diff
|
||||
|
||||
@@ -163,6 +163,15 @@ class baseDAO
|
||||
*/
|
||||
public $autoLang;
|
||||
|
||||
/**
|
||||
* 是否自动增加isTpl条件。
|
||||
* If auto add isTpl statement.
|
||||
*
|
||||
* @var bool
|
||||
* @access public
|
||||
*/
|
||||
public $autoTpl;
|
||||
|
||||
/**
|
||||
* 上一次插入的数据id。
|
||||
* Last insert id.
|
||||
@@ -301,6 +310,20 @@ class baseDAO
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置autoTpl项。
|
||||
* Set autoTpl item.
|
||||
*
|
||||
* @param bool $autoTpl
|
||||
* @access public
|
||||
* @return void
|
||||
*/
|
||||
public function setAutoTpl($autoTpl)
|
||||
{
|
||||
$this->autoTpl = $autoTpl;
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置属性。
|
||||
* Reset the vars.
|
||||
@@ -316,6 +339,7 @@ class baseDAO
|
||||
$this->setMode('');
|
||||
$this->setMethod('');
|
||||
$this->setAutoLang(isset($this->config->framework->autoLang) and $this->config->framework->autoLang);
|
||||
$this->setAutoTpl(true);
|
||||
}
|
||||
|
||||
//-----根据请求的方式,调用sql类相应的方法(Call according method of sql class by query method. -----//
|
||||
@@ -859,7 +883,7 @@ class baseDAO
|
||||
|
||||
$sql .= '(`' . implode('`,`', array_keys($values)) . '`)' . ' VALUES(' . implode(',', $values) . ')';
|
||||
}
|
||||
elseif($this->method == 'select' && $filterTpl)
|
||||
elseif($this->method == 'select' && $filterTpl && $this->autoTpl)
|
||||
{
|
||||
/* 过滤模板类型的数据 */
|
||||
foreach(array('project', 'task') as $table)
|
||||
|
||||
@@ -1146,6 +1146,7 @@ class executionModel extends model
|
||||
return $this->dao->select('*,whitelist')->from(TABLE_EXECUTION)
|
||||
->where('id')->in($executionIdList)
|
||||
->beginIF($mode != 'all')->andWhere('deleted')->eq(0)->fi()
|
||||
->setAutoTpl(false)
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
@@ -1439,7 +1440,7 @@ class executionModel extends model
|
||||
{
|
||||
/* Construct the query SQL at search executions. */
|
||||
$executionQuery = $browseType == 'bySearch' ? $this->getExecutionQuery($param) : '';
|
||||
$project = $this->dao->select('model,isTpl')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
if($projectID) $project = $this->dao->select('model,isTpl')->from(TABLE_PROJECT)->where('id')->eq($projectID)->fetch();
|
||||
|
||||
return $this->dao->select('t1.*,t2.name projectName, t2.model as projectModel')->from(TABLE_EXECUTION)->alias('t1')
|
||||
->leftJoin(TABLE_PROJECT)->alias('t2')->on('t1.project = t2.id')
|
||||
@@ -1448,9 +1449,9 @@ class executionModel extends model
|
||||
->andWhere('t1.deleted')->eq('0')
|
||||
->andWhere('t1.vision')->eq($this->config->vision)
|
||||
->andWhere('t1.multiple')->eq('1')
|
||||
->beginIF($project->model == 'ipd')->andWhere('t1.enabled')->eq('on')->fi()
|
||||
->beginIF($project->isTpl)->andWhere('t1.isTpl')->eq('1')->fi()
|
||||
->beginIF(!$this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!empty($project->isTpl))->andWhere('t1.isTpl')->eq('1')->fi()
|
||||
->beginIF(!empty($project->model) && $project->model == 'ipd')->andWhere('t1.enabled')->eq('on')->fi()
|
||||
->beginIF(!$this->app->user->admin && !$project->isTpl)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
|
||||
->beginIF(!empty($executionQuery))->andWhere($executionQuery)->fi()
|
||||
->beginIF($productID)->andWhere('t3.product')->eq($productID)->fi()
|
||||
->beginIF($projectID)->andWhere('t1.project')->eq($projectID)->fi()
|
||||
@@ -1989,6 +1990,7 @@ class executionModel extends model
|
||||
->beginIF($filterStatus)->andWhere('t1.status')->notin('closed,cancel')->fi()
|
||||
->andWhere('t1.execution')->in($executionIdList)
|
||||
->orderBy('t1.order_asc, t1.id_desc')
|
||||
->setAutoTpl(false)
|
||||
->fetchGroup('execution', 'id');
|
||||
|
||||
$today = helper::today();
|
||||
@@ -3757,6 +3759,7 @@ class executionModel extends model
|
||||
->leftJoin(TABLE_USER)->alias('t3')->on('t1.assignedTo = t3.account')
|
||||
->where('t1.deleted')->eq(0)
|
||||
->andWhere($condition)
|
||||
->setAutoTpl(false)
|
||||
->orderBy($orderBy)
|
||||
->page($pager, 't1.id')
|
||||
->fetchAll('id');
|
||||
@@ -5245,6 +5248,7 @@ class executionModel extends model
|
||||
return $this->dao->select('id,name')->from(TABLE_EXECUTION)
|
||||
->where('id')->in($executionIdList)
|
||||
->beginIF(!empty($type))->andWhere('type')->in($type)->fi()
|
||||
->setAutoTpl(false)
|
||||
->orderBy($orderBy)
|
||||
->fetchPairs();
|
||||
}
|
||||
|
||||
@@ -23,6 +23,41 @@ title=测试 executionModel->fetchExecutionList();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 获取没有限制条件时执行的个数 @20
|
||||
- 获取进行中执行的个数 @11
|
||||
- 获取敏捷项目1下的执行的个数 @3
|
||||
- 获取全部状态执行的个数 @24
|
||||
- 获取未关闭的执行的个数 @20
|
||||
- 获取未开始的执行的个数 @6
|
||||
- 获取进行中的执行的个数 @11
|
||||
- 获取已暂停的执行的个数 @3
|
||||
- 获取已关闭的执行的个数 @4
|
||||
- 获取我参与的执行的个数 @24
|
||||
- 获取关联产品5的执行的个数 @1
|
||||
- 获取敏捷项目下全部的执行
|
||||
- 第101条的project属性 @11
|
||||
- 第101条的name属性 @迭代5
|
||||
- 获取敏捷项目下未关闭的执行
|
||||
- 第101条的project属性 @11
|
||||
- 第101条的name属性 @迭代5
|
||||
- 获取敏捷项目下未开始的执行
|
||||
- 第101条的project属性 @11
|
||||
- 第101条的name属性 @迭代5
|
||||
- 获取敏捷项目下进行中的执行
|
||||
- 第103条的project属性 @11
|
||||
- 第103条的name属性 @迭代7
|
||||
- 获取敏捷项目下已暂停的执行 @0
|
||||
- 获取敏捷项目下已关闭的执行 @0
|
||||
- 获取敏捷项目下我参与的执行
|
||||
- 第103条的project属性 @11
|
||||
- 第103条的name属性 @迭代7
|
||||
- 获取敏捷项目下按照开始日期倒序排列全部的执行
|
||||
- 第103条的project属性 @11
|
||||
- 第103条的name属性 @迭代7
|
||||
- 获取按照开始日期倒序排列执行
|
||||
- 第126条的project属性 @100
|
||||
- 第126条的name属性 @看板30
|
||||
|
||||
*/
|
||||
|
||||
$projectIdList = array(0, 11);
|
||||
|
||||
@@ -22,6 +22,12 @@ title=测试executionModel->getByIdListTest();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 敏捷项目查询第3条的name属性 @迭代1
|
||||
- 瀑布项目查询第4条的type属性 @stage
|
||||
- 看板项目查询第5条的status属性 @doing
|
||||
- 看板项目查询第5条的type属性 @kanban
|
||||
- 看板项目查询第5条的name属性 @迭代3
|
||||
|
||||
*/
|
||||
|
||||
$executionIdList = array(3, 4, 5);
|
||||
@@ -31,6 +37,8 @@ $tester->loadModel('execution');
|
||||
|
||||
$executionList = $tester->execution->getByIdList($executionIdList);
|
||||
|
||||
r($executionList) && p('3:name') && e('迭代1'); // 敏捷项目查询
|
||||
r($executionList) && p('4:type') && e('stage'); // 瀑布项目查询
|
||||
r($executionList) && p('5:status') && e('doing'); // 看板项目查询
|
||||
r($executionList) && p('3:name') && e('迭代1'); // 敏捷项目查询
|
||||
r($executionList) && p('4:type') && e('stage'); // 瀑布项目查询
|
||||
r($executionList) && p('5:status') && e('doing'); // 看板项目查询
|
||||
r($executionList) && p('5:type') && e('kanban'); // 看板项目查询
|
||||
r($executionList) && p('5:name') && e('迭代3'); // 看板项目查询
|
||||
|
||||
@@ -13,6 +13,12 @@ title=测试executionModel->getByIdListTest();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试查找执行 ID 1 2 3 的名称 @项目集1,项目集2,项目集3
|
||||
- 测试查找执行 ID 4 5 6 的名称 @项目集4,项目集5,项目集6
|
||||
- 测试查找执行 ID 7 8 9 的名称 @项目集7,项目集8,项目集9
|
||||
- 测试查找执行 ID 10 11 12 的名称 @项目集10,项目11,项目12
|
||||
- 测试查找执行 ID 13 14 15 的名称 @项目13,项目14,项目15
|
||||
|
||||
*/
|
||||
|
||||
$executionIdList = array('1,2,3', '4,5,6', '7,8,9', '10,11,12', '13,14,15');
|
||||
|
||||
@@ -39,8 +39,29 @@ title=executionModel->getSearchTasks();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试通过sql语句获取3个任务 id 倒序 execution = '3' and deleted = '0' and parent >= 0第10条的name属性 @任务10
|
||||
- 测试通过sql语句获取3个任务 id 正序 execution = '3' and deleted = '0' and parent >= 0第1条的name属性 @任务1
|
||||
- 测试通过sql语句获取5个任务 id 倒序 execution = '3' and deleted = '0' and parent >= 0第10条的name属性 @任务10
|
||||
- 测试通过sql语句获取5个任务 id 正序 execution = '3' and deleted = '0' and parent >= 0第1条的name属性 @任务1
|
||||
- 测试通过sql语句获取3个任务 id 倒序 type = 'devel' and fromBug != '0' and parent >= 0第8条的name属性 @任务8
|
||||
- 测试通过sql语句获取3个任务 id 正序 type = 'devel' and fromBug != '0' and parent >= 0第2条的name属性 @任务2
|
||||
- 测试通过sql语句获取5个任务 id 倒序 type = 'devel' and fromBug != '0' and parent >= 0第8条的name属性 @任务8
|
||||
- 测试通过sql语句获取5个任务 id 正序 type = 'devel' and fromBug != '0' and parent >= 0第2条的name属性 @任务2
|
||||
- 测试通过sql语句获取3个任务 id 倒序 execution = '3' and story != '0' and parent >= 0第10条的name属性 @任务10
|
||||
- 测试通过sql语句获取3个任务 id 正序 execution = '3' and story != '0' and parent >= 0第2条的name属性 @任务2
|
||||
- 测试通过sql语句获取5个任务 id 倒序 execution = '3' and story != '0' and parent >= 0第10条的name属性 @任务10
|
||||
- 测试通过sql语句获取5个任务 id 正序 execution = '3' and story != '0' and parent >= 0第2条的name属性 @任务2
|
||||
- 测试通过sql语句获取3个任务 id 倒序 module like '%2%' and type = 'design' and parent >= 0第6条的name属性 @任务6
|
||||
- 测试通过sql语句获取3个任务 id 正序 module like '%2%' and type = 'design' and parent >= 0第6条的name属性 @任务6
|
||||
- 测试通过sql语句获取5个任务 id 倒序 module like '%2%' and type = 'design' and parent >= 0第6条的name属性 @任务6
|
||||
- 测试通过sql语句获取5个任务 id 正序 module like '%2%' and type = 'design' and parent >= 0第6条的name属性 @任务6
|
||||
|
||||
*/
|
||||
|
||||
global $app;
|
||||
$app->rawModule = 'execution';
|
||||
$app->rawMethod = 'task';
|
||||
|
||||
$condition = array();
|
||||
$condition[] = "t1.execution = '3' AND t1.deleted = '0' AND t1.parent >= 0";
|
||||
$condition[] = "t1.type = 'devel' AND t1.fromBug != '0' AND t1.parent >= 0";
|
||||
|
||||
@@ -31,7 +31,7 @@ $task->gen(10);
|
||||
|
||||
$story = zenData('story');
|
||||
$story->id->range('1-10');
|
||||
$story->status->range('active,changed');
|
||||
$story->status->range('active,changing');
|
||||
$story->version->range('1{6},2{2},3{2}');
|
||||
$story->gen(10);
|
||||
|
||||
@@ -43,6 +43,21 @@ title=测试 executionModel->getTaskGroupByExecution();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试空数据 @0
|
||||
- 测试获取执行的任务 @3
|
||||
- 测试获取执行ID=3的任务关联需求版本跟需求状态
|
||||
- 第1条的storyVersion属性 @1
|
||||
- 第1条的storyStatus属性 @active
|
||||
- 第1条的needConfirm属性 @~~
|
||||
- 测试获取执行ID=4的任务关联需求版本跟需求状态
|
||||
- 第2条的storyVersion属性 @1
|
||||
- 第2条的storyStatus属性 @~~
|
||||
- 第2条的needConfirm属性 @~~
|
||||
- 测试获取执行ID=5的任务关联需求版本跟需求状态
|
||||
- 第9条的storyVersion属性 @2
|
||||
- 第9条的storyStatus属性 @active
|
||||
- 第9条的needConfirm属性 @1
|
||||
|
||||
*/
|
||||
|
||||
|
||||
@@ -53,6 +68,6 @@ r($execution->getTaskGroupByExecutionTest()) && p() && e('0');
|
||||
r($execution->getTaskGroupByExecutionTest($executionIdList)) && p() && e('3'); // 测试获取执行的任务
|
||||
|
||||
$taskGroup = $execution->getTaskGroupByExecutionTest($executionIdList, false);
|
||||
r($taskGroup[3]) && p('1:storyVersion,storyStatus,needConfirm') && e('1,active,~~'); // 测试获取执行ID=3的任务关联需求版本跟需求状态
|
||||
r($taskGroup[4]) && p('2:storyVersion,storyStatus,needConfirm') && e('1,~~,~~'); // 测试获取执行ID=4的任务关联需求版本跟需求状态
|
||||
r($taskGroup[5]) && p('9:storyVersion,storyStatus,needConfirm') && e('2,active,1'); // 测试获取执行ID=5的任务关联需求版本跟需求状态
|
||||
r($taskGroup[3]) && p('1:storyVersion,storyStatus,needConfirm') && e('1,active,~~'); // 测试获取执行ID=3的任务关联需求版本跟需求状态
|
||||
r($taskGroup[4]) && p('2:storyVersion,storyStatus,needConfirm') && e('1,changing,~~'); // 测试获取执行ID=4的任务关联需求版本跟需求状态
|
||||
r($taskGroup[5]) && p('9:storyVersion,storyStatus,needConfirm') && e('2,active,1'); // 测试获取执行ID=5的任务关联需求版本跟需求状态
|
||||
|
||||
@@ -1653,6 +1653,7 @@ class productModel extends model
|
||||
->andWhere("FIND_IN_SET('{$this->app->user->account}', t1.reviewers)")
|
||||
->andWhere('t1.reviewStatus')->eq('doing')
|
||||
->fi()
|
||||
->setAutoTpl(false)
|
||||
->orderBy("{$programOrder}t1.line_desc, t1.order_asc")
|
||||
->beginIF($limit > 0)->limit($limit)->fi()
|
||||
->fetchAll('id');
|
||||
|
||||
@@ -869,6 +869,7 @@ class programplanModel extends model
|
||||
->where('t1.deleted')->eq(0)
|
||||
->andWhere('t1.project')->eq($projectID)
|
||||
->andWhere('t1.execution')->in($planIdList)
|
||||
->setAutoTpl(false)
|
||||
->orderBy('execution_asc, order_asc, id_asc')
|
||||
->fetchAll('id');
|
||||
}
|
||||
|
||||
@@ -1233,7 +1233,7 @@ class projectModel extends model
|
||||
$linkedProductsCount = $this->projectTao->getLinkedProductsCount($project, $postData->rawdata);
|
||||
}
|
||||
|
||||
$needCreateProduct = !$project->hasProduct || isset($postData->rawdata->newProduct) || empty($linkedProductsCount);
|
||||
$needCreateProduct = !$project->hasProduct || isset($postData->rawdata->newProduct) || (empty($linkedProductsCount) && !$project->isTpl);
|
||||
if($needCreateProduct && !$this->projectTao->createProduct($projectID, $project, $postData, $program)) return false;
|
||||
|
||||
/* Save order. */
|
||||
|
||||
@@ -18,6 +18,12 @@ title=测试 projectModel->create();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 执行projectClass模块的create方法,参数是$normalProject, $postData 属性name @测试新增项目一
|
||||
- 执行projectClass模块的create方法,参数是$emptyNameProject, $postData 第message[name]条的0属性 @『项目名称』不能为空。
|
||||
- 执行projectClass模块的create方法,参数是$emptyEndProject, $postData 第message[end]条的0属性 @『计划完成』不能为空。
|
||||
- 执行projectClass模块的create方法,参数是$beginGtEndProject, $postData 第message[end]条的0属性 @『计划完成』应当大于『2022-02-07』。
|
||||
- 执行projectClass模块的create方法,参数是$emptyBeginProject, $postData 第message[begin]条的0属性 @『计划开始』不能为空。
|
||||
|
||||
*/
|
||||
|
||||
global $tester;
|
||||
|
||||
@@ -302,6 +302,7 @@ row
|
||||
/* Linked product and plan. */
|
||||
$project->hasProduct ? h::table
|
||||
(
|
||||
setID('products'),
|
||||
setClass('table condensed bordered productsBox'),
|
||||
h::thead
|
||||
(
|
||||
@@ -345,6 +346,7 @@ row
|
||||
/* Project team. */
|
||||
h::table
|
||||
(
|
||||
setID('teams'),
|
||||
setClass('table condensed bordered teams ' . ($project->hasProduct ? 'mt-4' : '')),
|
||||
h::thead
|
||||
(
|
||||
|
||||
@@ -329,7 +329,7 @@ class projectZen extends project
|
||||
$hasProduct = isset($copyProject->hasProduct) ? $copyProject->hasProduct : 1;
|
||||
if($this->config->edition != 'open')
|
||||
{
|
||||
$workflowGroups = $this->loadModel('workflowgroup')->getPairs('project', $model, $hasProduct, 'normal', '0');
|
||||
$workflowGroups = $this->loadModel('workflowgroup')->getPairs('project', $model, (int)$hasProduct, 'normal', '0');
|
||||
$this->view->workflowGroupPairs = $workflowGroups;
|
||||
$this->view->workflowGroups = $this->workflowgroup->appendBuildinLabel($workflowGroups);
|
||||
}
|
||||
|
||||
@@ -486,6 +486,8 @@ class taskTao extends taskModel
|
||||
$actionIDList = array();
|
||||
if($type == 'assignedbyme') $actionIDList = $this->dao->select('objectID')->from(TABLE_ACTION)->where('objectType')->eq('task')->andWhere('action')->eq('assigned')->andWhere('actor')->eq($this->app->user->account)->fetchPairs('objectID', 'objectID');
|
||||
|
||||
if($executionID) $execution = $this->fetchByID($executionID, 'project');
|
||||
|
||||
$tasks = $this->dao->select($fields)
|
||||
->from(TABLE_TASK)->alias('t1')
|
||||
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.story = t2.id')
|
||||
@@ -493,6 +495,7 @@ class taskTao extends taskModel
|
||||
->beginIF($productID)->leftJoin(TABLE_MODULE)->alias('t4')->on('t1.module = t4.id')->fi()
|
||||
->beginIF($this->config->edition == 'max' or $this->config->edition == 'ipd')->leftJoin(TABLE_DESIGN)->alias('t5')->on('t1.design= t5.id')->fi()
|
||||
->where('t1.execution')->eq((int)$executionID)
|
||||
->beginIF(!empty($execution->isTpl))->andWhere('t1.isTpl')->eq('1')->fi()
|
||||
->beginIF($type == 'myinvolved')
|
||||
->andWhere("((t3.`account` = '{$this->app->user->account}') OR t1.`assignedTo` = '{$this->app->user->account}' OR t1.`finishedby` = '{$this->app->user->account}')")
|
||||
->fi()
|
||||
|
||||
@@ -66,6 +66,85 @@ title=taskModel->fetchExecutionTasks();
|
||||
timeout=0
|
||||
cid=1
|
||||
|
||||
- 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 0 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 @10
|
||||
- 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务第11条的name属性 @任务11
|
||||
- 测试获取执行ID 1 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务第17条的name属性 @任务17
|
||||
- 测试获取执行ID 1 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 1 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务第17条的name属性 @任务17
|
||||
- 测试获取执行ID 1 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务第1条的name属性 @任务1
|
||||
- 测试获取执行ID 1 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 @10
|
||||
- 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务第18条的name属性 @任务18
|
||||
- 测试获取执行ID 2 product 0 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 @10
|
||||
- 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type all module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type assignedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type myinvolved module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type undone module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type needconfirm module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type assignedtome module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type finishedbyme module 空 orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type delayed module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type wait module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type doing module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type done module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type pause module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 1 type cancel module 空 orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务第6条的name属性 @任务6
|
||||
- 测试获取执行ID 2 product 1 type array('wait', 'doing', 'done', 'pause', 'cancel') module 空 orederBy 'status_asc, id_desc' 的任务数量 @1
|
||||
- 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务第2条的name属性 @任务2
|
||||
- 测试获取执行ID 2 product 0 type all module array(2) orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务 @0
|
||||
- 测试获取执行ID 2 product 0 type all module array(8) orederBy 'status_asc, id_desc' 的任务数量 @0
|
||||
- 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务第2条的name属性 @任务2
|
||||
- 测试获取执行ID 2 product 0 type all module array(2,8) orederBy 'status_asc, id_desc' 的任务数量 @2
|
||||
- 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务第20条的name属性 @任务20
|
||||
- 测试获取执行ID 2 product 0 type all module 空 orederBy 'pri_desc' 的任务数量 @10
|
||||
|
||||
*/
|
||||
|
||||
$executionIdList = array(0, 1, 2);
|
||||
|
||||
Reference in New Issue
Block a user