Closed
Description
版本号: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 commentedon Aug 4, 2019
3q
zhangdaiscott commentedon Aug 12, 2019
已经修复,采用reids缓存组织机构,下个版本发布