From 26d841ab4a3f4962f1747bb81f18bc4591f004f9 Mon Sep 17 00:00:00 2001 From: zhouxin Date: Tue, 18 Jul 2023 10:27:04 +0800 Subject: [PATCH] * Add metrics:count_of_story_in_product,count_of_valid_story_in_product --- .../count_of_invalid_story_in_product.php | 2 +- .../scale/count_of_story_in_product.php | 37 +++++++++---------- .../scale/count_of_valid_story_in_product.php | 31 ++++++++++------ 3 files changed, 37 insertions(+), 33 deletions(-) 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 9d6e5f4aea..1f23f47d83 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 @@ -29,7 +29,7 @@ class count_of_invalid_story_in_product extends baseCalc ->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.type')->eq('story') ->andWhere('t1.closedReason')->in('duplicate,willnotdo,bydesign,cancel') ->groupBy('t1.product') ->query(); diff --git a/module/metric/calc/product/scale/count_of_story_in_product.php b/module/metric/calc/product/scale/count_of_story_in_product.php index c8191aa496..a9b20e8e79 100644 --- a/module/metric/calc/product/scale/count_of_story_in_product.php +++ b/module/metric/calc/product/scale/count_of_story_in_product.php @@ -1,21 +1,19 @@ + * @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,20 @@ */ class count_of_story_in_product extends baseCalc { - public $dataset = ''; + public $dataset = 'getDevStories'; - public $fieldList = array(); + public $fieldList = array('t1.product'); - public $result = array(); + public function calculate($row) + { + if(!isset($this->result[$row->product])) $this->result[$row->product] = 0; + $this->result[$row->product] ++; + } - //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/calc/product/scale/count_of_valid_story_in_product.php b/module/metric/calc/product/scale/count_of_valid_story_in_product.php index cc0f32da6c..d6636d80c6 100644 --- a/module/metric/calc/product/scale/count_of_valid_story_in_product.php +++ b/module/metric/calc/product/scale/count_of_valid_story_in_product.php @@ -13,7 +13,7 @@ * 收集方式: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) @@ -21,20 +21,27 @@ */ class count_of_valid_story_in_product extends baseCalc { - public $dataset = null; - - public $fieldList = array(); - - //public funtion getStatement($dao) - //{ - //} - - public function calculate($data) + public function getStatement() { + return $this->dao->select('t1.product,t1.id')->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.closedReason')->notin('duplicate,willnotdo,bydesign,cancel') + ->query(); + } + + public function calculate($row) + { + if(!isset($this->result[$row->product])) $this->result[$row->product] = 0; + $this->result[$row->product] += 1; } public function getResult($options = array()) { - return $this->filterByOptions($this->result, $options); + $records = array(); + foreach($this->result as $product => $value) $records[] = array('product' => $product, 'value' => $value); + return $this->filterByOptions($records, $options); } -} \ No newline at end of file +}