沙钢智慧能源系统后端代码
潘志宝
2 天以前 6cce675bb26ab0ffbdc19fe7f48cb3fcbd9890e3
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
131
132
133
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;
 
/**
 * 压缩空气优化调度
 * 定时触发 30 0/2 * * * ?
 * 压力低于下限预警信息    pressureLWarning
 * 压力高于上限预警信息    pressureHWarning
 * 空压机启动调度建议    dispatchStart
 * 空压机关停调度建议    dispatchClose
 *
 * @author PanZhibao
 * @Description
 * @createTime 2025年01月07日
 */
@Component("runScheduleAirDispatchTask")
public class RunScheduleAirDispatchTask implements ITask {
    private Logger logger = LoggerFactory.getLogger(getClass());
 
    @Autowired
    private McsApi mcsApi;
 
    @Autowired
    private MdkApi mdkApi;
 
    @Override
    public void run(String params) {
        logger.info("RunScheduleAirDispatchTask,参数为:{}", 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;
            }
 
            // 保存预警信息
            if (mdkScheduleRespDTO.getResult().get("pressureLWarning") != null &&
                    StringUtils.isNotEmpty(mdkScheduleRespDTO.getResult().get("pressureLWarning").toString())) {
                String pressureLWarning = mdkScheduleRespDTO.getResult().get("pressureLWarning").toString();
                AlarmMessageRespDTO alarm = new AlarmMessageRespDTO();
                alarm.setTitle("压力低于下限预警");
                alarm.setContent(pressureLWarning);
                alarm.setAlarmObj(scheme.getScheduleObj());
                alarm.setAlarmType("低于下限");
                alarm.setAlarmTime(scheduleTime);
                mcsApi.createAlarmMessage(alarm);
            }
 
 
            if (mdkScheduleRespDTO.getResult().get("pressureHWarning") != null &&
                    StringUtils.isNotEmpty(mdkScheduleRespDTO.getResult().get("pressureHWarning").toString())) {
                String pressureHWarning = mdkScheduleRespDTO.getResult().get("pressureHWarning").toString();
                AlarmMessageRespDTO alarm = new AlarmMessageRespDTO();
                alarm.setTitle("压力高于上限预警");
                alarm.setContent(pressureHWarning);
                alarm.setAlarmObj(scheme.getScheduleObj());
                alarm.setAlarmType("高于上限");
                alarm.setAlarmTime(scheduleTime);
                mcsApi.createAlarmMessage(alarm);
            }
 
            // 保存调度建议
            if (mdkScheduleRespDTO.getResult().get("dispatchStart") != null &&
                    StringUtils.isNotEmpty(mdkScheduleRespDTO.getResult().get("dispatchStart").toString())) {
                String dispatchStart = mdkScheduleRespDTO.getResult().get("dispatchStart").toString();
                ScheduleSuggestRespDTO suggest = new ScheduleSuggestRespDTO();
                suggest.setTitle("空压机启动调度建议");
                suggest.setContent(dispatchStart);
                suggest.setScheduleObj(scheme.getScheduleObj());
                suggest.setScheduleTime(scheduleTime);
                suggest.setSort(0);
                mcsApi.createScheduleSuggest(suggest);
            }
 
            if (mdkScheduleRespDTO.getResult().get("dispatchClose") != null &&
                    StringUtils.isNotEmpty(mdkScheduleRespDTO.getResult().get("dispatchClose").toString())) {
                String dispatchClose = mdkScheduleRespDTO.getResult().get("dispatchClose").toString();
                ScheduleSuggestRespDTO suggest = new ScheduleSuggestRespDTO();
                suggest.setTitle("空压机关停调度建议");
                suggest.setContent(dispatchClose);
                suggest.setScheduleObj(scheme.getScheduleObj());
                suggest.setScheduleTime(scheduleTime);
                suggest.setSort(0);
                mcsApi.createScheduleSuggest(suggest);
            }
 
            logger.info(params + "调度方案执行完成");
        } catch (Exception ex) {
            logger.error("RunScheduleAirDispatchTask运行异常");
            ex.printStackTrace();
        }
        logger.info("RunScheduleAirDispatchTask运行完成");
    }
}