From 4d998d8badff92e97077431d0e591a4bf1aaacae Mon Sep 17 00:00:00 2001 From: wangyidong Date: Fri, 23 Dec 2016 15:58:36 +0800 Subject: [PATCH] * fix bug for report product summary. --- module/report/model.php | 55 ++++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 14 deletions(-) diff --git a/module/report/model.php b/module/report/model.php index c5c7c84b65..8509c23cde 100644 --- a/module/report/model.php +++ b/module/report/model.php @@ -148,29 +148,56 @@ class reportModel extends model ->fetchAll('id'); foreach($plans as $plan) $products[$plan->product]->plans[$plan->id] = $plan; - $planStories = $this->dao->select('plan, id, status')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('plan')->in(array_keys($plans))->fetchGroup('plan', 'id'); - foreach($planStories as $planID => $stories) + $planStories = array(); + $unplannedStories = array(); + $stmt = $this->dao->select('id,plan,product,status')->from(TABLE_STORY)->where('deleted')->eq(0)->query(); + while($story = $stmt->fetch()) { - foreach($stories as $story) + if(empty($story->plan)) { - if(!isset($plans[$story->plan])) continue; - $plan = $plans[$story->plan]; - $products[$plan->product]->plans[$story->plan]->status[$story->status] = isset($products[$plan->product]->plans[$story->plan]->status[$story->status]) ? $products[$plan->product]->plans[$story->plan]->status[$story->status] + 1 : 1; + $unplannedStories[$story->id] = $story; + continue; + } + + $storyPlans = array(); + $storyPlans[] = $story->plan; + if(strpos($story->plan, ',') !== false) $storyPlans = explode(',', trim($story->plan, ',')); + foreach($storyPlans as $planID) + { + if(isset($plans[$planID])) + { + $planStories[$story->id] = $story; + break; + } } } - $unplannedStories = $this->dao->select('product, id, status')->from(TABLE_STORY)->where('deleted')->eq(0)->andWhere('plan')->eq(0)->andWhere('product')->in(array_keys($products))->fetchGroup('product', 'id'); - foreach($unplannedStories as $product => $stories) + + foreach($planStories as $story) { - $products[$product]->plans[0] = new stdClass(); - $products[$product]->plans[0]->title = $this->lang->report->unplanned; - $products[$product]->plans[0]->begin = ''; - $products[$product]->plans[0]->end = ''; - foreach($stories as $story) + $storyPlans = array(); + $storyPlans[] = $story->plan; + if(strpos($story->plan, ',') !== false) $storyPlans = explode(',', trim($story->plan, ',')); + foreach($storyPlans as $planID) { - $products[$product]->plans[0]->status[$story->status] = isset($products[$product]->plans[0]->status[$story->status]) ? $products[$product]->plans[0]->status[$story->status] + 1 : 1; + if(!isset($plans[$planID])) continue; + $plan = $plans[$planID]; + $products[$plan->product]->plans[$planID]->status[$story->status] = isset($products[$plan->product]->plans[$planID]->status[$story->status]) ? $products[$plan->product]->plans[$planID]->status[$story->status] + 1 : 1; } } + foreach($unplannedStories as $story) + { + $product = $story->product; + if(!isset($products[$product]->plans[0])) + { + $products[$product]->plans[0] = new stdClass(); + $products[$product]->plans[0]->title = $this->lang->report->unplanned; + $products[$product]->plans[0]->begin = ''; + $products[$product]->plans[0]->end = ''; + } + $products[$product]->plans[0]->status[$story->status] = isset($products[$product]->plans[0]->status[$story->status]) ? $products[$product]->plans[0]->status[$story->status] + 1 : 1; + } + unset($products['']); return $products; }