DataPermissionSchema build = DataPermissionSchema.builder().build(); build.setSchemaRowRuleList(userRowRuleList); //设置列权限 根据用户id和用户组织去获取 List<SchemaColumnRule> userColumnRuleList = new ArrayList<>(); for (SchemaColumnRuleEo schemaRowRuleEo : schemaColumnRuleList) { SchemaColumnRule schemaColumnRule = SchemaColumnRule.builder().build(); if(StringUtils.isNotEmpty(schemaRowRuleEo.getColumnPermissionUserList())){ List<String> userlist = JSONArray.parseArray(schemaRowRuleEo.getColumnPermissionUserList(), String.class); if(userlist.contains(userId)){ BeanUtils.copyProperties(schemaRowRuleEo,schemaColumnRule); userColumnRuleList.add(schemaColumnRule); } }else if(StringUtils.isNotEmpty(schemaRowRuleEo.getColumnPermissionOrgList())){ List<String> orglist = JSONArray.parseArray(schemaRowRuleEo.getColumnPermissionOrgList(), String.class); if(orglist.contains(orgCode)){ BeanUtils.copyProperties(schemaRowRuleEo,schemaColumnRule); userColumnRuleList.add(schemaColumnRule); } } } build.setSchemaColumnRuleList(userColumnRuleList);代码优化
时间: 2023-12-08 12:03:02 浏览: 66
Android的移动应用下拉通知效果源码.rar
可以将循环中的复杂逻辑提取出来,提高代码的可读性和复用性。例如,定义一个方法来根据用户id或者组织代码获取对应的列权限列表,代码如下:
```
private List<SchemaColumnRule> getColumnRuleList(List<SchemaColumnRuleEo> schemaColumnRuleList, String userId, String orgCode) {
List<SchemaColumnRule> userColumnRuleList = new ArrayList<>();
for (SchemaColumnRuleEo schemaRowRuleEo : schemaColumnRuleList) {
if(StringUtils.isNotEmpty(schemaRowRuleEo.getColumnPermissionUserList())){
List<String> userlist = JSONArray.parseArray(schemaRowRuleEo.getColumnPermissionUserList(), String.class);
if(userlist.contains(userId)){
SchemaColumnRule schemaColumnRule = SchemaColumnRule.builder().build();
BeanUtils.copyProperties(schemaRowRuleEo, schemaColumnRule);
userColumnRuleList.add(schemaColumnRule);
}
}else if(StringUtils.isNotEmpty(schemaRowRuleEo.getColumnPermissionOrgList())){
List<String> orglist = JSONArray.parseArray(schemaRowRuleEo.getColumnPermissionOrgList(), String.class);
if(orglist.contains(orgCode)){
SchemaColumnRule schemaColumnRule = SchemaColumnRule.builder().build();
BeanUtils.copyProperties(schemaRowRuleEo, schemaColumnRule);
userColumnRuleList.add(schemaColumnRule);
}
}
}
return userColumnRuleList;
}
```
然后在主函数中调用该方法:
```
DataPermissionSchema build = DataPermissionSchema.builder().build();
build.setSchemaRowRuleList(userRowRuleList);
List<SchemaColumnRule> userColumnRuleList = getColumnRuleList(schemaColumnRuleList, userId, orgCode);
build.setSchemaColumnRuleList(userColumnRuleList);
```
这样代码更加简洁易懂,也方便后续重复使用。
阅读全文