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