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