鞍钢鲅鱼圈能源管控系统后端代码
dengzedong
3 天以前 fab65dab174e035785c06357b4818c1588d4f4a9
ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunScheduleModuleTask.java
@@ -16,6 +16,8 @@
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
/**
@@ -30,6 +32,9 @@
    private String BfgCode = "AnSteelbfgstrategy"; //高炉实时调度
    private String suggestionKey = "suggestion"; //建议key
    private String warningKey = "earlywarning"; //预警key
    private String guiweiRate = "guiweiRate"; //柜位上升下降速率key
    private String gas = "gas"; //煤气富余量key
    private String flag = "flag"; //煤气富余量key
    private String cogLowerKey = "lower_limit_ad_cog_guiwei"; //COG下限key
    private String cogUpperKey = "upper_limit_ad_cog_guiwei"; //COG上限key
    private String bfgLowerKey = "lower_limit_ad_bfg_guiwei"; //BFG下限key
@@ -41,6 +46,17 @@
    private McsApi mcsApi;
    @Autowired
    private DataPointApi dataPointApi;
    /**
     * 煤气调度调整方向
     * 1:超上限;-1:超下限;0:正常
     */
    private static Map<String, BigDecimal> gasAdjustMode = new HashMap<>();
    /**
     * 煤气调度建议时间
     */
    private static Map<String, Date> gasLastSugTime = new HashMap<>();
    @Override
@@ -66,43 +82,43 @@
            //日平衡调度建议保存
            if (GasCode.equals(params)) {
                Object time8 =  mdkScheduleRespDTO.getResult().get("Time8");
                Object time8 = mdkScheduleRespDTO.getResult().get("Time8");
                Object time16 = mdkScheduleRespDTO.getResult().get("Time16");
                Object time24 =  mdkScheduleRespDTO.getResult().get("Time24");
                Object time24 = mdkScheduleRespDTO.getResult().get("Time24");
                if(time8!=null && StringUtils.isNotBlank(time8.toString())) {
                if (time8 != null && StringUtils.isNotBlank(time8.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("日平衡建议");
                    suggestDto.setContent(time8.toString());
                    suggestDto.setScheduleObj("GAS");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    suggestDto.setCreateTime(new Date());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("日平衡建议{" + time8 + "}保存成功");
                    } else {
                        logger.error("日平衡建议保存失败");
                    }
                }
                if(time16!=null && StringUtils.isNotBlank(time16.toString())) {
                if (time16 != null && StringUtils.isNotBlank(time16.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("日平衡建议");
                    suggestDto.setContent(time16.toString());
                    suggestDto.setScheduleObj("GAS");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    suggestDto.setCreateTime(new Date());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("日平衡建议{" + time16 + "}保存成功");
                    } else {
                        logger.error("日平衡建议保存失败");
                    }
                }
                if(time24!=null && StringUtils.isNotBlank(time24.toString())) {
                if (time24 != null && StringUtils.isNotBlank(time24.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("日平衡建议");
                    suggestDto.setContent(time24.toString());
                    suggestDto.setScheduleObj("GAS");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    suggestDto.setCreateTime(new Date());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("日平衡建议{" + time24 + "}保存成功");
                    } else {
@@ -112,20 +128,33 @@
            }
            //转炉实时调度
            if (LdgCode.equals(params)) {
                // 建议
                Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("转炉实时调度建议");
                    suggestDto.setContent(suggestion.toString());
                    suggestDto.setScheduleObj("LDG");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("转炉实时调度建议{" + suggestion + "}保存成功");
                    } else {
                        logger.error("转炉实时调度建议保存失败");
                // 调整速率
                String scheduleObjLDG = "LDG";
                BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString());
                if (adjustValue.compareTo(BigDecimal.ZERO) == 0) {
                    logger.info("转炉实时调度建议 flag为0");
                }else if (gasAdjustMode.containsKey(scheduleObjLDG) && gasAdjustMode.get(scheduleObjLDG).equals(adjustValue) &&
                        gasLastSugTime.containsKey(scheduleObjLDG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjLDG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) {
                    logger.info("转炉实时调度建议在有效期内");
                } else {
                    // 建议
                    Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("转炉实时调度建议");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjLDG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("转炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("转炉实时调度建议保存失败");
                        }
                    }
                    // 更新调整速率
                    gasAdjustMode.put(scheduleObjLDG, adjustValue);
                    gasLastSugTime.put(scheduleObjLDG, calendar.getTime());
                }
                // 预警
                Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey);
@@ -133,7 +162,7 @@
                    AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
                    alarmMessageRespDTO.setContent(earlywarning.toString());
                    alarmMessageRespDTO.setTitle("转炉实时调度预警");
                    alarmMessageRespDTO.setAlarmObj("LDG");
                    alarmMessageRespDTO.setAlarmObj(scheduleObjLDG);
                    alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime());
                    alarmMessageRespDTO.setCreateTime(calendar.getTime());
@@ -143,32 +172,76 @@
                        logger.error("转炉实时调度预警保存失败");
                    }
                }
            }
            //焦炉实时调度
            if (CogCode.equals(params)) {
                // 建议
                Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("焦炉实时调度建议");
                    suggestDto.setContent(suggestion.toString());
                    suggestDto.setScheduleObj("COG");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("焦炉实时调度建议{" + suggestion + "}保存成功");
                    } else {
                        logger.error("焦炉实时调度建议保存失败");
                // 调整速率
                String scheduleObjCOG = "COG";
                BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString());
                if (adjustValue.compareTo(BigDecimal.ZERO) == 0) {
                    logger.info("焦炉实时调度建议 flag为0");
                }else if (gasAdjustMode.containsKey(scheduleObjCOG) && gasAdjustMode.get(scheduleObjCOG).equals(adjustValue) &&
                        gasLastSugTime.containsKey(scheduleObjCOG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjCOG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) {
                    logger.info("焦炉实时调度建议在有效期内");
                }else {
                    // 建议
                    Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("焦炉实时调度建议");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjCOG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(1);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("焦炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("焦炉实时调度建议保存失败");
                        }
                    }
                    suggestion = mdkScheduleRespDTO.getResult().get(guiweiRate);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("焦炉煤气柜柜位");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjCOG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(2);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("焦炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("焦炉实时调度建议保存失败");
                        }
                    }
                    suggestion = mdkScheduleRespDTO.getResult().get(gas);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("焦炉煤气富余量");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjCOG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(3);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("焦炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("焦炉实时调度建议保存失败");
                        }
                    }
                    // 更新调整速率
                    gasAdjustMode.put(scheduleObjCOG, adjustValue);
                    gasLastSugTime.put(scheduleObjCOG, calendar.getTime());
                }
                // 预警
                Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey);
                if (earlywarning != null && StringUtils.isNotBlank(earlywarning.toString())) {
                    AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
                    alarmMessageRespDTO.setContent(earlywarning.toString());
                    alarmMessageRespDTO.setTitle("焦炉实时调度预警");
                    alarmMessageRespDTO.setAlarmObj("COG");
                    alarmMessageRespDTO.setAlarmObj(scheduleObjCOG);
                    alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime());
                    alarmMessageRespDTO.setCreateTime(calendar.getTime());
@@ -181,7 +254,7 @@
                // 下发上下限
                Object upper = mdkScheduleRespDTO.getResult().get(cogUpperKey);
                if (upper != null) {
                    BigDecimal value = new BigDecimal(upper.toString()).setScale(2,BigDecimal.ROUND_HALF_UP);
                    BigDecimal value = new BigDecimal(upper.toString()).setScale(2, BigDecimal.ROUND_HALF_UP);
                    ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO();
                    pointValueWriteDTO.setPointNo("F0000201831");
                    pointValueWriteDTO.setValue(value.doubleValue());
@@ -189,7 +262,7 @@
                }
                Object lower = mdkScheduleRespDTO.getResult().get(cogLowerKey);
                if (lower != null) {
                    BigDecimal value = new BigDecimal(lower.toString()).setScale(2,BigDecimal.ROUND_HALF_UP);
                    BigDecimal value = new BigDecimal(lower.toString()).setScale(2, BigDecimal.ROUND_HALF_UP);
                    ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO();
                    pointValueWriteDTO.setPointNo("F0000201832");
                    pointValueWriteDTO.setValue(value.doubleValue());
@@ -199,20 +272,64 @@
            }
            //高炉实时调度
            if (BfgCode.equals(params)) {
                // 建议
                Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                    ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                    suggestDto.setTitle("高炉实时调度建议");
                    suggestDto.setContent(suggestion.toString());
                    suggestDto.setScheduleObj("BFG");
                    suggestDto.setScheduleTime(dto.getScheduleTime());
                    suggestDto.setCreateTime(calendar.getTime());
                    if (mcsApi.createScheduleSuggest(suggestDto)) {
                        logger.info("高炉实时调度建议{" + suggestion + "}保存成功");
                    } else {
                        logger.error("高炉实时调度建议保存失败");
                // 调整速率
                String scheduleObjBFG = "BFG";
                BigDecimal adjustValue = new BigDecimal(mdkScheduleRespDTO.getResult().get(flag).toString());
                if (adjustValue.compareTo(BigDecimal.ZERO) == 0) {
                    logger.info("高炉实时调度建议 flag为0");
                }else if (gasAdjustMode.containsKey(scheduleObjBFG) && gasAdjustMode.get(scheduleObjBFG).equals(adjustValue) &&
                        gasLastSugTime.containsKey(scheduleObjBFG) && (calendar.getTime().getTime() - gasLastSugTime.get(scheduleObjBFG).getTime() <= mdkScheduleRespDTO.getAdjustRate().longValue() * 60 * 1000)) {
                    logger.info("高炉实时调度建议在有效期内");
                }else {
                    // 建议
                    Object suggestion = mdkScheduleRespDTO.getResult().get(suggestionKey);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("高炉实时调度建议");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjBFG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(1);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("高炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("高炉实时调度建议保存失败");
                        }
                    }
                    suggestion = mdkScheduleRespDTO.getResult().get(guiweiRate);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("高炉煤气柜柜位");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjBFG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(2);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("高炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("高炉实时调度建议保存失败");
                        }
                    }
                    suggestion = mdkScheduleRespDTO.getResult().get(gas);
                    if (suggestion != null && StringUtils.isNotBlank(suggestion.toString())) {
                        ScheduleSuggestRespDTO suggestDto = new ScheduleSuggestRespDTO();
                        suggestDto.setTitle("高炉煤气富余量");
                        suggestDto.setContent(suggestion.toString());
                        suggestDto.setScheduleObj(scheduleObjBFG);
                        suggestDto.setScheduleTime(dto.getScheduleTime());
                        suggestDto.setSort(3);
                        suggestDto.setCreateTime(new Date());
                        if (mcsApi.createScheduleSuggest(suggestDto)) {
                            logger.info("高炉实时调度建议{" + suggestion + "}保存成功");
                        } else {
                            logger.error("高炉实时调度建议保存失败");
                        }
                    }
                    // 更新调整速率
                    gasAdjustMode.put(scheduleObjBFG, adjustValue);
                    gasLastSugTime.put(scheduleObjBFG, calendar.getTime());
                }
                // 预警
                Object earlywarning = mdkScheduleRespDTO.getResult().get(warningKey);
@@ -220,7 +337,7 @@
                    AlarmMessageRespDTO alarmMessageRespDTO = new AlarmMessageRespDTO();
                    alarmMessageRespDTO.setContent(earlywarning.toString());
                    alarmMessageRespDTO.setTitle("高炉实时调度预警");
                    alarmMessageRespDTO.setAlarmObj("BFG");
                    alarmMessageRespDTO.setAlarmObj(scheduleObjBFG);
                    alarmMessageRespDTO.setAlarmTime(dto.getScheduleTime());
                    alarmMessageRespDTO.setCreateTime(calendar.getTime());
@@ -233,7 +350,7 @@
                // 下发上下限
                Object upper = mdkScheduleRespDTO.getResult().get(bfgUupperKey);
                if (upper != null) {
                    BigDecimal value = new BigDecimal(upper.toString()).setScale(2,BigDecimal.ROUND_HALF_UP);
                    BigDecimal value = new BigDecimal(upper.toString()).setScale(2, BigDecimal.ROUND_HALF_UP);
                    ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO();
                    pointValueWriteDTO.setPointNo("F0000201829");
                    pointValueWriteDTO.setValue(value.doubleValue());
@@ -241,7 +358,7 @@
                }
                Object lower = mdkScheduleRespDTO.getResult().get(bfgLowerKey);
                if (lower != null) {
                    BigDecimal value = new BigDecimal(lower.toString()).setScale(2,BigDecimal.ROUND_HALF_UP);
                    BigDecimal value = new BigDecimal(lower.toString()).setScale(2, BigDecimal.ROUND_HALF_UP);
                    ApiPointValueWriteDTO pointValueWriteDTO = new ApiPointValueWriteDTO();
                    pointValueWriteDTO.setPointNo("F0000201830");
                    pointValueWriteDTO.setValue(value.doubleValue());
@@ -250,8 +367,7 @@
            }
        } catch (Exception ex) {
            logger.error("runScheduleModuleTask运行异常");
            ex.printStackTrace();
            logger.error("runScheduleModuleTask运行异常", ex);
        }
        logger.info("runScheduleModuleTask运行完成");
    }