业务字典实现多表多级联动

Blade 未结 2 146
xiechong
xiechong 2025-08-13 09:52

一、该问题的重现步骤是什么?

在业务字典中如何设置父子项,例如部门表和岗位表,例如部门表有A,B,C,对应部门A的岗位有A-a,A-b,对应B部门的岗位有B-a,B-b等等类似,现在如何在业务字典中实现对应关系,以便于在前端条件过滤中进行类似于这样的搜索


image.png
image.png

我自己在系统中配置时没有看到类似父子项的选项,只看到有一个子项
image.png
但是这样的话直接查这个字典,连相关岗位也会查到,怎么解决

二、你期待的结果是什么?实际看到的又是什么?


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


四、请提供详细的错误堆栈信息,这很重要。


五、若有更多详细信息,请在下面提供。

2条回答
  •  xiechong
    xiechong (楼主)
    2025-08-13 14:42

    下面是我用/blade-system/dict-biz/dictionary-tree获取的我的字典树形

    {

        "code": 200,

        "success": true,

        "data": [

            {

                "id": "1955065798278967298",

                "tenantId": "000000",

                "parentId": "1955065718708826113",

                "code": "dept_dict",

                "dictKey": "digital",

                "dictValue": "数字化部",

                "sort": 1,

                "remark": "",

                "isSealed": -1,

                "status": -1,

                "isDeleted": -1,

                "children": [

                    {

                        "id": "1955444850240253954",

                        "tenantId": "000000",

                        "parentId": "1955065798278967298",

                        "code": "dept_dict",

                        "dictKey": "digital_dev",

                        "dictValue": "软件开发",

                        "sort": 1,

                        "remark": "",

                        "isSealed": -1,

                        "status": -1,

                        "isDeleted": -1,

                        "parentName": "",

                        "hasChildren": false

                    },

                    {

                        "id": "1955444928245919746",

                        "tenantId": "000000",

                        "parentId": "1955065798278967298",

                        "code": "dept_dict",

                        "dictKey": "digital_ops",

                        "dictValue": "运维",

                        "sort": 2,

                        "remark": "",

                        "isSealed": -1,

                        "status": -1,

                        "isDeleted": -1,

                        "parentName": "",

                        "hasChildren": false

                    },

                    {

                        "id": "1955463423759216641",

                        "tenantId": "000000",

                        "parentId": "1955065798278967298",

                        "code": "dept_dict",

                        "dictKey": "digital_test",

                        "dictValue": "测试",

                        "sort": 3,

                        "remark": "",

                        "isSealed": -1,

                        "status": -1,

                        "isDeleted": -1,

                        "parentName": "",

                        "hasChildren": false

                    }

                ],

                "parentName": "",

                "hasChildren": false

            }

        ],

        "msg": "操作成功"

    }

    我看框架提供的函数有获取子列表,我理解的时获取对应parientId的children列表,也就是我这边的部门对应的岗位,随后我调用

    GEThttp://localhost:2888/api/blade-system/dict-biz/child-list?code=dept_dict&parentId=1955065798278967298


    获取,但是在返回的数据中有其他数据,对应sql是

    SELECT

      id,

      tenant_id,

      parent_id,

      CODE,

      dict_key,

      dict_value,

      sort,

      remark,

      is_sealed,

      STATUS,

      is_deleted 

    FROM

      blade_dict_biz 

    WHERE

      is_deleted = 0 

      AND CODE LIKE '%dept_dict%' 

    id <> 1955065798278967298

      AND CODE = 'dept_dict' 

      AND tenant_id = '000000' 

    ORDER BY

      sort ASC


    这里为什么是用id!=parientId作为查询条件的,正是因为这个导致 的有多余的数据,也就是对应这个部门字典的这条数据,
    所以我想问这里是我理解错这个children-list接口的意思了嘛,还有就是有没有相关接口文档供阅读

    谢谢

提交回复