业务场景:
在企业运行报告中,需要生成每个部门的报告,并展示部门与其上下级部门的关系。为了更高效处理每个公司的层级关系,在查询过程中,采用了适当的重定向策略以确保数据能够准确、快速地被检索到。同时,使用了树状结构的数据来处理层级关系,确保查询结果的准确性。
代码实现:
class TreeNode:
def __init__(self, id, name, code, parent_id):
self.id = id # 节点id
self.name = name # 节点名称
self.code = code # 节点代号
self.parent_id = parent_id # 父节点id
self.children = [] # 子节点列表
def build_tree(data):
nodes = {}
root = None
# 创建所有节点并建立id和节点的映射关系
for item in data:
node = TreeNode(item[0], item[1], item[2], item[3]) # 创建节点
nodes[item[0]] = node # 将节点id和节点对象建立映射关系
if item[3] in nodes: # 如果父节点已经存在
parent_node = nodes[item[3]] # 找到父节点
parent_node.children.append(node) # 将当前节点加入父节点的子节点列表
else:
root = node # 如果没有父节点,当前节点即为根节点
return root # 返回根节点
def tree_to_dict_list(node):
node_dict = {
'id': node.id,
'name': node.name,
'code': node.code,
'parent_id': node.parent_id,
'children': [] # 子节点列表
}
for child in node.children:
child_dict = tree_to_dict_list(child) # 递归处理子节点
node_dict['children'].append(child_dict) # 将子节点加入当前节点的子节点列表
return node_dict # 返回当前节点的字典表示