From 2039863f7e555e4e7efade217ce18bf76e0ba44d Mon Sep 17 00:00:00 2001 From: jukui Date: Wed, 10 May 2023 20:53:04 +0800 Subject: [PATCH] * Modify getStage funciton and test case for programplan model. --- module/programplan/model.php | 29 ++++-------- module/programplan/test/model/getstage.php | 44 +++++++------------ .../test/model/yaml/getstage/project.yaml | 28 ++++++++++++ .../model/yaml/getstage/projectproduct.yaml | 12 +++++ module/programplan/test/programplan.class.php | 3 +- 5 files changed, 67 insertions(+), 49 deletions(-) create mode 100644 module/programplan/test/model/yaml/getstage/project.yaml create mode 100644 module/programplan/test/model/yaml/getstage/projectproduct.yaml diff --git a/module/programplan/model.php b/module/programplan/model.php index 6a18c47acc..bed600729e 100755 --- a/module/programplan/model.php +++ b/module/programplan/model.php @@ -28,32 +28,19 @@ class programplanModel extends model } /** + * 获取阶段列表。 * Get plans list. * - * @param int $executionID - * @param int $productID - * @param string $browseType all|parent - * @param string $orderBy + * @param int $executionID + * @param int $productID + * @param string $browseType all|parent + * @param string $orderBy * @access public * @return array */ - public function getStage($executionID = 0, $productID = 0, $browseType = 'all', $orderBy = 'id_asc') + public function getStage(int $executionID = 0, int $productID = 0, string $browseType = 'all', string $orderBy = 'id_asc'): array { - if(empty($executionID)) return array(); - $projectModel = $this->dao->select('model')->from(TABLE_PROJECT)->where('id')->eq($executionID)->fetch('model'); - - $plans = $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'); - + $plans = $this->programplanTao->getStageListBy($executionID, $productID, $browseType, $orderBy); return $this->processPlans($plans); } @@ -445,7 +432,7 @@ class programplanModel extends model * * @param array $plans * @access public - * @return object + * @return array */ private function processPlans(array $plans) { diff --git a/module/programplan/test/model/getstage.php b/module/programplan/test/model/getstage.php index 16f003de7d..9c5f5a7087 100755 --- a/module/programplan/test/model/getstage.php +++ b/module/programplan/test/model/getstage.php @@ -1,43 +1,33 @@ #!/usr/bin/env php config('project')->gen(10); +zdTable('projectproduct')->config('projectproduct')->gen(10); + /** title=测试 programplanModel->getStage(); cid=1 pid=1 -测试获取执行41 产品21 browse all的计划键值对 >> ,阶段31,阶段121,阶段211,阶段301,阶段391,阶段481,阶段571,子阶段1 -测试获取执行41 产品21 browse parent的计划键值对 >> ,阶段31,阶段121,阶段211,阶段301,阶段391,阶段481,阶段571 -测试获取执行41 产品21 browse all id desc的计划键值对 >> ,子阶段1,阶段571,阶段481,阶段391,阶段301,阶段211,阶段121,阶段31 -测试获取执行42 产品22 browse all的计划键值对 >> ,阶段32,阶段122,阶段212,阶段302,阶段392,阶段482,阶段572,子阶段2 -测试获取执行42 产品22 browse parent的计划键值对 >> ,阶段32,阶段122,阶段212,阶段302,阶段392,阶段482,阶段572 -测试获取执行43 产品23 browse all的计划键值对 >> ,阶段33,阶段123,阶段213,阶段303,阶段393,阶段483,阶段573,子阶段3 -测试获取执行43 产品23 browse parent的计划键值对 >> ,阶段33,阶段123,阶段213,阶段303,阶段393,阶段483,阶段573 -测试获取执行44 产品24 browse all的计划键值对 >> ,阶段34,阶段124,阶段214,阶段304,阶段394,阶段484,阶段574,子阶段4 -测试获取执行44 产品24 browse parent的计划键值对 >> ,阶段34,阶段124,阶段214,阶段304,阶段394,阶段484,阶段574 -测试获取执行45 产品25 browse all的计划键值对 >> ,阶段35,阶段125,阶段215,阶段305,阶段395,阶段485,阶段575,子阶段5 -测试获取执行45 产品25 browse parent的计划键值对 >> ,阶段35,阶段125,阶段215,阶段305,阶段395,阶段485,阶段575 - */ -$executionIDList = array(41, 42, 43, 44, 45); -$productIDList = array(21, 22, 23, 24, 25); -$browseTypeList = array('all', 'parent'); -$order = 'id_desc'; +$IDList = array(2, 3, 5); +$productIDList = array(2, 2, 2, 2); +$typeList = array('all', 'parent'); +$order = 'id_desc'; $programplan = new programplanTest(); -r($programplan->getStageTest($executionIDList[0], $productIDList[0], $browseTypeList[0])) && p() && e(',阶段31,阶段121,阶段211,阶段301,阶段391,阶段481,阶段571,子阶段1'); // 测试获取执行41 产品21 browse all的计划键值对 -r($programplan->getStageTest($executionIDList[0], $productIDList[0], $browseTypeList[1])) && p() && e(',阶段31,阶段121,阶段211,阶段301,阶段391,阶段481,阶段571'); // 测试获取执行41 产品21 browse parent的计划键值对 -r($programplan->getStageTest($executionIDList[0], $productIDList[0], $browseTypeList[0], $order)) && p() && e(',子阶段1,阶段571,阶段481,阶段391,阶段301,阶段211,阶段121,阶段31'); // 测试获取执行41 产品21 browse all id desc的计划键值对 -r($programplan->getStageTest($executionIDList[1], $productIDList[1], $browseTypeList[0])) && p() && e(',阶段32,阶段122,阶段212,阶段302,阶段392,阶段482,阶段572,子阶段2'); // 测试获取执行42 产品22 browse all的计划键值对 -r($programplan->getStageTest($executionIDList[1], $productIDList[1], $browseTypeList[1])) && p() && e(',阶段32,阶段122,阶段212,阶段302,阶段392,阶段482,阶段572'); // 测试获取执行42 产品22 browse parent的计划键值对 -r($programplan->getStageTest($executionIDList[2], $productIDList[2], $browseTypeList[0])) && p() && e(',阶段33,阶段123,阶段213,阶段303,阶段393,阶段483,阶段573,子阶段3'); // 测试获取执行43 产品23 browse all的计划键值对 -r($programplan->getStageTest($executionIDList[2], $productIDList[2], $browseTypeList[1])) && p() && e(',阶段33,阶段123,阶段213,阶段303,阶段393,阶段483,阶段573'); // 测试获取执行43 产品23 browse parent的计划键值对 -r($programplan->getStageTest($executionIDList[3], $productIDList[3], $browseTypeList[0])) && p() && e(',阶段34,阶段124,阶段214,阶段304,阶段394,阶段484,阶段574,子阶段4'); // 测试获取执行44 产品24 browse all的计划键值对 -r($programplan->getStageTest($executionIDList[3], $productIDList[3], $browseTypeList[1])) && p() && e(',阶段34,阶段124,阶段214,阶段304,阶段394,阶段484,阶段574'); // 测试获取执行44 产品24 browse parent的计划键值对 -r($programplan->getStageTest($executionIDList[4], $productIDList[4], $browseTypeList[0])) && p() && e(',阶段35,阶段125,阶段215,阶段305,阶段395,阶段485,阶段575,子阶段5'); // 测试获取执行45 产品25 browse all的计划键值对 -r($programplan->getStageTest($executionIDList[4], $productIDList[4], $browseTypeList[1])) && p() && e(',阶段35,阶段125,阶段215,阶段305,阶段395,阶段485,阶段575'); // 测试获取执行45 产品25 browse parent的计划键值对 \ No newline at end of file +r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[0])) && p() && e(',新阶段a子1,新阶段a子2,新阶段a子3'); // 测试获取阶段2 产品2 all的名称 +r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[1])) && p() && e(',新阶段a子1,新阶段a子3'); // 测试获取阶段2 产品2 parent的名称 +r($programplan->getStageTest($IDList[0], $productIDList[0], $typeList[0], $order)) && p() && e(',新阶段a子3,新阶段a子2,新阶段a子1'); // 测试获取阶段2 产品2 parent id倒叙的名称 +r($programplan->getStageTest($IDList[1], $productIDList[1], $typeList[0])) && p() && e(',新阶段a子1子1'); // 测试获取阶段3 产品2 all的名称 +r($programplan->getStageTest($IDList[1], $productIDList[1], $typeList[1])) && p() && e(',新阶段a子1子2'); // 测试获取阶段3 产品2 parent的名称 +r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[0])) && p() && e(',新阶段b子1,新阶段b子2'); // 测试获取阶段5 产品2 all的名称 +r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[1])) && p() && e(',新阶段b子1'); // 测试获取阶段5 产品2 parent的名称 +r($programplan->getStageTest($IDList[2], $productIDList[2], $typeList[0], $order)) && p() && e(',新阶段b子2,新阶段b子1'); // 测试获取阶段2 产品2 all id倒叙的名称 diff --git a/module/programplan/test/model/yaml/getstage/project.yaml b/module/programplan/test/model/yaml/getstage/project.yaml new file mode 100644 index 0000000000..9517ebd536 --- /dev/null +++ b/module/programplan/test/model/yaml/getstage/project.yaml @@ -0,0 +1,28 @@ +title: zt_project +author: jukui +version: '1.0' +fields: + - field: id + range: 1-10 + - field: project + range: '0,1,2,3,1,2,2,1,5,5' + - field: name + range: '新瀑布项目1,新阶段a,新阶段a子1,新阶段a子1子1,新阶段b,新阶段a子2,新阶段a子3,新阶段a子1子2,新阶段b子1,新阶段b子2' + - field: parent + range: '0,1,2,1,1,1,2,3,5,10' + - field: type + range: 'project,stage{9}' + - field: percent + range: 1-10 + prefix: '2' + - field: grade + range: 1 + - field: days + range: 1 + - field: status + range: 'doing,doing,doing,closed,suspended,closed' + - field: desc + range: 1-10 + prefix: '项目描述' + - field: path + range: "`,1,`,`,1,2,`,`,1,2,3,`,`,1,2,3,4,`,`,1,5,`,`,1,2,6,`,`,1,2,7`,`1,2,3,8`,`1,5.9`,`1,5,10`" diff --git a/module/programplan/test/model/yaml/getstage/projectproduct.yaml b/module/programplan/test/model/yaml/getstage/projectproduct.yaml new file mode 100644 index 0000000000..16b10dbb0d --- /dev/null +++ b/module/programplan/test/model/yaml/getstage/projectproduct.yaml @@ -0,0 +1,12 @@ +title: zt_projectproduct +author: jukui +version: '1.0' +fields: + - field: project + range: 1-10 + - field: product + range: '2' + - field: branch + range: 0 + - field: plan + range: 0 diff --git a/module/programplan/test/programplan.class.php b/module/programplan/test/programplan.class.php index f5e0bfc947..123ad0a927 100644 --- a/module/programplan/test/programplan.class.php +++ b/module/programplan/test/programplan.class.php @@ -27,6 +27,7 @@ class programplanTest } /** + * 获取阶段列表,并拼接阶段名称返回。 * Test get plans list. * * @param int $executionID @@ -36,7 +37,7 @@ class programplanTest * @access public * @return string */ - public function getStageTest($executionID = 0, $productID = 0, $browseType = 'all', $orderBy = 'id_asc') + public function getStageTest(int $executionID = 0, int $productID = 0, string $browseType = 'all', string $orderBy = 'id_asc'): string { $objects = $this->objectModel->getStage($executionID, $productID, $browseType, $orderBy);