鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
4 天以前 be0e4b0b366b810ec2a4379cfdbc9493e42ec8ba
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java
@@ -10,7 +10,10 @@
import com.iailab.module.ansteel.api.vo.PowerTransferRespVO;
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.PredictTnValueReqVO;
import com.iailab.module.model.api.mdk.MdkApi;
import com.iailab.module.model.api.mdk.dto.MdkPredictDataDTO;
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;
@@ -22,7 +25,10 @@
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.*;
import static com.iailab.framework.common.pojo.CommonResult.success;
/**
 * @author PanZhibao
@@ -36,6 +42,8 @@
    @Autowired
    private MdkApi mdkApi;
    @Autowired
    private McsApi mcsApi;
    /**
     * 负荷移植-负荷移植建议与方案
@@ -47,6 +55,17 @@
    @Operation(summary = "负荷移植-负荷移植建议与方案")
    public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) {
        log.info("异常工况下的负荷移植");
        reqVO.setLimit(new BigDecimal(170000));
        if (reqVO.getTingjiZhong() == null) {
            reqVO.setTingjiZhong(0);
        }
        if (reqVO.getTingjiHou()== null) {
            reqVO.setTingjiHou(0);
        }
        if (reqVO.getTingjiRezha()== null) {
            reqVO.setTingjiRezha(0);
        }
        PowerTransferRespVO result = new PowerTransferRespVO();
        List<PowerTransferDetRespVO> adviceList = new ArrayList<>();
        try {
@@ -64,11 +83,13 @@
                    Map<String, String> dynamicSettings = new HashMap<>();
                    Integer[] xiufengOrder = {
                            reqVO.getBfg(),
                            reqVO.getStart(),
                            reqVO.getNow() == null ? Integer.parseInt(nowH) : reqVO.getNow(),
                            reqVO.getStart(),
                            reqVO.getMins()};
                    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);
                    break;
                case JX:
@@ -82,15 +103,15 @@
            MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto);
            log.info("调度方案执行完成," + mdkScheduleRespDTO);
            /*String statusCode = mdkScheduleRespDTO.getStatusCode();
            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();*/
            String fakeData = "{\"houbanAdvice\":[1000.0,150.0,16.97],\"2#LFAdvice\":[1000.0,150.0,11.8],\"1#2#zhiyangAdvice\":[1000.0,150.0,3.0],\"shaojieAdvice\":[1000.0,150.0,8.25],\"CCPPAdvice\":[1000.0,150.0,47.3],\"demand\":[34.4,0.0,3.0,0.0,0.0],\"rezhaAdvice\":[1000.0,150.0,45.86],\"best_total_power\":129.27,\"bfg_gap\":377924.37,\"zhongbanAdvice\":[1000.0,150.0,4.12],\"3#zhiyangAdvice\":[1000.0,150.0,25.3],\"cog_gap\":[800.0,59113.58],\"baihuiAdvice\":[1000.0,150.0,1.0],\"1#LFAdvice\":[1000.0,150.0,15.98]}";
            Map<String, Object> data = JSONObject.parseObject(fakeData, Map.class);
            Map<String, Object> data = mdkScheduleRespDTO.getResult();
            // String fakeData = "{\"houbanAdvice\":[1000.0,150.0,16.97],\"2#LFAdvice\":[1000.0,150.0,11.8],\"1#2#zhiyangAdvice\":[1000.0,150.0,3.0],\"shaojieAdvice\":[1000.0,150.0,8.25],\"CCPPAdvice\":[1000.0,150.0,47.3],\"demand\":[34.4,0.0,3.0,0.0,0.0],\"rezhaAdvice\":[1000.0,150.0,45.86],\"best_total_power\":129.27,\"bfg_gap\":377924.37,\"zhongbanAdvice\":[1000.0,150.0,4.12],\"3#zhiyangAdvice\":[1000.0,150.0,25.3],\"cog_gap\":[800.0,59113.58],\"baihuiAdvice\":[1000.0,150.0,1.0],\"1#LFAdvice\":[1000.0,150.0,15.98]}";
            // Map<String, Object> data = JSONObject.parseObject(fakeData, Map.class);
            switch (TransferTypeEnum.getEumByCode(reqVO.getType())) {
                case XF:
                    // 高炉休风
@@ -99,9 +120,10 @@
                    result.setDemand(data.get("demand"));//需量缺口
                    result.setCogGapTime(data.get("cog_gap") == null ? 0 : DecimalUtil.toBigDecimal(data.get("cog_gap"), 0).intValue()); //焦化减高炉煤气-时间
                    result.setCogGapAmount(data.get("cog_gap") == null ? 0 : DecimalUtil.toBigDecimal(data.get("cog_gap"), 1).intValue());//焦化减高炉煤气-数量
                    result.setBfgShengyue(DecimalUtil.toBigDecimal(data.get("BFG_shengyu")));
                    if (data.get("zhongabnAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice")));
                    if (data.get("zhongbanAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongbanAdvice")));
                    }
                    if (data.get("houbanAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice")));
@@ -112,20 +134,29 @@
                    if (data.get("baihuiAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("白灰工序", data.get("baihuiAdvice")));
                    }
                    if (data.get("zhiyangAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("zhiyangAdvice")));
                    if (data.get("3#zhiyangAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("3#制氧机", data.get("3#zhiyangAdvice")));
                    }
                    if (data.get("1LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice")));
                    if (data.get("1#LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1#LFAdvice")));
                    }
                    if (data.get("2LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice")));
                    if (data.get("2#LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2#LFAdvice")));
                    }
                    if (data.get("shaojieAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice")));
                    }
                    if (data.get("shaojieAdvice") != null) {
                    if (data.get("CCPPAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice")));
                    }
                    if (data.get("135Advice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("135机组", data.get("135Advice")));
                    }
                    if (data.get("1#2#zhiyangAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#2#制氧机", data.get("1#2#zhiyangAdvice")));
                    }
                    if (data.get("2#lianganglianzhuAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#炼钢连铸", data.get("2#lianganglianzhuAdvice")));
                    }
                    result.setAdviceList(adviceList);
                    log.info("XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXF");
@@ -147,4 +178,12 @@
        log.info("result=" + JSONObject.toJSONString(result));
        return CommonResult.success(result);
    }
    @PostMapping("/predict-data/tn-value")
    @Operation(summary = "获取T+N预测数据")
    public CommonResult<List<MdkPredictDataDTO>> getPredictTnValue(@RequestBody PredictTnValueReqVO reqVO) {
        log.info("PredictTnValueReqVO:"+reqVO);
        List<MdkPredictDataDTO> list = mcsApi.getPredictTnValue(reqVO);
        return success(list);
    }
}