Forráskód Böngészése

feat:"消除报警使用MQTT"

soobin 1 hónapja
szülő
commit
1ea26b2a0e

+ 6 - 0
src/main/java/com/szwl/controller/TEquipmentController.java

@@ -897,6 +897,9 @@ public class TEquipmentController {
     @ApiOperation(value = "消除报警")
     @PostMapping("/eliminate")
     public ResponseModel<?> eliminate(@RequestBody TAlarmRecord param) {
+        UserDetailBO userDetailBO = Optional.ofNullable(tokenManager.getLoginUserDetails())
+                .orElseThrow(() -> new BizException(ResponseCodesEnum.L0001));
+        Long adminId = userDetailBO.getId();
         TAlarmRecord tAlarmRecord = tAlarmRecordService.getById(param.getId());
         TEquipment equipment = tEquipmentService.getById(tAlarmRecord.getEquipmentId());
         if (equipment == null) {
@@ -919,6 +922,9 @@ public class TEquipmentController {
             kindData.put("id", param.getId());
             kindData.put("content", tAlarmRecord.getAlarmContent());
             tEquipmentService.sentMessage(equipment.getClientId(), PushUtils.buildJson("eliminate", kindData.toString()).toString());
+            // MQTT
+            String message = PushUtils.buildJson(OperationType.ELIMINATE.getCode(), "1").toString();
+            tEquipmentService.sendRemoteMessage(equipment.getClientId(), OperationType.ELIMINATE, message, adminId);
         }
         return R.ok();
     }

+ 11 - 4
src/main/java/com/szwl/handle/response/AlarmRecordProcessor.java

@@ -5,9 +5,11 @@ import com.szwl.constant.OperationType;
 import com.szwl.model.dto.AlarmRecordVo;
 import com.szwl.model.entity.MessageLog;
 import com.szwl.service.TAlarmRecordService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+@Slf4j
 @Component
 public class AlarmRecordProcessor implements ResponseProcessor{
 
@@ -21,10 +23,15 @@ public class AlarmRecordProcessor implements ResponseProcessor{
             Integer direction = messageLog.getDirection();
             String clientId = messageLog.getClientId();
             String responseContent = messageLog.getResponseContent();
-            // 转换为对象
-            AlarmRecordVo alarmRecordVo = JSON.parseObject(responseContent, AlarmRecordVo.class);
-            // 上传报警
-            alarmRecordService.addAlarmRecord(alarmRecordVo);
+            try {
+                // 转换为对象
+                AlarmRecordVo alarmRecordVo = JSON.parseObject(responseContent, AlarmRecordVo.class);
+                // 上传报警
+                alarmRecordService.addAlarmRecord(alarmRecordVo);
+            } catch (Exception e) {
+                log.error("上传报警记录失败,clientId:{},responseContent:{}", clientId, responseContent);
+                e.printStackTrace();
+            }
         }
     }
 

+ 59 - 0
src/main/java/com/szwl/handle/response/EliminateProcessor.java

@@ -0,0 +1,59 @@
+package com.szwl.handle.response;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.szwl.constant.OperationType;
+import com.szwl.model.entity.MessageLog;
+import com.szwl.model.entity.TAlarmRecord;
+import com.szwl.model.entity.TEquipment;
+import com.szwl.service.TAlarmRecordService;
+import com.szwl.service.TEquipmentService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+@Slf4j
+@Component
+public class EliminateProcessor implements ResponseProcessor{
+
+    @Resource
+    private TEquipmentService tEquipmentService;
+
+    @Resource
+    private TAlarmRecordService tAlarmRecordService;
+
+
+    @Override
+    public void process(MessageLog messageLog) {
+        Integer statusCode = messageLog.getStatusCode();
+        if (statusCode == 200) {
+            Integer direction = messageLog.getDirection();
+            String clientId = messageLog.getClientId();
+            String responseContent = messageLog.getResponseContent();
+
+            LambdaQueryWrapper<TEquipment> query = Wrappers.lambdaQuery();
+            query.eq(TEquipment::getClientId, clientId);
+            TEquipment equipment = tEquipmentService.getOne(query);
+            if (equipment != null) {
+                // 消除过往的报警
+                LambdaUpdateWrapper<TAlarmRecord> wrapper = Wrappers.lambdaUpdate();
+                wrapper.eq(TAlarmRecord::getClientId, clientId);
+                wrapper.eq(TAlarmRecord::getIsEliminate, 0);
+                wrapper.le(TAlarmRecord::getCreateDate, new Date());
+                wrapper.set(TAlarmRecord::getIsEliminate, 1);
+                tAlarmRecordService.update(wrapper);
+                // 更改机器状态
+                equipment.setIsAlarm(false);
+                tEquipmentService.updateById(equipment);
+            }
+        }
+    }
+
+    @Override
+    public String getSupportedOperationType() {
+        return OperationType.ELIMINATE.getCode();
+    }
+}