From 3a4a1b5bf83c9902e116e6d49e9c2fbfb9bf4bd1 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期一, 31 三月 2025 14:01:30 +0800 Subject: [PATCH] 异常工况下的负荷移植 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java | 63 --------------------- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java | 86 ++++++++++++++++++++++++++++ 2 files changed, 86 insertions(+), 63 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java index eb6529e..169a5b3 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java @@ -1,24 +1,11 @@ package com.iailab.module.ansteel.api.controller.admin; -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants; import com.iailab.framework.common.pojo.CommonResult; import com.iailab.module.ansteel.api.dto.PlanDataChartReqVO; import com.iailab.module.ansteel.api.dto.PowerRunStateDTO; import com.iailab.module.ansteel.api.dto.PreDataChartRespVO; import com.iailab.module.ansteel.api.service.DataApi; -import com.iailab.module.ansteel.api.vo.PowerTransferDetRespVO; -import com.iailab.module.ansteel.api.vo.PowerTransferReqVO; -import com.iailab.module.ansteel.common.utils.DecimalUtil; -import com.iailab.module.ansteel.api.vo.PowerTransferRespVO; -import com.iailab.module.api.mcs.AnSteelApi; -import com.iailab.module.api.mcs.dto.PowerRunStateDTO; -import com.iailab.module.api.mcs.dto.PreDataChartRespVO; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; -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 io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -40,9 +27,6 @@ @Autowired private DataApi dataApi; - @Autowired - private MdkApi mdkApi; - @GetMapping("/power-run-state/list") @Operation(summary = "发电厂机组运行情况") public CommonResult<List<PowerRunStateDTO>> getPowerRunState(@RequestParam Map<String, Object> params) { @@ -62,53 +46,6 @@ public CommonResult<Map<String, Object>> getPlanDataChart(@RequestBody PlanDataChartReqVO reqVO) { Map<String, Object> tMap = dataApi.getPlanDataChart(reqVO); return CommonResult.success(tMap); - } - - @PostMapping("/schedule/power-transfer") - @Operation(summary = "异常工况下的负荷移植") - public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) { - PowerTransferRespVO result = new PowerTransferRespVO(); - List<PowerTransferDetRespVO> adviceList = new ArrayList<>(); - try { - log.info("PowerTransferReqVO=" + JSONObject.toJSONString(reqVO)); - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.SECOND,0); - calendar.set(Calendar.MILLISECOND,0); - MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); - dto.setScheduleTime(calendar.getTime()); - dto.setScheduleCode("AnSteelpowertransfer"); - Map<String, String> dynamicSettings = new HashMap<>(); - Integer[] xiufengOrder = {reqVO.getBfg(), - reqVO.getStart(), - reqVO.getMins()}; - dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); - dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); - dto.setDynamicSettings(dynamicSettings); - MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); - log.info("调度方案执行完成," + mdkScheduleRespDTO); - - Map<String, Object> data = mdkScheduleRespDTO.getResult(); - result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power"))); - result.setBfgAdvice(DecimalUtil.toBigDecimal(data.get("BFGAdvice"))); - result.setDemandAdvice(DecimalUtil.toBigDecimal(data.get("DemandAdvice"))); - result.setJiaohuaAdviceTime(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 0).intValue()); - result.setJiaohuaAdviceAmount(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 1).intValue()); - - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("热轧工序", data.get("rezhaAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("白灰工序", data.get("baihuiAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("zhiyangAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice"))); - adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice"))); - - } catch (Exception ex) { - ex.printStackTrace(); - return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage()); - } - return CommonResult.success(result); } } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java new file mode 100644 index 0000000..1503e7a --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java @@ -0,0 +1,86 @@ +package com.iailab.module.ansteel.api.controller.admin; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants; +import com.iailab.framework.common.pojo.CommonResult; +import com.iailab.module.ansteel.api.vo.PowerTransferDetRespVO; +import com.iailab.module.ansteel.api.vo.PowerTransferReqVO; +import com.iailab.module.ansteel.api.vo.PowerTransferRespVO; +import com.iailab.module.ansteel.common.utils.DecimalUtil; +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 io.swagger.v3.oas.annotations.Operation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +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.RestController; + +import java.util.*; + +/** + * @author PanZhibao + * @Description + * @createTime 2025年03月31日 + */ +@Slf4j +@RestController +@RequestMapping("/ansteel/api/model") +public class ModelController { + + @Autowired + private MdkApi mdkApi; + + @PostMapping("/power-transfer") + @Operation(summary = "异常工况下的负荷移植") + public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) { + log.info("异常工况下的负荷移植"); + PowerTransferRespVO result = new PowerTransferRespVO(); + List<PowerTransferDetRespVO> adviceList = new ArrayList<>(); + try { + log.info("PowerTransferReqVO=" + JSONObject.toJSONString(reqVO)); + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); + dto.setScheduleTime(calendar.getTime()); + dto.setScheduleCode("AnSteelpowertransfer"); + Map<String, String> dynamicSettings = new HashMap<>(); + Integer[] xiufengOrder = {reqVO.getBfg(), + reqVO.getStart(), + reqVO.getMins()}; + dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); + dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); + dto.setDynamicSettings(dynamicSettings); + + log.info("调度方案开始执行," + JSONObject.toJSONString(dto)); + MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); + log.info("调度方案执行完成," + mdkScheduleRespDTO); + + Map<String, Object> data = mdkScheduleRespDTO.getResult(); + result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power"))); + result.setBfgAdvice(DecimalUtil.toBigDecimal(data.get("BFGAdvice"))); + result.setDemandAdvice(DecimalUtil.toBigDecimal(data.get("DemandAdvice"))); + result.setJiaohuaAdviceTime(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 0).intValue()); + result.setJiaohuaAdviceAmount(DecimalUtil.toBigDecimal(data.get("jiaohuaAdvice"), 1).intValue()); + + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("热轧工序", data.get("rezhaAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("白灰工序", data.get("baihuiAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("zhiyangAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice"))); + adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice"))); + + } catch (Exception ex) { + ex.printStackTrace(); + return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage()); + } + return CommonResult.success(result); + } +} \ No newline at end of file -- Gitblit v1.9.3