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/media/service/impl/VtduServiceImpl.java |   67 +++++++++++++++++++++++++++++++++
 1 files changed, 67 insertions(+), 0 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
index 91e8103..36a8628 100644
--- a/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java
@@ -3,8 +3,10 @@
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.device.channel.domain.ArdChannel;
 import com.ruoyi.media.service.IMediaService;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
@@ -141,4 +143,69 @@
         }
         return vtduMapper.deleteVtduByCameraId(cameraId);
     }
+
+    /**
+     * @return
+     * @Author 鍒樿嫃涔�
+     * @Description 娓呴櫎鎵�鏈夋祦濯掍綋鏁版嵁
+     * @Date 2024/7/10 13:31
+     * @Param
+     */
+    public void clearVtdu() {
+        vtduMapper.clearVtdu();
+    }
+
+
+    //闇�瑕佹洿鏂扮殑锛堟祦濯掍綋鍜寁tdu鐩稿悓锛�
+    @Override
+    public List<Vtdu> sameList(List<Vtdu> vtdus, List<String> names) {
+        return vtdus.stream().filter(vtdu -> names.contains(vtdu.getName())).collect(Collectors.toList());
+    }
+
+    //闇�瑕佸垹闄ょ殑锛堟祦濯掍綋涓鐨勶級
+    @Override
+    public List<String> diffListToDel(List<Vtdu> vtdus, List<String> names) {
+        if (vtdus.size() >= names.size()) {
+            List<String> nameList = vtdus.stream().map(Vtdu::getName)
+                    .filter(item -> !names.contains(item))
+                    .collect(Collectors.toList());
+            return nameList;
+        } else {
+
+            List<String> nameList = names.stream().filter(item -> !vtdus.stream().map(Vtdu::getName).collect(Collectors.toList()).contains(item))
+                    .collect(Collectors.toList());
+            return nameList;
+        }
+
+    }
+
+    //闇�瑕佹柊澧炵殑锛堟祦濯掍綋涓皯鐨勶級
+    @Override
+    public List<Vtdu> diffListToAdd(List<Vtdu> vtdus, List<String> names) {
+        return vtdus.stream().filter(vtdu -> !names.contains(vtdu.getName())).collect(Collectors.toList());
+    }
+
+    /**
+     * @Author 鍒樿嫃涔�
+     * @Description  鍚屾鏈湴vtdu搴撳拰娴佸獟浣撲腑鐨勬暟鎹�
+     * @Date   2024/7/10 15:26
+     * @Param  vtdus vtdu搴撶殑闆嗗悎
+     * @Param  names 娴佸獟浣撶殑name闆嗗悎
+     * @return
+     */
+    @Override
+    public void asyncVtdu(List<Vtdu> vtdus, List<String> names) {
+        //闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰
+        sameList(vtdus, names).stream().forEach(vtdu -> {
+            mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+        });
+        //闇�瑕佸垹闄ょ殑鏁版嵁
+        diffListToDel(vtdus, names).stream().forEach(name -> {
+            mediaService.removePath(name);
+        });
+        //闇�瑕佹柊澧炵殑鏁版嵁
+        diffListToAdd(vtdus, names).stream().forEach(vtdu -> {
+            mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+        });
+    }
 }

--
Gitblit v1.9.3