/**
* 比较更新组织枚举
*
*<hr>
* @author hanjidong
* @date 2020年11月8日 下午12:46:23
* @since 0.0.1
* @param originList
* @param orgExtends
* void
*/
private void updateList(List<SeReqOrgAttrExtend> originList, List<SeReqOrgAttrExtend> orgExtends) {
//批量更新list
List<SeReqOrgAttrExtend> batchUpdateList = new ArrayList<SeReqOrgAttrExtend>();
//批量删除list
List<SeReqOrgAttrExtend> batchDeleteList = new ArrayList<SeReqOrgAttrExtend>();
//批量添加list
List<SeReqOrgAttrExtend> batchAddList = new ArrayList<SeReqOrgAttrExtend>();
//如果数据库中旧值为空则全部为添加操作
if(ValidateUtil.isEmpty(originList)){
batchAddList.addAll(orgExtends);
batchAdd(batchAddList);
return ;
}
//如果新值为空则全部为删除
if(ValidateUtil.isEmpty(orgExtends)){
batchDeleteList.addAll(orgExtends);
batchDelete(batchDeleteList);
return ;
}
//新的枚举值map 隐含去重
Map<Long,SeReqOrgAttrExtend> newMap = new HashMap<>();
for (SeReqOrgAttrExtend seReqOrgAttrExtend : orgExtends) {
newMap.put(seReqOrgAttrExtend.getId(),seReqOrgAttrExtend);
}
//反向遍里旧的list
for (int i= originList.size() -1 ; i>=0 ; i--) {
SeReqOrgAttrExtend seReqOrgAttrExtend = originList.get(i);
//如果旧的集合中的值在新的map中出现 更新操作
if(newMap.get(seReqOrgAttrExtend.getId()) != null){
if(batchUpdateList.contains(seReqOrgAttrExtend)){
batchUpdateList.add(seReqOrgAttrExtend);
//移除当前操作对象
originList.remove(i);
}
}
//旧的值在新的集合中没有执行删除操作
if(newMap.get(seReqOrgAttrExtend.getId()) == null){
batchDeleteList.add(seReqOrgAttrExtend);
//移除当前操作对象
originList.remove(i);
}
}
batchAddList= originList;
if(ValidateUtil.isNotEmpty(batchAddList)){
batchAdd(batchAddList);
}
if(ValidateUtil.isNotEmpty(batchDeleteList)){
batchDelete(batchDeleteList);
}
if(ValidateUtil.isNotEmpty(batchUpdateList)){
batchUpdate(batchUpdateList);
}
}
list集合比较批量更新
最新推荐文章于 2024-03-20 08:08:44 发布