鞍钢鲅鱼圈能源管控系统后端代码
潘志宝
3 天以前 77b06515edaa46cbbb0e55fe5f37db09aa8991fd
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java
@@ -4,13 +4,16 @@
import com.alibaba.fastjson.JSONObject;
import com.iailab.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.iailab.framework.common.pojo.CommonResult;
import com.iailab.framework.common.util.date.DateUtils;
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.enums.TransferTypeEnum;
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;
@@ -34,8 +37,14 @@
    @Autowired
    private MdkApi mdkApi;
    /**
     * 负荷移植-负荷移植建议与方案
     *
     * @param reqVO
     * @return
     */
    @PostMapping("/power-transfer")
    @Operation(summary = "异常工况下的负荷移植")
    @Operation(summary = "负荷移植-负荷移植建议与方案")
    public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) {
        log.info("异常工况下的负荷移植");
        PowerTransferRespVO result = new PowerTransferRespVO();
@@ -47,40 +56,93 @@
            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);
            String nowH = DateUtils.format(calendar.getTime(), "hh:mm");
            switch (TransferTypeEnum.getEumByCode(reqVO.getType())) {
                case XF:
                    // 高炉休风
                    dto.setScheduleCode("AnSteelpowertransfer");
                    Map<String, String> dynamicSettings = new HashMap<>();
                    Integer[] xiufengOrder = {
                            reqVO.getBfg(),
                            reqVO.getStart(),
                            reqVO.getNow() == null ? Integer.parseInt(nowH) : reqVO.getNow(),
                            reqVO.getMins()};
                    dynamicSettings.put("xiufeng_order", JSONArray.toJSONString(xiufengOrder));
                    dynamicSettings.put("jiaohua_BFG_down", reqVO.getLimit().toString());
                    dto.setDynamicSettings(dynamicSettings);
                    break;
                case JX:
                    // 产线检修
                    break;
                default:
                    return CommonResult.error(GlobalErrorCodeConstants.NOT_FOUND, "Type参数错误");
            }
            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();
            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());
            switch (TransferTypeEnum.getEumByCode(reqVO.getType())) {
                case XF:
                    // 高炉休风
                    result.setBestTotalPower(DecimalUtil.toBigDecimal(data.get("best_total_power")));//负荷调整总量
                    result.setBfgGap(DecimalUtil.toBigDecimal(data.get("bfg_gap")));//煤气送管网缺口
                    result.setDemand(DecimalUtil.toBigDecimal(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());//焦化减高炉煤气-数量
            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")));
                    if (data.get("zhongabnAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("中板工序", data.get("zhongabnAdvice")));
                    }
                    if (data.get("houbanAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("厚板工序", data.get("houbanAdvice")));
                    }
                    if (data.get("rezhaAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("热轧工序", data.get("rezhaAdvice")));
                    }
                    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("1LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("1#LF炉", data.get("1LFAdvice")));
                    }
                    if (data.get("2LFAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("2#LF炉", data.get("2LFAdvice")));
                    }
                    if (data.get("shaojieAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("B系列烧结", data.get("shaojieAdvice")));
                    }
                    if (data.get("shaojieAdvice") != null) {
                        adviceList.add(DecimalUtil.toPowerTransferDetRespVO("CCPP", data.get("CCPPAdvice")));
                    }
                    result.setAdviceList(adviceList);
                    log.info("XFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXFXF");
                    break;
               case JX:
                   // 产线检修
                   log.info("JXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJXJX");
                    break;
               default:
                    break;
            }
        } catch (Exception ex) {
            ex.printStackTrace();
            return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage());
        }
        log.info("result=" + JSONObject.toJSONString(result));
        return CommonResult.success(result);
    }
}