From 13ec40d641f489b0e30e198326737de2d6610ec8 Mon Sep 17 00:00:00 2001 From: 潘志宝 <979469083@qq.com> Date: 星期二, 24 六月 2025 15:13:10 +0800 Subject: [PATCH] 负荷移植建议与方案 修改 --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java | 3 - ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java | 88 ++++++++++++++++++++++++++++++++++++++++--- ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java | 3 + ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOnPowerOptimTask.java | 1 ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java | 3 + ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java | 6 +++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java | 7 +++ 7 files changed, 101 insertions(+), 10 deletions(-) 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 index 448b5aa..d47bdd4 100644 --- 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 @@ -11,6 +11,7 @@ import com.iailab.module.ansteel.common.enums.TransferTypeEnum; import com.iailab.module.ansteel.common.utils.DecimalUtil; import com.iailab.module.model.api.mcs.McsApi; +import com.iailab.module.model.api.mcs.dto.ChartParamDTO; import com.iailab.module.model.api.mcs.dto.PredictTnValueReqVO; import com.iailab.module.model.api.mdk.MdkApi; import com.iailab.module.model.api.mdk.dto.MdkPredictDataDTO; @@ -20,6 +21,7 @@ import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -27,6 +29,7 @@ import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -42,8 +45,11 @@ @Autowired private MdkApi mdkApi; + @Autowired private McsApi mcsApi; + + private String RPH_SCHEDULE_CODE = "AnSteelGasSchedule"; /** * 负荷移植-负荷移植建议与方案 @@ -55,7 +61,6 @@ @Operation(summary = "负荷移植-负荷移植建议与方案") public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) { log.info("异常工况下的负荷移植"); - reqVO.setLimit(new BigDecimal(170000)); if (reqVO.getTingjiZhong() == null) { reqVO.setTingjiZhong(0); } @@ -66,6 +71,7 @@ reqVO.setTingjiRezha(0); } + MdkScheduleReqDTO fhyzDto = new MdkScheduleReqDTO(); PowerTransferRespVO result = new PowerTransferRespVO(); List<PowerTransferDetRespVO> adviceList = new ArrayList<>(); try { @@ -73,24 +79,92 @@ Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.SECOND,0); calendar.set(Calendar.MILLISECOND,0); - MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); - dto.setScheduleTime(calendar.getTime()); + String nowH = DateUtils.format(calendar.getTime(), "hh:mm"); switch (TransferTypeEnum.getEumByCode(reqVO.getType())) { case XF: + // 0 建议编码 + List<ChartParamDTO> chartParamList = mcsApi.getChartParamList(com.iailab.module.ansteel.common.constant.CommonConstant.FHYZ_ADVICE_CODE); + Map<String, Integer> fhyzAdviceCodeMap = new HashMap<>(); + List<String> fhyzAdviceCodeList = new ArrayList<>(); + if (chartParamList != null) { + for (ChartParamDTO chartParamDTO : chartParamList) { + fhyzAdviceCodeMap.put(chartParamDTO.getParamCode(), Integer.parseInt(chartParamDTO.getParamValue())); + fhyzAdviceCodeList.add(chartParamDTO.getParamCode()); + } + } + + // 1 日平衡 + /*日平衡动态参数 + zhiling_params [休风高炉,休风时长] + jiaohua_params [是否减焦化BFG,下限] + load_change_state [热轧,厚板,中板,A系列烧结,B系列烧结] + GASrezhaAdvice + GAShoubanAdvice + GASzhongbanAdvice + GASAshaojieAdvice + GASBshaojieAdvice + */ + MdkScheduleReqDTO rphScheduleReqDTO = new MdkScheduleReqDTO(); + rphScheduleReqDTO.setScheduleTime(calendar.getTime()); + rphScheduleReqDTO.setScheduleCode(RPH_SCHEDULE_CODE); + Map<String, String> rphSettings = new HashMap<>(); + List<Integer> zhilingParams = new ArrayList<>(); + zhilingParams.add(reqVO.getBfg()); + zhilingParams.add(reqVO.getMins()); + rphSettings.put("zhiling_params", JSONArray.toJSONString(zhilingParams)); + List<Integer> jiaohuaParams = new ArrayList<>(); + jiaohuaParams.add(1); + jiaohuaParams.add(reqVO.getLimit().intValue()); + rphSettings.put("jiaohua_params", JSONArray.toJSONString(jiaohuaParams)); + List<Integer> loadChangeState = new ArrayList<>(); + String[] loadChangeArr = {"GASrezhaAdvice", "GAShoubanAdvice", "GASzhongbanAdvice", "GASAshaojieAdvice", "GASBshaojieAdvice"}; + for (int i = 0; i < loadChangeState.size(); i++) { + loadChangeState.add(reqVO.getAdviceCodeList().contains(loadChangeArr[i]) ? 1 : 0); + } + rphSettings.put("load_change_state", JSONArray.toJSONString(loadChangeState)); + rphScheduleReqDTO.setDynamicSettings(rphSettings); + log.info("负荷移植调用日平衡开始执行," + JSONObject.toJSONString(rphScheduleReqDTO)); + MdkScheduleRespDTO rphRespDTO = mdkApi.doSchedule(rphScheduleReqDTO); + log.info("负荷移植调用日平衡执行完成," + rphRespDTO); + String rphStatusCode = rphRespDTO.getStatusCode(); + if (!CommonConstant.MDK_STATUS_100.equals(rphStatusCode)) { + log.info("rphStatusCode=" + rphStatusCode); + return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), "负荷移植调用日平衡,无计算结果"); + } + String gasUseAllnNew = rphRespDTO.getResult().get("Gas_Use_All_new").toString(); + log.info("gasUseAllnNew=" + gasUseAllnNew); + + // 高炉休风 - dto.setScheduleCode("AnSteelpowertransfer"); + fhyzDto.setScheduleTime(calendar.getTime()); + fhyzDto.setScheduleCode("AnSteelpowertransfer"); Map<String, String> dynamicSettings = new HashMap<>(); Integer[] xiufengOrder = { reqVO.getBfg(), reqVO.getNow() == null ? Integer.parseInt(nowH) : reqVO.getNow(), reqVO.getStart(), reqVO.getMins()}; + // 煤气日平衡输出 + dynamicSettings.put("Gas_Use_All_new", gasUseAllnNew); + // 休风指令信息 dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder)); + // 焦化保生产所需高炉煤气 dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString()); + // 停机时间 Integer[] tingjiOrder = {reqVO.getTingjiZhong(), reqVO.getTingjiHou(), reqVO.getTingjiRezha()}; dynamicSettings.put("tingji_order", JSONArray.toJSONString(tingjiOrder)); - dto.setDynamicSettings(dynamicSettings); + // 选择建议编码, 不选默认[-1] + List<Integer> choiceParams = new ArrayList<>(); + if (CollectionUtils.isEmpty(reqVO.getAdviceCodeList())) { + choiceParams.add(-1); + } else { + for(String adviceCode : reqVO.getAdviceCodeList()) { + choiceParams.add(fhyzAdviceCodeMap.get(adviceCode)); + } + } + dynamicSettings.put("choice_params", JSONArray.toJSONString(choiceParams)); + fhyzDto.setDynamicSettings(dynamicSettings); break; case JX: // 产线检修 @@ -99,8 +173,8 @@ return CommonResult.error(GlobalErrorCodeConstants.NOT_FOUND, "Type参数错误"); } - log.info("调度方案开始执行," + JSONObject.toJSONString(dto)); - MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); + log.info("调度方案开始执行," + JSONObject.toJSONString(fhyzDto)); + MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(fhyzDto); log.info("调度方案执行完成," + mdkScheduleRespDTO); String statusCode = mdkScheduleRespDTO.getStatusCode(); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java index 1215dfa..5211007 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java @@ -1841,9 +1841,6 @@ calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MINUTE, 0); - if (!CollectionUtils.isEmpty(powerFactorReqVO.getContentList())) { - - } MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); dto.setScheduleTime(calendar.getTime()); dto.setScheduleCode("AnsteelOffPowerAC"); diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java index cd5c38d..d991ee9 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java @@ -16,6 +16,9 @@ public class PowerTransferDetRespVO implements Serializable { private static final long serialVersionUID = 1L; + @Schema(description = "建议编码") + private String adviceCode; + @Schema(description = "标题") private String title; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java index 08da801..0513755 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java @@ -5,6 +5,7 @@ import java.io.Serializable; import java.math.BigDecimal; +import java.util.List; /** * @author PanZhibao @@ -34,6 +35,9 @@ @Schema(description = "焦化消耗高炉煤气下限(大于0)") private BigDecimal limit; + @Schema(description = "是否减焦化BFG(0:否,1:是)") + private Integer isReduceCog; + @Schema(description = "中板停机时长") private Integer tingjiZhong; @@ -42,4 +46,7 @@ @Schema(description = "热轧停机时长") private Integer tingjiRezha; + + @Schema(description = "先择的建议编码列表") + private List<String> adviceCodeList; } \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java index c397f56..e7995ba 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java @@ -24,9 +24,15 @@ @Schema(description = "煤气送管网缺口") private BigDecimal bfgGap; + @Schema(description = "煤气缺口") + private BigDecimal gasGap; + @Schema(description = "需量缺口") private Object demand; + @Schema(description = "发电") + private String fadian; + @Schema(description = "焦化减高炉煤气-时间") private Integer cogGapTime; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java index 20cf818..662f1ab 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/constant/CommonConstant.java @@ -86,4 +86,7 @@ //电容器编码 String POWER_CODE = "POWER_CODE"; + + //负荷移植建议编码 + String FHYZ_ADVICE_CODE = "FHYZ_ADVICE_CODE"; } diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOnPowerOptimTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOnPowerOptimTask.java index 1391c11..b06e18b 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOnPowerOptimTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOnPowerOptimTask.java @@ -46,6 +46,7 @@ @Autowired private McsApi mcsApi; + // 望铁关口触发边界 private final static double LIM = -20d; private final static String POINT_NO = "C0000201107"; -- Gitblit v1.9.3