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 lirm * @Description 功率因数超限报警原因溯源 * @createTime 2025年06月26日 */ @Component("runPowerFactorAlarmTask") public class RunPowerFactorAlarmTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); private final static String ALARM_OBJ = "AnSteelPowerFactorAlarm"; private final static String substation = "substation"; @Autowired private McsApi mcsApi; @Autowired private MdkApi mdkApi; @Override public void run(String params) { logger.info("RunPowerFactorAlarmTask定时任务正在执行,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); 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 result = new JSONObject(mdkScheduleRespDTO.getResult()); List rowKeys = new ArrayList<>(); result.forEach((key, value) -> { if (StringUtils.isNotBlank(key) && key.contains(substation)) { rowKeys.add(key); } }); for (String key : rowKeys) { Map substationMap = BeanUtil.beanToMap(result.get(key)); if (CollectionUtils.isEmpty(substationMap)) { continue; } String content = ""; JSONArray jsonArr = JSON.parseArray(substationMap.get("reason").toString()); for(int i=0; i