* Add summary of product story in usage report.

This commit is contained in:
zhouxin
2023-10-10 14:10:35 +08:00
parent bf82fa21c0
commit dcaeb77f2f
2 changed files with 70 additions and 2 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
$config->screen->builtinScreen = array(6, 8);
$config->screen->builtinChart = array(10018, 10019, 10020, 10021, 10022, 10211, 10212, 10213, 10214, 10215, 10216, 10217, 10218, 10219, 10220);
$config->screen->builtinPivot = array(1000, 1001, 1002);
$config->screen->phpChart = array(20002, 20004, 20007, 20010, 20011);
$config->screen->phpChart = array(20002, 20004, 20007, 20010, 20011, 20012);
$config->screen->chartConfig = array();
$config->screen->chartConfig['cluBarX'] = '{"category" : "Bars", "categoryName" : "柱状图", "chartFrame" : "echarts", "chartKey" : "VBarCommon", "conKey" : "VCBarCommon", "image" : "bar_x.png", "key" : "BarCommon", "package" : "Charts", "title" : "簇状柱形图", "dataset" : {}}';
+69 -1
View File
@@ -1717,7 +1717,7 @@ class screenModel extends model
$productList = $this->getUsageReportProducts($year, $month);
if($chartID == 20002) return $this->getActiveUserTable($year, $month, $projectList);
//if($chartID == 20012) return $this->getProductStoryTable($year, $month, $productList);
if($chartID == 20012) return $this->getProductStoryTable($year, $month, $productList);
if($chartID == 20011) return $this->getProductTestTable($year, $month, $productList);
if($chartID == 20004) return $this->getActiveProductCard($year, $month);
if($chartID == 20007) return $this->getActiveProjectCard($year, $month);
@@ -1960,6 +1960,74 @@ class screenModel extends model
return $dataset;
}
/**
* 获取应用健康度体检报告的产品需求概况表。
* Get table of product story summary in usage report.
*
* @param string $year
* @param string $month
* @param array $productList
* @access public
* @return array
*/
public function getProductStoryTable($year, $month, $productList)
{
$releasedStories = $this->dao->select('t2.id, t1.id as product')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.id=t2.product')
->leftJoin(TABLE_ACTION)->alias('t3')->on('t2.id=t3.objectID')
->where('t1.deleted')->eq('0')
->andWhere('t2.deleted')->eq('0')
->andWhere('t2.stage')->eq('released')
->andWhere('t3.objectType')->eq('story')
->andWhere('t3.action')->eq('linked2release')
->andWhere('year(t3.date)')->eq($year)
->andWhere('month(t3.date)')->eq($month)
->fetchPairs();
$releasedStoryGroups = array();
foreach($releasedStories as $storyID => $productID)
{
if(!isset($releasedStoryGroups[$productID])) $releasedStoryGroups[$productID] = array();
$releasedStoryGroups[$productID][] = $storyID;
}
$dataset = array();
foreach($productList as $productID => $productName)
{
$createdStoryCount = $this->dao->select('count(t2.id) as count')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.id=t2.product')
->where('t1.deleted')->eq('0')
->andWhere('t2.deleted')->eq('0')
->andWhere('t1.id')->eq($productID)
->andWhere('year(t2.openedDate)')->eq($year)
->andWhere('month(t2.openedDate)')->eq($month)
->fetch();
$finishedStoryList = $this->dao->select('t2.id')->from(TABLE_PRODUCT)->alias('t1')
->leftJoin(TABLE_STORY)->alias('t2')->on('t1.id=t2.product')
->where('t1.deleted')->eq('0')
->andWhere('t2.deleted')->eq('0')
->andWhere('t1.id')->eq($productID)
->andWhere('t2.closedReason')->eq('done')
->andWhere('year(t2.closedDate)')->eq($year)
->andWhere('month(t2.closedDate)')->eq($month)
->fetchPairs();
$deliveredStoryCount = count(array_merge($finishedStoryList, (array)$releasedStoryGroups[$productID]));
$row = new stdclass();
$row->id = $productID;
$row->name = $productName;
$row->createdStories = $createdStoryCount->count;
$row->deliveredStories = $deliveredStoryCount;
if($row->createdStories === 0 && $row->deliveredStories === 0) continue;
$dataset[] = $row;
}
return $dataset;
}
/**
* 获取应用健康度体检报告的项目列表。
* Get project list for usage report.