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-09 07:07:03 浏览: 17
可以使用Java 8的Stream和Lambda表达式来优化这段代码,使其更加简洁和易读。具体实现如下:
```
List<SchemaColumnRule> userColumnRuleList = schemaColumnRuleList.stream()
.filter(rule -> {
if(StringUtils.isNotEmpty(rule.getColumnPermissionUserList())) {
List<String> userList = JSONArray.parseArray(rule.getColumnPermissionUserList(), String.class);
return userList.contains(userId);
} else if(StringUtils.isNotEmpty(rule.getColumnPermissionOrgList())) {
List<String> orgList = JSONArray.parseArray(rule.getColumnPermissionOrgList(), String.class);
return orgList.contains(orgCode);
}
return false;
})
.map(rule -> {
SchemaColumnRule columnRule = SchemaColumnRule.builder().build();
BeanUtils.copyProperties(rule, columnRule);
return columnRule;
})
.collect(Collectors.toList());
build.setSchemaColumnRuleList(userColumnRuleList);
```
这段代码使用Stream对`schemaColumnRuleList`进行过滤和映射,筛选出符合条件的列权限规则,并将其转换为`SchemaColumnRule`对象。最后,使用collect方法将结果收集到一个列表中,并设置到`build`对象中。