From ee1470bd71b6bb863565bee538e4621b992ff6aa Mon Sep 17 00:00:00 2001 From: qixinzhi Date: Thu, 3 Aug 2023 07:00:10 +0000 Subject: [PATCH] * Finish task#99598. --- .../time/count_of_actual_time_in_project.php | 47 +++++++++++++++++++ .../time/count_of_actual_time_in_project.php | 21 +++++++++ 2 files changed, 68 insertions(+) create mode 100644 module/metric/calc/project/time/count_of_actual_time_in_project.php create mode 100755 module/metric/test/calc/project/time/count_of_actual_time_in_project.php diff --git a/module/metric/calc/project/time/count_of_actual_time_in_project.php b/module/metric/calc/project/time/count_of_actual_time_in_project.php new file mode 100644 index 0000000000..671f517da8 --- /dev/null +++ b/module/metric/calc/project/time/count_of_actual_time_in_project.php @@ -0,0 +1,47 @@ + + * @package + * @uses func + * @license ZPL(https://zpl.pub/page/zplv12.html) or AGPL(https://www.gnu.org/licenses/agpl-3.0.en.html) + * @Link https://www.zentao.net + */ +class count_of_actual_time_in_project extends baseCalc +{ + public $dataset = 'getAllProjects'; + + public $fieldList = array('id', 'realBegan', 'realEnd', 'status'); + + public function calculate($row) + { + $project = $row->id; + $realBegan = $row->realBegan; + $realEnd = $row->realEnd; + $status = $row->status; + + if($status == 'closed') $actual = (strtotime($realEnd) - strtotime($realBegan)) / 86400; + if($status != 'closed') $actual = (strtotime(date('Y-m-d')) - strtotime($realBegan)) / 86400; + + $this->result[$project] = $actual; + } + + public function getResult($options = array()) + { + $records = $this->getRecords(array('project', 'value')); + return $this->filterByOptions($records, $options); + } +} diff --git a/module/metric/test/calc/project/time/count_of_actual_time_in_project.php b/module/metric/test/calc/project/time/count_of_actual_time_in_project.php new file mode 100755 index 0000000000..fd7a4957ee --- /dev/null +++ b/module/metric/test/calc/project/time/count_of_actual_time_in_project.php @@ -0,0 +1,21 @@ +#!/usr/bin/env php +config('project_time', $useCommon = true, $levels = 4)->gen(2000); + +$metric = new metricTest(); +$calc = $metric->calcMetric(__FILE__); + +/** + +title=count_of_actual_time_in_project +cid=1 +pid=1 + +*/ + +r(count($calc->getResult())) && p('') && e('1000'); // 测试分组数。 + +r($calc->getResult(array('project' => '1804'))) && p('0:value') && e('514'); // 测试项目424。