python设备分组(部门分组等)功能设计

1.数据库设计

在这里插入图片描述
在这里插入图片描述

2.python获取设备分组树结构

DATA = [{'group_id': 1, 'group_name': '桂妃山', 'parent_group_id': None, 'description': None, 'order_num': 1,
         "group_level": 1},
        {'group_id': 2, 'group_name': '1栋1层', 'parent_group_id': 1, 'description': None, 'order_num': 1,
         "group_level": 2},
        {'group_id': 3, 'group_name': '1栋2层', 'parent_group_id': 1, 'description': None, 'order_num': 2,
         "group_level": 2},
        {'group_id': 4, 'group_name': '1栋3层', 'parent_group_id': 1, 'description': None, 'order_num': 3,
         "group_level": 2},
        {'group_id': 5, 'group_name': '1栋4层', 'parent_group_id': 1, 'description': None, 'order_num': 4,
         "group_level": 2},
        {'group_id': 6, 'group_name': '1线', 'parent_group_id': 2, 'description': None, 'order_num': 1,
         "group_level": 3},
        {'group_id': 7, 'group_name': '2线', 'parent_group_id': 2, 'description': None, 'order_num': 2,
         "group_level": 3},
        {'group_id': 8, 'group_name': '3线', 'parent_group_id': 2, 'description': None, 'order_num': 3,
         "group_level": 3},
        {'group_id': 9, 'group_name': '4线', 'parent_group_id': 2, 'description': None, 'order_num': 4,
         "group_level": 3},
        {'group_id': 10, 'group_name': '1线', 'parent_group_id': 3, 'description': None, 'order_num': 1,
         "group_level": 3},
        {'group_id': 11, 'group_name': '2线', 'parent_group_id': 3, 'description': None, 'order_num': 2,
         "group_level": 3},
        {'group_id': 13, 'group_name': '4线', 'parent_group_id': 3, 'description': None, 'order_num': 4,
         "group_level": 3},
        {'group_id': 12, 'group_name': '3线', 'parent_group_id': 3, 'description': None, 'order_num': 3,
         "group_level": 3},
        {'group_id': 14, 'group_name': '1线', 'parent_group_id': 4, 'description': None, 'order_num': 1,
         "group_level": 3},
        {'group_id': 15, 'group_name': '2线', 'parent_group_id': 4, 'description': None, 'order_num': 2,
         "group_level": 3},
        {'group_id': 17, 'group_name': '饲喂器2', 'parent_group_id': 6, 'description': None, 'order_num': 2,
         "group_level": 4},
        {'group_id': 16, 'group_name': '饲喂器1', 'parent_group_id': 6, 'description': None, 'order_num': 1,
         "group_level": 4},
        {'group_id': 18, 'group_name': '查情宝1', 'parent_group_id': 7, 'description': None, 'order_num': 1,
         "group_level": 4},
        {'group_id': 19, 'group_name': '查情宝2', 'parent_group_id': 7, 'description': None, 'order_num': 2,
         "group_level": 4},
        {'group_id': 20, 'group_name': '多奶宝1', 'parent_group_id': 8, 'description': None, 'order_num': 1,
         "group_level": 4},
        {'group_id': 21, 'group_name': '多奶宝2', 'parent_group_id': 8, 'description': None, 'order_num': 2,
         "group_level": 4}]
def constructDeptTrees(parent_group_id=None):
    '''
    通过递归实现根据父ID查找子部门
    1.根据父ID获取该部门下的子部门
    2.遍历子部门,继续向下获取,直到最小部门
    3.如果没有遍历到,返回空的数组,有返回权限列表
    :param parentId:
    :return:dict
    '''
    data_list = [i for i in DATA if i['parent_group_id'] == parent_group_id]
    data_list = sorted(data_list, key=lambda x: x['order_num'])
    # print(data_list)
    if len(data_list) > 0:
        data = []
        for dept in data_list:
            children_list = constructDeptTrees(dept['group_id'])
            if children_list:
                dept['children'] = children_list
            data.append(dept)
        return data
    return []


group_tree = constructDeptTrees()
print(group_tree)

在这里插入图片描述

[{'group_id': 1, 'group_name': '桂妃山', 'parent_group_id': None, 'description': None, 'order_num': 1, 'group_level': 1, 'children': [{'group_id': 2, 'group_name': '1栋1层', 'parent_group_id': 1, 'description': None, 'order_num': 1, 'group_level': 2, 'children': [{'group_id': 6, 'group_name': '1线', 'parent_group_id': 2, 'description': None, 'order_num': 1, 'group_level': 3, 'children': [{'group_id': 16, 'group_name': '饲喂器1', 'parent_group_id': 6, 'description': None, 'order_num': 1, 'group_level': 4}, {'group_id': 17, 'group_name': '饲喂器2', 'parent_group_id': 6, 'description': None, 'order_num': 2, 'group_level': 4}]}, {'group_id': 7, 'group_name': '2线', 'parent_group_id': 2, 'description': None, 'order_num': 2, 'group_level': 3, 'children': [{'group_id': 18, 'group_name': '查情宝1', 'parent_group_id': 7, 'description': None, 'order_num': 1, 'group_level': 4}, {'group_id': 19, 'group_name': '查情宝2', 'parent_group_id': 7, 'description': None, 'order_num': 2, 'group_level': 4}]}, {'group_id': 8, 'group_name': '3线', 'parent_group_id': 2, 'description': None, 'order_num': 3, 'group_level': 3, 'children': [{'group_id': 20, 'group_name': '多奶宝1', 'parent_group_id': 8, 'description': None, 'order_num': 1, 'group_level': 4}, {'group_id': 21, 'group_name': '多奶宝2', 'parent_group_id': 8, 'description': None, 'order_num': 2, 'group_level': 4}]}, {'group_id': 9, 'group_name': '4线', 'parent_group_id': 2, 'description': None, 'order_num': 4, 'group_level': 3}]}, {'group_id': 3, 'group_name': '1栋2层', 'parent_group_id': 1, 'description': None, 'order_num': 2, 'group_level': 2, 'children': [{'group_id': 10, 'group_name': '1线', 'parent_group_id': 3, 'description': None, 'order_num': 1, 'group_level': 3}, {'group_id': 11, 'group_name': '2线', 'parent_group_id': 3, 'description': None, 'order_num': 2, 'group_level': 3}, {'group_id': 12, 'group_name': '3线', 'parent_group_id': 3, 'description': None, 'order_num': 3, 'group_level': 3}, {'group_id': 13, 'group_name': '4线', 'parent_group_id': 3, 'description': None, 'order_num': 4,
                       'group_level': 3}]},
                  {'group_id': 4, 'group_name': '1栋3层', 'parent_group_id': 1, 'description': None, 'order_num': 3,
                   'group_level': 2, 'children': [
                      {'group_id': 14, 'group_name': '1线', 'parent_group_id': 4, 'description': None, 'order_num': 1,
                       'group_level': 3},
                      {'group_id': 15, 'group_name': '2线', 'parent_group_id': 4, 'description': None, 'order_num': 2,
                       'group_level': 3}]},
                  {'group_id': 5, 'group_name': '1栋4层', 'parent_group_id': 1, 'description': None, 'order_num': 4,
                   'group_level': 2}]}]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值