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 |  307 +++++++++++++++++++++++++++++++++++----------------
 1 files changed, 211 insertions(+), 96 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 456fad4..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
@@ -1,96 +1,211 @@
-package com.ruoyi.media.service.impl;
-
-import java.util.List;
-
-import com.ruoyi.common.utils.DateUtils;
-import com.ruoyi.common.utils.SecurityUtils;
-import com.ruoyi.common.utils.uuid.IdUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.media.mapper.VtduMapper;
-import com.ruoyi.media.domain.Vtdu;
-import com.ruoyi.media.service.IVtduService;
-
-import javax.annotation.Resource;
-
-/**
- * 娴佸獟浣撶鐞哠ervice涓氬姟灞傚鐞�
- *
- * @author ard
- * @date 2023-08-29
- */
-@Service
-public class VtduServiceImpl implements IVtduService {
-    @Resource
-    private VtduMapper vtduMapper;
-
-    /**
-     * 鏌ヨ娴佸獟浣撶鐞�
-     *
-     * @param name 娴佸獟浣撶鐞嗕富閿�
-     * @return 娴佸獟浣撶鐞�
-     */
-    @Override
-    public Vtdu selectVtduByName(String name) {
-        return vtduMapper.selectVtduByName(name);
-    }
-
-    /**
-     * 鏌ヨ娴佸獟浣撶鐞嗗垪琛�
-     *
-     * @param vtdu 娴佸獟浣撶鐞�
-     * @return 娴佸獟浣撶鐞�
-     */
-    @Override
-    public List<Vtdu> selectVtduList(Vtdu vtdu) {
-        return vtduMapper.selectVtduList(vtdu);
-    }
-
-    /**
-     * 鏂板娴佸獟浣撶鐞�
-     *
-     * @param vtdu 娴佸獟浣撶鐞�
-     * @return 缁撴灉
-     */
-    @Override
-    public int insertVtdu(Vtdu vtdu) {
-        vtdu.setCreateBy(SecurityUtils.getUserId());
-        vtdu.setCreateTime(DateUtils.getNowDate());
-        return vtduMapper.insertVtdu(vtdu);
-    }
-
-    /**
-     * 淇敼娴佸獟浣撶鐞�
-     *
-     * @param vtdu 娴佸獟浣撶鐞�
-     * @return 缁撴灉
-     */
-    @Override
-    public int updateVtdu(Vtdu vtdu) {
-        vtdu.setUpdateBy(SecurityUtils.getUserId());
-        vtdu.setUpdateTime(DateUtils.getNowDate());
-        return vtduMapper.updateVtdu(vtdu);
-    }
-
-    /**
-     * 鎵归噺鍒犻櫎娴佸獟浣撶鐞�
-     *
-     * @param names 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteVtduByNames(String[] names) {
-        return vtduMapper.deleteVtduByNames(names);
-    }
-
-    /**
-     * 鍒犻櫎娴佸獟浣撶鐞�
-     *
-     * @param name 娴佸獟浣撻�氶亾鍚嶇О
-     * @return 缁撴灉
-     */
-    @Override
-    public int deleteVtduByName(String name) {
-        return vtduMapper.deleteVtduByName(name);
-    }
-}
+package com.ruoyi.media.service.impl;
+
+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;
+import com.ruoyi.media.mapper.VtduMapper;
+import com.ruoyi.media.domain.Vtdu;
+import com.ruoyi.media.service.IVtduService;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+
+/**
+ * 娴佸獟浣撶鐞哠ervice涓氬姟灞傚鐞�
+ *
+ * @author ard
+ * @date 2023-08-29
+ */
+@Service
+@Slf4j(topic = "vtdu")
+public class VtduServiceImpl implements IVtduService {
+    @Resource
+    private VtduMapper vtduMapper;
+    @Resource
+    private IMediaService mediaService;
+
+    /**
+     * 鏌ヨ娴佸獟浣撶鐞�
+     *
+     * @param name 娴佸獟浣撶鐞嗕富閿�
+     * @return 娴佸獟浣撶鐞�
+     */
+    @Override
+    public Vtdu selectVtduByName(String name) {
+
+        return vtduMapper.selectVtduByName(name);
+    }
+
+    /**
+     * 鏌ヨ娴佸獟浣撶鐞嗗垪琛�
+     *
+     * @param vtdu 娴佸獟浣撶鐞�
+     * @return 娴佸獟浣撶鐞�
+     */
+    @Override
+    public List<Vtdu> selectVtduList(Vtdu vtdu) {
+        return vtduMapper.selectVtduList(vtdu);
+    }
+
+    /**
+     * 鏂板娴佸獟浣撶鐞�
+     *
+     * @param vtdu 娴佸獟浣撶鐞�
+     * @return 缁撴灉
+     */
+    @Override
+    public int insertVtdu(Vtdu vtdu) {
+        log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾娣诲姞");
+        Map<String, String> map = mediaService.addPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+        vtdu.setRtspUrl(map.get("rtspUrl"));
+        vtdu.setRtmpUrl(map.get("rtmpUrl"));
+        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
+
+        vtdu.setName(vtdu.getName());
+        vtdu.setRtspSource(vtdu.getRtspSource());
+        vtdu.setIsCode(vtdu.getIsCode());
+        vtdu.setMode(vtdu.getMode());
+        vtdu.setCreateTime(DateUtils.getNowDate());
+        return vtduMapper.insertVtdu(vtdu);
+    }
+
+    /**
+     * 淇敼娴佸獟浣撶鐞�
+     *
+     * @param vtdu 娴佸獟浣撶鐞�
+     * @return 缁撴灉
+     */
+    @Override
+    public int updateVtdu(Vtdu vtdu) {
+        log.debug("娴佸獟浣撱��" + vtdu.getName() + "銆戦�氶亾鏇存柊");
+        Map<String, String> map = mediaService.editPath(vtdu.getName(), vtdu.getRtspSource(), vtdu.getMode(), vtdu.getIsCode());
+        vtdu.setName(vtdu.getName());
+        vtdu.setRtspSource(vtdu.getRtspSource());
+        vtdu.setIsCode(vtdu.getIsCode());
+        vtdu.setMode(vtdu.getMode());
+        vtdu.setRtspUrl(map.get("rtspUrl"));
+        vtdu.setRtmpUrl(map.get("rtmpUrl"));
+        vtdu.setWebrtcUrl(map.get("webrtcUrl"));
+        vtdu.setUpdateTime(DateUtils.getNowDate());
+        return vtduMapper.updateVtdu(vtdu);
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎娴佸獟浣撶鐞�
+     *
+     * @param names 闇�瑕佸垹闄ょ殑鏁版嵁涓婚敭闆嗗悎
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteVtduByNames(String[] names) {
+        for (String name : names) {
+            log.debug("娴佸獟浣撱��" + name + "銆戦�氶亾鍒犻櫎");
+        }
+        mediaService.removePath(names);
+        return vtduMapper.deleteVtduByNames(names);
+    }
+
+    /**
+     * 鍒犻櫎娴佸獟浣撶鐞�
+     *
+     * @param name 娴佸獟浣撻�氶亾鍚嶇О
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteVtduByName(String name) {
+        mediaService.removePath(name);
+        log.debug("娴佸獟浣撱��" + name + "銆戦�氶亾鍒犻櫎");
+        return vtduMapper.deleteVtduByName(name);
+    }
+
+    /**
+     * 鍒犻櫎娴佸獟浣撶鐞嗕俊鎭�
+     *
+     * @param cameraId 鐩告満ID
+     * @return 缁撴灉
+     */
+    @Override
+    public int deleteVtduByCameraId(String cameraId) {
+        Vtdu vtdu = new Vtdu();
+        vtdu.setCameraId(cameraId);
+        List<Vtdu> vtdus = vtduMapper.selectVtduList(vtdu);
+        if (vtdus.size() > 0) {
+            for (Vtdu v : vtdus) {
+                mediaService.removePath(v.getName());
+            }
+        }
+        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