* Refactor transfer model: getRows method.

This commit is contained in:
tanghucheng
2023-12-20 17:24:53 +08:00
parent 6179310d3c
commit 40e63172c0
4 changed files with 93 additions and 21 deletions
+3 -3
View File
@@ -151,17 +151,17 @@ $config->task->dtable->fieldList['story']['type'] = 'desc';
$config->task->dtable->fieldList['story']['sortType'] = true;
$config->task->dtable->fieldList['story']['show'] = true;
$config->task->dtable->fieldList['story']['group'] = 9;
$config->task->dtable->fieldList['story']['dataSource'] = array('module' => 'story', 'method' => 'getExecutionStoryPairs', 'params' => '$executionID&0&all&&&active');
$config->task->dtable->fieldList['story']['dataSource'] = array('module' => 'story', 'method' => 'getExecutionStoryPairs', 'params' => ['executionID' => (int)'$executionID', 'productID' => 0, 'branch' => 'all', 'moduleIdList' => '', 'type' => '', 'status' => 'active']);
$config->task->dtable->fieldList['module']['title'] = 'module';
$config->task->dtable->fieldList['module']['control'] = 'select';
$config->task->dtable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getTaskOptionMenu', 'params' => '$executionID');
$config->task->dtable->fieldList['module']['dataSource'] = array('module' => 'tree', 'method' => 'getTaskOptionMenu', 'params' => ['rootID' => (int)'$executionID']);
$config->task->dtable->fieldList['module']['display'] = false;
$config->task->dtable->fieldList['execution']['title'] = 'execution';
$config->task->dtable->fieldList['execution']['control'] = 'hidden';
$config->task->dtable->fieldList['execution']['type'] = 'html';
$config->task->dtable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs');
$config->task->dtable->fieldList['execution']['dataSource'] = array('module' => 'execution', 'method' => 'getPairs', 'params' => ['projectID' => 0]);
$config->task->dtable->fieldList['execution']['display'] = false;
$config->task->dtable->fieldList['project']['title'] = 'project';
+16 -18
View File
@@ -532,27 +532,27 @@ class transferModel extends model
}
/**
* 获取导出数据。
* Get Rows.
*
* @param string $module
* @param object|string|array $fieldList
* @param string $module
* @param object|array $fieldList
* @access public
* @return void
* @return array
*/
public function getRows(string $module, object|string|array $fieldList)
public function getRows(string $module, object|array $fieldList)
{
$moduleDatas = $this->getQueryDatas($module);
$moduleDatas = $this->getQueryDatas($module); // 根据SESSION中的条件查询数据。
if(is_object($fieldList)) $fieldList = (array) $fieldList;
if(isset($fieldList['files'])) $moduleDatas = $this->getFiles($module, $moduleDatas);
if(is_object($fieldList)) $fieldList = (array) $fieldList;
if(isset($fieldList['files'])) $moduleDatas = $this->getFiles($module, $moduleDatas); // 如果有附件字段则获取附件。
/* 如果存在rows则用rows中的数据覆盖查询的数据。*/
/* If has rows, use rows data to cover query data. */
$rows = !empty($_POST['rows']) ? $_POST['rows'] : array();
foreach($rows as $id => $row) $moduleDatas[$id] = (object) array_merge((array)$moduleDatas[$id], (array)$row);
foreach($rows as $id => $row)
{
$moduleDatas[$id] = (object) array_merge((array)$moduleDatas[$id], (array)$row);
}
/* 设置子数据。*/
/* Deal children datas and multiple tasks. */
if($moduleDatas) $moduleDatas = $this->updateChildDatas($moduleDatas);
@@ -834,16 +834,14 @@ class transferModel extends model
$children = array();
foreach($datas as $data)
{
$id = $data->id;
if(!empty($data->mode)) $datas[$id]->name = '[' . $this->lang->task->multipleAB . '] ' . $data->name;
if(!empty($data->parent) and isset($datas[$data->parent]))
{
if(!empty($data->name)) $data->name = '>' . $data->name;
elseif(!empty($data->title)) $data->title = '>' . $data->title;
$children[$data->parent][$data->id] = $data;
unset($datas[$data->id]);
}
if(!empty($data->mode))
{
$datas[$data->id]->name = '[' . $this->lang->task->multipleAB . '] ' . $data->name;
$children[$data->parent][$id] = $data;
unset($datas[$id]);
}
}
+44
View File
@@ -0,0 +1,44 @@
#!/usr/bin/env php
<?php
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/transfer.class.php';
zdTable('story')->gen(20);
$file = zdTable('file');
$file->objectType->range('task');
$file->gen(10);
$task = zdTable('task');
$task->project->range('11');
$task->parent->range('0{3},3{7}');
$task->mode->range('linear{1},multi{1},0{8}');
$task->execution->range('101');
$task->gen(10);
su('admin');
/**
title=测试 transfer->getRows();
timeout=0
cid=1
- 测试导出多人并行任务第0条的name属性 @[多人] 开发任务11
- 测试导出多人串行任务第1条的name属性 @[多人] 开发任务12
- 测试导出正常任务第2条的name属性 @开发任务13
- 测试导出子任务第3条的name属性 @>开发任务14
*/
$transfer = new transferTest();
//a($transfer->getRowsTest('task'));die;
/* 测试导出任务。*/
r($transfer->getRowsTest('task')) && p('0:name') && e('[多人] 开发任务11'); // 测试导出多人并行任务
r($transfer->getRowsTest('task')) && p('1:name') && e('[多人] 开发任务12'); // 测试导出多人串行任务
r($transfer->getRowsTest('task')) && p('2:name') && e('开发任务13'); // 测试导出正常任务
r($transfer->getRowsTest('task')) && p('3:name') && e('>开发任务14'); // 测试导出子任务
r(isset($transfer->getRowsTest('task')[8]->files)) && p('') && e('1'); // 测试导出附件是否存在
$task = new stdclass();
$task->name = '追加任务1';
$_POST['rows']['2'] = $task;
r($transfer->getRowsTest('task')) && p('1:name') && e('[多人] 追加任务1'); // 测试当有数据需要单独处理时
+30
View File
@@ -154,4 +154,34 @@ class transferTest
return $this->objectModel->getQueryDatas($module);
}
/**
* 测试getRows。
* Get query datas.
*
* @param string $module
* @access public
* @return array
*/
public function getRowsTest(string $module = '', string $checkedItem = '')
{
global $tester, $app;
$app->methodName = 'export';
$object = $tester->loadModel($module);
$fields = isset($object->config->$module->exportFields) ? $object->config->$module->exportFields : '';
$_SESSION[$module . 'TransferParams']['executionID'] = 101;
if($module == 'testcase')
{
$app->config->testcase->cascade = array('story' => 'module');
$app->config->testcase->listFields = 'module,type,stage,pri,story,status,branch,results';
}
$fields = explode(',', $fields);
$fieldList = $this->objectModel->initFieldList($module, $fields);
$this->getQueryDatasTest($module);
return $this->objectModel->getRows($module, $fieldList);
}
}