From 58846b34cbf72f9a41f31a385320e06bc3622035 Mon Sep 17 00:00:00 2001 From: zhuxinru Date: Mon, 17 Nov 2025 15:12:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E4=BB=BB=E5=8A=A1=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E7=AE=97=E4=BE=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sdm/common/entity/pojo/BaseEntity.java | 6 +- .../impl/data/DataClientFeignClientImpl.java | 13 +++ .../feign/inter/data/IDataFeignClient.java | 6 +- .../FeignMdcRequestInterceptor.java | 6 ++ .../data/controller/DataFileController.java | 7 ++ .../sdm/data/service/IDataFileService.java | 3 + .../impl/MinioFileIDataFileServiceImpl.java | 10 +++ .../impl/SystemFileIDataFileServiceImpl.java | 6 ++ .../common/RunPerformanceStatusEnum.java | 26 ++++++ .../com/sdm/project/common/RunStatusEnum.java | 25 ++++++ .../controller/SimulationTaskController.java | 8 ++ .../model/entity/SimulationPerformance.java | 5 +- .../project/model/entity/SimulationRun.java | 60 ++++++++++--- .../project/model/req/SpdmAddTaskRunReq.java | 35 ++++++++ .../com/sdm/project/service/ITaskService.java | 2 + .../project/service/impl/NodeServiceImpl.java | 7 ++ .../project/service/impl/TaskServiceImpl.java | 86 ++++++++++++++++++- .../SimulationSystemConfigServiceImpl.java | 7 ++ 18 files changed, 303 insertions(+), 15 deletions(-) create mode 100644 project/src/main/java/com/sdm/project/common/RunPerformanceStatusEnum.java create mode 100644 project/src/main/java/com/sdm/project/common/RunStatusEnum.java create mode 100644 project/src/main/java/com/sdm/project/model/req/SpdmAddTaskRunReq.java diff --git a/common/src/main/java/com/sdm/common/entity/pojo/BaseEntity.java b/common/src/main/java/com/sdm/common/entity/pojo/BaseEntity.java index 7de5db6c..9258a4e9 100644 --- a/common/src/main/java/com/sdm/common/entity/pojo/BaseEntity.java +++ b/common/src/main/java/com/sdm/common/entity/pojo/BaseEntity.java @@ -1,5 +1,6 @@ package com.sdm.common.entity.pojo; +import com.fasterxml.jackson.annotation.JsonFormat; import com.sdm.common.entity.bo.BaseBean; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; @@ -12,21 +13,24 @@ public class BaseEntity extends BaseBean { public String company; @Schema(description = "更新者ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) public long updater; @Schema(description = "更新者名称") - public long updateName; + public String updateName; @Schema(description = "更新时间") public String updateTime; @Schema(description = "租户ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) public Long tenantId; @Schema(description = "模版创建者名称") public String createName; @Schema(description = "创建者ID") + @JsonFormat(shape = JsonFormat.Shape.STRING) public long creator; @Schema(description = "创建时间") diff --git a/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java index ea9c4257..1f06b5b5 100644 --- a/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java +++ b/common/src/main/java/com/sdm/common/feign/impl/data/DataClientFeignClientImpl.java @@ -98,4 +98,17 @@ public class DataClientFeignClientImpl implements IDataFeignClient { } } + @Override + public SdmResponse queryFileMetadataInfo(String uuid, String uuidOwnType) { + SdmResponse response; + try { + response = dataClient.queryFileMetadataInfo(uuid, uuidOwnType); + 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/IDataFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java index f29ce051..a3c6768c 100644 --- a/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java +++ b/common/src/main/java/com/sdm/common/feign/inter/data/IDataFeignClient.java @@ -37,7 +37,11 @@ public interface IDataFeignClient { @PostMapping("/data/approveDataFile") SdmResponse approveDataFile(@RequestBody LaunchApproveReq req); - @PostMapping(value = "/uploadSimulationNodeFiles",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + @PostMapping(value = "/data/uploadFiles",consumes = MediaType.MULTIPART_FORM_DATA_VALUE) SdmResponse uploadFiles(UploadFilesReq req); + @GetMapping("/data/queryFileMetadataInfo") + SdmResponse queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType); + + } diff --git a/common/src/main/java/com/sdm/common/interceptor/FeignMdcRequestInterceptor.java b/common/src/main/java/com/sdm/common/interceptor/FeignMdcRequestInterceptor.java index 71db75f8..fb042bf2 100644 --- a/common/src/main/java/com/sdm/common/interceptor/FeignMdcRequestInterceptor.java +++ b/common/src/main/java/com/sdm/common/interceptor/FeignMdcRequestInterceptor.java @@ -22,5 +22,11 @@ public class FeignMdcRequestInterceptor implements RequestInterceptor { if (tenantId != null) { template.header("tenantid", String.valueOf(tenantId)); } + + // 传递userId + Long userId = ThreadLocalContext.getUserId(); + if (userId != null) { + template.header("userid", String.valueOf(userId)); + } } } \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/controller/DataFileController.java b/data/src/main/java/com/sdm/data/controller/DataFileController.java index 9412e393..adbf066c 100644 --- a/data/src/main/java/com/sdm/data/controller/DataFileController.java +++ b/data/src/main/java/com/sdm/data/controller/DataFileController.java @@ -380,4 +380,11 @@ public class DataFileController implements IDataFeignClient { return IDataFileService.getKKFileViewURLFromMinio(fileId); } + @GetMapping("/queryFileMetadataInfo") + @Operation(summary = "根据节点uuid获取节点文件夹信息", description = "获取节点文件夹信息") + public SdmResponse queryFileMetadataInfo(@RequestParam(value = "uuid") String uuid, @RequestParam(value = "uuidOwnType") String uuidOwnType) { + return IDataFileService.queryFileMetadataInfo(uuid, uuidOwnType); + } + + } \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/service/IDataFileService.java b/data/src/main/java/com/sdm/data/service/IDataFileService.java index ea6e7c66..ce5be5d2 100644 --- a/data/src/main/java/com/sdm/data/service/IDataFileService.java +++ b/data/src/main/java/com/sdm/data/service/IDataFileService.java @@ -318,4 +318,7 @@ public interface IDataFileService { */ default SdmResponse approveDataFile(LaunchApproveReq req){return null;}; + + SdmResponse queryFileMetadataInfo(String uuid, String uuidOwnType); + } \ No newline at end of file diff --git a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java index 1730e676..385ecc74 100644 --- a/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/MinioFileIDataFileServiceImpl.java @@ -184,6 +184,16 @@ public class MinioFileIDataFileServiceImpl implements IDataFileService { } + @Override + public SdmResponse queryFileMetadataInfo(String uuid, String uuidOwnType) { + FileMetadataInfo entity = fileMetadataInfoService.lambdaQuery() + .eq(FileMetadataInfo::getRelatedResourceUuid,uuid) + .eq(FileMetadataInfo::getRelatedResourceUuidOwnType,uuidOwnType).one(); + FileMetadataInfoResp dto = new FileMetadataInfoResp(); + BeanUtils.copyProperties(entity, dto); + return SdmResponse.success(dto); + } + /** * 校验审批回调请求参数的合法性 * @param req 审批回调请求对象 diff --git a/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java b/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java index 33c160d8..98c672f0 100644 --- a/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java +++ b/data/src/main/java/com/sdm/data/service/impl/SystemFileIDataFileServiceImpl.java @@ -13,6 +13,7 @@ import com.sdm.common.entity.pojo.system.SysUserInfo; import com.sdm.common.entity.req.data.CreateDirReq; import com.sdm.common.entity.req.data.DelDirReq; import com.sdm.common.entity.req.data.UploadFilesReq; +import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.data.model.req.RenameFileReq; import com.sdm.common.service.CommonService; import com.sdm.common.utils.*; @@ -1276,6 +1277,11 @@ public class SystemFileIDataFileServiceImpl implements IDataFileService { return SdmResponse.success(); } + @Override + public SdmResponse queryFileMetadataInfo(String uuid, String uuidOwnType) { + return null; + } + @Override public void downloadFile(DownloadFileReq req, HttpServletResponse response) { if (StringUtils.isNotBlank(req.getPath()) && req.getPath().contains("..")) { diff --git a/project/src/main/java/com/sdm/project/common/RunPerformanceStatusEnum.java b/project/src/main/java/com/sdm/project/common/RunPerformanceStatusEnum.java new file mode 100644 index 00000000..08ddace9 --- /dev/null +++ b/project/src/main/java/com/sdm/project/common/RunPerformanceStatusEnum.java @@ -0,0 +1,26 @@ +package com.sdm.project.common; + +import lombok.Getter; + +/** + * 指标完成情况状态枚举 + */ +@Getter +public enum RunPerformanceStatusEnum { + + UNCOMPLETED("未完成", "0"), + NOT_STARTED("不合格", "1"), + RISK_CONTROL("风险可控", "2"), + UNANALYZED("未分析", "3"), + STARTED("合格", "4"); + + private final String name; + + private final String code; + + RunPerformanceStatusEnum(String name, String code) { + this.name = name; + this.code = code; + } + +} \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/common/RunStatusEnum.java b/project/src/main/java/com/sdm/project/common/RunStatusEnum.java new file mode 100644 index 00000000..cf88c7b5 --- /dev/null +++ b/project/src/main/java/com/sdm/project/common/RunStatusEnum.java @@ -0,0 +1,25 @@ +package com.sdm.project.common; + +import lombok.Getter; + +/** + * 算例完成情况状态枚举 + */ +@Getter +public enum RunStatusEnum { + + UNCOMPLETED("未完成", 0), + RUNNING("执行中", 1), + COMPLETED("完成", 2), + FAILED("失败", 3); + + private final String name; + + private final Integer code; + + RunStatusEnum(String name, Integer code) { + this.name = name; + this.code = code; + } + +} \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java index 7164a6f6..820af372 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationTaskController.java @@ -89,4 +89,12 @@ public class SimulationTaskController { return taskService.listUserWorkloadsWithinTimeFrame(req); } + /** + * 任务执行 创建算例 + */ + @PostMapping("/addTaskRun") + public SdmResponse addTaskRun(@RequestBody @Validated SpdmAddTaskRunReq req) { + return taskService.addTaskRun(req); + } + } diff --git a/project/src/main/java/com/sdm/project/model/entity/SimulationPerformance.java b/project/src/main/java/com/sdm/project/model/entity/SimulationPerformance.java index f0f46dcf..67d569df 100644 --- a/project/src/main/java/com/sdm/project/model/entity/SimulationPerformance.java +++ b/project/src/main/java/com/sdm/project/model/entity/SimulationPerformance.java @@ -78,7 +78,7 @@ public class SimulationPerformance implements Serializable { @TableField("method") private String method; - @ApiModelProperty(value = " 指标完成情况 未分析 不合格 合格") + @ApiModelProperty(value = "指标完成情况 未完成 不合格 风险可控 未分析 合格") @TableField("completeStatus") private String completeStatus; @@ -101,6 +101,9 @@ public class SimulationPerformance implements Serializable { @TableField("createTime") private LocalDateTime createTime; + @TableField("creator") + private Long creator; + @TableField("pid") private Integer pid; diff --git a/project/src/main/java/com/sdm/project/model/entity/SimulationRun.java b/project/src/main/java/com/sdm/project/model/entity/SimulationRun.java index 775d8174..7a1c67d5 100644 --- a/project/src/main/java/com/sdm/project/model/entity/SimulationRun.java +++ b/project/src/main/java/com/sdm/project/model/entity/SimulationRun.java @@ -1,12 +1,14 @@ package com.sdm.project.model.entity; -import com.baomidou.mybatisplus.annotation.TableField; -import com.baomidou.mybatisplus.annotation.TableName; -import com.baomidou.mybatisplus.annotation.IdType; -import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.*; + import java.io.Serializable; +import java.time.LocalDateTime; + +import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; @@ -34,34 +36,53 @@ public class SimulationRun implements Serializable { @TableField("uuid") private String uuid; - @TableField("run_name") + @TableField("runName") private String runName; @ApiModelProperty(value = "1:server 2:pbs 3:local only") @TableField("type") private Integer type; - @TableField("task_id") + @TableField("taskId") private String taskId; + @ApiModelProperty(value = "流程模板名称") + @TableField("templateName") + private String templateName; + @ApiModelProperty(value = "Run状态 0:未执行 1:执行中 2:完成 3:失败") @TableField("status") private Integer status; + @ApiModelProperty(value = "Run总共的流程步骤") + @TableField("totalStep") + private Integer totalStep; + + @ApiModelProperty(value = "当前的流程步骤") + @TableField("currentStep") + private Integer currentStep; + @ApiModelProperty(value = "Run执行结果 0:gray 1:red 2:yellow 3:green") - @TableField("achieve_status") - private Integer achieveStatus; + @TableField("result") + private Integer result; @ApiModelProperty(value = "run描述信息") @TableField("description") private String description; @ApiModelProperty(value = "Run对应在文件系统中的路径") - @TableField("folder_id") + @TableField("folderId") private String folderId; - @TableField("tenant_id") - private String tenantId; + @ApiModelProperty(value = "计算父版本Id") + @TableField("parentId") + private String parentId; + + @TableField("isPersonalTemplate") + private String isPersonalTemplate; + + @TableField("tenantId") + private Long tenantId; @TableField("tag1") private String tag1; @@ -93,5 +114,22 @@ public class SimulationRun implements Serializable { @TableField("tag10") private String tag10; + @Schema(description= "创建者ID") + @TableField("creator") + private Long creator; + + @Schema(description= "创建时间") + @TableField("createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime createTime; + + @Schema(description= "更新者ID") + @TableField("updater") + private Long updater; + + @Schema(description= "创建时间") + @TableField("updateTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime updateTime; } diff --git a/project/src/main/java/com/sdm/project/model/req/SpdmAddTaskRunReq.java b/project/src/main/java/com/sdm/project/model/req/SpdmAddTaskRunReq.java new file mode 100644 index 00000000..54508acd --- /dev/null +++ b/project/src/main/java/com/sdm/project/model/req/SpdmAddTaskRunReq.java @@ -0,0 +1,35 @@ +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 SpdmAddTaskRunReq { + + @NotBlank(message = "runName不能为空") + @Schema(description = "算例名称") + private String runName; + + @Schema(description = "备注") + private String description; + + @NotBlank(message = "templateName不能为空") + @Schema(description = "流程模板名称") + private String templateName; + +// @NotNull(message = "totalStep不能为空") + @Schema(description = "总步骤") + private Integer totalStep; + + @NotNull(message = "taskId不能为空") + @Schema(description = "任务uuid") + private String taskId; + + @Schema(description = "父算例uuid") + private String parentId; + + private String isPersonalTemplate; + +} diff --git a/project/src/main/java/com/sdm/project/service/ITaskService.java b/project/src/main/java/com/sdm/project/service/ITaskService.java index eb550ad9..8d778318 100644 --- a/project/src/main/java/com/sdm/project/service/ITaskService.java +++ b/project/src/main/java/com/sdm/project/service/ITaskService.java @@ -36,4 +36,6 @@ public interface ITaskService { SdmResponse> listUserWorkloadsWithinTimeFrame(UserWorkloadReq req); + SdmResponse addTaskRun(SpdmAddTaskRunReq 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 89b7ef97..c6c30f45 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 @@ -132,6 +132,13 @@ public class NodeServiceImpl extends ServiceImpl editNodeList = req.getEditNodeList(); if (CollectionUtils.isNotEmpty(editNodeList)) { + for (SpdmNodeDetailReq editNode : editNodeList) { + if (StringUtils.isNotBlank(editNode.getEndTime()) && StringUtils.isNotBlank(editNode.getBeginTime())) { + if (DateUtils.parse(editNode.getEndTime(), DateUtils.PATTERN_DEFAULT).before(DateUtils.parse(editNode.getBeginTime(), DateUtils.PATTERN_DEFAULT))) { + return SdmResponse.failed("计划结束时间不能早于计划开始时间"); + } + } + } // 手动回滚数据 if (!editNode(editNodeList, tenantId, jobNumber)) { TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); diff --git a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java index 6e73a447..c42e1aae 100644 --- a/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/TaskServiceImpl.java @@ -4,11 +4,17 @@ import com.alibaba.fastjson2.JSONObject; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.constants.ProjectConstants; +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.system.UserQueryReq; +import com.sdm.common.entity.resp.data.FileMetadataInfoResp; import com.sdm.common.entity.resp.system.CIDUserResp; import com.sdm.common.feign.impl.system.SysUserFeignClientImpl; +import com.sdm.common.feign.inter.data.IDataFeignClient; +import com.sdm.common.utils.RandomUtil; import com.sdm.project.common.MemberTypeEnum; +import com.sdm.project.common.RunPerformanceStatusEnum; import com.sdm.project.common.TaskExeStatusEnum; import com.sdm.project.dao.SimulationDemandMapper; import com.sdm.project.dao.SimulationNodeMapper; @@ -37,6 +43,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.io.File; import java.text.SimpleDateFormat; import java.util.*; import java.util.stream.Collectors; @@ -78,7 +85,8 @@ public class TaskServiceImpl implements ITaskService { private ISimulationTaskExtraService simulationTaskExtraService; @Autowired private ISimulationTaskAttentionService simulationTaskAttentionService; - + @Autowired + private IDataFeignClient dataFeignClient; @Override public SdmResponse list(SpdmTaskListReq req) { @@ -933,6 +941,7 @@ public class TaskServiceImpl implements ITaskService { } @Override + @Transactional(rollbackFor = Exception.class) public SdmResponse batchDeleteTask(SpdmTaskOpr taskOpr) { List taskIds = taskOpr.getTaskIds(); simulationTaskService.lambdaUpdate().in(SimulationTask::getUuid, taskIds).remove(); @@ -962,4 +971,79 @@ public class TaskServiceImpl implements ITaskService { } return SdmResponse.success(userWorkloadRespList); } + + @Override + @Transactional(rollbackFor = Exception.class) + public SdmResponse addTaskRun(SpdmAddTaskRunReq req) { + Long userId = ThreadLocalContext.getUserId(); + Long tenantId = ThreadLocalContext.getTenantId(); + + SimulationTask simulationTask = simulationTaskService.lambdaQuery().eq(SimulationTask::getUuid, req.getTaskId()).one(); + SimulationRun taskRun = simulationRunService.lambdaQuery().eq(SimulationRun::getTaskId, req.getTaskId()).eq(SimulationRun::getRunName, req.getRunName()).one(); + if (simulationTask == null) { + return SdmResponse.failed("任务不存在"); + } else if (taskRun != null) { + return SdmResponse.failed("算例已存在"); + } else { + SimulationRun simulationRun = new SimulationRun(); + // 设置算例的文件夹路径 挂在所属任务下面 + SdmResponse fileMetadataInfoResp = dataFeignClient.queryFileMetadataInfo(simulationTask.getUuid(), NodeTypeEnum.TASK.getValue()); + if (fileMetadataInfoResp.getData() != null) { + simulationRun.setFolderId(fileMetadataInfoResp.getData().getObjectKey() + req.getRunName()); + } + simulationRun.setUuid(RandomUtil.generateString(32)); + simulationRun.setRunName(req.getRunName()); + simulationRun.setTaskId(req.getTaskId()); + simulationRun.setDescription(req.getDescription()); + simulationRun.setTotalStep(req.getTotalStep()); + simulationRun.setParentId(req.getParentId()); + simulationRun.setTemplateName(req.getTemplateName()); + simulationRun.setCreator(userId); + simulationRun.setUpdater(userId); + simulationRun.setTenantId(tenantId); + + if (!simulationRunService.save(simulationRun)) { + return SdmResponse.failed("新建算例失败"); + } else { + // taskId不为null,runId为null,查询所有工况设定的标准指标 + List simulationTaskPerformances = simulationPerformanceService.lambdaQuery() + .eq(SimulationPerformance::getTaskId, simulationTask.getUuid()) + .isNull(SimulationPerformance::getRunId) + .list(); + if(CollectionUtils.isNotEmpty(simulationTaskPerformances)) { + List runPerformanceList = new ArrayList<>(); + for (SimulationPerformance performanceBean : simulationTaskPerformances) { + SimulationPerformance runPerformance = new SimulationPerformance(); + BeanUtils.copyProperties(performanceBean, runPerformance); + runPerformance.setId(null); + runPerformance.setRunId(simulationRun.getUuid()); + runPerformance.setUuid(RandomUtil.generateString(32)); + runPerformance.setCompleteStatus(RunPerformanceStatusEnum.UNCOMPLETED.getCode()); + runPerformance.setCreator(userId); + runPerformance.setCreateTime(null); + runPerformanceList.add(runPerformance); + } + if (CollectionUtils.size(runPerformanceList) > 0) { + simulationPerformanceService.saveBatch(runPerformanceList); + } + } + CreateDirReq createDirReq = new CreateDirReq(); + createDirReq.setUuId(simulationRun.getUuid()); + if (fileMetadataInfoResp.getData() != null) { + createDirReq.setParDirId(fileMetadataInfoResp.getData().getId()); + } + createDirReq.setUuIdOwnType(NodeTypeEnum.RUN.getValue()); + createDirReq.setDirName(req.getRunName()); + createDirReq.setDirType(DirTypeEnum.PROJECT_NODE_DIR.getValue()); + log.info("创建算例时,调用创建文件夹的参数为:{}", createDirReq); + SdmResponse response = dataFeignClient.createDir(createDirReq); + log.info("创建算例时,调用创建文件夹的返回值为:{}", response); + if (!response.isSuccess()) { + simulationRunService.removeById(simulationRun.getUuid()); + simulationPerformanceService.lambdaUpdate().eq(SimulationPerformance::getRunId, simulationRun.getUuid()).remove(); + } + } + return SdmResponse.success(simulationRun.getUuid()); + } + } } diff --git a/system/src/main/java/com/sdm/system/service/impl/SimulationSystemConfigServiceImpl.java b/system/src/main/java/com/sdm/system/service/impl/SimulationSystemConfigServiceImpl.java index 6ec593b2..d4aa9aec 100644 --- a/system/src/main/java/com/sdm/system/service/impl/SimulationSystemConfigServiceImpl.java +++ b/system/src/main/java/com/sdm/system/service/impl/SimulationSystemConfigServiceImpl.java @@ -24,6 +24,7 @@ import org.apache.commons.lang3.StringUtils; 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.List; import java.util.Map; @@ -259,6 +260,8 @@ public class SimulationSystemConfigServiceImpl extends BaseService implements IS * 添加系统表单配置 * @return */ + @Override + @Transactional(rollbackFor = Exception.class) public SdmResponse addSystemFormConfigure(FormConfigure configure) { SdmResponse response = SdmResponse.success(); if (CollectionUtils.isNotEmpty(formConfigureService.lambdaQuery().eq(SysFormConfigure::getFormName, configure.formName).list())) { @@ -278,6 +281,8 @@ public class SimulationSystemConfigServiceImpl extends BaseService implements IS /** * 更新系统表单配置 将原先新增和更新在一起的方法拆开,因为新增重复表单要提示 */ + @Override + @Transactional(rollbackFor = Exception.class) public SdmResponse updateSystemFormConfigure(FormConfigure configure) { SdmResponse response = SdmResponse.success(); if (CollectionUtils.isNotEmpty(formConfigureService.lambdaQuery().eq(SysFormConfigure::getFormName, configure.formName).list())) { @@ -299,6 +304,8 @@ public class SimulationSystemConfigServiceImpl extends BaseService implements IS /** * 删除系统表单配置 */ + @Override + @Transactional(rollbackFor = Exception.class) public SdmResponse deleteFormConfigure(FormConfigure configure) { if(!formConfigureService.removeById(configure.id)) { return SdmResponse.failed("删除表单配置失败");