From af9c8a0bbafc62673b1b44e683479e09310451d8 Mon Sep 17 00:00:00 2001 From: Jay <csj123456> Date: 星期三, 22 一月 2025 17:12:18 +0800 Subject: [PATCH] 新增参数 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java | 111 ++++++++++++++++++++++++++++--------------------------- 1 files changed, 57 insertions(+), 54 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java index e8a8aa5..4f8e690 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/api/McsApiImpl.java @@ -12,9 +12,10 @@ import com.iailab.module.data.common.ApiDataQueryDTO; import com.iailab.module.model.api.mcs.McsApi; import com.iailab.module.model.api.mcs.dto.*; +import com.iailab.module.model.api.mdk.dto.StScheduleRecordVO; import com.iailab.module.model.common.enums.DataTypeEnum; -import com.iailab.module.model.enums.CommonConstant; import com.iailab.module.model.common.enums.PreLineTypeEnum; +import com.iailab.module.model.enums.CommonConstant; import com.iailab.module.model.influxdb.pojo.InfluxModelResultByOutPutIdsPOJO; import com.iailab.module.model.influxdb.service.InfluxDBService; import com.iailab.module.model.influxdb.vo.InfluxModelResultVO; @@ -33,6 +34,7 @@ import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mpk.service.ChartParamService; import com.iailab.module.model.mpk.service.ChartService; +import com.iailab.module.model.mpk.service.ElectricityPriceSegmentedService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -41,11 +43,8 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; -import java.text.DecimalFormat; import java.util.*; -import java.util.function.Function; import java.util.stream.Collectors; -import java.util.stream.Stream; /** * @author PanZhibao @@ -105,6 +104,9 @@ @Autowired private InfluxDBService influxDBService; + @Autowired + private ElectricityPriceSegmentedService electricityPriceSegmentedService; + private int HOUR_MINS = 60; @Override @@ -155,7 +157,13 @@ } Date predictTime = reqVO.getPredictTime(); if (predictTime == null) { - MmItemOutputEntity output = mmItemOutputService.getOutPutById(reqVO.getOutIds().get(0)); + MmItemOutputEntity output = null; + for (String outId : outIds) { + output = mmItemOutputService.getOutPutById(outId); + if (output != null) { + break; + } + } ItemVO predictItem = mmPredictItemService.getItemByIdFromCache(output.getItemid()); if (predictItem.getLastTime() != null) { predictTime = predictItem.getLastTime(); @@ -387,8 +395,7 @@ dataView.setPreMax(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).max().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); dataView.setPreMin(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).min().getAsDouble()).setScale(2, BigDecimal.ROUND_HALF_UP)); dataView.setPreLast(new BigDecimal(curList.get(curList.size() - 1))); - dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum()) - .divide(new BigDecimal(HOUR_MINS), 2, BigDecimal.ROUND_HALF_UP)); + dataView.setPreCumulant(new BigDecimal(curList.stream().mapToDouble(Double::doubleValue).sum())); } String alarmObj = chartParams.get(CommonConstant.ALARM_OBJ); @@ -664,28 +671,53 @@ } @Override - public Map<String,List<Object[]>> getElectricPredictData(String itemCode) { - ItemVO predictItem = mmPredictItemService.getItemByItemNo(itemCode); + public List<StScheduleRecordVO> getLastScheduleData(String scheduleCode, Integer limit) { + if (StringUtils.isBlank(scheduleCode)) { + return null; + } + return stScheduleRecordService.getLastScheduleResult(scheduleCode,limit); + } + + @Override + public Map<String, List<Object[]>> getPredictDataItemNo(PreDataItemNoReqVO reqVO) { + if (StringUtils.isBlank(reqVO.getItemNo())) { + return new HashMap<>(); + } + ItemVO predictItem = mmPredictItemService.getItemByItemNo(reqVO.getItemNo()); if (null == predictItem) { return new HashMap<>(); } - List<Integer> resultIndexs = new ArrayList<>(); - resultIndexs.add(0); - resultIndexs.add(1); - resultIndexs.add(2); - List<MmItemOutputEntity> outPuts = mmItemOutputService.getByItemid(predictItem.getId(),"predictValues",resultIndexs); + + // 默认开始时间:运行时间 + if (null == reqVO.getStartTime()) { + reqVO.setStartTime(predictItem.getLastTime()); + } + // 默认结束时间:运行时间+预测长度*粒度 + if (null == reqVO.getEndTime()) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(predictItem.getLastTime()); + calendar.add(Calendar.SECOND,predictItem.getPredictLength() * predictItem.getGranularity()); + reqVO.setEndTime(calendar.getTime()); + } + + List<String> itemNos = new ArrayList<String>(){{ + add(reqVO.getItemNo()); + }}; + List<MmPredictItemRespVO> ItemRespVOs = mmPredictItemService.getArrayOutPutsByItemNos(itemNos); + if (CollectionUtils.isEmpty(ItemRespVOs)) { + return new HashMap<>(); + } + List<MmItemOutputRespVO> outPuts = ItemRespVOs.get(0).getOutPuts(); if (CollectionUtils.isEmpty(outPuts)) { return new HashMap<>(); } + InfluxModelResultByOutPutIdsPOJO pojo = new InfluxModelResultByOutPutIdsPOJO(); - pojo.setOutPutIds(outPuts.stream().map(MmItemOutputEntity::getId).collect(Collectors.toList())); + pojo.setOutPutIds(outPuts.stream().map(MmItemOutputRespVO::getId).collect(Collectors.toList())); pojo.setType(DataTypeEnum.FLOAT.getCode()); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(predictItem.getLastTime()); - calendar.add(Calendar.DAY_OF_YEAR, 7); - Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, predictItem.getLastTime(), calendar.getTime()); + Map<String, List<InfluxModelResultVO>> outPutDatas = influxDBService.queryModelResultsByOutPutIds(pojo, reqVO.getStartTime(), reqVO.getEndTime()); Map<String,List<Object[]>> result = new HashMap<>(outPuts.size()); - for (MmItemOutputEntity outPut : outPuts) { + for (MmItemOutputRespVO outPut : outPuts) { String outPutId = outPut.getId(); if (outPutDatas.containsKey(outPutId)) { List<InfluxModelResultVO> influxModelResultVOS = outPutDatas.get(outPutId); @@ -701,43 +733,14 @@ } @Override - public String getLastScheduleData(String scheduleCode) { - if (StringUtils.isBlank(scheduleCode)) { - return null; - } - return stScheduleRecordService.getLastScheduleResult(scheduleCode); + public List<ElectricityPriceSegmentedDTO> getElectricityPriceList(String year) { + return electricityPriceSegmentedService.getElectricityPriceList(year); } @Override - public List<Map<String, Object>> getRealTimeStatus(List<Map<String, Object>> machines) { - List<String> pointNos = new ArrayList<>(16); - for (Map<String, Object> machine : machines) { - List<String> list = (List<String>) machine.get("pointNos"); - pointNos.addAll(list); - } - Map<String, Object> pointValues = dataPointApi.queryPointsRealValue(pointNos); - List<Map<String, Object>> results = new ArrayList<>(); - for (Map<String, Object> machine : machines) { - List<String> pointNoList = (List<String>) machine.get("pointNos"); - if (!pointValues.containsKey(pointNoList.get(0)) || !pointValues.containsKey(pointNoList.get(1))) { - machine.put("status",false); - machine.put("num",0); - results.add(machine); - continue; - } - Double PValue = Double.valueOf(pointValues.get(pointNoList.get(0)).toString()); - Double QValue = Double.valueOf(pointValues.get(pointNoList.get(1)).toString()); - Double cos = calculateCos(PValue, QValue); - if (cos.equals(0.0)) { - machine.put("status",false); - machine.put("num",0); - }else { - machine.put("status",true); - machine.put("num",cos); - } - results.add(machine); - } - return results; + public Boolean createElectricityPrice(ElectricityPriceSegmentedDTO dto) { + electricityPriceSegmentedService.create(dto); + return true; } /** -- Gitblit v1.9.3