|
@@ -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);
|
|
|
+// }
|
|
|
|
|
|
/**
|
|
|
* 删除录制视频的零时文件
|