Browse Source

增加获取报警系统的方法

lixing 3 years ago
parent
commit
bb74c7215d

+ 25 - 12
AlarmDataStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmdata/utils/DmpResultUtil.java

@@ -3,6 +3,7 @@ package com.persagy.apm.energyalarmstarter.alarmdata.utils;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -64,18 +65,14 @@ public class DmpResultUtil {
         return newResult;
     }
 
-//    public static void main(String[] args) throws Exception {
-//        DmpResult<JSONObject> result = new DmpResult<>();
-//        result.setResult("result");
-//        result.setMessage("message");
-//        result.setCount(12);
-//        JSONObject data = new JSONObject();
-//        data.put("id", "12");
-//        result.setData(data);
-//        DmpResult<DmpUpsertVO> tDmpResult = singleConvert(result, DmpUpsertVO.class);
-//        System.out.println(tDmpResult);
-//    }
-
+    /**
+     * 拷贝基础信息
+     *
+     * @param result 数据中台结果
+     * @return 只要基础信息,不要返回的数据
+     * @author lixing
+     * @version V1.0 2021/11/18 8:47 下午
+     */
     private static <T> DmpResult<T> copyBasicInfo(DmpResult result) {
         DmpResult<T> tmp = new DmpResult<>();
         tmp.setResult(result.getResult());
@@ -84,4 +81,20 @@ public class DmpResultUtil {
         return tmp;
     }
 
+    /**
+     * 获取数据中台结果中的数据
+     *
+     * @param dmpResult 数据中台结果
+     * @return 结果中的数据,不要基础信息
+     * @author lixing
+     * @version V1.0 2021/11/18 8:48 下午
+     */
+    public static <T>  T getData(DmpResult<T> dmpResult) {
+        String result = dmpResult.getResult();
+        if(StringUtils.isBlank(result)||!result.equals(DmpResult.SUCCESS)){
+            return  null;
+        }
+        return dmpResult.getData();
+    }
+
 }

+ 1 - 1
AlarmEngineStarter/pom.xml

@@ -78,7 +78,7 @@
         <dependency>
             <groupId>com.persagy.apm</groupId>
             <artifactId>alarm-data-starter</artifactId>
-            <version>v1.0.0</version>
+            <version>v2.0.0-SNAPSHOT</version>
         </dependency>
 
         <!-- apm-common -->

+ 12 - 18
AlarmEngineStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmengine/jms/AlarmEngineMsgHandler.java

@@ -2,29 +2,14 @@ package com.persagy.apm.energyalarmstarter.alarmengine.jms;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.google.common.collect.Lists;
 import com.persagy.apm.energyalarmstarter.alarmengine.feign.AlarmCondition;
-import com.persagy.apm.energyalarmstarter.alarmengine.feign.ObjConditionRel;
-import com.persagy.apm.energyalarmstarter.alarmengine.feign.ProjectVO;
-import com.persagy.apm.energyalarmstarter.alarmengine.feign.service.AlarmServiceImpl;
 import com.persagy.apm.energyalarmstarter.alarmengine.jms.model.DmpMessage;
 import com.persagy.apm.energyalarmstarter.alarmengine.service.AlarmRecordMsgHandler;
-import com.persagy.apm.energyalarmstarter.alarmengine.util.StringUtil;
-import io.netty.channel.Channel;
 import io.netty.channel.ChannelHandler;
-import io.netty.channel.ChannelHandlerContext;
 import io.netty.channel.ChannelInboundHandlerAdapter;
-import io.netty.channel.group.ChannelGroup;
-import io.netty.channel.group.DefaultChannelGroup;
-import io.netty.util.concurrent.GlobalEventExecutor;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.CollectionUtils;
-
-import java.net.SocketAddress;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
 
 /**
  * @description: Netty报警息处理中心
@@ -39,6 +24,13 @@ public class AlarmEngineMsgHandler extends ChannelInboundHandlerAdapter {
     @Autowired
     private AlarmRecordMsgHandler alarmRecordMsgHandler;
 
+    @SneakyThrows
+    public String getAlarmCategory(DmpMessage dmpMessage) {
+        JSONObject data = dmpMessage.getExts();
+        String itemCode = data.getString("itemCode");
+        return alarmRecordMsgHandler.getAlarmCategory(alarmRecordMsgHandler.getAlarmUrlParam(data), itemCode);
+    }
+
     /**
      * @description: 创建报警记录,并发送报警记录id至边缘端
      * @param: nettyMessage
@@ -49,7 +41,8 @@ public class AlarmEngineMsgHandler extends ChannelInboundHandlerAdapter {
      * @since: 2020/11/30 3:33 下午
      * @version: V1.0
      */
-    public void createAlarmRecordAndSendRecordId(DmpMessage dmpMessage) throws Exception {
+    @SneakyThrows
+    public void createAlarmRecordAndSendRecordId(DmpMessage dmpMessage) {
         JSONObject data = dmpMessage.getExts();
         data.put("userId", "system");
         alarmRecordMsgHandler.createAlarm(data);
@@ -65,7 +58,8 @@ public class AlarmEngineMsgHandler extends ChannelInboundHandlerAdapter {
      * @since: 2020/11/30 4:13 下午
      * @version: V1.0
      */
-    public void updateAlarmRecord(DmpMessage dmpMessage) throws Exception {
+    @SneakyThrows
+    public void updateAlarmRecord(DmpMessage dmpMessage) {
         JSONObject data = dmpMessage.getExts();
         data.put("userId", "system");
         alarmRecordMsgHandler.updateAlarmRecord(data);

+ 5 - 1
AlarmEngineStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmengine/jms/JmsConfig.java

@@ -2,6 +2,7 @@ package com.persagy.apm.energyalarmstarter.alarmengine.jms;
 
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.energyalarmstarter.alarmengine.jms.model.DmpMessage;
+import com.persagy.apm.energyalarmstarter.alarmengine.service.AlarmRecordMsgHandler;
 import com.rabbitmq.client.Channel;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
@@ -130,8 +131,11 @@ public class JmsConfig {
 
     @RabbitHandler
     @RabbitListener(queues = {alarmRecordQueue})
-    public void setAlarmRecordMsg(DmpMessage msg, Channel channel, Message message) throws Exception {
+    public void dealAlarmRecordMsg(DmpMessage msg, Channel channel, Message message) throws Exception {
         try {
+            // 根据报警消息获取报警系统
+            String alarmCategory = msgHandler.getAlarmCategory(msg);
+
             log.debug("============================== Receive:" + msg);
             if (JmsAlarmRecordEnum.NEW_ALARM_RECORD.getType().equals(msg.getType())) {
                 msgHandler.createAlarmRecordAndSendRecordId(msg);

+ 23 - 1
AlarmEngineStarter/src/main/java/com/persagy/apm/energyalarmstarter/alarmengine/service/AlarmRecordMsgHandler.java

@@ -4,12 +4,18 @@ import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.AlarmUrlParam;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.alarmitem.QueryAlarmItemDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.model.dto.common.UrlParamDTO;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.DmpResult;
 import com.persagy.apm.energyalarmstarter.alarmdata.feign.client.AlarmClient;
+import com.persagy.apm.energyalarmstarter.alarmdata.model.vo.AlarmItem;
+import com.persagy.apm.energyalarmstarter.alarmdata.service.AlarmItemServiceImpl;
+import com.persagy.apm.energyalarmstarter.alarmdata.utils.DmpResultUtil;
 import com.persagy.apm.energyalarmstarter.alarmengine.jms.model.DmpMessage;
+import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
+import org.assertj.core.util.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.CollectionUtils;
 
@@ -28,6 +34,8 @@ import java.util.stream.Collectors;
 public abstract class AlarmRecordMsgHandler extends BaseService {
     @Autowired
     AlarmClient alarmClient;
+    @Autowired
+    AlarmItemServiceImpl alarmItemService;
 
     /**
      * @description: 查询报警定义
@@ -199,7 +207,21 @@ public abstract class AlarmRecordMsgHandler extends BaseService {
      * @author lixing
      * @version V1.0 2021/11/4 10:15 下午
      */
-    protected abstract String getAlarmCategory(AlarmUrlParam urlParam, String itemCode);
+    @SneakyThrows
+    public String getAlarmCategory(AlarmUrlParam urlParam, String itemCode) {
+        QueryAlarmItemDTO queryAlarmItemDTO = new QueryAlarmItemDTO();
+        queryAlarmItemDTO.setCode(Lists.newArrayList(itemCode));
+        queryAlarmItemDTO.setGroupCode(urlParam.getGroupCode());
+        queryAlarmItemDTO.setProjectId(urlParam.getProjectId());
+        queryAlarmItemDTO.setUserId(urlParam.getUserId());
+        DmpResult<List<AlarmItem>> queryResult = alarmItemService.query(queryAlarmItemDTO);
+        List<AlarmItem> data = DmpResultUtil.getData(queryResult);
+        if (CollectionUtils.isEmpty(data)) {
+            return null;
+        }
+
+        return data.get(0).getCategory();
+    }
 
     /**
      * 获取设备的设备类编码