* [task#133040,doing,1.5h] build tree when export data.

This commit is contained in:
sunguangming
2024-11-21 10:07:59 +08:00
committed by 王怡栋
parent 03578096cb
commit 52866a6c58
3 changed files with 36 additions and 46 deletions
+5 -4
View File
@@ -4879,10 +4879,11 @@ class storyModel extends model
foreach($reviewedByList as $i => $reviewedBy) $reviewedByList[$i] = zget($users, trim($reviewedBy));
$story->reviewedBy = implode(',', array_filter($reviewedByList));
$gradePairs = zget($gradeGroup, $story->type, array());
$grade = zget($gradePairs, $story->grade, '');
$story->grade = $grade->name;
$story->parent = zget($parents, $story->parent, '');
$gradePairs = zget($gradeGroup, $story->type, array());
$grade = zget($gradePairs, $story->grade, '');
$story->grade = $grade->name;
$story->parentId = $story->parent;
$story->parent = zget($parents, $story->parent, '');
}
return $stories;
+10 -24
View File
@@ -2569,31 +2569,17 @@ class taskModel extends model
}
}
/* Process parent-child task task info. */
if($tasks)
/* Process parent-child task info. */
foreach($tasks as $task)
{
$children = array();
foreach($tasks as $task)
{
if($task->parent > 0 && isset($tasks[$task->parent]))
{
$children[$task->parent][$task->id] = $task;
unset($tasks[$task->id]);
}
}
if(!empty($children))
{
$position = 0;
foreach($tasks as $task)
{
$position ++;
if(isset($children[$task->id]))
{
array_splice($tasks, $position, 0, $children[$task->id]);
$position += count($children[$task->id]);
}
}
}
if($task->parent > 0) $parentIdList[] = $task->parent;
}
$parents = $this->dao->select('id, name')->from(TABLE_TASK)->where('id')->in($parentIdList)->fetchPairs();
foreach($tasks as $task)
{
$task->parentId = $task->parent;
$task->parent = zget($parents, $task->parent, '');
}
return $tasks;
+21 -18
View File
@@ -234,34 +234,37 @@ class transferTao extends transferModel
*/
protected function updateChildDatas(array $datas)
{
$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]))
{
/* 根据name或title获取父数据。*/
/* Get parent data by name or title. */
if(!empty($data->name)) $data->name = '>' . $data->name;
$children[$data->parent][$id] = $data;
unset($datas[$id]);
}
}
if(empty($children)) return $datas;
/* 如果存在子数据,则将子数据插入到父数据之后。*/
/* Move child data after parent data. */
$position = 0;
$children = array();
foreach($datas as $data)
{
$position ++;
if(!isset($children[$data->id])) continue;
array_splice($datas, $position, 0, $children[$data->id]);
$position += count($children[$data->id]);
$parentId = isset($data->parentId) ? $data->parentId : $data->parent;
if(!isset($children[$parentId])) $children[$parentId] = array();
$children[$parentId][] = $data;
}
return $datas;
if(empty($children)) return $datas;
$buildTree = function($parentId) use (&$buildTree, &$children)
{
$result = array();
if(isset($children[$parentId]))
{
foreach($children[$parentId] as $child)
{
$result[] = $child;
$result = array_merge($result, $buildTree($child->id));
}
}
return $result;
};
return $buildTree(0);
}
}