Skip to content

生成部门组织树的逻辑问题 #374

Closed
@jackzhuo

Description

@jackzhuo
版本号:2.0.2
问题描述:在从数据库中读出部门数据生成树型结构时的代码处理逻辑存在问题
截图&代码:
    private static List<DepartIdModel> idList = new ArrayList<>(4);


    /**
     * queryTreeList的子方法 ====1=====
     * 该方法是s将SysDepart类型的list集合转换成SysDepartTreeModel类型的集合
     */
    public static List<SysDepartTreeModel> wrapTreeDataToTreeList(List<SysDepart> recordList) {
     // 在该方法每请求一次,都要对全局list集合进行一次清理
        idList.clear();
        List<SysDepartTreeModel> records = new ArrayList<>();
        for (int i = 0; i < recordList.size(); i++) {
            SysDepart depart = recordList.get(i);
            records.add(new SysDepartTreeModel(depart));
        }
        List<SysDepartTreeModel> tree = findChildren(records, idList);
        setEmptyChildrenAsNull(tree);
        return tree;
    }

idList定义为一个类的全局静态属性,试想,如果有两个用户同时访问部门管理这个功能,那么第二个用户一进行,先做了一个idList.clear(),那么其实就把前一个用户可能正在处理中的中间数据绘清楚了。

解决方法:
wrapTreeDataToTreeList方法中生成一个局部变量即可,反正每一级函数调用时都会传入此列表即可。

Activity

zhangdaiscott

zhangdaiscott commented on Aug 4, 2019

@zhangdaiscott
Member

3q

zhangdaiscott

zhangdaiscott commented on Aug 12, 2019

@zhangdaiscott
Member

已经修复,采用reids缓存组织机构,下个版本发布

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @jackzhuo@zhangdaiscott

        Issue actions

          生成部门组织树的逻辑问题 · Issue #374 · jeecgboot/JeecgBoot