说明:根据云端设备数据集合和数据库设备数据集合,进行对比,本地设备和云端设备相同的,本地数据要进行更新,云端有本地没有的设备,本地要进行新增

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());

原文地址:https://blog.csdn.net/qq_43511677/article/details/123865275?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168474995516800188548878%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=168474995516800188548878&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v1~rank_v31_ecpm-10-123865275-null-null.142^v87^control_2,239^v2^insert_chatgpt&utm_term=java%E4%BC%98%E5%8C%96