From 153763807debc575d0ee05e8db7d9ad20a58071b Mon Sep 17 00:00:00 2001 From: dengzedong <dengzedong@email> Date: 星期五, 17 一月 2025 17:34:47 +0800 Subject: [PATCH] 电力页面数据绑定接口: 调度模型最新结果查询 动态limit 查询时间范围内预测结果 --- iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 files changed, 109 insertions(+), 7 deletions(-) diff --git a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java index f595abc..abe0ee6 100644 --- a/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java +++ b/iailab-module-model/iailab-module-model-biz/src/main/java/com/iailab/module/model/mcs/pre/service/impl/MmPredictItemServiceImpl.java @@ -17,6 +17,7 @@ import com.iailab.module.model.mcs.pre.vo.MmPredictItemRespVO; import com.iailab.module.model.mdk.vo.ItemVO; import com.iailab.module.model.mdk.vo.MergeItemVO; +import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -58,6 +59,8 @@ @Autowired private MmPredictItemDao mmPredictItemDao; + private static HashMap<String, ItemVO> itemVOHashMap = new HashMap<>(); + @Override public PageResult<MmPredictItemRespVO> queryPage(MmPredictItemPageReqVO reqVO) { IPage<MmPredictItemRespVO> page = mmPredictItemDao.selectPage(reqVO); @@ -73,6 +76,34 @@ @Override public MmPredictItemEntity getById(String id) { return mmPredictItemDao.selectById(id); + } + + @Override + public List<MmPredictItemRespVO> getDoubleOutPutsByItemNos(List<String> itemNos) { + List<Integer> resultType = new ArrayList<Integer>(){{ + add(3); + }}; + return getOutPutsByItemNosAndResultType(itemNos,resultType); + } + + @Override + public List<MmPredictItemRespVO> getArrayOutPutsByItemNos(List<String> itemNos) { + List<Integer> resultType = new ArrayList<Integer>(){{ + add(1); + add(2); + }}; + return getOutPutsByItemNosAndResultType(itemNos,resultType); + } + + public List<MmPredictItemRespVO> getOutPutsByItemNosAndResultType(List<String> itemNos,List<Integer> resultType) { + if (CollectionUtils.isEmpty(itemNos) || CollectionUtils.isEmpty(resultType)) { + return new ArrayList<>(); + } + Map<String, Object> params = new HashMap(1); + params.put("itemNos", itemNos); + params.put("resultType", resultType); + List<MmPredictItemRespVO> list = mmPredictItemDao.getOutPutsByItemNosAndResultType(params); + return list; } @DSTransactional(rollbackFor = Exception.class) @@ -115,6 +146,14 @@ MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem(); mMmPredictMergeItem.setItemid(predictItem.getId()); mmPredictMergeItemService.savePredictMergeItem(mMmPredictMergeItem); + // 添加一条默认output + List<MmItemOutputEntity> mergeItemOutput = new ArrayList<>(1); + MmItemOutputEntity entity = new MmItemOutputEntity(); + entity.setPointid(mmPredictItemDto.getPointId()); + entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname()); + entity.setResultstr("result"); + mergeItemOutput.add(entity); + mmPredictItemDto.setMmItemOutputList(mergeItemOutput); } mmPredictItemDao.insert(predictItem); DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem(); @@ -127,6 +166,9 @@ e.setItemid(predictItem.getId()); }); mmItemOutputService.saveMmItemOutput(mmItemOutput); + + // 清空缓存 + clearCatch(); } @DSTransactional(rollbackFor = Exception.class) @@ -154,6 +196,19 @@ } else if (itemType != null && ItemTypeEnum.MERGE_ITEM.getName().equals(itemType.getItemtypename())) { MmPredictMergeItemEntity mMmPredictMergeItem = mmPredictItemDto.getMmPredictMergeItem(); mmPredictMergeItemService.update(mMmPredictMergeItem); + // 修改默认output + List<MmItemOutputEntity> mmItemOutputList = mmPredictItemDto.getMmItemOutputList(); + if (CollectionUtils.isEmpty(mmItemOutputList)) { + mmItemOutputList = new ArrayList<>(1); + MmItemOutputEntity entity = new MmItemOutputEntity(); + entity.setPointid(mmPredictItemDto.getPointId()); + entity.setResultName(mmPredictItemDto.getMmPredictItem().getItemname()); + entity.setResultstr("result"); + mmItemOutputList.add(entity); + mmPredictItemDto.setMmItemOutputList(mmItemOutputList); + } else { + mmPredictItemDto.getMmItemOutputList().forEach(e -> e.setPointid(mmPredictItemDto.getPointId())); + } } DmModuleItemEntity dmModuleItem = mmPredictItemDto.getDmModuleItem(); if (!"".equals(dmModuleItem.getId()) && dmModuleItem.getId() != null) { @@ -161,11 +216,20 @@ } mmItemOutputService.deleteByItemId(predictItem.getId()); List<MmItemOutputEntity> mmItemOutput = mmPredictItemDto.getMmItemOutputList(); - mmItemOutput.forEach(e -> { - e.setId(UUID.randomUUID().toString()); - e.setItemid(predictItem.getId()); - }); - mmItemOutputService.saveMmItemOutput(mmItemOutput); + if (!CollectionUtils.isEmpty(mmItemOutput)) { + mmItemOutput.forEach(e -> { + // 尽量保存原有id + if (StringUtils.isBlank(e.getId())) { + e.setId(UUID.randomUUID().toString()); + } + e.setItemid(predictItem.getId()); + }); + mmItemOutputService.saveMmItemOutput(mmItemOutput); + } + + + // 清空缓存 + clearCatch(); } @DSTransactional(rollbackFor = Exception.class) @@ -175,6 +239,9 @@ mmPredictMergeItemService.deleteBatch(itemIds); mmPredictModelService.deleteBatch(itemIds); mmItemOutputService.deleteBatch(itemIds); + + // 清空缓存 + clearCatch(); } @Override @@ -197,6 +264,9 @@ mmPredictItemDto.setMmModelParamList(new ArrayList<>()); mmPredictItemDto.setMmPredictMergeItem(new MmPredictMergeItemEntity()); mmPredictItemDto.setMmPredictMergeItem(mmPredictMergeItemService.getByItemid(id)); + if (!CollectionUtils.isEmpty(mmPredictItemDto.getMmItemOutputList())) { + mmPredictItemDto.setPointId(mmPredictItemDto.getMmItemOutputList().get(0).getPointid()); + } } return mmPredictItemDto; } @@ -235,11 +305,30 @@ } @Override - public ItemVO getItemById(String itemId) { + public void clearCatch() { + itemVOHashMap.clear(); + } + + @Override + public ItemVO getItemByIdFromCache(String itemId) { if (StringUtils.isBlank(itemId)) { return null; } - Map<String, Object> params = new HashMap(1); + if (!itemVOHashMap.containsKey(itemId)) { + Map<String, Object> params = new HashMap<>(1); + params.put("ITEMID", itemId); + List<ItemVO> list = mmPredictItemDao.getItem(params); + if (CollectionUtils.isEmpty(list)) { + return null; + } + itemVOHashMap.put(itemId, list.get(0)); + } + return itemVOHashMap.get(itemId); + } + + @Override + public ItemVO getItemById(String itemId) { + Map<String, Object> params = new HashMap<>(1); params.put("ITEMID", itemId); List<ItemVO> list = mmPredictItemDao.getItem(params); if (CollectionUtils.isEmpty(list)) { @@ -249,6 +338,19 @@ } @Override + public ItemVO getItemByOutPutId(String outPutId) { + if (StringUtils.isBlank(outPutId)) { + return null; + } + MmItemOutputEntity outPutById = mmItemOutputService.getOutPutById(outPutId); + if (ObjectUtils.isEmpty(outPutById)) { + return null; + } + String itemId = outPutById.getItemid(); + return getItemByIdFromCache(itemId); + } + + @Override public MergeItemVO getMergeItemByItemId(String itemId) { if (StringUtils.isBlank(itemId)) { return null; -- Gitblit v1.9.3