From a885a20ce2764fe71fbf60b0beb1a04973882611 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 13:35:56 +0800 Subject: [PATCH 1/4] * [unittest] add test method for formatExportData. --- module/product/test/lib/zen.class.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/module/product/test/lib/zen.class.php b/module/product/test/lib/zen.class.php index 37ab4a878c..412cf8d49d 100644 --- a/module/product/test/lib/zen.class.php +++ b/module/product/test/lib/zen.class.php @@ -1454,4 +1454,30 @@ class productZenTest extends baseTest if(dao::isError()) return dao::getError(); return array('productID' => $productID, 'branch' => $branch, 'projectID' => $projectID, 'executionSuccess' => $executionSuccess); } + + /** + * 格式化导出数据。 + * Format export data. + * + * @param array $products + * @access public + * @return array + */ + public function formatExportDataTest(array $dataList = array()): array + { + $this->instance->app->rawModule = 'product'; + + $products = array(); + foreach($dataList as $data) + { + $product = new stdclass(); + foreach($data as $key => $value) $product->$key = $value; + $products[] = $product; + } + + $result = $this->invokeArgs('formatExportData', [$products]); + if(dao::isError()) return dao::getError(); + + return $result; + } } From 209f38d7fa335145b187a1a9a00c37a5d7791708 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 13:36:14 +0800 Subject: [PATCH 2/4] * [unittest] add unittest for formatExportData. --- module/product/test/zen/formatexportdata.php | 30 ++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 module/product/test/zen/formatexportdata.php diff --git a/module/product/test/zen/formatexportdata.php b/module/product/test/zen/formatexportdata.php new file mode 100644 index 0000000000..01ed728ec0 --- /dev/null +++ b/module/product/test/zen/formatexportdata.php @@ -0,0 +1,30 @@ +#!/usr/bin/env php +gen(10); +zenData('user')->gen(10); +su('admin'); + +$products = array(); +$products[] = array('testCaseCoverage' => 10, 'epicCompleteRate' => 20, 'requirementCompleteRate' => 30, 'storyCompleteRate' => 50); + +$productTest = new productZenTest(); +r($productTest->formatExportDataTest(array())) && p() && e('0'); // 测试空数据的情况 +r($productTest->formatExportDataTest($products)) && p('0:testCaseCoverage,epicCompleteRate,requirementCompleteRate,storyCompleteRate,bugFixedRate') && e('10%,20%,30%,50%,0%'); // 测试正常数据的情况 From 1d0d6c6ba270f5e158f062e4c0dd4f3298117359 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 13:36:32 +0800 Subject: [PATCH 3/4] * [bug#66884,done,0.5h] format rate data when export product data. --- module/product/control.php | 1 + module/product/zen.php | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/module/product/control.php b/module/product/control.php index c0b4ebede5..8c95fe99f5 100755 --- a/module/product/control.php +++ b/module/product/control.php @@ -796,6 +796,7 @@ class product extends control /* 获取导出字段和数据。 */ $fields = $this->productZen->getExportFields(); $productStats = $this->productZen->getExportData($programID, $status, $orderBy, $param); + $productStats = $this->productZen->formatExportData($productStats); /* 如果只导出选中产品,删除非选中产品。 */ if($this->post->exportType == 'selected') diff --git a/module/product/zen.php b/module/product/zen.php index 4bef9b3e82..6e5ae292f8 100644 --- a/module/product/zen.php +++ b/module/product/zen.php @@ -1592,4 +1592,27 @@ class productZen extends product return $storyTypeList; } + + /** + * 格式化导出数据。 + * Format export data. + * + * @param array $products + * @access public + * @return array + */ + public function formatExportData(array $products): array + { + if(empty($products) || $this->config->vision == 'or') return $products; + + foreach($products as $key => $product) + { + $product->testCaseCoverage = isset($product->testCaseCoverage) ? $product->testCaseCoverage . '%' : '0%'; + $product->epicCompleteRate = isset($product->epicCompleteRate) ? $product->epicCompleteRate . '%' : '0%'; + $product->requirementCompleteRate = isset($product->requirementCompleteRate) ? $product->requirementCompleteRate . '%' : '0%'; + $product->storyCompleteRate = isset($product->storyCompleteRate) ? $product->storyCompleteRate . '%' : '0%'; + $product->bugFixedRate = isset($product->bugFixedRate) ? $product->bugFixedRate . '%' : '0%'; + } + return $products; + } } From 97bdbd0ec460998e5761029ea42670c13ece0b06 Mon Sep 17 00:00:00 2001 From: tianshujie Date: Thu, 20 Nov 2025 13:40:12 +0800 Subject: [PATCH 4/4] * [refac] remove unused vars. --- module/product/zen.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/module/product/zen.php b/module/product/zen.php index 6e5ae292f8..63941d9651 100644 --- a/module/product/zen.php +++ b/module/product/zen.php @@ -1605,7 +1605,7 @@ class productZen extends product { if(empty($products) || $this->config->vision == 'or') return $products; - foreach($products as $key => $product) + foreach($products as $product) { $product->testCaseCoverage = isset($product->testCaseCoverage) ? $product->testCaseCoverage . '%' : '0%'; $product->epicCompleteRate = isset($product->epicCompleteRate) ? $product->epicCompleteRate . '%' : '0%';