From a15451ed91ac82cc4ac00285a4beb2e0046df2f8 Mon Sep 17 00:00:00 2001 From: qianshijiang <1965297290@qq.com> Date: Tue, 23 Sep 2025 15:11:09 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B5=81=E7=A8=8B=E4=BB=BB=E5=8A=A1feign?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bpm/api/task/BpmProcessInstanceApi.java | 12 +++++++ .../api/task/dto/BpmTaskApproveReqDTO.java | 33 +++++++++++++++++++ .../bpm/api/task/dto/BpmTaskRejectReqDTO.java | 18 ++++++++++ .../api/task/BpmProcessInstanceApiImpl.java | 22 +++++++++++++ 4 files changed, 85 insertions(+) create mode 100644 zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskApproveReqDTO.java create mode 100644 zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskRejectReqDTO.java diff --git a/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApi.java b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApi.java index 061e6774..baf8f52d 100644 --- a/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApi.java +++ b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApi.java @@ -2,6 +2,8 @@ package com.zt.plat.module.bpm.api.task; import com.zt.plat.framework.common.pojo.CommonResult; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskApproveReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskRejectReqDTO; import com.zt.plat.module.bpm.enums.ApiConstants; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -9,6 +11,7 @@ import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; @@ -24,4 +27,13 @@ public interface BpmProcessInstanceApi { CommonResult createProcessInstance(@RequestParam("userId") Long userId, @Valid @RequestBody BpmProcessInstanceCreateReqDTO reqDTO); + + @PutMapping(PREFIX + "/approveTask") + @Operation(summary = "通过任务") + CommonResult approveTask(@Valid @RequestBody BpmTaskApproveReqDTO reqVO); + + @PutMapping(PREFIX + "/rejectTask") + @Operation(summary = "不通过任务") + CommonResult rejectTask(@Valid @RequestBody BpmTaskRejectReqDTO reqVO); + } diff --git a/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskApproveReqDTO.java b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskApproveReqDTO.java new file mode 100644 index 00000000..705f930a --- /dev/null +++ b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskApproveReqDTO.java @@ -0,0 +1,33 @@ +package com.zt.plat.module.bpm.api.task.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +import java.util.List; +import java.util.Map; + +@Schema(description = "RPC 服务 - 通过流程任务的 Request DTO") +@Data +public class BpmTaskApproveReqDTO { + + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotEmpty(message = "任务编号不能为空") + private String id; + + @Schema(description = "审批意见", example = "不错不错!") + private String reason; + + @Schema(description = "签名", example = "https://www.iocoder.cn/sign.png") + private String signPicUrl; + + @Schema(description = "变量实例(动态表单)", requiredMode = Schema.RequiredMode.REQUIRED) + private Map variables; + + @Schema(description = "下一个节点审批人", example = "{nodeId:[1, 2]}") + private Map> nextAssignees; // 为什么是 Map,而不是 List 呢?因为下一个节点可能是多个,例如说并行网关的情况 + + // 新增任务变量实例,业务表单 + @Schema(description = "任务变量实例,业务表单", example = "{'formField1': 'value1', 'formField2': 'value2'}") + private Map taskVariables; +} diff --git a/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskRejectReqDTO.java b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskRejectReqDTO.java new file mode 100644 index 00000000..94f73bff --- /dev/null +++ b/zt-module-bpm/zt-module-bpm-api/src/main/java/com/zt/plat/module/bpm/api/task/dto/BpmTaskRejectReqDTO.java @@ -0,0 +1,18 @@ +package com.zt.plat.module.bpm.api.task.dto; + +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotEmpty; +import lombok.Data; + +@Schema(description = "RPC 服务 - 不通过流程任务的 Request DTO") +@Data +public class BpmTaskRejectReqDTO { + + @Schema(description = "任务编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + @NotEmpty(message = "任务编号不能为空") + private String id; + + @Schema(description = "审批意见", requiredMode = Schema.RequiredMode.REQUIRED, example = "不错不错!") + private String reason; + +} diff --git a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApiImpl.java b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApiImpl.java index 261b7505..686d8dda 100644 --- a/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApiImpl.java +++ b/zt-module-bpm/zt-module-bpm-server/src/main/java/com/zt/plat/module/bpm/api/task/BpmProcessInstanceApiImpl.java @@ -1,14 +1,21 @@ package com.zt.plat.module.bpm.api.task; import com.zt.plat.framework.common.pojo.CommonResult; +import com.zt.plat.framework.common.util.object.BeanUtils; import com.zt.plat.module.bpm.api.task.dto.BpmProcessInstanceCreateReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskApproveReqDTO; +import com.zt.plat.module.bpm.api.task.dto.BpmTaskRejectReqDTO; +import com.zt.plat.module.bpm.controller.admin.task.vo.task.BpmTaskApproveReqVO; +import com.zt.plat.module.bpm.controller.admin.task.vo.task.BpmTaskRejectReqVO; import com.zt.plat.module.bpm.service.task.BpmProcessInstanceService; +import com.zt.plat.module.bpm.service.task.BpmTaskService; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.RestController; import static com.zt.plat.framework.common.pojo.CommonResult.success; +import static com.zt.plat.framework.web.core.util.WebFrameworkUtils.getLoginUserId; /** * Flowable 流程实例 Api 实现类 @@ -23,9 +30,24 @@ public class BpmProcessInstanceApiImpl implements BpmProcessInstanceApi { @Resource private BpmProcessInstanceService processInstanceService; + @Resource + private BpmTaskService taskService; + @Override public CommonResult createProcessInstance(Long userId, @Valid BpmProcessInstanceCreateReqDTO reqDTO) { return success(processInstanceService.createProcessInstance(userId, reqDTO)); } + @Override + public CommonResult approveTask(BpmTaskApproveReqDTO reqVO) { + taskService.approveTask(getLoginUserId(), BeanUtils.toBean(reqVO, BpmTaskApproveReqVO.class)); + return success(true); + } + + @Override + public CommonResult rejectTask(BpmTaskRejectReqDTO reqVO) { + taskService.rejectTask(getLoginUserId(), BeanUtils.toBean(reqVO, BpmTaskRejectReqVO.class)); + return success(true); + } + }