From 281e342bdc3e3f619ec5c7956f89fb3b44a421bf Mon Sep 17 00:00:00 2001
From: dongyukun <1208714201@qq.com>
Date: 星期五, 27 六月 2025 15:17:15 +0800
Subject: [PATCH] 修改功率因素和无功上网解析

---
 ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java |   71 +++++++++++++++++++++++++++++++----
 1 files changed, 62 insertions(+), 9 deletions(-)

diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java
index c5e8af4..fe9275e 100644
--- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java
+++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunPowerNetAlarmTask.java
@@ -1,13 +1,26 @@
 package com.iailab.module.ansteel.job.task;
 
+import cn.hutool.core.bean.BeanUtil;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.iailab.module.ansteel.common.constant.CommonConstant;
 import com.iailab.module.model.api.mcs.McsApi;
 import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO;
+import com.iailab.module.model.api.mdk.MdkApi;
+import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO;
+import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
 
+import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @author PanZhibao
@@ -23,26 +36,66 @@
     @Autowired
     private McsApi mcsApi;
 
+    @Autowired
+    private MdkApi mdkApi;
     @Override
     public void run(String params) {
+//        {'status_code': 100, 'result': {
+//        'code220': '100', 'code66': '100',
+//        '220kVPointReactivePowerInjectionIntoGrid': {'title': '220KV望铁关口无功上网', 'reason': '["大型发电机无功增加", "热轧甲线: 无功减少可能由工序检修引起"]'},
+//        '66kVPointReactivePowerInjectionIntoGrid': {'title': '66KV范家变无功上网', 'reason': '["范铁乙线无功上网:可能因工序突降导致无功减少", "范钢甲线无功上网:炼钢总降#2电容器投运, 炼钢总降#4电容器投运, 炼钢总降#6电容器投运, 炼钢总降#8电容器投运", "范氧甲线无功上网"]'}}}
         logger.info("RunPowerNetAlarmTask定时任务正在执行,参数为:{}", params);
         try {
             Calendar calendar = Calendar.getInstance();
             calendar.set(Calendar.SECOND, 0);
             calendar.set(Calendar.MILLISECOND, 0);
-
-            AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
-            alarmMessageRespDTO.setContent("焦化甲线: 无功减少可能由该工序下电容器投运引起;原料甲线: 可能由工序检修引起; 1#炼铁线: 无功减少可能由1#TRT发电机无功增加引起; 2#氧气线: 可能由工序检修引起");
-            alarmMessageRespDTO.setTitle("大型发电机无功增加");
-            alarmMessageRespDTO.setAlarmObj(ALARM_OBJ);
-            alarmMessageRespDTO.setAlarmTime(calendar.getTime());
-            alarmMessageRespDTO.setCreateTime(calendar.getTime());
-
-            mcsApi.createAlarmMessage(alarmMessageRespDTO);
+            MdkScheduleReqDTO dto = new MdkScheduleReqDTO();
+            dto.setScheduleTime(calendar.getTime());
+            dto.setScheduleCode(ALARM_OBJ);
+            MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto);
+            logger.info(params + "调度方案执行完成," + mdkScheduleRespDTO);
+            if(!CommonConstant.MDK_STATUS_100.equals(mdkScheduleRespDTO.getStatusCode())){
+                logger.info(params + "运行异常");
+                return;
+            }
+            JSONObject obj = new JSONObject(mdkScheduleRespDTO.getResult());
+            Map<String,Object> result = BeanUtil.beanToMap(obj);
+            if(CommonConstant.MDK_STATUS_100.equals(result.get("code220"))){
+                createAlarmMessage(result,"220kVPointReactivePowerInjectionIntoGrid",calendar);
+            }
+            if(CommonConstant.MDK_STATUS_100.equals(result.get("code66"))){
+                createAlarmMessage(result,"66kVPointReactivePowerInjectionIntoGrid",calendar);
+            }
         } catch (Exception ex) {
             logger.error("RunPowerNetAlarmTask运行异常");
             ex.printStackTrace();
         }
         logger.info("RunPowerNetAlarmTask运行完成");
     }
+    private void createAlarmMessage( Map<String,Object> result , String type,Calendar calendar){
+        Map<String,Object> map = BeanUtil.beanToMap(result.get(type));
+        if (CollectionUtils.isEmpty(map) || map.get("reason") == null) {
+            return;
+        }
+        try {
+            StringBuilder contentBuilder = new StringBuilder();
+            JSONArray jsonArr = JSON.parseArray(map.get("reason").toString());
+            for(int i = 0; i < jsonArr.size(); i++) {
+                Object element = jsonArr.get(i);
+                if (element != null) {
+                    contentBuilder.append(JSON.toJSONString(element).replace("\"","")).append(";");
+                }
+            }
+
+            AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
+            alarmMessageRespDTO.setContent(contentBuilder.toString());
+            alarmMessageRespDTO.setTitle(map.get("title").toString());
+            alarmMessageRespDTO.setAlarmObj("NetAlarm");
+            alarmMessageRespDTO.setAlarmTime(calendar.getTime());
+            alarmMessageRespDTO.setCreateTime(calendar.getTime());
+            mcsApi.createAlarmMessage(alarmMessageRespDTO);
+        } catch (Exception e) {
+            logger.error("创建报警消息失败", e);
+        }
+    }
 }
\ No newline at end of file

--
Gitblit v1.9.3