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);
|
}
|
}
|