鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
2025-04-11 b5072bc930b7604effe4ee7874949b065a198baa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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 com.iailab.module.model.enums.CommonConstant;
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;
 
    /**
     * 负荷移植-负荷移植建议与方案
     *
     * @param reqVO
     * @return
     */
    @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());
 
            if ("1".equals(reqVO.getType())) {
                // 高炉休风
                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);
            } else if ("2".equals(reqVO.getType())) {
                // 产线检修
 
 
            }
            log.info("调度方案开始执行," + JSONObject.toJSONString(dto));
            MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto);
            log.info("调度方案执行完成," + mdkScheduleRespDTO);
 
            String statusCode = mdkScheduleRespDTO.getStatusCode();
            if (!CommonConstant.MDK_STATUS_100.equals(statusCode)) {
                log.info("statusCode=" + statusCode);
                return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), "工序异常,无计算结果");
            }
 
            Map<String, Object> data = mdkScheduleRespDTO.getResult();
            if ("1".equals(reqVO.getType())) {
                // 高炉休风
                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")));
 
            } else if ("2".equals(reqVO.getType())) {
                // 产线检修
 
            }
 
        } catch (Exception ex) {
            ex.printStackTrace();
            return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage());
        }
        return CommonResult.success(result);
    }
}