diff --git a/module/metric/calc/product/scale/count_of_annual_delivered_story_in_product.php b/module/metric/calc/product/scale/count_of_annual_delivered_story_in_product.php index 32c243b121..7b13f07b5b 100644 --- a/module/metric/calc/product/scale/count_of_annual_delivered_story_in_product.php +++ b/module/metric/calc/product/scale/count_of_annual_delivered_story_in_product.php @@ -8,9 +8,7 @@ * 目的:scale * 度量名称:按产品统计的年度已交付研发需求数 * 单位:个 - * 描述:产品中所处阶段为已发布且发布时间为某年或关闭原因为已完成且关闭时间为某年的研发需求个数求和 -过滤已删除的研发需求 -过滤已删除的产品 + * 描述:产品中所处阶段为已发布且发布时间为某年或关闭原因为已完成且关闭时间为某年的研发需求个数求和 过滤已删除的研发需求 过滤已删除的产品 * 度量库: * 收集方式:realtime * @@ -40,4 +38,4 @@ class count_of_annual_delivered_story_in_product extends baseCalc //public function getResult() //{ //} -} \ No newline at end of file +} diff --git a/module/metric/calc/product/scale/count_of_developed_story_in_product.php b/module/metric/calc/product/scale/count_of_developed_story_in_product.php index 18078108ee..a024c04b28 100644 --- a/module/metric/calc/product/scale/count_of_developed_story_in_product.php +++ b/module/metric/calc/product/scale/count_of_developed_story_in_product.php @@ -8,14 +8,12 @@ * 目的:scale * 度量名称:按产品统计的研发完成的研发需求数 * 单位:个 - * 描述:产品中所处阶段为研发完毕、测试中、测试完毕、已验收、已发布和关闭原因为已完成的研发需求个数求和 -过滤已删除的研发需求 -过滤已删除的产品 + * 描述:产品中所处阶段为研发完毕、测试中、测试完毕、已验收、已发布和关闭原因为已完成的研发需求个数求和 过滤已删除的研发需求 过滤已删除的产品 * 度量库: * 收集方式:realtime * * @copyright Copyright 2009-2023 禅道软件(青岛)有限公司(ZenTao Software (Qingdao) Co., Ltd. www.zentao.net) - * @author qixinzhi + * @author zhouxin * @package * @uses func * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) @@ -23,21 +21,30 @@ */ class count_of_developed_story_in_product extends baseCalc { - public $dataset = ''; + public function getStatement() + { + return $this->dao->select('t1.product,count(t1.id) as value')->from(TABLE_STORY)->alias('t1') + ->leftJoin(TABLE_PRODUCT)->alias('t2')->on('t1.product=t2.id') + ->where('t1.deleted')->eq(0) + ->andWhere('t2.deleted')->eq(0) + ->andWhere('t1.type')->eq('story') + ->andWhere('t1.stage', true)->in('developed,testing,tested,verified,released') + ->orWhere('t1.closedReason')->eq('done') + ->markRight(1) + ->groupBy('t1.product') + ->query(); + } - public $fieldList = array(); + public function calculate($row) + { + if(!isset($this->result[$row->product])) $this->result[$row->product] = 0; + $this->result[$row->product] += 1; + } - public $result = array(); - - //public function getStatement() - //{ - //} - - //public function calculate($data) - //{ - //} - - //public function getResult() - //{ - //} -} \ No newline at end of file + public function getResult($options = array()) + { + $records = array(); + foreach($this->result as $product => $value) $records[] = array('product' => $product, 'value' => $value); + return $this->filterByOptions($records, $options); + } +} diff --git a/module/metric/test/calc/product/scale/count_of_developed_story_in_product.php b/module/metric/test/calc/product/scale/count_of_developed_story_in_product.php new file mode 100755 index 0000000000..f82d1fa38a --- /dev/null +++ b/module/metric/test/calc/product/scale/count_of_developed_story_in_product.php @@ -0,0 +1,36 @@ +#!/usr/bin/env php +gen(1000); +zdTable('product')->gen(1000); + +$metric = new metricTest(); +$calc = $metric->calcMetric(__FILE__); + +/** + +title=count_of_developed_story_in_product.php +timeout=0 +cid=1 + +- 测试分组数 @86 + +- 测试产品1,2,3已开发的需求数 + - 第0条的value属性 @1 + - 第1条的value属性 @1 + +- 测试产品11,12,13已开发的需求数 + - 第0条的value属性 @1 + - 第1条的value属性 @1 + - 第2条的value属性 @1 + +- 测试不存在的产品下的需求数 @0 + +*/ + +r(count($calc->getResult())) && p('') && e('86'); // 测试分组数 +r($calc->getResult(array('product' => '1,2,3'))) && p('0:value;1:value') && e('1,1'); // 测试产品1,2,3已开发的需求数 +r($calc->getResult(array('product' => '11,12,13'))) && p('0:value;1:value;2:value') && e('1,1,1'); // 测试产品11,12,13已开发的需求数 +r($calc->getResult(array('product' => '9999'))) && p('') && e('0'); // 测试不存在的产品下的需求数 \ No newline at end of file