ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/McsController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/ItemVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferDetRespVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferReqVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/vo/PowerTransferRespVO.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
ansteel-biz/src/main/java/com/iailab/module/ansteel/common/utils/DecimalUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/McsController.java
@@ -1,16 +1,26 @@ 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.common.utils.DecimalUtil; import com.iailab.module.ansteel.api.vo.PowerTransferRespVO; import com.iailab.module.api.mcs.AnSteelApi; import com.iailab.module.api.mcs.dto.PowerRunStateDTO; import com.iailab.module.api.mcs.dto.PreDataChartRespVO; import com.iailab.module.model.api.mcs.dto.PreDataSingleChartReqVO; 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.*; import java.util.List; import java.util.Map; import java.util.*; import static com.iailab.framework.common.pojo.CommonResult.success; @@ -18,12 +28,16 @@ * @author: lirm * @date: 2025/03/17 **/ @Slf4j @RestController @RequestMapping("/ansteel/api/mcs") public class McsController { @Autowired private AnSteelApi anSteelApi; @Autowired private MdkApi mdkApi; @GetMapping("/power-run-state/list") @Operation(summary = "发电厂机组运行情况") @@ -39,4 +53,51 @@ return CommonResult.success(respVO); } @PostMapping("/schedule/power-transfer") @Operation(summary = "异常工况下的负荷移植") public CommonResult<PowerTransferRespVO> scheduleEleLoad(@RequestBody PowerTransferReqVO reqVO) { 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); 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); } } 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; 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; } 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; } 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; } 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; } }