diff --git a/common/src/main/java/com/sdm/common/entity/req/performance/PerformanceExportExcelParam.java b/common/src/main/java/com/sdm/common/entity/req/performance/PerformanceExportExcelParam.java index 5916ec98..99c76a78 100644 --- a/common/src/main/java/com/sdm/common/entity/req/performance/PerformanceExportExcelParam.java +++ b/common/src/main/java/com/sdm/common/entity/req/performance/PerformanceExportExcelParam.java @@ -15,4 +15,14 @@ public class PerformanceExportExcelParam { */ private String runId; + /** + * 仿真参数库名称 + */ + private String poolName; + + /** + * 仿真参数库版本 + */ + private String version; + } diff --git a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java index ab00d8e4..c9e40f6b 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationRunController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationRunController.java @@ -95,8 +95,8 @@ public class SimulationRunController implements ISimulationRunFeignClient { /** * 上传算例文件 */ - @PostMapping(value = "/uploadRunFiles", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public SdmResponse uploadRunFiles(UploadFilesReq req) { + @PostMapping(value = "/uploadRunFiles") + public SdmResponse uploadRunFiles(@RequestBody UploadFilesReq req) { return runService.uploadRunFiles(req); } diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java index bca31a2b..ad8535cc 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationRunServiceImpl.java @@ -725,8 +725,8 @@ public class SimulationRunServiceImpl extends ServiceImpl> getTaskPoolPerformanceWithVersion(@RequestParam String poolName, @RequestParam String version) + { + return service.getTaskPoolPerformanceWithVersion(poolName, version); + } + @GetMapping(value = "/getTaskPoolVersions") @ResponseBody SdmResponse getSimulationTaskPoolVersions(@RequestParam String poolName) diff --git a/task/src/main/java/com/sdm/task/service/ISimulationPerformanceService.java b/task/src/main/java/com/sdm/task/service/ISimulationPerformanceService.java index 7c3c6a58..00a34013 100644 --- a/task/src/main/java/com/sdm/task/service/ISimulationPerformanceService.java +++ b/task/src/main/java/com/sdm/task/service/ISimulationPerformanceService.java @@ -48,4 +48,6 @@ public interface ISimulationPerformanceService extends IService> getTaskPoolPerformanceWithVersion(String poolName, String version); + SdmResponse getSimulationPoolTasks(String poolName,String version); SdmResponse> getSimulationTasksByPoolId(long poolId); diff --git a/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java b/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java index 518d0f43..e1dba5c8 100644 --- a/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java +++ b/task/src/main/java/com/sdm/task/service/impl/SimulationPerformanceServiceImpl.java @@ -16,9 +16,11 @@ import com.sdm.task.model.dto.TaskPerformanceDto; import com.sdm.task.model.entity.SimulationPerformance; import com.sdm.task.dao.SimulationPerformanceMapper; import com.sdm.task.model.entity.SimulationTask; +import com.sdm.task.model.entity.TaskPoolPerformance; import com.sdm.task.model.req.BatchAddTaskPerformanceReq; import com.sdm.task.service.ISimulationPerformanceService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.sdm.task.service.ISimulationTaskPoolService; import com.sdm.task.service.ISimulationTaskService; import jakarta.servlet.http.HttpServletResponse; import org.apache.commons.collections4.CollectionUtils; @@ -45,6 +47,9 @@ public class SimulationPerformanceServiceImpl extends ServiceImpl exportExcelFormats = performanceExportExcelFormat.getExcelHeaders(); + SdmResponse> sdmResponse = simulationTaskPoolService.getTaskPoolPerformanceWithVersion(poolName, version); + if(sdmResponse.getData() != null) { + List dataList = sdmResponse.getData(); + if (CollectionUtils.isEmpty(dataList)) { + ExcelUtil.exportExcelNoMerge(new JSONArray(),exportExcelFormats,httpServletResponse); + return response; + } + ExcelUtil.exportExcelNoMerge(JSONArray.from(dataList),exportExcelFormats,httpServletResponse); + } else { + return sdmResponse; + } + return response; + } + } diff --git a/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java b/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java index 30ab42b4..0ddfbede 100644 --- a/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java +++ b/task/src/main/java/com/sdm/task/service/impl/SimulationTaskPoolServiceImpl.java @@ -32,6 +32,8 @@ import com.sdm.task.model.req.QueryTaskPoolReq; import com.sdm.task.service.ISimulationTaskPoolService; import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; @@ -826,6 +828,62 @@ public class SimulationTaskPoolServiceImpl extends BaseService implements ISimul return response; } + /** + * 根据仿真指标库名称和版本查询 + * @param poolName + * @param version + * @return + */ + public SdmResponse> getTaskPoolPerformanceWithVersion(String poolName, String version) + { + List taskPoolVersions = mapper.queryTaskPoolVersion(poolName, version); + if (CollectionUtils.isNotEmpty(taskPoolVersions)) { + String versionContents = taskPoolVersions.get(0).versionContents; + if (StringUtil.isNotEmpty(versionContents)) { + JSONObject root = JSONObject.parseObject(versionContents); + JSONArray nodes = root.getJSONArray("nodes"); + if (nodes == null || nodes.isEmpty()) { + return SdmResponse.success(); + } + + List performanceNodes = new ArrayList<>(); + // 遍历每个根节点 + for (int i = 0; i < nodes.size(); i++) { + JSONObject node = nodes.getJSONObject(i); + findPerformanceNodesRecursive(node, performanceNodes); + } + + List performances = performanceNodes.stream().map(i -> { + TaskPoolPerformance taskPoolPerformance = JSONObject.parseObject(i.toString(), TaskPoolPerformance.class); + return taskPoolPerformance; + }).toList(); + return SdmResponse.success(performances); + } + } + return SdmResponse.success(); + } + + private static void findPerformanceNodesRecursive(JSONObject node, List result) { + if (node == null) { + return; + } + + // 检查当前节点是否为 performance 类型 + String nodeType = node.getString("nodeType"); + if ("performance".equals(nodeType)) { + result.add(node); + } + + // 递归处理子节点 + JSONArray children = node.getJSONArray("children"); + if (children != null && !children.isEmpty()) { + for (int i = 0; i < children.size(); i++) { + JSONObject child = children.getJSONObject(i); + findPerformanceNodesRecursive(child, result); + } + } + } + /** * 发起仿真库评审 * @param templateId