From 9c6e3b839af5ab27054e8f5e18eede0f6d1e820e Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 3 Dec 2025 11:21:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=B9=E9=87=8F=E5=A4=84=E7=90=86=E5=B7=A5?= =?UTF-8?q?=E5=86=B5=E5=BA=93=E5=92=8C=E6=96=87=E4=BB=B6=E5=85=B3=E7=B3=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FileSimulationMappingFeignClientImpl.java | 18 +++++- .../IFileSimulationMappingFeignClient.java | 6 +- .../DataStorageAnalysisController.java | 2 +- .../FileSimulationMappingController.java | 17 +++++- .../IFileSimulationMappingService.java | 10 +++- .../impl/DimensionTemplateServiceImpl.java | 34 ++++++++--- .../FileSimulationMappingServiceImpl.java | 59 +++++++++++++++---- .../resources/mapper/FileStorageMapper.xml | 2 +- 8 files changed, 118 insertions(+), 30 deletions(-) diff --git a/common/src/main/java/com/sdm/common/feign/impl/data/FileSimulationMappingFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/data/FileSimulationMappingFeignClientImpl.java index a4661183..1f614460 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/data/FileSimulationMappingFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/data/FileSimulationMappingFeignClientImpl.java @@ -9,16 +9,17 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; +import java.util.Map; @Slf4j public class FileSimulationMappingFeignClientImpl implements IFileSimulationMappingFeignClient { @Autowired private IFileSimulationMappingFeignClient fileSimulationMappingFeignClient; @Override - public SdmResponse saveFileSimulationMapping(SaveFileSimulationMappingReq saveFileSimulationMappingReq) { + public SdmResponse batchSaveFileSimulationMapping(List saveFileSimulationMappingReq) { SdmResponse response; try { - response = fileSimulationMappingFeignClient.saveFileSimulationMapping(saveFileSimulationMappingReq); + response = fileSimulationMappingFeignClient.batchSaveFileSimulationMapping(saveFileSimulationMappingReq); log.info("保存文件和工况库关系结果:"+ response); return response; } catch (Exception e) { @@ -39,4 +40,17 @@ public class FileSimulationMappingFeignClientImpl implements IFileSimulationMapp return SdmResponse.failed("查询工况库关系文件失败"); } } + + @Override + public SdmResponse>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(GetFileSimulationMappingReq getFileSimulationMappingReq) { + SdmResponse>> response; + try { + response = fileSimulationMappingFeignClient.batchGetFileSimulationMappingBySimulationPoolIdAndVersion(getFileSimulationMappingReq); + log.info("查询工况库关系文件结果:"+ response); + return response; + } catch (Exception e) { + log.error("查询工况库关系文件", e); + return SdmResponse.failed("查询工况库关系文件失败"); + } + } } diff --git a/common/src/main/java/com/sdm/common/feign/inter/data/IFileSimulationMappingFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/data/IFileSimulationMappingFeignClient.java index 3971fadd..13eda7e4 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/data/IFileSimulationMappingFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/data/IFileSimulationMappingFeignClient.java @@ -9,12 +9,16 @@ import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import java.util.List; +import java.util.Map; @FeignClient(name = "data", contextId = "fileSimulationMappingFeignClient") public interface IFileSimulationMappingFeignClient { @PostMapping("/fileSimulationMapping/saveFileSimulationMapping") - SdmResponse saveFileSimulationMapping(@RequestBody SaveFileSimulationMappingReq saveFileSimulationMappingReq); + SdmResponse batchSaveFileSimulationMapping(@RequestBody List saveFileSimulationMappingReq); @PostMapping("/getFileSimulationMappingBySimulationPoolIdAndVersionAndTaskId") SdmResponse> getFileSimulationMappingBySimulationPoolIdAndVersionAndTaskId(@RequestBody GetFileSimulationMappingReq getFileSimulationMappingReq); + + @PostMapping("/batchGetFileSimulationMappingBySimulationPoolIdAndVersion") + SdmResponse>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(@RequestBody GetFileSimulationMappingReq getFileSimulationMappingReq); } diff --git a/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java b/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java index 64dc1f73..7e9a1d54 100644 --- a/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java +++ b/data/src/main/java/com/sdm/data/controller/DataStorageAnalysisController.java @@ -52,7 +52,7 @@ public class DataStorageAnalysisController { return dataStorageAnalysis.getNodeSizeByNodeType(queryNodeType, uuid, intervalMonths, targetYm); } catch (Exception e) { log.error("获取文件空间占用失败", e); - return SdmResponse.failed("获取文件空间占用"); + return SdmResponse.failed("获取文件空间占用失败"); } } diff --git a/data/src/main/java/com/sdm/data/controller/FileSimulationMappingController.java b/data/src/main/java/com/sdm/data/controller/FileSimulationMappingController.java index 45a86090..1e8bfdf9 100644 --- a/data/src/main/java/com/sdm/data/controller/FileSimulationMappingController.java +++ b/data/src/main/java/com/sdm/data/controller/FileSimulationMappingController.java @@ -6,7 +6,6 @@ import com.sdm.common.entity.req.data.GetFileSimulationMappingReq; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.feign.inter.data.IFileSimulationMappingFeignClient; import com.sdm.common.entity.req.data.SaveFileSimulationMappingReq; -import com.sdm.data.model.entity.FileSimulationMapping; import com.sdm.data.service.IFileSimulationMappingService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; @@ -16,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; +import java.util.Map; /** *

@@ -34,8 +34,8 @@ public class FileSimulationMappingController implements IFileSimulationMappingFe * 保存工况任务与文件绑定关系 */ @PostMapping("/saveFileSimulationMapping") - public SdmResponse saveFileSimulationMapping(@RequestBody SaveFileSimulationMappingReq saveFileSimulationMappingReq) { - return fileSimulationMappingService.saveSimulationAndFileMapping(saveFileSimulationMappingReq); + public SdmResponse batchSaveFileSimulationMapping(@RequestBody List saveFileSimulationMappingReq) { + return fileSimulationMappingService.batchSaveFileSimulationMapping(saveFileSimulationMappingReq); } /** @@ -47,5 +47,16 @@ public class FileSimulationMappingController implements IFileSimulationMappingFe } + /** + * 根据工况库ID,版本号批量查询文件信息 + * @param getFileSimulationMappingReq + * @return taskFileMapping; key: 工况任务ID; value: 文件信息列表 + */ + @PostMapping("/batchGetFileSimulationMappingBySimulationPoolIdAndVersion") + public SdmResponse>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(@RequestBody GetFileSimulationMappingReq getFileSimulationMappingReq){ + return fileSimulationMappingService.batchGetFileSimulationMappingBySimulationPoolIdAndVersion(getFileSimulationMappingReq); + } + + } diff --git a/data/src/main/java/com/sdm/data/service/IFileSimulationMappingService.java b/data/src/main/java/com/sdm/data/service/IFileSimulationMappingService.java index 613e6cd9..9c8f7997 100644 --- a/data/src/main/java/com/sdm/data/service/IFileSimulationMappingService.java +++ b/data/src/main/java/com/sdm/data/service/IFileSimulationMappingService.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import com.sdm.common.entity.req.data.SaveFileSimulationMappingReq; import java.util.List; +import java.util.Map; /** *

@@ -20,10 +21,17 @@ import java.util.List; public interface IFileSimulationMappingService extends IService { void saveFileSimulationMapping(Long fileId,Integer simulationPoolId,String simulationPoolVersion,List simulationPoolTaskIds); - SdmResponse saveSimulationAndFileMapping(SaveFileSimulationMappingReq saveFileSimulationMappingReq); + SdmResponse batchSaveFileSimulationMapping(List saveFileSimulationMappingReq); /** * 根据工况库ID,版本号,工况任务ID查询文件信息 */ SdmResponse> getFileSimulationMappingBySimulationPoolIdAndVersionAndTaskId(GetFileSimulationMappingReq getFileSimulationMappingReq); + + /** + * 根据工况库ID,版本号批量查询文件信息 + * @param getFileSimulationMappingReq + * @return taskFileMapping; key: 工况任务ID; value: 文件信息列表 + */ + SdmResponse>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(GetFileSimulationMappingReq getFileSimulationMappingReq); } diff --git a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java index 81f399d6..031bf29a 100644 --- a/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/DimensionTemplateServiceImpl.java @@ -253,17 +253,35 @@ public class DimensionTemplateServiceImpl extends ServiceImpl dirInfos = null; - if (ObjectUtils.isNotEmpty(req.getFileId())) { - //fileId 不为空,是右侧点击进入文件夹下一层级查询 - parentDirId = req.getFileId(); - Optional parentDirInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, parentDirId).oneOpt(); - if (!parentDirInfo.isPresent()) { - return SdmResponse.failed("父文件夹不存在"); - } - } else { + if(ObjectUtils.isEmpty(req.getFileId())){ + // 第一次进入数据总览页面,右侧不展示文件和文件夹 return SdmResponse.success(); } + if(0L==req.getFileId()){ + // 和前端规定 0=触发根目录按钮,相当于获取左侧文件树的根节点文件夹 + GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq(); + getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId()); + getSimulationNodeTreeReq.setFileId(null); + SdmResponse> nodeDirInfos = getSimulationNodeTree(getSimulationNodeTreeReq); + if (nodeDirInfos.isSuccess() && ObjectUtils.isNotEmpty(nodeDirInfos.getData())) { + dirInfos = nodeDirInfos.getData().stream().map(FileMetadataInfo::getId).toList(); + } + + PageHelper.startPage(req.getCurrent(), req.getSize()); + List fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, dirInfos).list(); + + PageInfo page = new PageInfo<>(fileMetadataInfos); + return PageUtils.getJsonObjectSdmResponse(fileMetadataInfos, page); + } + + //fileId 不为空也不为0,是右侧点击进入文件夹下一层级查询 + parentDirId = req.getFileId(); + Optional parentDirInfo = fileMetadataInfoService.lambdaQuery().eq(FileMetadataInfo::getId, parentDirId).oneOpt(); + if (!parentDirInfo.isPresent()) { + return SdmResponse.failed("父文件夹不存在"); + } + // relatedResourceUuid和relatedResourceUuidOwnType不为空才是节点文件夹,才需要查询子节点文件夹文件 GetSimulationNodeTreeReq getSimulationNodeTreeReq = new GetSimulationNodeTreeReq(); getSimulationNodeTreeReq.setDimensionTemplateId(req.getDimensionTemplateId()); diff --git a/data/src/main/java/com/sdm/data/service/impl/FileSimulationMappingServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/FileSimulationMappingServiceImpl.java index 6e124bca..1a2cb16b 100644 --- a/data/src/main/java/com/sdm/data/service/impl/FileSimulationMappingServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/FileSimulationMappingServiceImpl.java @@ -1,6 +1,5 @@ package com.sdm.data.service.impl; -import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.data.GetFileSimulationMappingReq; import com.sdm.common.entity.resp.data.FileMetadataInfoResp; @@ -14,9 +13,12 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** *

@@ -30,7 +32,8 @@ import java.util.List; public class FileSimulationMappingServiceImpl extends ServiceImpl implements IFileSimulationMappingService { @Autowired IFileMetadataInfoService fileMetadataInfoService; - public void saveFileSimulationMapping(Long fileId,Integer simulationPoolId,String simulationPoolVersion,List simulationPoolTaskIds){ + + public void saveFileSimulationMapping(Long fileId, Integer simulationPoolId, String simulationPoolVersion, List simulationPoolTaskIds) { // 先删除原先所有的文件绑定关系 this.lambdaUpdate().eq(FileSimulationMapping::getFileId, fileId).remove(); // 再新增新的文件绑定关系 @@ -45,16 +48,21 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl { - FileSimulationMapping fileSimulationMapping = new FileSimulationMapping(); - fileSimulationMapping.setFileId(fileId); - fileSimulationMapping.setSimulationPoolId(saveFileSimulationMappingReq.getSimulationPoolId()); - fileSimulationMapping.setSimulationPoolVersion(saveFileSimulationMappingReq.getSimulationPoolVersion()); - fileSimulationMapping.setSimulationPoolTaskId(saveFileSimulationMappingReq.getSimulationPoolTaskId()); - this.save(fileSimulationMapping); - }); - return SdmResponse.success(); + @Transactional(rollbackFor = Exception.class) + public SdmResponse batchSaveFileSimulationMapping(List saveFileSimulationMappingReqList) { + List fileSimulationMappings = new ArrayList<>(); + for (SaveFileSimulationMappingReq fileSimulationMappingReq : saveFileSimulationMappingReqList) { + fileSimulationMappingReq.getFileIds().forEach(fileId -> { + FileSimulationMapping fileSimulationMapping = new FileSimulationMapping(); + fileSimulationMapping.setFileId(fileId); + fileSimulationMapping.setSimulationPoolId(fileSimulationMappingReq.getSimulationPoolId()); + fileSimulationMapping.setSimulationPoolVersion(fileSimulationMappingReq.getSimulationPoolVersion()); + fileSimulationMapping.setSimulationPoolTaskId(fileSimulationMappingReq.getSimulationPoolTaskId()); + fileSimulationMappings.add(fileSimulationMapping); + }); + } + this.saveBatch(fileSimulationMappings); + return SdmResponse.success(); } @Override @@ -67,7 +75,7 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, list.stream().map(FileSimulationMapping::getFileId).toList()).list(); - if (fileMetadataInfos.isEmpty()){ + if (fileMetadataInfos.isEmpty()) { return SdmResponse.success(); } List fileMetadataInfoResps = new ArrayList<>(); @@ -78,7 +86,32 @@ public class FileSimulationMappingServiceImpl extends ServiceImpl>> batchGetFileSimulationMappingBySimulationPoolIdAndVersion(GetFileSimulationMappingReq getFileSimulationMappingReq) { + List list = this.lambdaQuery().eq(FileSimulationMapping::getSimulationPoolId, getFileSimulationMappingReq.getSimulationPoolId()) + .eq(FileSimulationMapping::getSimulationPoolVersion, getFileSimulationMappingReq.getSimulationPoolVersion()) + .list(); + if (list.isEmpty()) { + return SdmResponse.success(); + } + List fileMetadataInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, list.stream().map(FileSimulationMapping::getFileId).toList()).list(); + if (fileMetadataInfos.isEmpty()) { + return SdmResponse.success(); + } + List fileMetadataInfoResps = new ArrayList<>(); + fileMetadataInfos.forEach(fileMetadataInfo -> { + FileMetadataInfoResp fileMetadataInfoResp = new FileMetadataInfoResp(); + BeanUtils.copyProperties(fileMetadataInfo, fileMetadataInfoResp); + fileMetadataInfoResps.add(fileMetadataInfoResp); + }); + Map fileId2Filemeta = fileMetadataInfoResps.stream().collect(Collectors.toMap(FileMetadataInfoResp::getId, file -> file)); + // list 依据工况任务id simulationPoolTaskId 对fileId分组,用fileId2Filemeta替换分组的内容 + Map> simulationPoolTaskId2Files = list.stream().collect(Collectors.groupingBy(FileSimulationMapping::getSimulationPoolTaskId, + Collectors.mapping(fileSimu -> fileId2Filemeta.get(fileSimu.getFileId()), Collectors.toList()))); + + return SdmResponse.success(simulationPoolTaskId2Files); } } diff --git a/data/src/main/resources/mapper/FileStorageMapper.xml b/data/src/main/resources/mapper/FileStorageMapper.xml index 3a6f233f..437512b4 100644 --- a/data/src/main/resources/mapper/FileStorageMapper.xml +++ b/data/src/main/resources/mapper/FileStorageMapper.xml @@ -7,7 +7,7 @@ dirId, SUM(fileSize) AS totalSize FROM file_storage - WHERE dirId + WHERE dirId IN #{id}