From 1b6c04543584802355ec8e9641a061709cbec8ea Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Mon, 12 Jan 2026 16:17:57 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=80=BB=E8=A7=88=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E6=A8=A1=E5=BC=8F=E5=B1=95=E7=A4=BA=E7=AE=97=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/project/SpdmQueryRunListReq.java | 22 +++++++++++ .../resp/project/RunListByNodeIdResp.java | 11 ++++++ .../SimulationNodeFeignClientImpl.java | 15 +++++++- .../project/ISimulationNodeFeignClient.java | 14 +++++++ .../com/sdm/common/service/TagMapService.java | 34 +++++++++++++++++ .../impl/DimensionTemplateServiceImpl.java | 18 +++++++-- .../controller/SimulationNodeController.java | 7 +--- .../model/req/SpdmQueryRunListReq.java | 27 ------------- .../com/sdm/project/service/INodeService.java | 7 +--- .../project/service/impl/NodeServiceImpl.java | 38 ++++++++++--------- 10 files changed, 134 insertions(+), 59 deletions(-) create mode 100644 common/src/main/java/com/sdm/common/entity/req/project/SpdmQueryRunListReq.java create mode 100644 common/src/main/java/com/sdm/common/entity/resp/project/RunListByNodeIdResp.java create mode 100644 common/src/main/java/com/sdm/common/service/TagMapService.java delete mode 100644 project/src/main/java/com/sdm/project/model/req/SpdmQueryRunListReq.java diff --git a/common/src/main/java/com/sdm/common/entity/req/project/SpdmQueryRunListReq.java b/common/src/main/java/com/sdm/common/entity/req/project/SpdmQueryRunListReq.java new file mode 100644 index 00000000..71b9a425 --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/req/project/SpdmQueryRunListReq.java @@ -0,0 +1,22 @@ +package com.sdm.common.entity.req.project; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Pattern; +import lombok.Data; + +import java.util.List; + +@Data +public class SpdmQueryRunListReq { + + /** + * 选中的节点id + */ + private List nodeIdList; + + /** + * 选中的节点类型 + */ + private String nodeType; + +} diff --git a/common/src/main/java/com/sdm/common/entity/resp/project/RunListByNodeIdResp.java b/common/src/main/java/com/sdm/common/entity/resp/project/RunListByNodeIdResp.java new file mode 100644 index 00000000..f38bad58 --- /dev/null +++ b/common/src/main/java/com/sdm/common/entity/resp/project/RunListByNodeIdResp.java @@ -0,0 +1,11 @@ +package com.sdm.common.entity.resp.project; + +import lombok.Data; + +import java.util.ArrayList; + +@Data +public class RunListByNodeIdResp { + Integer total; + ArrayList list; +} diff --git a/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java index b943d6c8..46665595 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/project/SimulationNodeFeignClientImpl.java @@ -3,6 +3,7 @@ package com.sdm.common.feign.impl.project; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.project.DelNodeReq; import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.req.project.SpdmQueryRunListReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient; @@ -143,5 +144,17 @@ public class SimulationNodeFeignClientImpl implements ISimulationNodeFeignClient return response; } - + @Override + public SdmResponse> getRunListByNodeId(SpdmQueryRunListReq req) { + try { + SdmResponse> runListByNodeId = ISimulationNodeFeignClient.getRunListByNodeId(req); + if (!runListByNodeId.isSuccess()){ + return SdmResponse.failed("查询失败"); + } + return runListByNodeId; + } catch (Exception e) { + log.error("查询失败", e); + return SdmResponse.failed("查询失败"); + } + } } diff --git a/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java index 00fe8ea5..a25bb2d9 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationNodeFeignClient.java @@ -3,9 +3,12 @@ package com.sdm.common.feign.inter.project; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.project.DelNodeReq; import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.req.project.SpdmQueryRunListReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; +import io.swagger.v3.oas.annotations.Operation; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -56,4 +59,15 @@ public interface ISimulationNodeFeignClient { @PostMapping(value = "/node/querySimulationNodeByUuids") SdmResponse> querySimulationNodeByUuids(@RequestBody Listuuids); + + /** + * 根据节点id查询所有算例 + * + * @param req + * @return + */ + @PostMapping("/getRunListByNodeId") + SdmResponse> getRunListByNodeId(@RequestBody SpdmQueryRunListReq req); + + } diff --git a/common/src/main/java/com/sdm/common/service/TagMapService.java b/common/src/main/java/com/sdm/common/service/TagMapService.java new file mode 100644 index 00000000..d74d716c --- /dev/null +++ b/common/src/main/java/com/sdm/common/service/TagMapService.java @@ -0,0 +1,34 @@ +package com.sdm.common.service; + +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.bo.DataDictionary; +import com.sdm.common.entity.constants.TagConstant; +import com.sdm.common.feign.impl.system.SysConfigFeignClientImpl; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ObjectUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +import static java.util.Collections.emptyMap; + +@Service +@Slf4j +public class TagMapService { + + @Autowired + private SysConfigFeignClientImpl sysConfigFeignClient; + + public Map getTagMapName() { + SdmResponse> tagMapList = sysConfigFeignClient.getDictionaryData(TagConstant.DICTIONARY_TAG_KEY); + if (!tagMapList.isSuccess() || ObjectUtils.isEmpty(tagMapList.getData())) { + log.error("字典信息查询失败"); + return emptyMap(); + } + // project-->tag1 phase-->tag2 + return tagMapList.getData().stream().collect(Collectors.toMap(DataDictionary::getDictValue, DataDictionary::getDictName)); + } +} 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 6b49f9e4..e68992ab 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 @@ -13,6 +13,7 @@ import com.sdm.common.entity.req.data.DelDirReq; import com.sdm.common.entity.req.data.DelFileReq; import com.sdm.common.entity.req.data.UploadFilesReq; import com.sdm.common.entity.req.project.DelNodeReq; +import com.sdm.common.entity.req.project.SpdmQueryRunListReq; import com.sdm.common.entity.req.system.UserQueryReq; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.PageDataResp; @@ -393,15 +394,24 @@ public class DimensionTemplateServiceImpl extends ServiceImpl fileIds = req.getFileIds(); - List nodeUUids = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, fileIds).list().stream().map(FileMetadataInfo::getRelatedResourceUuid).toList(); + List nodeFileInfos = fileMetadataInfoService.lambdaQuery().in(FileMetadataInfo::getId, fileIds).list(); + List nodeUUids = nodeFileInfos.stream().map(FileMetadataInfo::getRelatedResourceUuid).toList(); log.info("作业模式下:根据文件 fileIds:{},获取到对应的节点uuid:{}", fileIds, nodeUUids); if(CollectionUtils.isEmpty(nodeUUids)) { log.error("作业模式下,未查询到对应的nodeUUids"); return SdmResponse.success(); } - // 从李东洋接口,基于 nodeUUids 获取 算列的run的uuids - // List runUuids = projectMapper.queryRunUuidsByNodeUUids(nodeUUids); - List runUuids = new ArrayList<>(); + String nodeType = nodeFileInfos.get(0).getRelatedResourceUuidOwnType(); + // 基于 nodeUUids 获取 算列的run的uuids + SpdmQueryRunListReq spdmQueryRunListReq = new SpdmQueryRunListReq(); + spdmQueryRunListReq.setNodeIdList(nodeUUids); + spdmQueryRunListReq.setNodeType(nodeType); + SdmResponse> resp = simuluationNodeFeignClient.getRunListByNodeId(spdmQueryRunListReq); + if(!resp.isSuccess()){ + log.info("作业模式下,未查询到对应算列的runUuids"); + return SdmResponse.success(); + } + List runUuids = resp.getData(); if(CollectionUtils.isEmpty(runUuids)){ log.info("作业模式下,未查询到对应算列的runUuids"); diff --git a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java index 7f0ea689..cfa8901f 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationNodeController.java @@ -3,10 +3,7 @@ package com.sdm.project.controller; import com.alibaba.excel.util.StringUtils; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.data.UploadFilesReq; -import com.sdm.common.entity.req.project.DelNodeReq; -import com.sdm.common.entity.req.project.ProjectExportExcelFormat; -import com.sdm.common.entity.req.project.RenameNodeReq; -import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.req.project.*; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; import com.sdm.common.feign.inter.project.ISimulationNodeFeignClient; @@ -332,7 +329,7 @@ public class SimulationNodeController implements ISimulationNodeFeignClient { */ @PostMapping("/getRunListByNodeId") @Operation(summary = "根据节点id查询所有算例", description = "根据节点id查询所有算例") - public SdmResponse getRunListByNodeId(@RequestBody @Validated SpdmQueryRunListReq req) { + public SdmResponse> getRunListByNodeId(@RequestBody @Validated SpdmQueryRunListReq req) { return nodeService.getRunListByNodeId(req); } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmQueryRunListReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmQueryRunListReq.java deleted file mode 100644 index b148cb6e..00000000 --- a/project/src/main/java/com/sdm/project/model/req/SpdmQueryRunListReq.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.sdm.project.model.req; - -import jakarta.validation.constraints.NotBlank; -import jakarta.validation.constraints.Pattern; -import lombok.Data; - -import java.util.List; - -@Data -public class SpdmQueryRunListReq { - - /** - * 节点id - */ - private List nodeIdList; - - /** - * 当前节点的tag标签 - */ - @Pattern( - regexp = "^(tag1|tag2|tag3|tag4|tag5|tag6|tag7|tag8|tag9|tag10)$", - message = "queryTag只能传入tag1|tag2|tag3|tag4|tag5|tag6|tag7|tag8|tag9|tag10其中一个值" - ) - @NotBlank(message = "queryTag不能为空") - private String queryTag; - -} diff --git a/project/src/main/java/com/sdm/project/service/INodeService.java b/project/src/main/java/com/sdm/project/service/INodeService.java index 9c9904a7..c9dfb72e 100644 --- a/project/src/main/java/com/sdm/project/service/INodeService.java +++ b/project/src/main/java/com/sdm/project/service/INodeService.java @@ -3,10 +3,7 @@ package com.sdm.project.service; import com.baomidou.mybatisplus.extension.service.IService; import com.sdm.common.common.SdmResponse; import com.sdm.common.entity.req.data.UploadFilesReq; -import com.sdm.common.entity.req.project.DelNodeReq; -import com.sdm.common.entity.req.project.ProjectExportExcelFormat; -import com.sdm.common.entity.req.project.RenameNodeReq; -import com.sdm.common.entity.req.project.SpdmNodeListReq; +import com.sdm.common.entity.req.project.*; import com.sdm.common.entity.resp.AllNodeByProjectIdAndTypeResp; import com.sdm.common.entity.resp.project.SimulationNodeResp; import com.sdm.project.model.entity.SimulationNode; @@ -79,6 +76,6 @@ public interface INodeService extends IService { SdmResponse getChildrenDataList(SpdmQueryChildrenDataReq req); - SdmResponse getRunListByNodeId(SpdmQueryRunListReq req); + SdmResponse> getRunListByNodeId(SpdmQueryRunListReq req); } diff --git a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java index 16e493cf..c22faeff 100644 --- a/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/NodeServiceImpl.java @@ -26,6 +26,7 @@ import com.sdm.common.feign.impl.system.SysConfigFeignClientImpl; import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; import com.sdm.common.feign.inter.data.IDataFeignClient; import com.sdm.common.log.CoreLogger; +import com.sdm.common.service.TagMapService; import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.RandomUtil; import com.sdm.common.utils.excel.ExcelUtil; @@ -76,6 +77,8 @@ import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; +import static java.util.Collections.emptyList; + @Slf4j @Service public class NodeServiceImpl extends ServiceImpl implements INodeService { @@ -113,6 +116,9 @@ public class NodeServiceImpl extends ServiceImpl> getAllNodeByProjectIdAndType(List uuids, String nextNodeType) { - SdmResponse> tagMapList = sysConfigFeignClient.getDictionaryData(TagConstant.DICTIONARY_TAG_KEY); - if (!tagMapList.isSuccess() || ObjectUtils.isEmpty(tagMapList.getData())) { + Map TagMap = tagMapService.getTagMapName(); + if ( ObjectUtils.isEmpty(TagMap)) { log.error("字典信息查询失败"); return SdmResponse.success(); } - // project-->tag1 phase-->tag2 - Map TagMap = tagMapList.getData().stream().collect(Collectors.toMap(DataDictionary::getDictValue, DataDictionary::getDictName)); Optional simulationNodeOptional = this.lambdaQuery().in(SimulationNode::getUuid, uuids).list().stream().findFirst(); if (!simulationNodeOptional.isPresent()) { @@ -2317,12 +2321,18 @@ public class NodeServiceImpl extends ServiceImpl> getRunListByNodeId(SpdmQueryRunListReq req) { List nodeIdList = req.getNodeIdList(); - if (CollectionUtils.isEmpty(nodeIdList)) { - return SdmResponse.failed("nodeIdList不能为空"); + if (CollectionUtils.isEmpty(nodeIdList)|| ObjectUtils.isEmpty(req.getNodeType())) { + return SdmResponse.failed("nodeIdList或者nodeType不能为空"); } - String queryTag = req.getQueryTag(); + Map TagMap = tagMapService.getTagMapName(); + if ( ObjectUtils.isEmpty(TagMap)) { + log.error("字典信息查询失败"); + return SdmResponse.failed("字典信息查询失败"); + } + + String queryTag =TagMap.get(req.getNodeType()); // 1. 根据nodeId和tag,查询所有task LambdaQueryChainWrapper simulationTaskWrapper = simulationTaskService.lambdaQuery(); switch (queryTag) { @@ -2360,22 +2370,16 @@ public class NodeServiceImpl extends ServiceImpl tasklist = simulationTaskWrapper.list(); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("total", 0); if (CollectionUtils.isEmpty(tasklist)) { - jsonObject.put("list", new ArrayList()); - return SdmResponse.success(jsonObject); + return SdmResponse.success(emptyList()); } List taskIdList = tasklist.stream().map(SimulationTask::getUuid).toList(); List runList = simulationRunService.lambdaQuery().in(SimulationRun::getTaskId,taskIdList).list(); if (CollectionUtils.isEmpty(runList)) { - jsonObject.put("list", new ArrayList()); - return SdmResponse.success(jsonObject); + return SdmResponse.success(emptyList()); } // 2. 查询task下所有run - jsonObject.put("total", runList.size()); - jsonObject.put("list", runList.stream().map(SimulationRun::getUuid).distinct().toList()); - return SdmResponse.success(jsonObject); + return SdmResponse.success(runList.stream().map(SimulationRun::getUuid).distinct().toList()); } }