From 87c50cbe10db1b8ce5e7dd964ede7047b59edef8 Mon Sep 17 00:00:00 2001 From: zhouxin Date: Thu, 13 Jul 2023 13:21:49 +0800 Subject: [PATCH] * Add metric and unit test: count_of_invalid_story_in_product. --- .../count_of_invalid_story_in_product.php | 40 ++++++++++--------- .../count_of_invalid_story_in_product.php | 31 ++++++++++++++ 2 files changed, 53 insertions(+), 18 deletions(-) create mode 100755 module/metric/test/calc/product/scale/count_of_invalid_story_in_product.php diff --git a/module/metric/calc/product/scale/count_of_invalid_story_in_product.php b/module/metric/calc/product/scale/count_of_invalid_story_in_product.php index 1ff7d912ff..9d6e5f4aea 100644 --- a/module/metric/calc/product/scale/count_of_invalid_story_in_product.php +++ b/module/metric/calc/product/scale/count_of_invalid_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,27 @@ */ class count_of_invalid_story_in_product extends baseCalc { - public $dataset = ''; - - public $fieldList = array(); - public $result = array(); - //public function getStatement() - //{ - //} + 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.status')->eq('closed') + ->andWhere('t1.closedReason')->in('duplicate,willnotdo,bydesign,cancel') + ->groupBy('t1.product') + ->query(); + } - //public function calculate($data) - //{ - //} + public function calculate($row) + { + $this->result[] = $row; + } - //public function getResult() - //{ - //} -} \ No newline at end of file + public function getResult($options = array()) + { + return $this->filterByOptions($this->result, $options); + } +} diff --git a/module/metric/test/calc/product/scale/count_of_invalid_story_in_product.php b/module/metric/test/calc/product/scale/count_of_invalid_story_in_product.php new file mode 100755 index 0000000000..b48428dd0f --- /dev/null +++ b/module/metric/test/calc/product/scale/count_of_invalid_story_in_product.php @@ -0,0 +1,31 @@ +#!/usr/bin/env php +gen(100); +zdTable('product')->gen(100); + +$metric = new metricTest(); +$calc = $metric->calcMetric(__FILE__); + +/** + +title=count_of_invalid_story_in_product +timeout=0 +cid=1 + +- 测试分组数 @14 + +- 测试产品1无效需求数 + - 第0条的value属性 @1 + - 第1条的value属性 @1 + - 第2条的value属性 @1 + +- 测试不存在产品的无效需求数 @0 + +*/ + +r(count($calc->getResult())) && p('') && e('14'); // 测试分组数 +r($calc->getResult(array('product' => '1,2,5'))) && p('0:value;1:value;2:value') && e('1;1;1'); // 测试产品1无效需求数 +r($calc->getResult(array('product' => '999,1000'))) && p('') && e('0'); // 测试不存在产品的无效需求数 \ No newline at end of file