沙钢智慧能源系统后端代码
dongyukun
5 天以前 3da3dda8fe9ab520cac2675fb1e1e63a725d44ef
Merge remote-tracking branch 'origin/master'
已修改2个文件
已添加1个文件
148 ■■■■■ 文件已修改
shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleElectricityTask.java 124 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java
@@ -11,9 +11,9 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
@@ -47,7 +47,8 @@
                    "空压机预警",
                    "大新预警",
                    "法液空合同执行度",
                    "盈德合同执行度"
                    "盈德合同执行度",
                    "BFG应急预案"
            )
    );
@@ -59,15 +60,13 @@
                    "空压机跳机",
                    "大新浦项蒸汽压力",
                    "法液空运行优化指标",
                    "盈德运行优化指标"
                    "盈德运行优化指标",
                    "应急方案"
            )
    );
    @GetMapping("/alarm-suggest/page")
    @PostMapping("/alarm-suggest/page")
    @Operation(summary = "预警与建议信息")
    public CommonResult<PageResult<StAlarmAndSuggestRespVO>> queryAlarmAndSuggestPage(@RequestParam("pageNo") Integer pageNo, @RequestParam("pageSize") Integer pageSize) {
        StAlarmAndSuggestPageReqVO reqVO = new StAlarmAndSuggestPageReqVO();
        reqVO.setPageNo(pageNo);
        reqVO.setPageSize(pageSize);
    public CommonResult<PageResult<StAlarmAndSuggestRespVO>> queryAlarmAndSuggestPage(@RequestBody StAlarmAndSuggestPageReqVO reqVO) {
        reqVO.setTitle(titleList);
        reqVO.setContentKey(contentKeyList);
        PageResult<StAlarmAndSuggestRespVO> page = mcsApi.getAlarmAndSuggestPage(reqVO);
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleElectricityTask.java
对比新文件
@@ -0,0 +1,124 @@
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.math.BigDecimal;
import java.util.*;
/**
 * 电力负荷率预警信息
 *
 * @author Jay
 */
@Component("runScheduleElectricityTask")
public class RunScheduleElectricityTask implements ITask {
    private Logger logger = LoggerFactory.getLogger(getClass());
    @Autowired
    private McsApi mcsApi;
    @Autowired
    private MdkApi mdkApi;
    /**
     * 调度调整方向
     */
    private static Map<String, Integer> electricityAdjustFlag = new HashMap<>();
    /**
     * 调度建议时间
     */
    private static Map<String, Date> electricityLastAlarmTime = new HashMap<>();
    @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<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);
            Map<String, Object> result = mdkScheduleRespDTO.getResult();
            saveAlarmMessage("东区变1#主变预警", result.get("periods_dq_one"), "DQ1", scheduleTime, result.get("adviceValues_dq_one"), scheme.getWarningAdjustRate());
            saveAlarmMessage("东区变2#主变预警", result.get("periods_dq_two"), "DQ2", scheduleTime, result.get("adviceValues_dq_two"), scheme.getWarningAdjustRate());
            saveAlarmMessage("东区变3#主变预警", result.get("periods_dq_three"), "DQ3", scheduleTime, result.get("adviceValues_dq_three"), scheme.getWarningAdjustRate());
            saveAlarmMessage("海力变1#主变预警", result.get("periods_hl_one"), "HL1", scheduleTime, result.get("adviceValues_hl_one"), scheme.getWarningAdjustRate());
            saveAlarmMessage("海力变2#主变预警", result.get("periods_hl_two"), "HL2", scheduleTime, result.get("adviceValues_hl_two"), scheme.getWarningAdjustRate());
            saveAlarmMessage("海力变3#主变预警", result.get("periods_hl_three"), "HL3", scheduleTime, result.get("adviceValues_hl_three"), scheme.getWarningAdjustRate());
            saveAlarmMessage("冷轧变1#主变预警", result.get("periods_lz_one"), "LZ1", scheduleTime, result.get("adviceValues_lz_one"), scheme.getWarningAdjustRate());
            saveAlarmMessage("冷轧变2#主变预警", result.get("periods_lz_two"), "LZ2", scheduleTime, result.get("adviceValues_lz_two"), scheme.getWarningAdjustRate());
            saveAlarmMessage("冷轧变3#主变预警", result.get("periods_lz_three"), "LZ3", scheduleTime, result.get("adviceValues_lz_three"), scheme.getWarningAdjustRate());
            saveAlarmMessage("冷轧变4#主变预警", result.get("periods_lz_four"), "LZ4", scheduleTime, result.get("adviceValues_lz_four"), scheme.getWarningAdjustRate());
            saveAlarmMessage("乐杨变1#主变预警", result.get("periods_ly_one"), "LY1", scheduleTime, result.get("adviceValues_ly_one"), scheme.getWarningAdjustRate());
            saveAlarmMessage("乐杨变2#主变预警", result.get("periods_ly_two"), "LY2", scheduleTime, result.get("adviceValues_ly_two"), scheme.getWarningAdjustRate());
            saveAlarmMessage("乐杨变3#主变预警", result.get("periods_ly_three"), "LY3", scheduleTime, result.get("adviceValues_ly_three"), scheme.getWarningAdjustRate());
            saveAlarmMessage("乐杨变4#主变预警", result.get("periods_ly_four"), "LY4", scheduleTime, result.get("adviceValues_ly_four"), scheme.getWarningAdjustRate());
            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, Object adjustObj, int warningAdjustRate) {
        if (content == null) {
            logger.info(title + "预警信息为空,不产生预警");
            return;
        }
        String contentStr = content.toString();
        if (StringUtils.isBlank(contentStr)) {
            logger.info(title + "预警信息为空,不产生预警");
            return;
        }
        if ((adjustObj == null || StringUtils.isBlank(adjustObj.toString()) || "0".equals(adjustObj.toString()))) {
            logger.info(title + "调整值为空,不产生建议");
            return;
        }
        BigDecimal adjustValue = new BigDecimal(adjustObj.toString());
        if (electricityAdjustFlag.containsKey(scheduleObj) && electricityAdjustFlag.get(scheduleObj).equals(adjustValue.compareTo(BigDecimal.ZERO)) &&
                electricityLastAlarmTime.containsKey(scheduleObj) && (scheduleTime.getTime() - electricityLastAlarmTime.get(scheduleObj).getTime() <= Integer.valueOf(warningAdjustRate).longValue() * 60 * 1000)) {
            logger.info(title + "预警在有效期内");
            return;
        }
        electricityAdjustFlag.put(scheduleObj, adjustValue.compareTo(BigDecimal.ZERO));
        electricityLastAlarmTime.put(scheduleObj, scheduleTime);
        AlarmMessageRespDTO alarm = new AlarmMessageRespDTO();
        alarm.setTitle(title);
        alarm.setContent(contentStr);
        alarm.setAlarmObj(scheduleObj);
        alarm.setAlarmType("");
        alarm.setAlarmTime(scheduleTime);
        mcsApi.createAlarmMessage(alarm);
    }
}
shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java
@@ -110,14 +110,15 @@
            saveScheduleSuggest("转炉特钢煤气柜", result.get("adviceLDG12WT"), "LDGt", predictTime, result.get("adjustValueLDG12WT"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气预警", result.get("BFG_warning_advice"), "BFG_ALARM", predictTime, result.get("adjustValueBFG"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气放散预警", result.get("BFG_release_warning_advice"), "BFG_ALARM", predictTime, result.get("BEG_pressure_sign"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气预测放散预警", result.get("BFG_Predictive_release_warning_advice"), "BFG_ALARM", predictTime, result.get("BEG_pressure_sign"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气流量预警", result.get("BFG_flow_warning"), "BFG_ALARM", predictTime, result.get("BEG_pressure_sign"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气放散预警", result.get("BFG_release_warning_advice"), "BFG_ALARM", predictTime, result.get("BFG_pressure_sign"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气预测放散预警", result.get("BFG_Predictive_release_warning_advice"), "BFG_ALARM", predictTime, result.get("BFG_pressure_sign"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("高炉煤气流量预警", result.get("BFG_flow_warning"), "BFG_FLOW_WARNING_ALARM", predictTime, 1, scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("焦炉煤气预警", result.get("COG_warning_advice"), "COG_ALARM", predictTime, result.get("adjustValueCOG"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("焦炉煤气流量预警", result.get("COG_flow_warning"), "COG_ALARM", predictTime, result.get("adjustValueCOG"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("转炉5W+8W煤气柜预警", result.get("LDG_1_warning_advice"), "LDG1_ALARM", predictTime, result.get("adjustValueLDG13W"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("宏发12W煤气柜预警", result.get("LDG_2_warning_advice"), "LDG2_ALARM", predictTime, result.get("adjustValueLDG12W"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("转炉特钢12W煤气柜预警", result.get("LDG_3_warning_advice"), "LDGt_ALARM", predictTime, result.get("adjustValueLDG12WT"), scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            saveScheduleSuggest("BFG应急预案", result.get("BFG_Emergency_plan"), "BFG_EMERGENCY_PLAN", predictTime, 1, scheme.getAdjustRate(), scheme.getModelId(), scheme.getId());
            // BFG应急预案
            if(!Objects.equals(result.get("BFG_Emergency_plan").toString(), "")){