From 1d8e14fc9959da9b3ce79702f97f4e3266eee4fe Mon Sep 17 00:00:00 2001 From: gulongcheng <474084054@qq.com> Date: Wed, 7 Jan 2026 11:50:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96userTask=E4=BB=BB=E5=8A=A1?= =?UTF-8?q?=E9=94=99=E8=AF=AF=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../req/flowable/AsyncCallbackRequest.java | 3 +++ .../req/project}/SimulationLocalJobReq.java | 2 +- .../ISimulationLocalJobFeignClientImpl.java | 26 +++++++++++++++++++ .../ISimulationLocalJobFeignClient.java | 21 +++++++++++++++ .../controller/ProcessController.java | 23 ++++++++++++++++ .../SimulationLocalJobController.java | 5 ++-- .../service/ISimulationLocalJobService.java | 2 +- .../impl/SimulationLocalJobServiceImpl.java | 5 +--- 8 files changed, 79 insertions(+), 8 deletions(-) rename {project/src/main/java/com/sdm/project/model/req => common/src/main/java/com/sdm/common/entity/req/project}/SimulationLocalJobReq.java (97%) create mode 100644 common/src/main/java/com/sdm/common/feign/impl/project/ISimulationLocalJobFeignClientImpl.java create mode 100644 common/src/main/java/com/sdm/common/feign/inter/project/ISimulationLocalJobFeignClient.java diff --git a/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java b/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java index 7406ae2c..99f5166b 100644 --- a/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java +++ b/common/src/main/java/com/sdm/common/entity/req/flowable/AsyncCallbackRequest.java @@ -1,5 +1,6 @@ package com.sdm.common.entity.req.flowable; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; import lombok.Data; import java.io.Serializable; @@ -25,4 +26,6 @@ public class AsyncCallbackRequest implements Serializable { * 任务执行结果状态 */ private String status; + + private SimulationLocalJobReq simulationLocalJobReq; } \ No newline at end of file diff --git a/project/src/main/java/com/sdm/project/model/req/SimulationLocalJobReq.java b/common/src/main/java/com/sdm/common/entity/req/project/SimulationLocalJobReq.java similarity index 97% rename from project/src/main/java/com/sdm/project/model/req/SimulationLocalJobReq.java rename to common/src/main/java/com/sdm/common/entity/req/project/SimulationLocalJobReq.java index e8f045ff..90eb12eb 100644 --- a/project/src/main/java/com/sdm/project/model/req/SimulationLocalJobReq.java +++ b/common/src/main/java/com/sdm/common/entity/req/project/SimulationLocalJobReq.java @@ -1,4 +1,4 @@ -package com.sdm.project.model.req; +package com.sdm.common.entity.req.project; import lombok.Data; diff --git a/common/src/main/java/com/sdm/common/feign/impl/project/ISimulationLocalJobFeignClientImpl.java b/common/src/main/java/com/sdm/common/feign/impl/project/ISimulationLocalJobFeignClientImpl.java new file mode 100644 index 00000000..12b5b0a9 --- /dev/null +++ b/common/src/main/java/com/sdm/common/feign/impl/project/ISimulationLocalJobFeignClientImpl.java @@ -0,0 +1,26 @@ +package com.sdm.common.feign.impl.project; + +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; +import com.sdm.common.feign.inter.project.ISimulationLocalJobFeignClient; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Slf4j +@Component +public class ISimulationLocalJobFeignClientImpl implements ISimulationLocalJobFeignClient { + + @Autowired + private ISimulationLocalJobFeignClient simulationLocalJobService; + + @Override + public SdmResponse add(SimulationLocalJobReq req) { + try { + return simulationLocalJobService.add(req); + } catch (Exception e) { + log.error("新增本地应用任务失败",e); + return SdmResponse.failed("新增本地应用任务失败"); + } + } +} diff --git a/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationLocalJobFeignClient.java b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationLocalJobFeignClient.java new file mode 100644 index 00000000..1ce95f8a --- /dev/null +++ b/common/src/main/java/com/sdm/common/feign/inter/project/ISimulationLocalJobFeignClient.java @@ -0,0 +1,21 @@ +package com.sdm.common.feign.inter.project; + +import com.sdm.common.common.SdmResponse; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; +import com.sdm.common.log.annotation.SysLog; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +@FeignClient(name = "project",contextId = "localJobFeignClient") +public interface ISimulationLocalJobFeignClient { + /** + * 新增本地应用任务 + * + * @param req + * @return + */ + @PostMapping("/add") + SdmResponse add(@RequestBody SimulationLocalJobReq req); +} diff --git a/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java b/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java index de8df611..ee4e439b 100644 --- a/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java +++ b/flowable/src/main/java/com/sdm/flowable/controller/ProcessController.java @@ -2,19 +2,23 @@ package com.sdm.flowable.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.sdm.common.common.SdmResponse; +import com.sdm.common.common.ThreadLocalContext; import com.sdm.common.entity.flowable.dto.ProcessDefinitionDTO; import com.sdm.common.entity.flowable.executeConfig.HPCExecuteConfig; import com.sdm.common.entity.req.flowable.AsyncCallbackRequest; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; import com.sdm.common.entity.resp.flowable.DeployFlowableResp; import com.sdm.common.entity.resp.flowable.ProcessInstanceDetailResponse; import com.sdm.common.entity.resp.flowable.ProcessInstanceResp; import com.sdm.common.feign.inter.flowable.IFlowableFeignClient; +import com.sdm.common.feign.inter.project.ISimulationLocalJobFeignClient; import com.sdm.flowable.aop.StateGuard; import com.sdm.flowable.delegate.handler.HpcHandler; import com.sdm.flowable.dto.req.CompleteTaskReq; import com.sdm.flowable.dto.req.PreviewNodeInputFilesReq; import com.sdm.flowable.dto.req.RetryRequest; import com.sdm.flowable.dto.resp.NodeInputFilePreviewResp; +import com.sdm.flowable.enums.AsyncTaskStatusEnum; import com.sdm.flowable.enums.OperationTypeEnum; import com.sdm.flowable.process.ProcessService; import com.sdm.flowable.service.IProcessNodeParamService; @@ -41,6 +45,9 @@ public class ProcessController implements IFlowableFeignClient { @Autowired private IProcessNodeParamService processNodeParamService; + @Autowired + private ISimulationLocalJobFeignClient simulationLocalJobService; + @Autowired private HpcHandler hpcHandler; @@ -211,6 +218,22 @@ public class ProcessController implements IFlowableFeignClient { */ @PostMapping("/asyncCallback") public SdmResponse asyncCallback(@RequestBody AsyncCallbackRequest request) { + try { + // 保存本地应用任务执行结果 + SimulationLocalJobReq simulationLocalJobReq = request.getSimulationLocalJobReq(); + if(Objects.nonNull(simulationLocalJobReq)){ + ThreadLocalContext.setUserId(simulationLocalJobReq.getCreatorId()); + ThreadLocalContext.setTenantId(simulationLocalJobReq.getTenantId()); + simulationLocalJobReq.setJobStatus(request.getStatus()); + if(AsyncTaskStatusEnum.FAIL.getCode().equalsIgnoreCase(request.getStatus())){ + simulationLocalJobReq.setErrMsg(request.getResultJson()); + } + simulationLocalJobService.add(simulationLocalJobReq); + } + } catch (Exception e) { + log.error("异步回调失败: {}", request, e); + return SdmResponse.failed("异步回调失败"); + } log.info("开始处理异步回调请求: {}", request); // 发送信号唤醒流程实例中等待的节点 processService.asyncCallback(request); diff --git a/project/src/main/java/com/sdm/project/controller/SimulationLocalJobController.java b/project/src/main/java/com/sdm/project/controller/SimulationLocalJobController.java index 333a56fc..4aaa71fd 100644 --- a/project/src/main/java/com/sdm/project/controller/SimulationLocalJobController.java +++ b/project/src/main/java/com/sdm/project/controller/SimulationLocalJobController.java @@ -1,8 +1,9 @@ package com.sdm.project.controller; import com.sdm.common.common.SdmResponse; +import com.sdm.common.feign.inter.project.ISimulationLocalJobFeignClient; import com.sdm.common.log.annotation.SysLog; -import com.sdm.project.model.req.SimulationLocalJobReq; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; import com.sdm.project.model.req.SpdmLocalJobListReq; import com.sdm.project.service.ISimulationLocalJobService; import io.swagger.v3.oas.annotations.Operation; @@ -16,7 +17,7 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping(value = "/localJob") @Tag(name = "仿真本地应用任务管理", description = "仿真本地应用任务管理相关接口") -public class SimulationLocalJobController { +public class SimulationLocalJobController implements ISimulationLocalJobFeignClient { @Autowired private ISimulationLocalJobService simulationLocalJobService; diff --git a/project/src/main/java/com/sdm/project/service/ISimulationLocalJobService.java b/project/src/main/java/com/sdm/project/service/ISimulationLocalJobService.java index a4732823..98669170 100644 --- a/project/src/main/java/com/sdm/project/service/ISimulationLocalJobService.java +++ b/project/src/main/java/com/sdm/project/service/ISimulationLocalJobService.java @@ -3,7 +3,7 @@ package com.sdm.project.service; import com.baomidou.mybatisplus.extension.service.IService; import com.sdm.common.common.SdmResponse; import com.sdm.project.model.entity.SimulationLocalJob; -import com.sdm.project.model.req.SimulationLocalJobReq; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; import com.sdm.project.model.req.SpdmLocalJobListReq; /** diff --git a/project/src/main/java/com/sdm/project/service/impl/SimulationLocalJobServiceImpl.java b/project/src/main/java/com/sdm/project/service/impl/SimulationLocalJobServiceImpl.java index d2de2df8..aad464db 100644 --- a/project/src/main/java/com/sdm/project/service/impl/SimulationLocalJobServiceImpl.java +++ b/project/src/main/java/com/sdm/project/service/impl/SimulationLocalJobServiceImpl.java @@ -5,13 +5,10 @@ import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import com.sdm.common.common.SdmResponse; import com.sdm.common.common.ThreadLocalContext; -import com.sdm.common.utils.DateUtils; import com.sdm.common.utils.PageUtils; -import com.sdm.outbridge.entity.LyricVProjectToDM; import com.sdm.project.dao.SimulationLocalJobMapper; import com.sdm.project.model.entity.SimulationLocalJob; -import com.sdm.project.model.entity.SimulationRun; -import com.sdm.project.model.req.SimulationLocalJobReq; +import com.sdm.common.entity.req.project.SimulationLocalJobReq; import com.sdm.project.model.req.SpdmLocalJobListReq; import com.sdm.project.service.ISimulationLocalJobService; import org.apache.commons.lang3.ObjectUtils;