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,7 +64,14 @@ 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) { try { List<String> points = new ArrayList<>(); if (StringUtils.isNotBlank(dto.getCurP())) { points.add(dto.getCurP()); @@ -74,9 +87,45 @@ 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); } 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,6 +28,10 @@ @Autowired private MdkApi mdkApi; @Autowired private McsApi mcsApi; @Override public void run(String params) { logger.info("runPredictModuleTask定时任务正在执行,参数为:{}", params); @@ -35,22 +39,33 @@ 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; 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); } }