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/ModelController.java |   88 ++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 81 insertions(+), 7 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();

--
Gitblit v1.9.3