From b61c4537a78d58412ef7ccd6e2c30152d807c5b7 Mon Sep 17 00:00:00 2001
From: zhangnaisong <2434969829@qq.com>
Date: 星期一, 29 七月 2024 11:04:54 +0800
Subject: [PATCH] 电磁锁密码查询去除上一组密码修改提交
---
ard-work/src/main/java/com/ruoyi/media/service/impl/VtduServiceImpl.java | 392 +++++++++++++++++++++++++++++++++++--------------------
1 files changed, 249 insertions(+), 143 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 ee991af..f0be3d3 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,143 +1,249 @@
-package com.ruoyi.media.service.impl;
-
-import java.util.List;
-import java.util.Map;
-
-import com.ruoyi.common.utils.DateUtils;
-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.Resource;
-
-/**
- * 娴佸獟浣撶鐞哠ervice涓氬姟灞傚鐞�
- *
- * @author ard
- * @date 2023-08-29
- */
-@Service
-@Slf4j(topic = "sdk")
-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) {
- log.debug("娴佸獟浣撱��" + name + "銆戦�氶亾鍒犻櫎");
- mediaService.removePath(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);
- }
-}
+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.camera.domain.ArdCameras;
+import com.ruoyi.device.camera.domain.CameraCmd;
+import com.ruoyi.device.camera.factory.CameraSDK;
+import com.ruoyi.device.camera.factory.CameraSDKFactory;
+import com.ruoyi.device.channel.domain.ArdChannel;
+import com.ruoyi.media.domain.StreamInfo;
+import com.ruoyi.media.service.IMediaService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Value;
+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;
+ @Resource
+ private CameraSDKFactory cameraSDKFactory;
+ @Value("${mediamtx.host}")
+ String mediamtxHost;
+ /**
+ * 鏌ヨ娴佸獟浣撶鐞�
+ *
+ * @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) {
+ return vtduMapper.insertVtdu(vtdu);
+ }
+
+ /**
+ * 淇敼娴佸獟浣撶鐞�
+ *
+ * @param vtdu 娴佸獟浣撶鐞�
+ * @return 缁撴灉
+ */
+ @Override
+ public int updateVtdu(Vtdu vtdu) {
+ 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());
+ }
+
+ /**
+ * @return
+ * @Author 鍒樿嫃涔�
+ * @Description 鍚屾鏈湴vtdu搴撳拰娴佸獟浣撲腑鐨勬暟鎹�
+ * @Date 2024/7/10 15:26
+ * @Param vtdus vtdu搴撶殑闆嗗悎
+ * @Param names 娴佸獟浣撶殑name闆嗗悎
+ */
+ @Override
+ public void asyncVtdu(List<Vtdu> vtdus, List<String> names) {
+ //闇�瑕佹洿鏂扮殑鏁版嵁,鍙傛暟椤哄簭娉ㄦ剰
+ sameList(vtdus, names).stream().forEach(vtdu -> {
+ StreamInfo streamInfo = mediaService.getPathInfo(vtdu.getName());
+ if (!streamInfo.getRtspSource().equals(vtdu.getRtspSource())) {
+ 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());
+ });
+ }
+ @Override
+ public void addChanToVtdu(ArdCameras camera, ArdChannel channel) {
+ String name = camera.getId() + "_" + channel.getChanNo();
+ String rtspSource="";
+ switch (camera.getFactory())
+ {
+ case "1": rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/h264/ch" + channel.getChanNo() + "/main/av_stream";break;
+ case "2": rtspSource = "rtsp://" + camera.getUsername() + ":" + camera.getPassword() + "@" + camera.getIp() + ":" + camera.getRtspPort() + "/cam/realmonitor?channel=" + channel.getChanNo() + "&subtype=0";break;
+ }
+
+ //鍒犻櫎娴佸獟浣�
+ if (selectVtduByName(name) != null) {
+ deleteVtduByName(name);
+ }
+ //娣诲姞鍒版祦濯掍綋
+ CameraCmd cmd = new CameraCmd(camera.getId(), channel.getChanNo());
+ CameraSDK cameraSDK = cameraSDKFactory.createCameraSDK(camera.getFactory());
+ Map<String, Object> videoCompressionCfg = cameraSDK.getVideoCompressionCfg(cmd);
+ Vtdu vtdu = new Vtdu();
+ if (videoCompressionCfg.get("videoEncType") != null) {
+ if (videoCompressionCfg.get("videoEncType").equals("鏍囧噯h264")) {
+ vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+ } else {
+ vtdu.setIsCode("1");//榛樿杞爜
+ }
+ } else {
+ vtdu.setIsCode("0");//榛樿涓嶈浆鐮�
+ }
+ vtdu.setRtspSource(rtspSource);
+ vtdu.setName(name);
+ vtdu.setMode("1");//榛樿CPU杞В鐮�
+ vtdu.setCameraId(camera.getId());
+ String rtspUrl = "rtsp://" + mediamtxHost + ":8554/" + name;
+ String rtmpUrl = "rtmp://" + mediamtxHost + ":1935/" + name;
+ String webrtcUrl = "http://" + mediamtxHost + ":8889/" + name;
+ vtdu.setRtmpUrl(rtmpUrl);
+ vtdu.setWebrtcUrl(webrtcUrl);
+ vtdu.setRtspUrl(rtspUrl);
+ insertVtdu(vtdu);
+ }
+
+}
--
Gitblit v1.9.3