// 保存重新选择的多选框组织。orgCodes:该角色下前端最新勾选的组织编号;lastOrgCodes:该角色下历史拥有的组织编号
@Override
public void saveRoleDeptAuth(String roleId, String orgCodes, String lastOrgCodes) {
List<String> add = getDiff(lastOrgCodes,orgCodes);
if(add!=null && add.size()>0) {
List<TblRoleDepartAuth> list = new ArrayList<TblRoleDepartAuth>();
for (String p : add) {
if(oConvertUtils.isNotEmpty(p)) {
TblRoleDepartAuth auth = new TblRoleDepartAuth();
auth.setCreateTime(new Date());
auth.setRoleId(roleId);
auth.setOrgCode(p);
list.add(auth);
}
}
this.saveBatch(list);
}
List<String> delete = getDiff(orgCodes,lastOrgCodes);
if(delete!=null && delete.size()>0) {
for (String orgCode : delete) {
this.remove(new QueryWrapper<TblRoleDepartAuth>().lambda().eq(TblRoleDepartAuth::getRoleId, roleId).eq(TblRoleDepartAuth::getOrgCode, orgCode));
}
}
}
getDiff方法:
/**
* 从diff中找出main中没有的元素
* @param main
* @param diff
* @return
*/
private List<String> getDiff(String main,String diff){
if(oConvertUtils.isEmpty(diff)) {
return null;
}
if(oConvertUtils.isEmpty(main)) {
return Arrays.asList(diff.split(","));
}
String[] mainArr = main.split(",");
String[] diffArr = diff.split(",");
Map<String, Integer> map = new HashMap(5);
for (String string : mainArr) {
map.put(string, 1);
}
List<String> res = new ArrayList<String>();
for (String key : diffArr) {
if(oConvertUtils.isNotEmpty(key) && !map.containsKey(key)) {
res.add(key);
}
}
return res;
}