package com.iailab.module.shasteel.job.task; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.AlarmMessageRespDTO; import com.iailab.module.model.api.mcs.dto.StScheduleSchemeDTO; 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 com.iailab.module.model.enums.ScheduleTriggerMethodEnum; 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.Calendar; import java.util.Date; import java.util.List; /** * 压缩空气产消比例 * 定时触发,30 0/1 * * * ? * * @author PanZhibao * @Description * @createTime 2025年01月06日 */ @Component("runScheduleAirRatioTask") public class RunScheduleAirRatioTask implements ITask { private Logger logger = LoggerFactory.getLogger(getClass()); @Autowired private McsApi mcsApi; @Autowired private MdkApi mdkApi; @Override public void run(String params) { logger.info("RunScheduleAirRatioTask,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.MILLISECOND, 0); calendar.set(Calendar.SECOND, 0); Date scheduleTime = calendar.getTime(); if (StringUtils.isEmpty(params)) { logger.info("参数为空"); return; } // 根据条件查找方案 List schemeList = mcsApi.listScheduleScheme(ScheduleTriggerMethodEnum.JOB.getCode(), params); if (CollectionUtils.isEmpty(schemeList)) { logger.info("方案为空"); return; } for (StScheduleSchemeDTO scheme : schemeList) { MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); dto.setScheduleTime(scheduleTime); dto.setScheduleCode(scheme.getCode()); MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); // 结果写入测点 mdkApi.scheduleModelOut(mdkScheduleRespDTO); if (mdkScheduleRespDTO.getResult().get("exceptMessage") != null && StringUtils.isNotEmpty(mdkScheduleRespDTO.getResult().get("exceptMessage").toString())) { this.saveAlarmMessage("压缩空气用户用量预警", mdkScheduleRespDTO.getResult().get("exceptMessage"), scheme.getScheduleObj(), scheduleTime); } } logger.info(params + "调度方案执行完成"); } catch (Exception ex) { logger.error("RunScheduleAirRatioTask运行异常"); ex.printStackTrace(); } logger.info("RunScheduleAirRatioTask运行完成"); } private void saveAlarmMessage(String title, Object content, String scheduleObj, Date scheduleTime) { if (content == null) { logger.info(title + "预警信息为空,不产生预警"); return; } String contentStr = content.toString(); if (StringUtils.isBlank(contentStr)) { logger.info(title + "预警信息为空,不产生预警"); return; } AlarmMessageRespDTO alarm = new AlarmMessageRespDTO(); alarm.setTitle(title); alarm.setContent(contentStr); alarm.setAlarmObj(scheduleObj); alarm.setAlarmType(""); alarm.setAlarmTime(scheduleTime); mcsApi.createAlarmMessage(alarm); } }