说明:根据云端设备数据集合和数据库设备数据集合,进行对比,本地设备和云端设备相同的,本地数据要进行更新,云端有本地没有的设备,本地要进行新增
text
1
2
3
4
//查询数据库 服务商下所有分机数据集合
List<CcExtensionTelephone> dbList = Lists.newArrayList();
//查询云端平台 所有分机信息集合
List<CcExtensionTelephone> cloudList = Lists.newArrayList();
text
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//4.获取集合相同的部分进行更新
List<CcExtensionTelephone> list = compareListData(cloudList, dbList);
/**
* @param cloudList 云端list
* @param dbList 数据库list
* @return List<CcExtensionTelephone>
* @description: TODO 对两个 List 遍历匹配数据的优化处理
* @author hyh
* @date 2022/3/30 16:35
*/
public static List<CcExtensionTelephone> compareListData(List<CcExtensionTelephone> cloudList, List<CcExtensionTelephone> dbList) {
//两个List 如果ID==CHANNEL_ID 用UUID替换掉CHANNEL_ID
List<CcExtensionTelephone> resultList = cloudList.stream().map(cloudTel -> dbList.stream()
.filter(dbTel -> Objects.equals(cloudTel.getExtNumber(), dbTel.getExtNumber()) && Objects.equals(cloudTel.getMac(), dbTel.getMac()))//若云端分机号和本地分机号相同
.findFirst().map(tel -> {
Long id = tel.getId();
BeanUtils.copyProperties(cloudTel, tel);//将cloudList下的数据替换掉本地数据
tel.setId(id);
return tel;
}).orElse(//若云端分机号和本地分机号不相同
null))
.filter(Objects::nonNull).collect(Collectors.toList());
return resultList;
}
text
1
2
3
4
5
6
//需要新增的云端分机信息集合
List<CcExtensionTelephone> addTelCloudList = Lists.newArrayList();
//6.云端分机集合去过滤更新的分机集合数据,剩下的即新增分机的集合
addTelCloudList.removeIf(cloudTel -> list.stream().filter(dbTel -> Objects.equals(cloudTel.getExtNumber(), dbTel.getExtNumber()) && Objects.equals(cloudTel.getMac(), dbTel.getMac())).findAny().isPresent());





评论
登录后即可评论
分享你的想法,与作者互动
暂无评论