From a3bb1815c3eb6b0f0cfe9d9d2ba5ee48279e26ed Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期五, 28 三月 2025 11:30:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java |   66 +++++++++++++++++++++-----------
 1 files changed, 43 insertions(+), 23 deletions(-)

diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java
index 4f41447..c6c647b 100644
--- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java
+++ b/shasteel-biz/src/main/java/com/iailab/module/shasteel/mq/consumer/ModelPredictFinishConsumer.java
@@ -1,5 +1,6 @@
 package com.iailab.module.shasteel.mq.consumer;
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.iailab.framework.common.util.date.DateUtils;
 import com.iailab.module.model.api.mcs.McsApi;
@@ -19,6 +20,7 @@
 import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 
 /**
@@ -39,7 +41,9 @@
     @Resource
     private RabbitTemplate rabbitTemplate;
 
-    private static String lastRunAlarm = "";
+    private static Map<String, Long> lastRunTime = new ConcurrentHashMap<>();
+
+    public static Map<Long, List<String>> finishModuleMap = new ConcurrentHashMap<>();
 
     /**
      * 监听预测完成,产生预警消息
@@ -59,27 +63,39 @@
             }
             // 预测时间
             Date predictTime = DateUtils.parse(messageJson.get("predictTime").toString(), DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND);
-            // 预测模块/预测管网
+            // 预测管网
             String moduleType = messageJson.get("moduleType").toString();
-            if (moduleType.equals(CommonConstant.NET_BFG) || moduleType.equals(CommonConstant.NET_COG) || moduleType.equals(CommonConstant.NET_LDG1) || moduleType.equals(CommonConstant.NET_LDG2) || moduleType.equals(CommonConstant.NET_LDG3)) {
-                String runKey = "GasAlarm_" +  predictTime.getTime();
-                log.info("runKey:" + runKey);
-                log.info("lastRunAlarm:" + lastRunAlarm);
-                if (lastRunAlarm.equals(runKey)) {
+            if (!finishModuleMap.containsKey(predictTime.getTime())) {
+                List<String> mList = new ArrayList<>();
+                finishModuleMap.put(predictTime.getTime(), mList);
+            }
+            finishModuleMap.get(predictTime.getTime()).add(moduleType);
+            log.info("finishModuleMap:" + JSONObject.toJSONString(finishModuleMap));
+
+            if (moduleType.equals(CommonConstant.NET_BFG) || moduleType.equals(CommonConstant.NET_COG) ||
+                    moduleType.equals(CommonConstant.NET_LDG) ||
+                    moduleType.equals(CommonConstant.NET_LDG1) ||
+                    moduleType.equals(CommonConstant.NET_LDG2) ||
+                    moduleType.equals(CommonConstant.NET_LDG3)) {
+                log.info("moduleType:" + moduleType);
+                if (lastRunTime.containsKey(moduleType) && lastRunTime.get(moduleType) == predictTime.getTime()) {
+                    log.info("moduleType return");
                     return;
                 }
-                lastRunAlarm = runKey;
-
-                // 预警信息列表
-                List<AlarmMessageRespDTO> alarmList = new ArrayList<>();
-                // 根据管网查询相关预警配置
-                Map<String,Object> params = new HashMap<>();
-                params.put("alarmObj",moduleType);
+                lastRunTime.put(moduleType, predictTime.getTime());
+                log.info("lastRunTime=" + JSONObject.toJSONString(lastRunTime));
+                log.info("开始处理预警");
+                Map<String, Object> params = new HashMap<>();
+                params.put("alarmObj", moduleType);
                 List<AlarmConfigRespDTO> configList = mcsApi.listAlarmConfig(params);
                 if (CollectionUtils.isEmpty(configList)) {
                     log.info("AlarmConfigList is empty");
                     return;
                 }
+                log.info("configList=" + JSONArray.toJSONString(configList));
+
+                // 预警信息列表
+                List<AlarmMessageRespDTO> alarmList = new ArrayList<>();
                 List<String> outputIdList = configList.stream().map(item -> {
                     return item.getOutId();
                 }).collect(Collectors.toList());
@@ -94,11 +110,12 @@
                 }
                 outerLoop:
                 for (AlarmConfigRespDTO configItem : configList) {
-                    log.info("configItem: " + configItem);
+                    log.info("AlarmConfigItem: " + configItem);
                     List<Object[]> result = preData.get(configItem.getOutId());
                     if (CollectionUtils.isEmpty(result)) {
                         continue;
                     }
+                    log.info("AlarmPreData: " + JSONArray.toJSONString(result));
 
                     // 对比预测值是否超限
                     int toIndex = result.size();
@@ -109,6 +126,7 @@
                         if (dataValue.compareTo(configItem.getLowerLimit()) >= 0 && dataValue.compareTo(configItem.getUpperLimit()) <= 0) {
                             continue;
                         }
+                        log.info("AlarmOutValue: " + dataValue);
                         // 预警记录
                         AlarmMessageRespDTO alarmMessage = new AlarmMessageRespDTO();
                         alarmMessage.setConfigId(configItem.getId());
@@ -124,7 +142,7 @@
                         content.append(",");
                         content.append("即将");
                         if (dataValue.compareTo(configItem.getLowerLimit()) < 0) {
-                            content.append("低与下限");
+                            content.append("低于下限");
                             alarmMessage.setAlarmType(CommonConstant.EXCEEDING_LOWER_LIMIT);
 
                         } else if (dataValue.compareTo(configItem.getUpperLimit()) > 0) {
@@ -176,17 +194,19 @@
                     }
                 }
 
-                if (!CollectionUtils.isEmpty(alarmList)) {
-                    log.info("发送预警消息");
-                    Map<String, Object> msg = new HashMap<>(2);
-                    msg.put("predictTime", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
-                    msg.put("alarmList", alarmList);
-                    rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_Alarm, msg);
+                if (CollectionUtils.isEmpty(alarmList)) {
+                    log.info("alarmList is empty");
+                    return;
                 }
+                log.info("发送预警消息");
+                Map<String, Object> msg = new HashMap<>(2);
+                msg.put("predictTime", DateUtils.format(predictTime, DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND));
+                msg.put("alarmList", alarmList);
+                msg.put("moduleType", moduleType);
+                rabbitTemplate.convertAndSend(RoutingConstant.EXCHANGE, RoutingConstant.Iailab_Model_Alarm, msg);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
-
     }
 }
\ No newline at end of file

--
Gitblit v1.9.3