fix:算例结果数据上传

This commit is contained in:
2025-11-19 15:04:28 +08:00
parent 3515b7c3a3
commit 5bb57ff1dc
25 changed files with 227 additions and 38 deletions

View File

@@ -1,11 +1,17 @@
package com.sdm.project.controller;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.QueryDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.project.model.entity.SimulationRun;
import com.sdm.project.model.req.ProjectTreeTagReq;
import com.sdm.project.model.req.SpdmAddTaskRunReq;
import com.sdm.project.model.req.SpdmTaskRunReq;
import com.sdm.project.service.ISimulationRunService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.http.MediaType;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
@@ -13,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping(value = "/run")
@@ -43,4 +50,44 @@ public class SimulationRunController {
return runService.addTaskRun(req);
}
/**
* 任务执行 删除算例
*/
@PostMapping("/deleteTaskRun")
public SdmResponse deleteTaskRun(@RequestBody SpdmTaskRunReq req) {
return runService.deleteTaskRun(req);
}
/**
* 查询算例详情
*/
@PostMapping("/queryTaskRun")
public SdmResponse<List<SimulationRun>> queryRunInfo(@RequestBody SpdmTaskRunReq req) {
return runService.queryTaskRun(req);
}
/**
* 创建算例文件夹
*/
@PostMapping(value = "/createRunDir")
public SdmResponse createRunDir(@RequestBody CreateDirReq req) {
return runService.createRunDir(req);
}
/**
* 创建算例文件夹
*/
@PostMapping(value = "/queryRunDir")
public SdmResponse queryRunDir(@RequestBody QueryDirReq req) {
return runService.queryRunDir(req);
}
/**
* 上传算例文件
*/
@PostMapping(value = "/uploadRunFiles", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public SdmResponse uploadRunFiles(UploadFilesReq req) {
return runService.uploadRunFiles(req);
}
}

View File

@@ -76,7 +76,7 @@ public class SimulationRun implements Serializable {
@ApiModelProperty(value = "Run对应在文件系统中的路径")
@TableField("folderId")
private String folderId;
private Long folderId;
@ApiModelProperty(value = "计算父版本Id")
@TableField("parentId")

View File

@@ -0,0 +1,21 @@
package com.sdm.project.model.req;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class SpdmTaskRunReq {
@Schema(description = "算例名称")
private String runName;
@Schema(description = "算例id")
private String runId;
@Schema(description = "任务uuid")
private String taskId;
}

View File

@@ -1,10 +1,14 @@
package com.sdm.project.service;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.QueryDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.project.model.entity.SimulationRun;
import com.baomidou.mybatisplus.extension.service.IService;
import com.sdm.project.model.req.ProjectTreeTagReq;
import com.sdm.project.model.req.SpdmAddTaskRunReq;
import com.sdm.project.model.req.SpdmTaskRunReq;
/**
* <p>
@@ -20,4 +24,14 @@ public interface ISimulationRunService extends IService<SimulationRun> {
SdmResponse addTaskRun(SpdmAddTaskRunReq req);
SdmResponse deleteTaskRun(SpdmTaskRunReq req);
SdmResponse queryTaskRun(SpdmTaskRunReq req);
SdmResponse createRunDir(CreateDirReq req);
SdmResponse queryRunDir(QueryDirReq req);
SdmResponse uploadRunFiles(UploadFilesReq req);
}

View File

@@ -1,11 +1,14 @@
package com.sdm.project.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.sdm.common.common.SdmResponse;
import com.sdm.common.common.ThreadLocalContext;
import com.sdm.common.entity.enums.DirTypeEnum;
import com.sdm.common.entity.enums.NodeTypeEnum;
import com.sdm.common.entity.req.data.CreateDirReq;
import com.sdm.common.entity.req.data.QueryDirReq;
import com.sdm.common.entity.req.data.UploadFilesReq;
import com.sdm.common.entity.req.system.UserQueryReq;
import com.sdm.common.entity.resp.data.FileMetadataInfoResp;
import com.sdm.common.entity.resp.system.CIDUserResp;
@@ -28,6 +31,7 @@ import com.sdm.project.model.po.TaskNodePo;
import com.sdm.project.model.req.ProjectTreeReq;
import com.sdm.project.model.req.ProjectTreeTagReq;
import com.sdm.project.model.req.SpdmAddTaskRunReq;
import com.sdm.project.model.req.SpdmTaskRunReq;
import com.sdm.project.service.ISimulationPerformanceService;
import com.sdm.project.service.ISimulationRunService;
import com.sdm.project.service.ISimulationTaskMemberService;
@@ -482,7 +486,7 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
// 设置算例的文件夹路径 挂在所属任务下面
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(simulationTask.getUuid(), NodeTypeEnum.TASK.getValue());
if (fileMetadataInfoResp.getData() != null) {
simulationRun.setFolderId(fileMetadataInfoResp.getData().getObjectKey() + req.getRunName());
simulationRun.setFolderId(fileMetadataInfoResp.getData().getId());
}
simulationRun.setUuid(RandomUtil.generateString(32));
simulationRun.setRunName(req.getRunName());
@@ -540,4 +544,55 @@ public class SimulationRunServiceImpl extends ServiceImpl<SimulationRunMapper, S
}
}
@Override
@Transactional(rollbackFor = Exception.class)
public SdmResponse deleteTaskRun(SpdmTaskRunReq req) {
if (this.removeById(req.getRunId())) {
return SdmResponse.success();
}
return SdmResponse.failed("删除算例失败");
}
@Override
public SdmResponse<List<SimulationRun>> queryTaskRun(SpdmTaskRunReq req) {
LambdaQueryWrapper<SimulationRun> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(req.getRunId())) {
queryWrapper.eq(SimulationRun::getUuid, req.getRunId());
}
if (StringUtils.isNotBlank(req.getRunName())) {
queryWrapper.eq(SimulationRun::getRunName, req.getRunName());
}
if (StringUtils.isNotBlank(req.getTaskId())) {
queryWrapper.eq(SimulationRun::getTaskId, req.getTaskId());
}
List<SimulationRun> simulationRunList = this.list(queryWrapper);
return SdmResponse.success(simulationRunList);
}
@Override
public SdmResponse createRunDir(CreateDirReq req) {
CreateDirReq createDirReq = new CreateDirReq();
// 获取算例文件夹id
SdmResponse<FileMetadataInfoResp> fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(req.getUuId(), NodeTypeEnum.RUN.getValue());
if (fileMetadataInfoResp.getData() != null) {
createDirReq.setParDirId(fileMetadataInfoResp.getData().getId());
}
createDirReq.setDirName(req.getDirName());
createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue());
log.info("创建算例结果时,调用创建文件夹的参数为:{}", createDirReq);
SdmResponse response = dataFeignClient.createDir(createDirReq);
log.info("创建算例结果时,调用创建文件夹的返回值为:{}", response);
return SdmResponse.success(response);
}
@Override
public SdmResponse queryRunDir(QueryDirReq req) {
return SdmResponse.success(dataFeignClient.queryDir(req));
}
@Override
public SdmResponse uploadRunFiles(UploadFilesReq req) {
return dataFeignClient.uploadFiles(req);
}
}