ソースを参照

开发电池电量履历和设备状态履历

gao.qiang 3 週間 前
コミット
e915e7b94b

+ 53 - 0
business-service/src/main/java/com/ozs/service/entity/BaseDeviceResume.java

@@ -0,0 +1,53 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 设备状态履历表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class BaseDeviceResume extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
+    /**
+     * 相机状态(1在线2离线)
+     */
+    private Integer isDisable;
+    
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 53 - 0
business-service/src/main/java/com/ozs/service/entity/BaseElectricityResume.java

@@ -0,0 +1,53 @@
+package com.ozs.service.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ozs.common.core.domain.BaseEntity;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 电池电量履历表
+ * </p>
+ *
+ * @author ozs
+ * @since 2023-02-22
+ */
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Builder
+public class BaseElectricityResume extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 相机编码
+     */
+    private String cameraCode;
+
+    /**
+     * 剩余电量
+     */
+    private Integer electricity;
+
+
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+}

+ 49 - 0
business-service/src/main/java/com/ozs/service/entity/vo/BaseDeviceResumeVo.java

@@ -0,0 +1,49 @@
+package com.ozs.service.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class BaseDeviceResumeVo {
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+    /**
+     * 相机状态(1正常2故障)
+     */
+    private String isDisable;
+    /**
+     * 里程位置
+     */
+    private Integer installMile;
+    /**
+     * 里程位置
+     */
+    private String installMiles;
+    /**
+     * 测点名称
+     */
+    private String measurePointName;
+
+    /**
+     * 线路类型名称(1=高铁,2=普铁)
+     */
+    private String railwayType;
+
+    /**
+     * 线路名称
+     */
+    private String railwayName;
+
+    /**
+     * 故障条数
+     */
+    private Integer faultNum;
+}

+ 46 - 0
business-service/src/main/java/com/ozs/service/entity/vo/BaseElectricityResumeVo.java

@@ -0,0 +1,46 @@
+package com.ozs.service.entity.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.util.Date;
+
+/**
+ * @author Administrator
+ */
+@Data
+public class BaseElectricityResumeVo {
+    /**
+     * 创建时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    /**
+     * 剩余电量
+     */
+    private Integer electricity;
+    /**
+     * 里程位置
+     */
+    private Integer installMile;
+    /**
+     * 里程位置
+     */
+    private String installMiles;
+    /**
+     * 测点名称
+     */
+    private String measurePointName;
+
+    /**
+     * 线路类型名称(1=高铁,2=普铁)
+     */
+    private String railwayType;
+
+    /**
+     * 线路名称
+     */
+    private String railwayName;
+
+}

+ 14 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseDeviceResumeMapper.java

@@ -0,0 +1,14 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.BaseDeviceResume;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BaseDeviceResumeMapper extends BaseMapper<BaseDeviceResume> {
+    List<BaseDeviceResumeVo> getBaseDeviceResume(@Param("cameraCode")String cameraCode, @Param("startTime")String startTime, @Param("endTime")String endTime);
+}

+ 14 - 0
business-service/src/main/java/com/ozs/service/mapper/BaseElectricityResumeMapper.java

@@ -0,0 +1,14 @@
+package com.ozs.service.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ozs.service.entity.BaseElectricityResume;
+import com.ozs.service.entity.vo.BaseElectricityResumeVo;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+@Mapper
+public interface BaseElectricityResumeMapper extends BaseMapper<BaseElectricityResume> {
+    List<BaseElectricityResumeVo> getBaseElectricityResume(@Param("cameraCode")String cameraCode, @Param("startTime")String startTime, @Param("endTime")String endTime);
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/service/BaseDeviceResumeService.java

@@ -0,0 +1,11 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.BaseDeviceResume;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+
+import java.util.List;
+
+public interface BaseDeviceResumeService extends IService<BaseDeviceResume> {
+    List<BaseDeviceResumeVo> getBaseDeviceResume(String cameraCode, String startTime, String endTime);
+}

+ 11 - 0
business-service/src/main/java/com/ozs/service/service/BaseElectricityResumeService.java

@@ -0,0 +1,11 @@
+package com.ozs.service.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ozs.service.entity.BaseElectricityResume;
+import com.ozs.service.entity.vo.BaseElectricityResumeVo;
+
+import java.util.List;
+
+public interface BaseElectricityResumeService  extends IService<BaseElectricityResume> {
+    List<BaseElectricityResumeVo> getBaseElectricityResume(String cameraCode, String startTime, String endTime);
+}

+ 31 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseDeviceResumeServiceImpl.java

@@ -0,0 +1,31 @@
+package com.ozs.service.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.common.utils.AppendUtils;
+import com.ozs.service.entity.BaseDeviceResume;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+import com.ozs.service.mapper.BaseDeviceResumeMapper;
+import com.ozs.service.service.BaseDeviceResumeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class BaseDeviceResumeServiceImpl extends ServiceImpl<BaseDeviceResumeMapper, BaseDeviceResume> implements BaseDeviceResumeService {
+    @Autowired
+    private BaseDeviceResumeMapper baseDeviceResumeMapper;
+    @Override
+    public List<BaseDeviceResumeVo> getBaseDeviceResume(String cameraCode, String startTime, String endTime) {
+
+        List<BaseDeviceResumeVo> baseDeviceResume = baseDeviceResumeMapper.getBaseDeviceResume(cameraCode, startTime, endTime);
+        for (BaseDeviceResumeVo baseDeviceResumeVo : baseDeviceResume) {
+            String installMile = AppendUtils.stringAppend(baseDeviceResumeVo.getInstallMile());
+            baseDeviceResumeVo.setInstallMiles(installMile);
+        }
+        return baseDeviceResume;
+    }
+}

+ 34 - 0
business-service/src/main/java/com/ozs/service/service/impl/BaseElectricityResumeServiceImpl.java

@@ -0,0 +1,34 @@
+package com.ozs.service.service.impl;
+
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ozs.common.utils.AppendUtils;
+import com.ozs.service.entity.BaseElectricityResume;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+import com.ozs.service.entity.vo.BaseElectricityResumeVo;
+import com.ozs.service.mapper.BaseElectricityResumeMapper;
+import com.ozs.service.service.BaseElectricityResumeService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@Service
+public class BaseElectricityResumeServiceImpl extends ServiceImpl<BaseElectricityResumeMapper, BaseElectricityResume> implements BaseElectricityResumeService {
+    @Autowired
+    private BaseElectricityResumeMapper baseElectricityResumeMapper;
+    @Override
+    public List<BaseElectricityResumeVo> getBaseElectricityResume(String cameraCode, String startTime, String endTime) {
+        List<BaseElectricityResumeVo> baseElectricityResume = baseElectricityResumeMapper.getBaseElectricityResume(cameraCode, startTime, endTime);
+
+        for (BaseElectricityResumeVo baseDeviceResume : baseElectricityResume) {
+            String installMile = AppendUtils.stringAppend(baseDeviceResume.getInstallMile());
+            baseDeviceResume.setInstallMiles(installMile);
+        }
+        return baseElectricityResume;
+    }
+}

+ 49 - 0
business-service/src/main/resources/mapper/service/BaseDeviceResumeMapper.xml

@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.service.mapper.BaseDeviceResumeMapper">
+
+    <select id="getBaseDeviceResume" resultType="com.ozs.service.entity.vo.BaseDeviceResumeVo">
+        SELECT
+        de.create_time  AS createTime,
+        ca.install_mile AS installMile,
+        ra.railway_name AS railwayName,
+        ca.measure_point_name AS measurePointName,
+        CASE
+        ra.railway_type
+        WHEN 1 THEN
+        '高铁'
+        WHEN 2 THEN
+        '普铁'
+        END AS railwayType,
+        CASE
+        de.is_disable
+        WHEN 1 THEN
+        '正常'
+        WHEN 2 THEN
+        '故障'
+        END AS isDisable,
+        COUNT(CASE WHEN de.is_disable = 2 THEN 1 END) OVER () AS faultNum
+        FROM
+        base_device_resume AS de
+        LEFT JOIN base_camera_management AS ca ON de.camera_code = ca.camera_code
+        LEFT JOIN base_railway_management AS ra ON ca.railway_code = ra.railway_code
+        <where>
+            <if test="cameraCode != null and cameraCode != ''">
+                AND de.camera_code=#{cameraCode}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND de.create_time &gt;=#{startTime}
+            </if>
+            <if test="startTime == null or startTime == ''">
+                AND de.create_time &gt;= DATE_SUB(NOW(), INTERVAL 24 HOUR)
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND de.create_time &lt;=#{endTime}
+            </if>
+            <if test="endTime == null and endTime == ''">
+                AND de.create_time &lt;= NOW()
+            </if>
+        </where>
+        ORDER BY de.create_time desc
+    </select>
+</mapper>

+ 42 - 0
business-service/src/main/resources/mapper/service/BaseElectricityResumeMapper.xml

@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ozs.service.mapper.BaseElectricityResumeMapper">
+
+    <select id="getBaseElectricityResume" resultType="com.ozs.service.entity.vo.BaseElectricityResumeVo">
+        SELECT
+        de.create_time  AS createTime,
+        ca.install_mile AS installMile,
+        ra.railway_name AS railwayName,
+        ca.measure_point_name AS measurePointName,
+        de.electricity AS electricity,
+        CASE
+        ra.railway_type
+        WHEN 1 THEN
+        '高铁'
+        WHEN 2 THEN
+        '普铁'
+        END AS railwayType
+        FROM
+        base_electricity_resume AS de
+        LEFT JOIN base_camera_management AS ca ON de.camera_code = ca.camera_code
+        LEFT JOIN base_railway_management AS ra ON ca.railway_code = ra.railway_code
+        <where>
+            <if test="cameraCode != null and cameraCode != ''">
+                AND de.camera_code=#{cameraCode}
+            </if>
+            <if test="startTime != null and startTime != ''">
+                AND de.create_time &gt;=#{startTime}
+            </if>
+            <if test="startTime == null or startTime == ''">
+                AND de.create_time &gt;= DATE_SUB(NOW(), INTERVAL 24 HOUR)
+            </if>
+            <if test="endTime != null and endTime != ''">
+                AND de.create_time &lt;=#{endTime}
+            </if>
+            <if test="endTime == null and endTime == ''">
+                AND de.create_time &lt;= NOW()
+            </if>
+        </where>
+        ORDER BY de.create_time desc
+    </select>
+</mapper>

+ 41 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseDeviceResumeController.java

@@ -0,0 +1,41 @@
+package com.ozs.web.controller.accountmanagment;
+
+
+import com.ozs.common.annotation.Log;
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.enums.BusinessType;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+import com.ozs.service.service.BaseDeviceResumeService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@RestController
+@RequestMapping("/service/BaseDeviceResume")
+@Slf4j
+public class BaseDeviceResumeController extends BaseController {
+
+    @Autowired
+    private BaseDeviceResumeService baseDeviceResumeService;
+
+    /**
+     * 获取设备状态履历
+     */
+    @GetMapping("/getBaseDeviceResume")
+    @Log(title = "设备状态履历", businessType = BusinessType.SELECT)
+    public AjaxResult getBaseDeviceResume(@RequestParam(value = "cameraCode") String cameraCode,
+                                          @RequestParam(value ="startTime", required = false) String startTime,
+                                          @RequestParam(value ="endTime", required = false) String endTime) {
+        List<BaseDeviceResumeVo> baseDevicResumeVoList = baseDeviceResumeService.getBaseDeviceResume(cameraCode, startTime, endTime);
+        return AjaxResult.success(baseDevicResumeVoList);
+    }
+}

+ 42 - 0
hazard-admin/src/main/java/com/ozs/web/controller/accountmanagment/BaseElectricityResumeController.java

@@ -0,0 +1,42 @@
+package com.ozs.web.controller.accountmanagment;
+
+
+import com.ozs.common.annotation.Log;
+import com.ozs.common.core.controller.BaseController;
+import com.ozs.common.core.domain.AjaxResult;
+import com.ozs.common.enums.BusinessType;
+import com.ozs.service.entity.vo.BaseDeviceResumeVo;
+import com.ozs.service.entity.vo.BaseElectricityResumeVo;
+import com.ozs.service.service.BaseElectricityResumeService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * @author Administrator
+ */
+@RestController
+@RequestMapping("/service/BaseElectricityResume")
+@Slf4j
+public class BaseElectricityResumeController extends BaseController {
+
+    @Autowired
+    private BaseElectricityResumeService baseElectricityResumeService;
+
+    /**
+     * 获取电池电量状态履历
+     */
+    @GetMapping("/getBaseElectricityResume")
+    @Log(title = "设备状态履历", businessType = BusinessType.SELECT)
+    public AjaxResult getBaseElectricityResume(@RequestParam(value = "cameraCode") String cameraCode,
+                                               @RequestParam(value = "startTime", required = false) String startTime,
+                                               @RequestParam(value = "endTime", required = false) String endTime) {
+        List<BaseElectricityResumeVo> baseElectricityResumeVoList = baseElectricityResumeService.getBaseElectricityResume(cameraCode, startTime, endTime);
+        return AjaxResult.success(baseElectricityResumeVoList);
+    }
+}

+ 70 - 62
hazard-admin/src/main/java/com/ozs/web/core/util/CameraUtil.java

@@ -17,15 +17,7 @@ import java.time.*;
 import java.time.format.DateTimeFormatter;
 import java.time.format.DateTimeParseException;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.regex.Matcher;
@@ -44,6 +36,8 @@ import com.jcraft.jsch.JSch;
 import com.jcraft.jsch.JSchException;
 import com.jcraft.jsch.Session;
 import com.ozs.common.utils.HttpClientUtil;
+import com.ozs.service.entity.*;
+import com.ozs.service.service.*;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -63,16 +57,6 @@ import com.ozs.common.utils.DateUtils;
 import com.ozs.common.utils.http.HttpUtils;
 import com.ozs.common.utils.uuid.IdUtils;
 import com.ozs.framework.config.ServerConfig;
-import com.ozs.service.entity.BaseCameraManagement;
-import com.ozs.service.entity.BaseDeviceDynamicManagement;
-import com.ozs.service.entity.CameraLogDetail;
-import com.ozs.service.entity.MqLog;
-import com.ozs.service.entity.MsgAlarm;
-import com.ozs.service.service.BaseCameraManagementService;
-import com.ozs.service.service.BaseDeviceDynamicManagementService;
-import com.ozs.service.service.CameraLogDetailService;
-import com.ozs.service.service.MqLogService;
-import com.ozs.service.service.MsgAlarmService;
 import com.ozs.system.mapper.SysDictDataMapper;
 import com.ozs.web.core.config.CaneraConfig;
 
@@ -124,6 +108,8 @@ public class CameraUtil {
     private ServerConfig serverConfig;
     @Autowired
     private MsgAlarmService msgAlarmService;
+    @Autowired
+    BaseDeviceResumeService baseDeviceResumeService;
 
     @Resource
     BaseCameraManagementService baseCameraManagementService;
@@ -189,7 +175,7 @@ public class CameraUtil {
             return wsUrl + "/ws/" + channel + "/" + cameraCode;
         }
         if (!flay) {
-            return webUrl + "/hdl/" + channel + "/" + cameraCode ;
+            return webUrl + "/hdl/" + channel + "/" + cameraCode;
         }
         return webUrl + "/hdl/" + channel + "/" + cameraCode;
     }
@@ -535,14 +521,14 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      */
     public static String getRecordUrl(String cameraCode, String channel, Date startTm, Date endTm) {
         String result = null;
-        String url = bakUrl + "/gb28181/api/invite?id=" + cameraCode + "&channel=" + channel + "&startTime=" + startTm.getTime()/1000 + "&endTime=" + endTm.getTime()/1000;
+        String url = bakUrl + "/gb28181/api/invite?id=" + cameraCode + "&channel=" + channel + "&startTime=" + startTm.getTime() / 1000 + "&endTime=" + endTm.getTime() / 1000;
         try {
             result = HttpClientUtil.get(url);
             if (result.equals("200")) {
-                String path = apiSummary(cameraCode + "/" + channel+"/"+startTm.getTime()/1000+"-"+endTm.getTime()/1000);
-                if (StringUtils.isNotEmpty(path)){
+                String path = apiSummary(cameraCode + "/" + channel + "/" + startTm.getTime() / 1000 + "-" + endTm.getTime() / 1000);
+                if (StringUtils.isNotEmpty(path)) {
                     return path;
-                }else {
+                } else {
                     return "当前相机暂无回放视频";
                 }
             }
@@ -1002,51 +988,73 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
      * 相机状态修改
      */
     public void cameraBlockUp() {
-        long time=60000L;
+        long baseTime = 60000L;
         //当前时间戳
-        long dades = System.currentTimeMillis();
+        long currentTimestamp = System.currentTimeMillis();
         //字典中设置的值
         List<SysDictData> heartIntervalTime = dictDataMapper.selectDictDataByType("heart_interval_time");
         List<SysDictData> triggerWarningFrequency = dictDataMapper.selectDictDataByType("trigger_warning_frequency");
-        if (!ObjectUtils.isEmpty(heartIntervalTime)){
-            time=time*Long.valueOf(heartIntervalTime.get(0).getDictValue());
+        // 计算时间间隔
+        long timeInterval = baseTime;
+        if (!ObjectUtils.isEmpty(heartIntervalTime)) {
+            timeInterval *= Long.valueOf(heartIntervalTime.get(0).getDictValue());
         }
-        if (!ObjectUtils.isEmpty(triggerWarningFrequency)){
-            time=time*Long.valueOf(triggerWarningFrequency.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);
+
+        // 更新设备状态
+        updateDeviceStatus(loggedCameraCodes, 1); // 启用设备
+        updateDeviceStatus(inactiveCameraCodes, 2); // 禁用设备
+
+        // 保存设备状态变更记录
+        saveDeviceResume(loggedCameraCodes, 1);
+        saveDeviceResume(inactiveCameraCodes, 2);
+    }
+
+    // 辅助方法:更新设备状态
+    private void updateDeviceStatus(Set<String> cameraCodes, int status) {
+        if (!cameraCodes.isEmpty()) {
+            LambdaUpdateWrapper<BaseDeviceDynamicManagement> updateWrapper = new LambdaUpdateWrapper<>();
+            updateWrapper.in(BaseDeviceDynamicManagement::getCameraCode, cameraCodes);
+            updateWrapper.set(BaseDeviceDynamicManagement::getIsDisable, status);
+            baseDeviceDynamicManagementService.update(updateWrapper);
         }
-        if (ObjectUtils.isEmpty(heartIntervalTime)||ObjectUtils.isEmpty(triggerWarningFrequency)){
-            time=time*5*3;
+    }
+
+
+    // 辅助方法:批量保存设备状态变更记录
+    private void saveDeviceResume(Set<String> cameraCodes, int status) {
+        if (cameraCodes.isEmpty()) {
+            return; // 如果集合为空,直接返回
         }
-        //当前时间5分钟之前的时间戳
-        long time2 = dades - (time);
-        LambdaQueryWrapper<MqLog> mqLog = new LambdaQueryWrapper<>();
-        mqLog.ge(MqLog::getCreateTime, new Date(time2));
-        mqLog.le(MqLog::getCreateTime, new Date(dades));
-        List<MqLog> list = mqLogService.list(mqLog);
-        List<String> log = list.stream().map(MqLog::getCameraCode).collect(Collectors.toList());
-        List<BaseDeviceDynamicManagement> dynamicManagements = baseDeviceDynamicManagementService.list();
-        List<String> base = dynamicManagements.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toList());
-        if (!ObjectUtils.isEmpty(log)) {
-            //找出相机表中不包含日志表相机的数据
-            List<BaseDeviceDynamicManagement> ones = dynamicManagements.stream().filter(o -> !log.contains(o.getCameraCode())).collect(Collectors.toList());
-            List<String> collect = ones.stream().map(BaseDeviceDynamicManagement::getCameraCode).collect(Collectors.toList());
-            //找出相机表中包含日志表相机的数据
-            base.retainAll(log);
-            LambdaUpdateWrapper<BaseDeviceDynamicManagement> queryWrapper = new LambdaUpdateWrapper<>();
-            queryWrapper.in(BaseDeviceDynamicManagement::getCameraCode, base);
-            queryWrapper.set(BaseDeviceDynamicManagement::getIsDisable, 1);
-            baseDeviceDynamicManagementService.saveOrUpdate(null, queryWrapper);
-
-            LambdaUpdateWrapper<BaseDeviceDynamicManagement> wrapper = new LambdaUpdateWrapper<>();
-            wrapper.in(BaseDeviceDynamicManagement::getCameraCode, collect);
-            wrapper.set(BaseDeviceDynamicManagement::getIsDisable, 2);
-            baseDeviceDynamicManagementService.saveOrUpdate(null, wrapper);
-        }else {
-            LambdaUpdateWrapper<BaseDeviceDynamicManagement> wrapper = new LambdaUpdateWrapper<>();
-            wrapper.in(BaseDeviceDynamicManagement::getCameraCode, base);
-            wrapper.set(BaseDeviceDynamicManagement::getIsDisable, 2);
-            baseDeviceDynamicManagementService.saveOrUpdate(null, wrapper);
+
+        List<BaseDeviceResume> resumes = new ArrayList<>();
+        for (String cameraCode : cameraCodes) {
+            BaseDeviceResume resume = new BaseDeviceResume();
+            resume.setCameraCode(cameraCode);
+            resume.setIsDisable(status);
+            resumes.add(resume);
         }
+
+        // 批量保存
+        baseDeviceResumeService.saveBatch(resumes);
     }
 
     /**
@@ -1416,7 +1424,7 @@ ffmpeg -i "concat:1.ts|2.ts" -c copy output.mp4
         return LocalDate.parse(fullDateStr, DateTimeFormatter.ofPattern("MM dd yyyy"));
     }
 
-    public  void getDuration(String file) {
+    public void getDuration(String file) {
 //        String filePath = "/opt/1.m4a";
 //        try (FFmpegFrameGrabber grabber = new FFmpegFrameGrabber(filePath)) {
 //            grabber.start();