| 
					
				 | 
			
			
				@@ -85,6 +85,7 @@ public class CameraUtil { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static RedisCache rc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static ServerConfig sc; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static String recordUrl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static String isEnable; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public final static String tsFilekey = "mergeVideoTsFile"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -928,6 +929,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         sc = serverConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         wsUrl = caneraConfig.getWsUrl(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         recordUrl = caneraConfig.getRecordUrl(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        isEnable=caneraConfig.getIsEnable(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1003,44 +1005,45 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 相机状态修改 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void cameraBlockUp() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        long baseTime = 60000L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //当前时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        long currentTimestamp = System.currentTimeMillis(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //字典中设置的值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<SysDictData> heartIntervalTime = dictDataMapper.selectDictDataByType("heart_interval_time"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<SysDictData> triggerWarningFrequency = dictDataMapper.selectDictDataByType("trigger_warning_frequency"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 计算时间间隔 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        long timeInterval = baseTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!ObjectUtils.isEmpty(heartIntervalTime)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            timeInterval *= Long.valueOf(heartIntervalTime.get(0).getDictValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!ObjectUtils.isEmpty(triggerWarningFrequency)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            timeInterval *= Long.valueOf(triggerWarningFrequency.get(0).getDictValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (ObjectUtils.isEmpty(heartIntervalTime) || ObjectUtils.isEmpty(triggerWarningFrequency)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            timeInterval = baseTime * 5 * 3; // 默认值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (isEnable.equals("true")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long baseTime = 60000L; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //当前时间戳 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long currentTimestamp = System.currentTimeMillis(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            //字典中设置的值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<SysDictData> heartIntervalTime = dictDataMapper.selectDictDataByType("heart_interval_time"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<SysDictData> triggerWarningFrequency = dictDataMapper.selectDictDataByType("trigger_warning_frequency"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 计算时间间隔 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long timeInterval = baseTime; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!ObjectUtils.isEmpty(heartIntervalTime)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                timeInterval *= Long.valueOf(heartIntervalTime.get(0).getDictValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!ObjectUtils.isEmpty(triggerWarningFrequency)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                timeInterval *= Long.valueOf(triggerWarningFrequency.get(0).getDictValue()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (ObjectUtils.isEmpty(heartIntervalTime) || ObjectUtils.isEmpty(triggerWarningFrequency)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                timeInterval = baseTime * 5 * 3; // 默认值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 计算查询的时间范围(前五分钟) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            long startTime = currentTimestamp - timeInterval; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 查询 MQ 日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            LambdaQueryWrapper<MqLog> mqLogQuery = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            mqLogQuery.between(MqLog::getCreateTime, new Date(startTime), new Date(currentTimestamp)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<MqLog> mqLogs = mqLogService.list(mqLogQuery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Set<String> loggedCameraCodes = mqLogs.stream().map(MqLog::getCameraCode).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 获取所有设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            List<BaseDeviceDynamicManagement> devices = baseDeviceDynamicManagementService.list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Set<String> allCameraCodes = devices.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 找出未记录日志的设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            Set<String> inactiveCameraCodes = new HashSet<>(allCameraCodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            inactiveCameraCodes.removeAll(loggedCameraCodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 保存设备状态变更记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveDeviceResume(loggedCameraCodes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            saveDeviceResume(inactiveCameraCodes, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            // 更新设备状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateDeviceStatus(loggedCameraCodes, 1); // 启用设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            updateDeviceStatus(inactiveCameraCodes, 2); // 禁用设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 计算查询的时间范围(前五分钟) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        long startTime = currentTimestamp - timeInterval; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 查询 MQ 日志 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        LambdaQueryWrapper<MqLog> mqLogQuery = new LambdaQueryWrapper<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        mqLogQuery.between(MqLog::getCreateTime, new Date(startTime), new Date(currentTimestamp)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<MqLog> mqLogs = mqLogService.list(mqLogQuery); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> loggedCameraCodes = mqLogs.stream().map(MqLog::getCameraCode).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 获取所有设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<BaseDeviceDynamicManagement> devices = baseDeviceDynamicManagementService.list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> allCameraCodes = devices.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toSet()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 找出未记录日志的设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Set<String> inactiveCameraCodes = new HashSet<>(allCameraCodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        inactiveCameraCodes.removeAll(loggedCameraCodes); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 保存设备状态变更记录 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveDeviceResume(loggedCameraCodes, 1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        saveDeviceResume(inactiveCameraCodes, 2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 更新设备状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        updateDeviceStatus(loggedCameraCodes, 1); // 启用设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        updateDeviceStatus(inactiveCameraCodes, 2); // 禁用设备 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     // 辅助方法:更新设备状态 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -1110,51 +1113,51 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 修改相机状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public void updateCameraManagementState() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //离线的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        ArrayList<String> offLine = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<BaseDeviceDynamicManagement> list = baseDeviceDynamicManagementService.list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        for (BaseDeviceDynamicManagement baseDeviceDynamicManagement : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 格式化输入时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Instant instant = baseDeviceDynamicManagement.getUpdateTime().toInstant(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 将Instant对象转换为LocalDateTime对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 获取当前时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LocalDateTime currentTime = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 计算时间差 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            Duration duration = Duration.between(localDateTime, currentTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 检查时间差是否大于3小时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (duration.toHours() >= 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                offLine.add(baseDeviceDynamicManagement.getCameraCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //修改离线相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!ObjectUtils.isEmpty(offLine)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            LambdaUpdateWrapper<BaseDeviceDynamicManagement> updateWrapper = Wrappers.lambdaUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            updateWrapper.in(BaseDeviceDynamicManagement::getCameraCode, offLine); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            // 执行批量修改操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            BaseDeviceDynamicManagement update = new BaseDeviceDynamicManagement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            update.setIsDisable(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            baseDeviceDynamicManagementService.update(update, updateWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        //修改在线相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        LambdaUpdateWrapper<BaseDeviceDynamicManagement> wrapper = Wrappers.lambdaUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if (!ObjectUtils.isEmpty(offLine)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            wrapper.notIn(BaseDeviceDynamicManagement::getCameraCode, offLine); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 执行批量修改操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        BaseDeviceDynamicManagement baseDeviceDynamicManagement = new BaseDeviceDynamicManagement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        baseDeviceDynamicManagement.setIsDisable(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        baseDeviceDynamicManagementService.update(baseDeviceDynamicManagement, wrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    public void updateCameraManagementState() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //离线的 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        ArrayList<String> offLine = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        List<BaseDeviceDynamicManagement> list = baseDeviceDynamicManagementService.list(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        for (BaseDeviceDynamicManagement baseDeviceDynamicManagement : list) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 格式化输入时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            Instant instant = baseDeviceDynamicManagement.getUpdateTime().toInstant(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 将Instant对象转换为LocalDateTime对象 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 获取当前时间 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            LocalDateTime currentTime = LocalDateTime.now(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 计算时间差 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            Duration duration = Duration.between(localDateTime, currentTime); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 检查时间差是否大于3小时 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            if (duration.toHours() >= 3) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//                offLine.add(baseDeviceDynamicManagement.getCameraCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //修改离线相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (!ObjectUtils.isEmpty(offLine)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            LambdaUpdateWrapper<BaseDeviceDynamicManagement> updateWrapper = Wrappers.lambdaUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            updateWrapper.in(BaseDeviceDynamicManagement::getCameraCode, offLine); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            // 执行批量修改操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            BaseDeviceDynamicManagement update = new BaseDeviceDynamicManagement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            update.setIsDisable(2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            baseDeviceDynamicManagementService.update(update, updateWrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        //修改在线相机 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        LambdaUpdateWrapper<BaseDeviceDynamicManagement> wrapper = Wrappers.lambdaUpdate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        if (!ObjectUtils.isEmpty(offLine)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//            wrapper.notIn(BaseDeviceDynamicManagement::getCameraCode, offLine); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        // 执行批量修改操作 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        BaseDeviceDynamicManagement baseDeviceDynamicManagement = new BaseDeviceDynamicManagement(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        baseDeviceDynamicManagement.setIsDisable(1); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//        baseDeviceDynamicManagementService.update(baseDeviceDynamicManagement, wrapper); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+//    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 删除录制视频的零时文件 
			 |