* Modify getTotalPercent function and test case for programplan model.

This commit is contained in:
jukui
2023-05-09 18:25:14 +08:00
parent c1bfb2d13c
commit 9fdb8839c2
5 changed files with 82 additions and 16 deletions
+3 -2
View File
@@ -415,6 +415,7 @@ class programplanModel extends model
}
/**
* 获取阶段百分比。
* Get total percent.
*
* @param object $stage
@@ -422,11 +423,11 @@ class programplanModel extends model
* @access public
* @return int
*/
public function getTotalPercent(object $stage, bool $parent = false)
public function getTotalPercent(object $stage, bool $parent = false) : int
{
/* When parent is equal to true, query the total workload of the subphase. */
$executionID = $parent ? $stage->id : $stage->project;
$plans = $this->getStage($executionID, $stage->product, 'parent');
$plans = $this->programplanTao->getStageListBy((int)$executionID, (int)$stage->product, $browseType = 'parent');
$totalPercent = 0;
$stageID = $stage->id;
+29
View File
@@ -287,4 +287,33 @@ class programplanTao extends programplanModel
return $datas;
}
/**
* 获取阶段信息。
* Get stage listt.
*
* @param int $executionID
* @param int $productID
* @param string $browseType
* @param string $orderBy
* @access protected
* @return array
*/
protected function getStageListBy(int $executionID, int $productID, string $browseType, $orderBy = 'id_asc')
{
if(empty($executionID)) return array();
$projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($executionID)->fetch('model');
return $this->dao->select('t1.*')->from(TABLE_EXECUTION)->alias('t1')
->leftJoin(TABLE_PROJECTPRODUCT)->alias('t2')->on('t1.id = t2.project')
->where('1 = 1')
->beginIF($projectModel != 'waterfallplus')->andWhere('t1.type')->eq('stage')->fi()
->beginIF($productID)->andWhere('t2.product')->eq($productID)->fi()
->beginIF($browseType == 'all')->andWhere('t1.project')->eq($executionID)->fi()
->beginIF($browseType == 'parent')->andWhere('t1.parent')->eq($executionID)->fi()
->beginIF($this->app->user->admin)->andWhere('t1.id')->in($this->app->user->view->sprints)->fi()
->andWhere('t1.deleted')->eq('0')
->orderBy($orderBy)
->fetchAll('id');
}
}
@@ -10,22 +10,18 @@ title=测试 programplanModel->getTotalPercent();
cid=1
pid=1
测试获取阶段131的总进度 >> 60
测试获取阶段131是父阶段的总进度 >> 0
测试获取阶段132的总进度 >> 60
测试获取阶段133的总进度 >> 60
测试获取阶段134的总进度 >> 60
测试获取阶段135的总进度 >> 60
*/
$stageIDList = array(131, 132, 133, 134, 135);
zdTable('project')->config('project')->gen(5);
zdTable('projectproduct')->config('projectproduct')->gen(5);
$stageIDList = array(2, 1, 5, 3);
$programplan = new programplanTest();
r($programplan->getTotalPercentTest($stageIDList[0])) && p() && e('60'); // 测试获取阶段131的总进度
r($programplan->getTotalPercentTest($stageIDList[0], true)) && p() && e('0'); // 测试获取阶段131是父阶段的总进度
r($programplan->getTotalPercentTest($stageIDList[1])) && p() && e('60'); // 测试获取阶段132的总进度
r($programplan->getTotalPercentTest($stageIDList[2])) && p() && e('60'); // 测试获取阶段133的总进度
r($programplan->getTotalPercentTest($stageIDList[3])) && p() && e('60'); // 测试获取阶段134的总进度
r($programplan->getTotalPercentTest($stageIDList[4])) && p() && e('60'); // 测试获取阶段135的总进度
r($programplan->getTotalPercentTest($stageIDList[0])) && p() && e('23'); // 测试获取阶段2的总进度
r($programplan->getTotalPercentTest($stageIDList[0], true)) && p() && e('23'); // 测试获取阶段2是父阶段的总进度
r($programplan->getTotalPercentTest($stageIDList[1])) && p() && e('47'); // 测试获取阶段1的总进度
r($programplan->getTotalPercentTest($stageIDList[2], true)) && p() && e('0'); // 测试获取阶段5是父阶段的总进度
r($programplan->getTotalPercentTest($stageIDList[3])) && p() && e('24'); // 测试获取阶段3的总进度
@@ -0,0 +1,28 @@
title: zt_project
author: jukui
version: '1.0'
fields:
- field: id
range: 1-6
- field: project
range: '1,2,3,4,1,1'
- field: name
range: '瀑布项目1,阶段a,阶段a子1,阶段a子1子1,阶段b,阶段c'
- field: parent
range: '0,1,2,3,1,1'
- field: type
range: 'stage'
- field: percent
range: 1-6
prefix: '2'
- field: grade
range: 1
- field: days
range: 1
- field: status
range: 'doing,doing,doing,closed,suspended'
- field: desc
range: 1-6
prefix: '项目描述'
- field: path
range: "`,1,`,`,1,2,`,`,1,2,3,`,`,1,2,3,4,`,`,1,5,`,`,1,6,`"
@@ -0,0 +1,12 @@
title: zt_projectproduct
author: jukui
version: '1.0'
fields:
- field: project
range: '1,2,3,4,5,6'
- field: product
range: '2'
- field: branch
range: 0
- field: plan
range: 0