沙钢智慧能源系统后端代码
liriming
2 天以前 b7245f9d1308595e1405d11ffb524d96a2c8a7a8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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.ScheduleSuggestRespDTO;
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.CommonConstant;
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;
 
/**
 * 蒸汽调度
 *
 * 参考点压力信号    pressure_flag
 * 锦丰调度建议    jinfengAdvice
 * 大新调度建议    daxinAdvice
 * 大新预警    daxinWarning
 * 锦丰预警    jinfengWarning
 * 转炉一预警    zhuanlu1Warning
 * 转炉二预警    zhuanlu2Warning
 *
 * @author PanZhibao
 * @Description
 * @createTime 2025年01月08日
 */
@Component("runScheduleSteamTask")
public class RunScheduleSteamTask implements ITask {
    private Logger logger = LoggerFactory.getLogger(getClass());
 
    @Autowired
    private McsApi mcsApi;
 
    @Autowired
    private MdkApi mdkApi;
 
    @Override
    public void run(String params) {
        logger.info("RunScheduleSteamTask,参数为:{}", 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<StScheduleSchemeDTO> schemeList = mcsApi.listScheduleScheme(ScheduleTriggerMethodEnum.JOB.getCode(), params);
            if (CollectionUtils.isEmpty(schemeList)) {
                logger.info("方案为空");
                return;
            }
            StScheduleSchemeDTO scheme = schemeList.get(0);
            MdkScheduleReqDTO dto = new MdkScheduleReqDTO();
            dto.setScheduleTime(scheduleTime);
            dto.setScheduleCode(scheme.getCode());
            MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto);
            if (!CommonConstant.MDK_STATUS_100.equals(mdkScheduleRespDTO.getStatusCode())) {
                logger.info("调度结果异常,STATUS=" + mdkScheduleRespDTO.getStatusCode());
                return;
            }
 
            Object jinfengAdvice = mdkScheduleRespDTO.getResult().get("jinfengAdvice");
            saveScheduleSuggest("锦丰调度建议", jinfengAdvice, scheme.getScheduleObj(), scheduleTime);
 
            Object daxinAdvice = mdkScheduleRespDTO.getResult().get("daxinAdvice");
            saveScheduleSuggest("大新调度建议", daxinAdvice, scheme.getScheduleObj(), scheduleTime);
 
            Object daxinWarning = mdkScheduleRespDTO.getResult().get("daxinWarning");
            saveAlarmMessage("大新预警", daxinWarning, scheme.getScheduleObj(), scheduleTime);
 
            Object jinfengWarning = mdkScheduleRespDTO.getResult().get("jinfengWarning");
            saveAlarmMessage("锦丰预警", jinfengWarning, scheme.getScheduleObj(), scheduleTime);
 
            Object zhuanlu1Warning = mdkScheduleRespDTO.getResult().get("zhuanlu1Warning");
            saveAlarmMessage("转炉一预警", zhuanlu1Warning, scheme.getScheduleObj(), scheduleTime);
 
            Object zhuanlu2Warning = mdkScheduleRespDTO.getResult().get("zhuanlu2Warning");
            saveAlarmMessage("转炉二预警", zhuanlu2Warning, scheme.getScheduleObj(), scheduleTime);
 
            logger.info(params + "调度方案执行完成");
        } catch (Exception ex) {
            logger.error("RunScheduleSteamTask运行异常");
            ex.printStackTrace();
        }
        logger.info("RunScheduleSteamTask运行完成");
    }
 
    private void saveScheduleSuggest(String title, Object content, String scheduleObj, Date scheduleTime) {
        if (content == null || StringUtils.isBlank(content.toString()) || "0".equals(content.toString())) {
            logger.info(title + "content为空");
            return;
        }
        ScheduleSuggestRespDTO suggest = new ScheduleSuggestRespDTO();
        suggest.setTitle(title);
        suggest.setContent(content.toString());
        suggest.setScheduleObj(scheduleObj);
        suggest.setScheduleTime(scheduleTime);
        suggest.setSort(0);
        mcsApi.createScheduleSuggest(suggest);
    }
 
    private void saveAlarmMessage(String title, Object content, String alarmObj, Date scheduleTime) {
        if (content == null || StringUtils.isBlank(content.toString()) || "0".equals(content.toString())) {
            logger.info(title + "content为空");
            return;
        }
        AlarmMessageRespDTO alarm = new AlarmMessageRespDTO();
        alarm.setTitle(title);
        alarm.setContent(content.toString());
        alarm.setAlarmObj(alarmObj);
        alarm.setAlarmType("");
        alarm.setAlarmTime(scheduleTime);
        mcsApi.createAlarmMessage(alarm);
    }
}