From f37c91a84345f925e41cd26bf5d22ed1a2594bdf Mon Sep 17 00:00:00 2001
From: liusuyi <1951119284@qq.com>
Date: 星期四, 06 六月 2024 14:37:16 +0800
Subject: [PATCH] 防止录像文件持续生成,增加启动项目清空本地录像临时文件

---
 ard-work/src/main/java/com/ruoyi/utils/excel/EasyExcelUtil.java                        |    6 ++
 ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java       |   29 ++++++++------
 ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java                              |    2 +
 ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java                    |    9 ++++
 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java                  |   19 +++++++++
 ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java                  |    1 
 ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java |    6 +++
 ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java     |    2 
 ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java            |   45 +++++++++++-----------
 9 files changed, 80 insertions(+), 39 deletions(-)

diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
index 8835bad..e1e3ec5 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/controller/CameraSdkController.java
@@ -407,7 +407,7 @@
     @ApiOperation("鏈湴褰曞儚鍋滄")
     @PostMapping("/localRecordStop")
     @Log(title = "鏈湴褰曞儚鍋滄", businessType = BusinessType.CONTROL)
-    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.lRealHandle"})
+    @ApiOperationSupport(includeParameters = {"cmd.cameraId", "cmd.chanNo", "cmd.recordId"})
     public @ResponseBody
     void localRecordStop(@RequestBody CameraCmd cmd, HttpServletResponse response) throws IOException {
         cmd.setOperator(SecurityUtils.getUserId());
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
index 3ab1d8d..5b435a0 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/factory/CameraSDK.java
@@ -113,6 +113,7 @@
 
     //鏈湴褰曞儚寮�濮�
     AjaxResult localRecordStart(CameraCmd cmd);
+
     //鏈湴褰曞儚鍋滄
     AjaxResult localRecordStop(CameraCmd cmd);
 }
diff --git a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
index 9fd6321..eee48bb 100644
--- a/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
+++ b/ard-work/src/main/java/com/ruoyi/device/camera/service/impl/ArdCamerasServiceImpl.java
@@ -6,8 +6,10 @@
 
 import com.ruoyi.alarm.global.domain.GuidePoint;
 import com.ruoyi.alarmpoints.well.domain.ArdAlarmpointsWell;
+import com.ruoyi.common.config.ARDConfig;
 import com.ruoyi.common.constant.CacheConstants;
 import com.ruoyi.common.constant.CameraConstants;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.entity.SysDept;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.redis.RedisCache;
@@ -16,6 +18,7 @@
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.bean.BeanValidators;
+import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
 import com.ruoyi.common.utils.uuid.IdUtils;
 import com.ruoyi.device.camera.domain.CameraCmd;
@@ -68,6 +71,9 @@
     @PostConstruct
     public void loadCameras() {
 
+        //娓呴櫎褰曞儚缂撳瓨
+        String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+        FileUtils.deleteFolder(tempPath);
         //娓呯┖鐩告満缂撳瓨
         Collection<String> cacheKeys = redisCache.keys(getCacheKey("*"));
         redisCache.deleteObject(cacheKeys);
diff --git a/ard-work/src/main/java/com/ruoyi/utils/excel/EasyExcelUtil.java b/ard-work/src/main/java/com/ruoyi/utils/excel/EasyExcelUtil.java
index 0b7d70a..d3a1edd 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/excel/EasyExcelUtil.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/excel/EasyExcelUtil.java
@@ -1,6 +1,8 @@
 package com.ruoyi.utils.excel;
 
 import com.alibaba.excel.EasyExcel;
+import com.ruoyi.common.config.ARDConfig;
+import com.ruoyi.common.constant.Constants;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -40,7 +42,9 @@
         if (!parentDir.exists()) {
             parentDir.mkdirs(); // 鍒涘缓鏂囦欢鎵�鍦ㄧ殑鐩綍锛屽寘鎷埗鐩綍
         }
-        File tempFile = new File("d:/temp.xlsx");
+        // 鏈湴涓存椂褰曞儚鍦板潃
+        String tempExcel = ARDConfig.getProfile() + Constants.LOCAL_EXCEL_TEMP_PREFIX + "/temp.xlsx";
+        File tempFile = new File(tempExcel);
         List<ExcelData> existingData = new ArrayList<>();
         if (file.exists()) {
             // 璇诲彇宸叉湁鏁版嵁
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
index 5f1695a..52dbdf8 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/dhsdk/service/impl/DahuaSDK.java
@@ -4,7 +4,10 @@
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.alarm.global.service.impl.QueueHandler;
 import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.config.ARDConfig;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
 import com.ruoyi.common.utils.spring.SpringUtils;
@@ -527,7 +530,9 @@
                 return AjaxResult.warn("璁惧鏈櫥褰�");
             }
             LLong loginId = (LLong) GlobalVariable.loginMap.get(cameraId);
-            String imagePath = FileUtils.createFile("D:/LocalCaptureTemp/" + cameraId + ".jpeg");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String imagePath = FileUtils.createFile(tempPath + "/" + cameraId + ".jpeg");
             fCaptureReceiveCB1 m_CaptureReceiveCB = new fCaptureReceiveCB1(imagePath);
             CapturePictureModule.setSnapRevCallBack(m_CaptureReceiveCB);
             boolean b = CapturePictureModule.remoteCapturePicture(loginId, chanNo - 1);
@@ -565,7 +570,10 @@
             //    GlobalVariable.previewMap.remove(cameraId);
             //    log.debug("鍋滄褰撳墠褰曞儚");
             //}
-            String path = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             LLong lRealHandle = RealPlayModule.startRealPlay(loginId, chanNo - 1, path);
             if (lRealHandle.longValue() <= 0) {
                 log.error("鍙栨祦澶辫触" + getErrorCodePrint());
@@ -594,28 +602,13 @@
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return AjaxResult.warn("璁惧鏈櫥褰�");
             }
-
             RealPlayModule.stopRealPlay(lRealHandle);
             log.debug("鏈湴褰曞儚鍋滄");
-            String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String recordPath = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath));
-            // OutputStream outputStream = response.getOutputStream();
-            // outputStream.write(imageBytes);
             return AjaxResult.success(imageBytes);
-            //if (GlobalVariable.previewMap.containsKey(cameraId)) {
-            //    lRealHandle = new LLong(GlobalVariable.previewMap.get(cameraId));
-            //    RealPlayModule.stopRealPlay(lRealHandle);
-            //    GlobalVariable.previewMap.remove(cameraId);
-            //    log.debug("鏈湴褰曞儚鍋滄");
-            //    String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
-            //    byte[] imageBytes = Files.readAllBytes(Paths.get(recordPath));
-            //   // OutputStream outputStream = response.getOutputStream();
-            //   // outputStream.write(imageBytes);
-            //    return AjaxResult.success(imageBytes);
-            //}
-            //else {
-            //    return AjaxResult.error("璁惧鏈紑濮嬪綍鍍�");
-            //}
         } catch (Exception ex) {
             log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage());
             return AjaxResult.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage());
@@ -636,7 +629,9 @@
             String url = "";
             String cameraId = cmd.getCameraId();
             Integer chanNo = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             boolean enable = cmd.isEnable();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
@@ -675,7 +670,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer chanNo = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return false;
             }
@@ -711,7 +708,9 @@
         String url = "";
         try {
             String cameraId = cmd.getCameraId();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
             }
diff --git a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
index fd88459..802d315 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/sdk/hiksdk/service/impl/HikvisionSDK.java
@@ -4,6 +4,8 @@
 import com.ruoyi.alarm.global.domain.GuideTask;
 import com.ruoyi.alarm.global.service.impl.QueueHandler;
 import com.ruoyi.common.annotation.SdkOperate;
+import com.ruoyi.common.config.ARDConfig;
+import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.utils.file.FileUtils;
 import com.ruoyi.common.utils.file.MimeTypeUtils;
@@ -1605,7 +1607,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer chanNo = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             boolean enable = cmd.isEnable();
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
@@ -1677,7 +1681,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return false;
             }
@@ -1735,7 +1741,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/recordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return "";
             }
@@ -1933,7 +1941,9 @@
         try {
             String cameraId = cmd.getCameraId();
             Integer channelNum = cmd.getChanNo();
-            String path = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String path = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             if (!GlobalVariable.loginMap.containsKey(cameraId)) {
                 return AjaxResult.warn("璁惧鏈櫥褰�");
             }
@@ -2020,17 +2030,12 @@
             previewinfo.byNPQMode = 0;//NPQ妯″紡锛�0-鐩磋繛妯″紡锛�1-杩囨祦濯掍綋妯″紡
             previewinfo.write();
             //endregion
-            //if (GlobalVariable.previewMap.containsKey(cameraId)) {
-            //    Integer lRealHandle = GlobalVariable.previewMap.get(cameraId);
-            //    hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
-            //    GlobalVariable.previewMap.remove(cameraId);
-            //}
             hCNetSDK.NET_DVR_StopRealPlay(lRealHandle);
             log.debug("鏈湴褰曞儚鍋滄");
-            String recordPath = FileUtils.createFile("D:/LocalRecordTemp/" + cameraId + ".mp4");
+            // 鏈湴涓存椂褰曞儚鍦板潃
+            String tempPath = ARDConfig.getProfile() + Constants.LOCAL_RECORD_TEMP_PREFIX;
+            String recordPath = FileUtils.createFile(tempPath + "/" + cameraId + ".mp4");
             byte[] recordBytes = Files.readAllBytes(Paths.get(recordPath));
-            //OutputStream outputStream = response.getOutputStream();
-            //outputStream.write(imageBytes);
             return AjaxResult.success(recordBytes);
         } catch (Exception ex) {
             log.error("鏈湴褰曞儚鍋滄寮傚父" + ex.getMessage());
diff --git a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
index ff87625..24e2b43 100644
--- a/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
+++ b/ard-work/src/main/java/com/ruoyi/utils/tools/ArdTool.java
@@ -209,4 +209,6 @@
             }
         }
     }
+
+
 }
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
index f10e7dc..f922248 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
@@ -113,7 +113,14 @@
      * 璧勬簮鏄犲皠璺緞 鍓嶇紑
      */
     public static final String RESOURCE_PREFIX = "/profile";
-
+    /**
+     * 鏈湴涓存椂褰曞儚璺緞 鍓嶇紑
+     */
+    public static final String LOCAL_RECORD_TEMP_PREFIX = "/LocalRecordTemp";
+    /**
+     * 鏈湴涓存椂EXCEL璺緞 鍓嶇紑
+     */
+    public static final String LOCAL_EXCEL_TEMP_PREFIX = "/LocalExcelTemp";
     /**
      * RMI 杩滅▼鏂规硶璋冪敤
      */
diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
index d2dcff2..caaabe1 100644
--- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
+++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java
@@ -105,7 +105,24 @@
         }
         return flag;
     }
-
+    /**
+     * 鍒犻櫎鏂囦欢澶�
+     *
+     * @param filePath 鏂囦欢澶�
+     * @return
+     */
+    public static void deleteFolder(String filePath) {
+        File folder=new File(filePath);
+        if (folder.isDirectory()) {
+            File[] files = folder.listFiles();
+            if (files != null) {
+                for (File file : files) {
+                    deleteFolder(file.getAbsolutePath());
+                }
+            }
+        }
+        folder.delete();
+    }
     /**
      * 鏂囦欢鍚嶇О楠岃瘉
      *

--
Gitblit v1.9.3