From 3da3dda8fe9ab520cac2675fb1e1e63a725d44ef Mon Sep 17 00:00:00 2001 From: dongyukun <1208714201@qq.com> Date: 星期一, 23 六月 2025 17:01:00 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java | 7 +- shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java | 17 ++--- shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleElectricityTask.java | 124 +++++++++++++++++++++++++++++++++++++++++ 3 files changed, 136 insertions(+), 12 deletions(-) diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java index d4de6f7..0720cef 100644 --- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/api/controller/admin/DataController.java +++ b/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); diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleElectricityTask.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleElectricityTask.java new file mode 100644 index 0000000..af6a8c3 --- /dev/null +++ b/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); + } +} \ No newline at end of file diff --git a/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java b/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java index fd5928a..4a76ec3 100644 --- a/shasteel-biz/src/main/java/com/iailab/module/shasteel/job/task/RunScheduleGasTask.java +++ b/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(), "")){ -- Gitblit v1.9.3