From 785ee71b316f9c55151bd4b2a9ff855e06ddb162 Mon Sep 17 00:00:00 2001 From: liriming <1343021927@qq.com> Date: 星期三, 16 四月 2025 16:15:47 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java | 77 +++++++++++++++++++++---- ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java | 53 +++++++++++------ 2 files changed, 97 insertions(+), 33 deletions(-) diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java index 6c95486..91b9ada 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/api/controller/admin/PowerController.java @@ -1,5 +1,6 @@ package com.iailab.module.ansteel.api.controller.admin; +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.object.ConvertUtils; @@ -7,6 +8,8 @@ import com.iailab.module.ansteel.power.entity.*; import com.iailab.module.ansteel.power.service.*; import com.iailab.module.data.api.point.DataPointApi; +import com.iailab.module.model.api.mcs.McsApi; +import com.iailab.module.model.api.mcs.dto.PredictLastValueReqVO; import io.swagger.v3.oas.annotations.Operation; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; @@ -50,6 +53,9 @@ @Resource private DataPointApi dataPointApi; + @Resource + private McsApi mcsApi; + @GetMapping("/net-factor/list") @Operation(summary = "功率因数-电网拓扑") public CommonResult<List<PowerNetFactorDTO>> getPowerNetFactorList(@RequestParam Map<String, Object> params) { @@ -58,25 +64,68 @@ if (CollectionUtils.isEmpty(result)) { return success(result); } + Calendar calendar = Calendar.getInstance(); + calendar.set(Calendar.MILLISECOND, 0); + calendar.set(Calendar.SECOND, 0); + calendar.set(Calendar.MINUTE, 0); + calendar.set(Calendar.HOUR_OF_DAY, 0); + for (PowerNetFactorDTO dto : result) { - List<String> points = new ArrayList<>(); - if (StringUtils.isNotBlank(dto.getCurP())) { - points.add(dto.getCurP()); - } - if (StringUtils.isNotBlank(dto.getCurQ())) { - points.add(dto.getCurQ()); - } - if (!CollectionUtils.isEmpty(points)) { - Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); - if (pointsRealValue.get(dto.getCurP()) != null) { - dto.setCurP(pointsRealValue.get(dto.getCurP()).toString()); + try { + List<String> points = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getCurP())) { + points.add(dto.getCurP()); } - if (pointsRealValue.get(dto.getCurQ()) != null) { - dto.setCurQ(pointsRealValue.get(dto.getCurQ()).toString()); + if (StringUtils.isNotBlank(dto.getCurQ())) { + points.add(dto.getCurQ()); } + if (!CollectionUtils.isEmpty(points)) { + Map<String, Object> pointsRealValue = dataPointApi.queryPointsRealValue(points); + if (pointsRealValue.get(dto.getCurP()) != null) { + dto.setCurP(pointsRealValue.get(dto.getCurP()).toString()); + } + if (pointsRealValue.get(dto.getCurQ()) != null) { + dto.setCurQ(pointsRealValue.get(dto.getCurQ()).toString()); + } + if (pointsRealValue.get(dto.getCurCos()) != null) { + dto.setCurCos(pointsRealValue.get(dto.getCurCos()).toString()); + } + } + } catch (Exception ex) { + log.info(dto.getNodeName() + "获取当前值异常" + ex.getMessage()); + } + + try { + PredictLastValueReqVO reqVO = new PredictLastValueReqVO(); + reqVO.setPredictTime(calendar.getTime()); + List<String[]> itemNos = new ArrayList<>(); + if (StringUtils.isNotBlank(dto.getPreP())) { + itemNos.add(dto.getPreP().split(",")); + } + if (StringUtils.isNotBlank(dto.getPreQ())) { + itemNos.add(dto.getPreQ().split(",")); + } + if (StringUtils.isNotBlank(dto.getPreCos())) { + itemNos.add(dto.getPreCos().split(",")); + } + if (!CollectionUtils.isEmpty(itemNos)) { + reqVO.setItemNos(itemNos); + log.info("reqVO=" + JSONObject.toJSONString(reqVO)); + Map<String, BigDecimal> preValues = mcsApi.getPredictValueByTime(reqVO); + if (StringUtils.isNotBlank(dto.getPreP()) && preValues.get(dto.getPreP()) != null) { + dto.setPreP(preValues.get(dto.getPreP()).toString()); + } + if (StringUtils.isNotBlank(dto.getPreQ()) && preValues.get(dto.getPreQ()) != null) { + dto.setPreQ(preValues.get(dto.getPreQ()).toString()); + } + if (StringUtils.isNotBlank(dto.getPreCos()) && preValues.get(dto.getPreCos()) != null) { + dto.setPreCos(preValues.get(dto.getPreCos()).toString()); + } + } + } catch (Exception ex) { + log.info(dto.getNodeName() + "获取预测值异常," + ex.getMessage()); } } - return success(result); } diff --git a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java index 1f02179..9b5ba52 100644 --- a/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java +++ b/ansteel-biz/src/main/java/com/iailab/module/ansteel/job/task/RunOffPowerOptimTask.java @@ -1,17 +1,17 @@ package com.iailab.module.ansteel.job.task; +import com.iailab.module.model.api.mcs.McsApi; +import com.iailab.module.model.api.mcs.dto.ScheduleSuggestRespDTO; import com.iailab.module.model.api.mdk.MdkApi; -import com.iailab.module.model.api.mdk.dto.MdkPredictReqDTO; +import com.iailab.module.model.api.mdk.dto.MdkScheduleReqDTO; +import com.iailab.module.model.api.mdk.dto.MdkScheduleRespDTO; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.List; +import java.util.*; /** * 无功优化模型 @@ -28,29 +28,44 @@ @Autowired private MdkApi mdkApi; + @Autowired + private McsApi mcsApi; + + @Override public void run(String params) { logger.info("runPredictModuleTask定时任务正在执行,参数为:{}", params); try { Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - Date predictTime = calendar.getTime(); - if (StringUtils.isEmpty(params)) { - logger.info("参数为空"); - return; + calendar.set(Calendar.SECOND,0); + calendar.set(Calendar.MILLISECOND,0); + MdkScheduleReqDTO dto = new MdkScheduleReqDTO(); + dto.setScheduleTime(calendar.getTime()); + dto.setScheduleCode(params); + MdkScheduleRespDTO mdkScheduleRespDTO = mdkApi.doSchedule(dto); + logger.info(params + "调度方案执行完成," + mdkScheduleRespDTO); + Map<String, Object> result = mdkScheduleRespDTO.getResult(); + for(Map.Entry<String, Object> entry : result.entrySet()) { + String key = entry.getKey(); + this.saveScheduleSuggest("无功优化", entry.getValue(), "WGYH", calendar.getTime()); } - List<String> moduleTypeList = Arrays.asList(params.split(",")); - moduleTypeList.forEach(type -> { - MdkPredictReqDTO dto = new MdkPredictReqDTO(); - dto.setPredictTime(predictTime); - dto.setModuleType(type); - mdkApi.predictModule(dto); - logger.info(type + "模块预测完成。"); - }); } catch (Exception ex) { logger.error("runPredictModuleTask运行异常",ex); } logger.info("runPredictModuleTask运行完成"); } + + private void saveScheduleSuggest(String title, Object content, String scheduleObj, Date scheduleTime) { + if (content == null || StringUtils.isBlank(content.toString()) || "0".equals(content.toString())) { + logger.info(title + "content为空"); + return; + } + ScheduleSuggestRespDTO suggest = new ScheduleSuggestRespDTO(); + suggest.setTitle(title); + suggest.setContent(content.toString()); + suggest.setScheduleObj(scheduleObj); + suggest.setScheduleTime(scheduleTime); + suggest.setSort(0); + mcsApi.createScheduleSuggest(suggest); + } } \ No newline at end of file -- Gitblit v1.9.3