From 8e53c52cd650c7df103cb0ed364ed51bf460ed37 Mon Sep 17 00:00:00 2001 From: yangyang01000846 <15195822163@163.com> Date: Tue, 13 Jan 2026 17:00:54 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9Ahpc=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A1=A8=E5=A2=9E=E5=8A=A0minio=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=A4=B9dirId=EF=BC=8C=E7=94=A8=E4=BA=8E=E5=9B=9E=E4=BC=A0?= =?UTF-8?q?=E9=80=9A=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1-sql/2026-01-13/yang.sql | 1 + .../entity/req/pbs/SubmitHpcTaskRemoteReq.java | 3 +++ .../flowable/delegate/handler/HpcHandler.java | 16 +++++++++++----- .../com/sdm/pbs/model/entity/SimulationJob.java | 5 +++++ .../com/sdm/pbs/model/req/SubmitHpcTaskReq.java | 3 +++ .../pbs/service/impl/PbsServiceDecorator.java | 2 ++ 6 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 1-sql/2026-01-13/yang.sql diff --git a/1-sql/2026-01-13/yang.sql b/1-sql/2026-01-13/yang.sql new file mode 100644 index 00000000..6fc93e6f --- /dev/null +++ b/1-sql/2026-01-13/yang.sql @@ -0,0 +1 @@ +ALTER TABLE `simulation_job` ADD COLUMN `dirId` bigint DEFAULT NULL COMMENT '文件的minio系统的id' ; \ No newline at end of file diff --git a/common/src/main/java/com/sdm/common/entity/req/pbs/SubmitHpcTaskRemoteReq.java b/common/src/main/java/com/sdm/common/entity/req/pbs/SubmitHpcTaskRemoteReq.java index 5e4d7c51..44488b20 100644 --- a/common/src/main/java/com/sdm/common/entity/req/pbs/SubmitHpcTaskRemoteReq.java +++ b/common/src/main/java/com/sdm/common/entity/req/pbs/SubmitHpcTaskRemoteReq.java @@ -77,4 +77,7 @@ public class SubmitHpcTaskRemoteReq implements Serializable { @Schema(description = "任务流用户传递的参数,用于动态替换命令") private Map params; + @Schema(description = "当前hpc节点文件目录id,用于hpc文件回传") + private Long dirId; + } diff --git a/flowable/src/main/java/com/sdm/flowable/delegate/handler/HpcHandler.java b/flowable/src/main/java/com/sdm/flowable/delegate/handler/HpcHandler.java index d0054bf2..42d8b0ca 100644 --- a/flowable/src/main/java/com/sdm/flowable/delegate/handler/HpcHandler.java +++ b/flowable/src/main/java/com/sdm/flowable/delegate/handler/HpcHandler.java @@ -23,6 +23,7 @@ import com.sdm.flowable.service.IProcessNodeParamService; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; +import org.apache.commons.lang3.tuple.Pair; import org.flowable.engine.delegate.DelegateExecution; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -166,7 +167,8 @@ public class HpcHandler implements ExecutionHandler,HPCExecu submitHpcTaskRemoteReq.setExecuteMode(executeMode); if(Objects.equals(executeMode,FlowableConfig.EXECUTE_MODE_AUTO)){ ProcessNodeParam beforeNode = beforeNodeParams.get(0); - String beforeNodeJectKey = getNodeObjectKey(beforeNode); + Pair beforePair = getNodeObjectKey(beforeNode); + String beforeNodeJectKey = beforePair.getLeft(); // 本地求解文件路径 taskLocalBaseDir String simulationFilePath = simulationBaseDir + beforeNodeJectKey; submitHpcTaskRemoteReq.setSimulationFileLocalPath(simulationFilePath); @@ -185,7 +187,11 @@ public class HpcHandler implements ExecutionHandler,HPCExecu } // hpc 节点回传路径 ProcessNodeParam currentNode = currentNodeParams.get(0); - String currentNodeJectKey = getNodeObjectKey(currentNode); + Pair currentNodePair = getNodeObjectKey(currentNode); + String currentNodeJectKey = currentNodePair.getLeft(); + Long curDirId = currentNodePair.getRight(); + // 当前节点的minio文件夹id,用于hpc文件回传,走data服务的接口 + submitHpcTaskRemoteReq.setDirId(curDirId); // hpc 回传minio文件路径,桶和租户绑定 submitHpcTaskRemoteReq.setStdoutSpdmMinoFilePath(currentNodeJectKey); // hpc 回传本地文件路径 @@ -210,8 +216,8 @@ public class HpcHandler implements ExecutionHandler,HPCExecu .orElse(List.of()); } - - private String getNodeObjectKey(ProcessNodeParam processNodeParam){ + // String 当前的objectKey Long 节点对应的dirId + private Pair getNodeObjectKey(ProcessNodeParam processNodeParam){ String paramJson = processNodeParam.getParamJson(); JSONObject paramJsonObject = JSONObject.parseObject(paramJson); // outputDirId @@ -226,7 +232,7 @@ public class HpcHandler implements ExecutionHandler,HPCExecu } FileMetadataInfoResp fileMetadataInfoResp = fileBaseInfoResp.getData(); String objectKey = fileMetadataInfoResp.getObjectKey(); - return objectKey; + return Pair.of(objectKey,outputDirId); } /** diff --git a/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java b/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java index 6f77bff4..a1d924d8 100644 --- a/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java +++ b/pbs/src/main/java/com/sdm/pbs/model/entity/SimulationJob.java @@ -168,4 +168,9 @@ public class SimulationJob implements Serializable { @TableField(value = "updateTime", fill = FieldFill.INSERT_UPDATE) @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; + + @Schema(description = "当前节点minio文件夹id") + @TableField("dirId") + private Long dirId; + } \ No newline at end of file diff --git a/pbs/src/main/java/com/sdm/pbs/model/req/SubmitHpcTaskReq.java b/pbs/src/main/java/com/sdm/pbs/model/req/SubmitHpcTaskReq.java index 93d269db..ffdabed5 100644 --- a/pbs/src/main/java/com/sdm/pbs/model/req/SubmitHpcTaskReq.java +++ b/pbs/src/main/java/com/sdm/pbs/model/req/SubmitHpcTaskReq.java @@ -92,4 +92,7 @@ public class SubmitHpcTaskReq { @Schema(description = "hpc结果输出文件,comsol文件定制,如原来是123_dianxin.mph --》123_dianxin_result.mph,用于动态替换命令") private String comsolResultName; + @Schema(description = "当前hpc节点文件目录id,用于hpc文件回传") + private Long dirId; + } diff --git a/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java b/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java index 2535251b..007f4a01 100644 --- a/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java +++ b/pbs/src/main/java/com/sdm/pbs/service/impl/PbsServiceDecorator.java @@ -312,6 +312,8 @@ public class PbsServiceDecorator implements IPbsServiceDecorator { simulationJob.setCreateTime(LocalDateTime.now()); simulationJob.setUpdaterId(userId); simulationJob.setUpdateTime(LocalDateTime.now()); + // 当前节点minio的文件夹id + simulationJob.setDirId(req.getDirId()); simulationJobService.save(simulationJob); } }