diff --git a/module/kanban/model.php b/module/kanban/model.php index 79f41ddff3..e3855397f2 100755 --- a/module/kanban/model.php +++ b/module/kanban/model.php @@ -712,10 +712,11 @@ class kanbanModel extends model } /** + * 获取看板所有数据。 * Get kanban data. * - * @param int $kanbanID - * @param mixed $regionIDList + * @param int $kanbanID + * @param mixed $regionIDList * @access public * @return array */ @@ -821,70 +822,40 @@ class kanbanModel extends model } /** + * 获取计划看板。 * Get plan kanban. * * @param object $product - * @param int $branchID + * @param string $branchID * @param array $planGroup * @access public * @return array */ - public function getPlanKanban($product, $branchID = 0, $planGroup = '') + public function getPlanKanban(object $product, string $branchID = '0', array $planGroup = array()): array { - $this->loadModel('branch'); $this->loadModel('productplan'); - $lanes = array(); - $columns = array(); - $branches = array(); - $colorIndex = 0; - $laneOrder = 1; - if($product->type == 'normal') - { - $branches = array('all' => $this->lang->productplan->allAB); - } - elseif($branchID == 'all') - { - $branches = $this->branch->getPairs($product->id, 'active'); - } - elseif($branchID == BRANCH_MAIN) - { - $branches = array(BRANCH_MAIN => $this->lang->branch->main); - } - elseif($branchID) - { - foreach(explode(',', $branchID) as $id) - { - $branchName = $this->branch->getById($id); - $branches[$id] = $branchName; - } - } + $lanes = $columns = $kanbanData = $planList = $lanes = $columns = $columnCards = array(); + $colorIndex = 0; + $laneOrder = 1; - $kanbanData = array(); - $planList = array(); - $lanes = array(); - $columns = array(); - $columnCards = array(); $cardActions = array('view', 'createExecution', 'linkStory', 'linkBug', 'edit', 'start', 'finish', 'close', 'activate', 'delete'); + $branches = $this->kanbanTao->getBranchesForPlanKanban($product, $branchID); foreach($branches as $id => $name) { if($product->type != 'normal') $plans = isset($planGroup[$product->id][$id]) ? array_filter($planGroup[$product->id][$id]) : array(); if($product->type == 'normal') $plans = $planGroup; - foreach($plans as $planID => $plan) + foreach($plans as $plan) { if(empty($plan) or $plan->parent == -1) continue; $plan->isParent = false; - $item = array(); - $item['id'] = $plan->id; - $item['name'] = $plan->id; - $item['title'] = htmlspecialchars_decode($plan->title); - $item['status'] = $plan->status; + $item = array('id' => $plan->id, 'name' => $plan->id, 'title' => htmlspecialchars_decode($plan->title), 'status' => $plan->status); $item['statusLabel'] = zget($this->lang->productplan->statusList, $plan->status); $item['delay'] = helper::today() > $plan->end ? true : false; - $item['desc'] = strip_tags(htmlspecialchars_decode($plan->desc)); - $item['dateLine'] = date('m-d', strtotime($plan->begin)) . ' ' . $this->lang->productplan->to . ' ' . date('m-d', strtotime($plan->end)); + $item['desc'] = strip_tags(htmlspecialchars_decode($plan->desc)); + $item['dateLine'] = date('m-d', strtotime($plan->begin)) . ' ' . $this->lang->productplan->to . ' ' . date('m-d', strtotime($plan->end)); $item['actionList'] = array(); foreach($cardActions as $action) { @@ -905,10 +876,8 @@ class kanbanModel extends model foreach($this->lang->kanban->defaultColumn as $columnType => $columnName) $columns[] = array('id' => $columnType, 'name' => $columnType, 'title' => $columnName); foreach($columns as $key => $column) $columns[$key]['cards'] = !empty($columnCards[$column['name']]) ? $columnCards[$column['name']] : 0; - $groupData['key'] = 'planKanban'; - $groupData['data']['lanes'] = $lanes; - $groupData['data']['cols'] = $columns; - $groupData['data']['items'] = $planList; + $groupData['key'] = 'planKanban'; + $groupData['data'] = array('lanes' => $lanes, 'cols' => $columns, 'items' => $planList); $kanbanData[] = array('items' => array($groupData), 'key' => 'planKanban', 'heading' => array('title' => $this->lang->productplan->all . ' ' . count($planList))); return $kanbanData; } diff --git a/module/kanban/tao.php b/module/kanban/tao.php index d22a9e94f8..00f88de235 100644 --- a/module/kanban/tao.php +++ b/module/kanban/tao.php @@ -372,4 +372,42 @@ class kanbanTao extends kanbanModel ->andWhere('`column`')->eq($colID) ->exec(); } + + /** + * 获取产品计划看板的分支 + * Get branches for product plan kanban. + * + * @param object $product + * @param string $branchID + * @access public + * @return array + */ + protected function getBranchesForPlanKanban(object $product, string $branchID): array + { + $this->loadModel('branch'); + + $branches = array(); + if($product->type == 'normal') + { + $branches = array('all' => $this->lang->productplan->allAB); + } + elseif($branchID == 'all') + { + $branches = $this->branch->getPairs($product->id, 'active'); + } + elseif($branchID == BRANCH_MAIN) + { + $branches = array(BRANCH_MAIN => $this->lang->branch->main); + } + elseif($branchID) + { + foreach(explode(',', $branchID) as $id) + { + $branchName = $this->branch->getById($id); + $branches[$id] = $branchName; + } + } + + return $branches; + } } diff --git a/module/kanban/test/kanban.class.php b/module/kanban/test/kanban.class.php index 8c3b3c66f2..e557080c23 100644 --- a/module/kanban/test/kanban.class.php +++ b/module/kanban/test/kanban.class.php @@ -318,23 +318,19 @@ class kanbanTest */ public function getPlanKanbanTest($productID, $branchID = 0) { - global $tester; + global $tester, $app; + $app->rawModule = 'kanban'; + $product = $tester->loadModel('product')->getByID($productID); $tester->loadModel('productplan'); - $planGroup = $product->type == 'normal' ? $tester->productplan->getList($product->id, 0, 'all', '', 'begin_desc', 'skipparent') : $tester->productplan->getGroupByProduct($product->id, 'skipParent', '', 'begin_desc'); + $planGroup = $product->type == 'normal' ? $tester->productplan->getList($product->id, '0', 'all', null, 'begin_desc', 'skipparent') : $tester->productplan->getGroupByProduct((array)$product->id, 'skipParent', '', 'begin_desc'); $objects = $this->objectModel->getPlanKanban($product, $branchID, $planGroup); if(dao::isError()) return dao::getError(); - $laneCount = 0; - $cardCount = 0; - foreach($objects->lanes as $lane) - { - foreach($lane->items as $item) $cardCount += count($item); - } - return 'lanes:' . count($objects->lanes) . ', cards:' . $cardCount; + return $objects; } /** diff --git a/module/kanban/test/model/getplankanban.php b/module/kanban/test/model/getplankanban.php index 6324f5f303..6032a48787 100755 --- a/module/kanban/test/model/getplankanban.php +++ b/module/kanban/test/model/getplankanban.php @@ -4,31 +4,41 @@ include dirname(__FILE__, 5) . '/test/lib/init.php'; include dirname(__FILE__, 2) . '/kanban.class.php'; su('admin'); +zdTable('product')->gen(50); +zdTable('productplan')->gen(50); +zdTable('branch')->gen(50); + /** title=测试 kanbanModel->getPlanKanban(); +timeout=0 cid=1 -pid=1 -测试获取产品1的计划看板 >> lanes:1, cards:3 -测试获取产品2的计划看板 >> lanes:1, cards:3 -测试获取产品3的计划看板 >> lanes:1, cards:3 -测试获取产品4的计划看板 >> lanes:3, cards:2 -测试获取产品4 分支1的计划看板 >> lanes:1, cards:1 -测试获取产品5的计划看板 >> lanes:3, cards:2 -测试获取产品5 分支3的计划看板 >> lanes:1, cards:1 +- 测试获取产品1的计划看板 + - 第0条的name属性 @all + - 第0条的title属性 @所有 +- 测试获取产品2的计划看板 + - 第1条的name属性 @5 + - 第1条的title属性 @1.1 +- 测试获取产品3的计划看板 + - 第0条的name属性 @wait + - 第0条的title属性 @未开始 +- 测试获取产品1的计划看板,传入分支 + - 第0条的name属性 @wait + - 第0条的title属性 @未开始 +- 测试获取产品2的计划看板,传入分支 + - 第0条的name属性 @wait + - 第0条的title属性 @未开始 */ -$productIDList = array('1', '2', '3', '41', '42'); +$productIDList = array('1', '2', '3'); $branchIDList = array('0', '1', '3'); $kanban = new kanbanTest(); -r($kanban->getPlanKanbanTest($productIDList[0])) && p() && e('lanes:1, cards:3'); // 测试获取产品1的计划看板 -r($kanban->getPlanKanbanTest($productIDList[1])) && p() && e('lanes:1, cards:3'); // 测试获取产品2的计划看板 -r($kanban->getPlanKanbanTest($productIDList[2])) && p() && e('lanes:1, cards:3'); // 测试获取产品3的计划看板 -r($kanban->getPlanKanbanTest($productIDList[3])) && p() && e('lanes:3, cards:2'); // 测试获取产品4的计划看板 -r($kanban->getPlanKanbanTest($productIDList[3], $branchIDList[1])) && p() && e('lanes:1, cards:1'); // 测试获取产品4 分支1的计划看板 -r($kanban->getPlanKanbanTest($productIDList[4])) && p() && e('lanes:3, cards:2'); // 测试获取产品5的计划看板 -r($kanban->getPlanKanbanTest($productIDList[4], $branchIDList[2])) && p() && e('lanes:1, cards:1'); // 测试获取产品5 分支3的计划看板 \ No newline at end of file +r($kanban->getPlanKanbanTest($productIDList[0])[0]['items'][0]['data']['lanes']) && p('0:name,title') && e('all,所有'); // 测试获取产品1的计划看板 +r($kanban->getPlanKanbanTest($productIDList[1])[0]['items'][0]['data']['items']['all']['wait']) && p('1:name,title') && e('5,1.1'); // 测试获取产品2的计划看板 +r($kanban->getPlanKanbanTest($productIDList[2])[0]['items'][0]['data']['cols']) && p('0:name,title') && e('wait,未开始'); // 测试获取产品3的计划看板 +r($kanban->getPlanKanbanTest($productIDList[0], $branchIDList[1])[0]['items'][0]['data']['cols']) && p('0:name,title') && e('wait,未开始'); // 测试获取产品1的计划看板,传入分支 +r($kanban->getPlanKanbanTest($productIDList[1], $branchIDList[2])[0]['items'][0]['data']['cols']) && p('0:name,title') && e('wait,未开始'); // 测试获取产品2的计划看板,传入分支 \ No newline at end of file