Просмотр исходного кода

数字日照上报告警信息,IS_UPLOAD_ALARM暂时写死false,不触发

lihao16 4 месяцев назад
Родитель
Сommit
1266d7c483

+ 60 - 0
elevator-data-collect/src/main/java/com/inspur/elevator_data_collect/domain/AlarmType.java

@@ -0,0 +1,60 @@
+package com.inspur.elevator_data_collect.domain;
+
+/**
+ * 报警类型
+ * @author lihao16
+ */
+public enum AlarmType {
+
+    ALARM_01("01","安全回路故障"),
+    ALARM_02("02","关门故障"),
+    ALARM_03("03","开门故障"),
+    ALARM_25("25","慢速"),
+    ALARM_26("26","抖动异常"),
+    ALARM_27("27","电梯震动"),
+    ALARM_28("28","重复开关门"),
+    ALARM_29("29","停梯"),
+    ALARM_30("30","电动车入梯"),
+    ALARM_31("31","电梯停电"),
+    ALARM_32("32","卡层"),
+    ALARM_33("33","超速"),
+    ALARM_34("34","加速度异常"),
+    ALARM_35("35","开门走梯"),
+    ALARM_36("36","冲顶"),
+    ALARM_37("37","蹲底"),
+    ALARM_38("38","电梯前后倾斜"),
+    ALARM_39("39","电梯左右倾斜"),
+    ALARM_40("40","烟雾报警"),
+    ALARM_48("58","关人"),
+    ALARM_55("55","手动报警")
+    ;
+
+    //告警编码
+    private String code;
+    //告警描述
+    private String desc;
+
+    AlarmType(String code, String desc) {
+        this.code = code;
+        this.desc = desc;
+    }
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getDesc() {
+        return desc;
+    }
+
+    public static String getDescriptionByCode(String code) {
+        for (AlarmType alarmType : values()) {
+            if (alarmType.code.equals(code)) {
+                return alarmType.desc;
+            }
+        }
+        // 或抛出异常
+        return "未知报警类型";
+    }
+
+}

+ 22 - 0
elevator-data-collect/src/main/java/com/inspur/elevator_data_collect/domain/AlarmUploadInfo.java

@@ -0,0 +1,22 @@
+package com.inspur.elevator_data_collect.domain;
+
+import lombok.Data;
+import lombok.ToString;
+
+/**
+ * 数字日照 报警信息上报
+ * @author lihao16
+ */
+@Data
+@ToString
+public class AlarmUploadInfo {
+
+    private String alarmCode;
+
+    private String alarmTime;
+
+    private String alarmDesc;
+
+    private String elevatorId;
+
+}

+ 45 - 5
elevator-data-collect/src/main/java/com/inspur/elevator_data_collect/service/WriteMysqlService.java

@@ -1,11 +1,19 @@
 package com.inspur.elevator_data_collect.service;
 
+import cn.hutool.core.util.RandomUtil;
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpUtil;
+import cn.hutool.json.JSONUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.inspur.elevator_data_collect.dao.DeviceAlarmInfoDao;
 import com.inspur.elevator_data_collect.dao.DeviceStartInfoDao;
+import com.inspur.elevator_data_collect.domain.AlarmType;
+import com.inspur.elevator_data_collect.domain.AlarmUploadInfo;
 import com.inspur.elevator_data_collect.domain.DeviceAlarmInfo;
 import com.inspur.elevator_data_collect.domain.DeviceStartInfo;
+import com.inspur.elevator_data_collect.utils.CachedThreadPoolUtil;
+import com.inspur.elevator_data_collect.utils.DateUtil;
 import com.inspur.elevator_data_collect.utils.UUIDUtil;
 import com.inspur.idm.api.IRescueService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -30,8 +38,19 @@ public class WriteMysqlService {
 
     @Autowired
     private DeviceStartInfoDao deviceStartInfoDao;
-    
-    private static final Boolean IS_UPLOAD_ALARM = true;
+
+    private static final Boolean IS_UPLOAD_ALARM = false;
+
+    /**
+     * 最大重试次数
+     */
+    private static final int MAX_RETRY_COUNT = 3;
+    /**
+     * 超时时间,单位毫秒
+     */
+    private static final int TIMEOUT = 10000;
+
+    private static final String ALARM_UPLOAD_URL = "https://rzzhsq.shuzirizhao.cn/api/gov/org/kaElevatorPush/alarm/push";
 
     @Reference
     private IRescueService rescueService;
@@ -75,9 +94,9 @@ public class WriteMysqlService {
                 deviceAlarmInfo.setAlarmCode(code);
 
                 deviceAlarmInfoDao.insert(deviceAlarmInfo);
-                // TODO 新增故障上报至数字日照平台
+                // 新增故障上报至数字日照平台 20241219
                 if (IS_UPLOAD_ALARM) {
-                    uploadAlarm(id, code);
+                    uploadAlarm(deviceAlarmInfo);
                 }
 
                 if ("48".equals(code)) {
@@ -88,7 +107,28 @@ public class WriteMysqlService {
 
     }
 
-    private void uploadAlarm(String id, String code) {
+    private void uploadAlarm(DeviceAlarmInfo deviceAlarmInfo) {
+        // 防止接口不通,阻碍正常业务,异步执行
+        CachedThreadPoolUtil.executeTask(() -> {
+            // 组装数据
+            AlarmUploadInfo uploadInfo = new AlarmUploadInfo();
+            uploadInfo.setElevatorId(deviceAlarmInfo.getDeviceId());
+            uploadInfo.setAlarmCode(deviceAlarmInfo.getAlarmCode());
+            uploadInfo.setAlarmDesc(AlarmType.getDescriptionByCode(deviceAlarmInfo.getAlarmCode()));
+            uploadInfo.setAlarmTime(DateUtil.convertDateToStr(deviceAlarmInfo.getAlarmTime(), "yyyy-MM-dd HH:mm:ss"));
+            for (int i = 0; i < MAX_RETRY_COUNT; i++) {
+                try {
+                    HttpRequest request = HttpUtil.createPost(ALARM_UPLOAD_URL)
+                            .timeout(TIMEOUT);
+                    String result = request.body(JSONUtil.toJsonStr(uploadInfo)).execute().body();
+                    System.out.println("上传报警信息结果:" + result);
+                    return;
+                } catch (Exception e) {
+                    // 处理异常,如打印日志
+                    System.err.println("请求失败,第" + (i + 1) + "次重试,错误信息:" + e.getMessage());
+                }
+            }
+        });
     }
 
     public void writeStart(String payload) {