فهرست منبع

执法记录仪告警

bihuisong 2 روز پیش
والد
کامیت
eeb2fe9524

+ 16 - 0
src/main/java/com/sooka/sponest/monitor/camera/domain/CentermonitorTRecorderAlarm.java

@@ -35,6 +35,12 @@ public class CentermonitorTRecorderAlarm extends BaseEntity {
     private String alarmName;
 
     /**
+     * 状态
+     */
+    @Excel(name = "状态")
+    private String status;
+
+    /**
      * 告警时间
      */
     @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -72,6 +78,15 @@ public class CentermonitorTRecorderAlarm extends BaseEntity {
         this.alarmName = alarmName;
     }
 
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
     public Date getAlarmTime() {
         return alarmTime;
     }
@@ -96,6 +111,7 @@ public class CentermonitorTRecorderAlarm extends BaseEntity {
                 .append("alarmName", getAlarmName())
                 .append("alarmTime", getAlarmTime())
                 .append("recordId", getRecordId())
+                .append("status", getStatus())
                 .toString();
     }
 }

+ 4 - 0
src/main/java/com/sooka/sponest/monitor/camera/mapper/CentermonitorTRecorderAlarmMapper.java

@@ -2,6 +2,9 @@ package com.sooka.sponest.monitor.camera.mapper;
 
 
 import com.sooka.sponest.monitor.camera.domain.CentermonitorTRecorderAlarm;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.Date;
 
 
 /**
@@ -14,4 +17,5 @@ public interface CentermonitorTRecorderAlarmMapper {
 
     void insertCentermonitorTRecorderAlarm(CentermonitorTRecorderAlarm centermonitorTRecorderAlarm);
 
+    Integer selectRecorderAlarm(@Param("cameraCode") String cameraCode,@Param("onlineTime") Date onlineTime, @Param("status") String status);
 }

+ 20 - 12
src/main/java/com/sooka/sponest/monitor/dahua/utils/DeviceMonitorManager.java

@@ -46,7 +46,7 @@ public class DeviceMonitorManager {
     private String userName;
     @Value("${sooka.dahua_interface_server.userPwd}")
     private String userPwd;
-//    private String loginIp = "10.53.0.35";
+    //    private String loginIp = "10.53.0.35";
 //    private String loginPort = "7901";
 //    private String userName = "system";
 //    private String userPwd = "Admin123";
@@ -120,7 +120,7 @@ public class DeviceMonitorManager {
         long offlineMinutes = (now.getTime() - onlineTime.getTime()) / (60 * 1000);
         if (offlineMinutes >= 5) {
 //            System.out.println("设备 " + deviceCode + " 已在线超过5分钟,触发报警!");
-            triggerAlarm(deviceCode, onlineTime, "设备开机,未执法告警", null);
+            triggerAlarm(deviceCode, onlineTime, "设备开机,未执法告警", null, "0");
             stopDeviceMonitoring(deviceCode);
         }
     }
@@ -128,17 +128,25 @@ public class DeviceMonitorManager {
     /**
      * 触发报警
      */
-    private void triggerAlarm(String deviceCode, Date onlineTime, String alarmName, String recordId) {
+    private void triggerAlarm(String deviceCode, Date onlineTime, String alarmName, String recordId, String status) {
         Map<String, Object> map = centermonitorTCamerachannelMapper.selectChannelCodeByDeviceCode(deviceCode);
-        CentermonitorTRecorderAlarm saveVo = new CentermonitorTRecorderAlarm();
-        saveVo.setCameraCode(map.get("channelCode").toString());
-        saveVo.setCameraName(map.get("channelName").toString());
-        saveVo.setAlarmName(alarmName);
-        saveVo.setAlarmTime(onlineTime);
-        saveVo.setRecordId(recordId);
-//        log.info("设备编码:" + deviceCode + "摄像头编码:" + map.get("channelCode").toString() + "时间:" + onlineTime + "执行报警操作.");
-        centermonitorTRecorderAlarmMapper.insertCentermonitorTRecorderAlarm(saveVo);
+
+        // 如果同一时间,同一状态,同一设备编码存在告警记录,则不再记录
+        Integer count = centermonitorTRecorderAlarmMapper.selectRecorderAlarm(map.get("channelCode").toString(), onlineTime, status);
+//        log.info("设备编码:{}摄像头编码:{}时间:{}状态:{}告警次数:{}", deviceCode, map.get("channelCode").toString(), onlineTime, status, count);
+        if (!(count > 0)) {
+            CentermonitorTRecorderAlarm saveVo = new CentermonitorTRecorderAlarm();
+            saveVo.setCameraCode(map.get("channelCode").toString());
+            saveVo.setCameraName(map.get("channelName").toString());
+            saveVo.setAlarmName(alarmName);
+            saveVo.setAlarmTime(onlineTime);
+            saveVo.setRecordId(recordId);
+            saveVo.setStatus(status);
+//            log.info("设备编码:{}摄像头编码:{}时间:{}执行报警操作.", deviceCode, map.get("channelCode").toString(), onlineTime);
+            centermonitorTRecorderAlarmMapper.insertCentermonitorTRecorderAlarm(saveVo);
 //        System.out.println("设备编码:" + deviceCode + "摄像头编码:" + map.get("channelCode").toString() + "执行报警操作.");
+        }
+//        log.info("此设备已经告警,则不再记录");
     }
 
 
@@ -184,7 +192,7 @@ public class DeviceMonitorManager {
 
         long elapsedMinutes = (System.currentTimeMillis() - startTime) / (60 * 1000);
         if (elapsedMinutes >= 10) {
-            triggerAlarm(deviceCode, new Date(), "设备执法完成未关机,告警", recordId);
+            triggerAlarm(deviceCode, new Date(), "设备执法完成未关机,告警", recordId, "1");
 //            System.out.println("设备 " + deviceCode + " 触发关机按钮,超过5分钟内状态未变化,触发报警");
             stopDeviceMonitoring(deviceCode);
         }

+ 8 - 2
src/main/resources/mapper/monitor/camera/CentermonitorTRecorderAlarmMapper.xml

@@ -11,8 +11,14 @@
     </resultMap>
 
     <insert id="insertCentermonitorTRecorderAlarm" parameterType="CentermonitorTRecorderAlarm">
-        INSERT INTO centermonitor_t_recorder_alarm (camera_code, camera_name, alarm_name, alarm_time, record_id)
-        VALUES (#{cameraCode}, #{cameraName}, #{alarmName}, #{alarmTime}, #{recordId})
+        INSERT INTO centermonitor_t_recorder_alarm (camera_code, camera_name, alarm_name, alarm_time, record_id, status)
+        VALUES (#{cameraCode}, #{cameraName}, #{alarmName}, #{alarmTime}, #{recordId}, #{status})
     </insert>
 
+    <select id="selectRecorderAlarm" resultType="java.lang.Integer">
+        SELECT count(*)
+        FROM centermonitor_t_recorder_alarm
+        WHERE camera_code = #{cameraCode} AND date(alarm_time) = date(#{onlineTime}) AND status = #{status}
+    </select>
+
 </mapper>