From 016aa105789fca71e86cdbb0d26a181812f200f9 Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期三, 10 七月 2024 15:33:36 +0800
Subject: [PATCH] 优化:流媒体同步任务

---
 ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java |   47 +++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java
index 44ec3b3..ce6565d 100644
--- a/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/channel/service/impl/ArdChannelServiceImpl.java
@@ -1,6 +1,7 @@
 package com.ruoyi.device.channel.service.impl;
 
 import java.util.List;
+import java.util.stream.Collectors;
 
 import com.ruoyi.common.utils.uuid.IdUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -8,6 +9,8 @@
 import com.ruoyi.device.channel.mapper.ArdChannelMapper;
 import com.ruoyi.device.channel.domain.ArdChannel;
 import com.ruoyi.device.channel.service.IArdChannelService;
+
+import javax.annotation.Resource;
 
 /**
  * 閫氶亾绠$悊Service涓氬姟灞傚鐞�
@@ -17,7 +20,7 @@
  */
 @Service
 public class ArdChannelServiceImpl implements IArdChannelService {
-    @Autowired
+    @Resource
     private ArdChannelMapper ardChannelMapper;
 
     /**
@@ -50,8 +53,8 @@
      */
     @Override
     public int insertArdChannel(ArdChannel ardChannel) {
-                ardChannel.setId(IdUtils.simpleUUID());
-            return ardChannelMapper.insertArdChannel(ardChannel);
+        ardChannel.setId(IdUtils.simpleUUID());
+        return ardChannelMapper.insertArdChannel(ardChannel);
     }
 
     /**
@@ -86,6 +89,7 @@
     public int deleteArdChannelById(String id) {
         return ardChannelMapper.deleteArdChannelById(id);
     }
+
     /**
      * 鍒犻櫎閫氶亾绠$悊淇℃伅
      *
@@ -96,4 +100,39 @@
     public int deleteArdChannelByDeviceId(String deviceId) {
         return ardChannelMapper.deleteArdChannelByDeviceId(deviceId);
     }
-}
+
+    //姹備袱涓璞ist鐨勪氦闆�
+    @Override
+    public List<ArdChannel> sameList(List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList) {
+        List<ArdChannel> resultList = newArrayList.stream()
+                .filter(item -> oldArrayList.stream().map(e -> e.getChanNo())
+                        .collect(Collectors.toList()).contains(item.getChanNo()))
+                .collect(Collectors.toList());
+        return resultList;
+    }
+
+    //姹備袱涓璞ist鐨勫樊闆�
+    @Override
+    public List<ArdChannel> diffList(List<ArdChannel> firstArrayList, List<ArdChannel> secondArrayList) {
+        List<ArdChannel> resultList = firstArrayList.stream()
+                .filter(item -> !secondArrayList.stream().map(e -> e.getChanNo()).collect(Collectors.toList()).contains(item.getChanNo()))
+                .collect(Collectors.toList());
+        return resultList;
+    }
+
+    @Override
+    public void asyncChannel(List<ArdChannel> oldArrayList, List<ArdChannel> newArrayList) {
+        //闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰
+        sameList(oldArrayList, newArrayList).stream().forEach(ardChannel -> {
+            updateArdChannel(ardChannel);
+        });
+        //闇�瑕佸垹闄ょ殑鏁版嵁
+        diffList(oldArrayList, newArrayList).stream().forEach(ardChannel -> {
+            deleteArdChannelById(ardChannel.getId());
+        });
+        //闇�瑕佹柊澧炵殑鏁版嵁
+        diffList(newArrayList, oldArrayList).stream().forEach(ardChannel -> {
+            insertArdChannel(ardChannel);
+        });
+    }
+}
\ No newline at end of file

--
Gitblit v1.9.3