From c05d056f5b9c59db46fe1577136cd18f7cd94551 Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期一, 31 三月 2025 15:27:11 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java | 5 ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/DecimalUtil.java | 52 ++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java | 86 +++++++++++++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java | 7 + ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java | 30 ++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java | 38 +++++++ ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java | 30 ++++++ 7 files changed, 245 insertions(+), 3 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java index ab1b968..169a5b3 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/DataController.java @@ -7,11 +7,11 @@ import com.iailab.module.ansteel.api.service.DataApi; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; 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.*; -import java.util.List; -import java.util.Map; +import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -19,6 +19,7 @@ * @author: lirm * @date: 2025/03/17 **/ +@Slf4j @RestController @RequestMapping("/ansteel/api/mcs") public class DataController { 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 new file mode 100644 index 0000000..1503e7a --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/ModelController.java @@ -0,0 +1,86 @@ +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 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; + + @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()); + 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); + + log.info("调度方案开始执行," + JSONObject.toJSONString(dto)); + MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); + log.info("调度方案执行完成," + mdkScheduleRespDTO); + + 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()); + + 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"))); + + } catch (Exception ex) { + ex.printStackTrace(); + return CommonResult.error(GlobalErrorCodeConstants.UNKNOWN.getCode(), ex.getMessage()); + } + return CommonResult.success(result); + } +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java index 4362d09..a24c120 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java @@ -1,7 +1,9 @@ package com.iailab.module.ansteel.api.vo; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; +import java.io.Serializable; import java.util.Date; /** @@ -9,8 +11,11 @@ * @Description * @createTime 2024年09月01日 */ +@Schema(description="预测项查询") @Data -public class ItemVO { +public class ItemVO implements Serializable { + private static final long serialVersionUID = 1L; + private String id; private String itemNo; private String itemName; diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java new file mode 100644 index 0000000..cd5c38d --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java @@ -0,0 +1,30 @@ +package com.iailab.module.ansteel.api.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author PanZhibao + * @Description + * @createTime 2025年03月27日 + */ +@Schema(description="异常工况下的负荷移植") +@Data +public class PowerTransferDetRespVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "标题") + private String title; + + @Schema(description = "开始") + private Integer start; + + @Schema(description = "时长") + private Integer mins; + + @Schema(description = "负荷变化") + private BigDecimal amount; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java new file mode 100644 index 0000000..62b3546 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java @@ -0,0 +1,30 @@ +package com.iailab.module.ansteel.api.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + * @author PanZhibao + * @Description + * @createTime 2025年03月26日 + */ +@Schema(description="休风指令") +@Data +public class PowerTransferReqVO implements Serializable { + private static final long serialVersionUID = 1L; + + @Schema(description = "休风时间开始(901)") + private Integer start; + + @Schema(description = "休风时长") + private Integer mins; + + @Schema(description = "休风高炉(1/2)") + private Integer bfg; + + @Schema(description = "上限") + private BigDecimal limit; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java new file mode 100644 index 0000000..f59fa27 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java @@ -0,0 +1,38 @@ +package com.iailab.module.ansteel.api.vo; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.util.List; + +/** + * @author PanZhibao + * @Description + * @createTime 2025年03月27日 + */ +@Schema(description="异常工况下的负荷移植") +@Data +public class PowerTransferRespVO implements Serializable { + + private static final long serialVersionUID = 1L; + + @Schema(description = "负荷调整总量") + private BigDecimal bestTotalPower; + + @Schema(description = "煤气送管网缺口") + private BigDecimal bfgAdvice; + + @Schema(description = "需量缺口") + private BigDecimal demandAdvice; + + @Schema(description = "焦化减高炉煤气-时间") + private Integer jiaohuaAdviceTime; + + @Schema(description = "焦化减高炉煤气-数量") + private Integer jiaohuaAdviceAmount; + + @Schema(description = "焦化减高炉煤气-数量") + private List<PowerTransferDetRespVO> adviceList; +} \ No newline at end of file diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/DecimalUtil.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/DecimalUtil.java new file mode 100644 index 0000000..1d22f81 --- /dev/null +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/DecimalUtil.java @@ -0,0 +1,52 @@ +package com.iailab.module.ansteel.common.utils; + +import com.alibaba.fastjson.JSONArray; +import com.iailab.module.ansteel.api.vo.PowerTransferDetRespVO; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; + +/** + * @author PanZhibao + * @Description + * @createTime 2025年03月28日 + */ +public class DecimalUtil { + + public static BigDecimal toBigDecimal(Object o) { + if (o == null) { + return null; + } + if (StringUtils.isBlank(o.toString())) { + return null; + } + return new BigDecimal(o.toString()); + } + + public static BigDecimal toBigDecimal(Object o, int index) { + if (o == null) { + return null; + } + if (StringUtils.isBlank(o.toString())) { + return null; + } + JSONArray array = JSONArray.parseArray(o.toString()); + if (array.size() <= index) { + return null; + } + Object obj = array.get(index); + return DecimalUtil.toBigDecimal(obj); + } + + public static PowerTransferDetRespVO toPowerTransferDetRespVO(String title, Object o) { + PowerTransferDetRespVO respVO = new PowerTransferDetRespVO(); + if (o == null) { + return null; + } + respVO.setTitle(title); + respVO.setStart(toBigDecimal(o, 0).intValue()); + respVO.setMins(toBigDecimal(o, 1).intValue()); + respVO.setAmount(toBigDecimal(o, 2)); + return respVO; + } +} \ No newline at end of file -- Gitblit v1.9.3