From d12f2b072bb82232ae882b23543b31a21520d2be Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 9 Feb 2026 11:36:32 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-7129)=20-=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=9B=B4=E6=96=B0=E7=BB=84=E7=BB=87=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E7=9A=84=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../client/feign/bpmn/ProcessInstanceApi.java | 11 +++++ .../instance/CooperationOrgUpdateDTO.java | 25 ++++++++++ .../cmd/CustomOverrideCooperationOrgCmd.java | 48 +++++++++++++++++++ .../service/BpmnProcessInstanceService.java | 3 ++ .../impl/BpmnProcessInstanceServiceImpl.java | 8 ++++ .../bpmn/BpmnProcessInstanceController.java | 9 ++++ 6 files changed, 104 insertions(+) create mode 100644 workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/instance/CooperationOrgUpdateDTO.java create mode 100644 workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomOverrideCooperationOrgCmd.java diff --git a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java index 837b5b496..86139e5b9 100644 --- a/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java +++ b/workflow-engine-api/src/main/java/cn/axzo/workflow/client/feign/bpmn/ProcessInstanceApi.java @@ -24,6 +24,7 @@ import cn.axzo.workflow.common.model.request.bpmn.process.doc.ChangeApproverRead import cn.axzo.workflow.common.model.request.bpmn.process.doc.ProcessDocQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO; import cn.axzo.workflow.common.model.request.form.ConditionPermissionMetaInfo; +import cn.axzo.workflow.common.model.request.form.instance.CooperationOrgUpdateDTO; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO; @@ -322,6 +323,16 @@ public interface ProcessInstanceApi { @InvokeMode(SYNC) CommonResponse updateInstanceFormVariables(@Validated @RequestBody FormVariablesUpdateDTO dto); + /** + * 更新指定流程的CooperationOrg + * + * @param dto + * @return + */ + @Operation(summary = "更新指定流程的CooperationOrg") + @PostMapping("/api/process/instance/cooperation/update") + @InvokeMode(SYNC) + CommonResponse updateCooperationOrg(@Validated @RequestBody CooperationOrgUpdateDTO dto); /** * 签署业务流程实例在审批待办中查询使用的文档列表 * diff --git a/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/instance/CooperationOrgUpdateDTO.java b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/instance/CooperationOrgUpdateDTO.java new file mode 100644 index 000000000..67930c91d --- /dev/null +++ b/workflow-engine-common/src/main/java/cn/axzo/workflow/common/model/request/form/instance/CooperationOrgUpdateDTO.java @@ -0,0 +1,25 @@ +package cn.axzo.workflow.common.model.request.form.instance; + +import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; +import io.swagger.annotations.ApiModel; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * 更新流程实例中的 CooperationOrg 整个对象 + * + * @author wangli + * @since 2026-02-09 11:30 + */ +@ApiModel("更新流程实例中的 CooperationOrg 整个对象") +@Data +public class CooperationOrgUpdateDTO implements Serializable { + @NotBlank(message = "流程实例不能为空") + private String processInstanceId; + + @NotNull(message = "组织关系数据不能为空") + private CooperationOrgDTO cooperationOrg; +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomOverrideCooperationOrgCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomOverrideCooperationOrgCmd.java new file mode 100644 index 000000000..ded78f14b --- /dev/null +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomOverrideCooperationOrgCmd.java @@ -0,0 +1,48 @@ +package cn.axzo.workflow.core.engine.cmd; + +import cn.axzo.workflow.common.constant.BpmnConstants; +import cn.axzo.workflow.common.model.dto.CooperationOrgDTO; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.flowable.common.engine.impl.interceptor.CommandContext; +import org.flowable.engine.RuntimeService; +import org.flowable.engine.impl.cfg.ProcessEngineConfigurationImpl; +import org.flowable.engine.impl.util.CommandContextUtil; + +import java.io.Serializable; +import java.util.HashMap; +import java.util.Map; + +/** + * 更新指定流程的CooperationOrg + * + * @author wangli + * @since 2026-02-09 11:33 + */ +@Slf4j +public class CustomOverrideCooperationOrgCmd extends AbstractCommand implements Serializable { + private final String processInstanceId; + + private final CooperationOrgDTO cooperationOrg; + + public CustomOverrideCooperationOrgCmd(String processInstanceId, CooperationOrgDTO cooperationOrg) { + this.processInstanceId = processInstanceId; + this.cooperationOrg = cooperationOrg; + } + + @Override + public String paramToJsonString() { + Map params = new HashMap<>(); + params.put("processInstanceId", processInstanceId); + params.put("cooperationOrg", cooperationOrg); + return JSON.toJSONString(params); + } + + @Override + public Void executeInternal(CommandContext commandContext) { + ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext); + RuntimeService runtimeService = processEngineConfiguration.getRuntimeService(); + runtimeService.setVariable(processInstanceId, BpmnConstants.BIZ_ORG_RELATION, cooperationOrg); + return null; + } +} diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java index 9195fce8d..d2af7a33f 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/BpmnProcessInstanceService.java @@ -16,6 +16,7 @@ import cn.axzo.workflow.common.model.request.bpmn.process.SuperBpmnProcessInstan import cn.axzo.workflow.common.model.request.bpmn.process.doc.ProcessDocQueryDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO; import cn.axzo.workflow.common.model.request.form.ConditionPermissionMetaInfo; +import cn.axzo.workflow.common.model.request.form.instance.CooperationOrgUpdateDTO; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO; @@ -217,4 +218,6 @@ public interface BpmnProcessInstanceService { void overrideProcessVariables(BpmnProcessInstanceVariablesUpdateDTO dto); List getConditions(String processInstanceId); + + void overrideCooperationOrg(CooperationOrgUpdateDTO dto); } diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java index 557260a3e..f0d308fdf 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/service/impl/BpmnProcessInstanceServiceImpl.java @@ -41,6 +41,7 @@ import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.request.bpmn.task.ExtHiTaskSearchDTO; import cn.axzo.workflow.common.model.request.category.CategorySearchDTO; import cn.axzo.workflow.common.model.request.form.ConditionPermissionMetaInfo; +import cn.axzo.workflow.common.model.request.form.instance.CooperationOrgUpdateDTO; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.BatchOperationItemResultVO; @@ -69,6 +70,7 @@ import cn.axzo.workflow.core.engine.cmd.CustomCarbonCopyUserSelectorCmd; import cn.axzo.workflow.core.engine.cmd.CustomForecastUserTaskAssigneeCmd; import cn.axzo.workflow.core.engine.cmd.CustomGetConditionPermissionsCmd; import cn.axzo.workflow.core.engine.cmd.CustomGetModelDocsCmd; +import cn.axzo.workflow.core.engine.cmd.CustomOverrideCooperationOrgCmd; import cn.axzo.workflow.core.engine.cmd.CustomOverrideFormVariablesByLatestInstanceCmd; import cn.axzo.workflow.core.engine.cmd.CustomOverrideProcessVariablesCmd; import cn.axzo.workflow.core.engine.listener.EngineExecutionStartListener; @@ -1884,6 +1886,12 @@ public class BpmnProcessInstanceServiceImpl implements BpmnProcessInstanceServic commandExecutor.execute(new CustomOverrideFormVariablesByLatestInstanceCmd(dto.getProcessInstanceId(), dto.getFormVariables())); } + @Override + public void overrideCooperationOrg(CooperationOrgUpdateDTO dto) { + CommandExecutor commandExecutor = springProcessEngineConfiguration.getCommandExecutor(); + commandExecutor.execute(new CustomOverrideCooperationOrgCmd(dto.getProcessInstanceId(), dto.getCooperationOrg())); + } + @Override public List processInstanceSelectDocs(ProcessDocQueryDTO dto) { CommandExecutor commandExecutor = springProcessEngineConfiguration.getCommandExecutor(); diff --git a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java index 3e68d46b5..4c6d0d219 100644 --- a/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java +++ b/workflow-engine-server/src/main/java/cn/axzo/workflow/server/controller/web/bpmn/BpmnProcessInstanceController.java @@ -31,6 +31,7 @@ import cn.axzo.workflow.common.model.request.bpmn.process.doc.ProcessDocQueryDTO import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskButtonSearchDTO; import cn.axzo.workflow.common.model.request.bpmn.task.BpmnTaskDelegateAssigner; import cn.axzo.workflow.common.model.request.form.ConditionPermissionMetaInfo; +import cn.axzo.workflow.common.model.request.form.instance.CooperationOrgUpdateDTO; import cn.axzo.workflow.common.model.request.form.instance.FormVariablesUpdateDTO; import cn.axzo.workflow.common.model.response.BpmPageResult; import cn.axzo.workflow.common.model.response.bpmn.BatchOperationResultVO; @@ -493,6 +494,14 @@ public class BpmnProcessInstanceController extends BasicPopulateAvatarController return CommonResponse.success(true); } + @Operation(summary = "更新指定流程的CooperationOrg") + @PostMapping("/cooperation/update") + @Override + public CommonResponse updateCooperationOrg(@Validated @RequestBody CooperationOrgUpdateDTO dto) { + bpmnProcessInstanceService.overrideCooperationOrg(dto); + return CommonResponse.success(true); + } + @Override @Operation(summary = "签署业务流程实例在审批待办中查询使用的文档列表") @PostMapping("/select/doc/list")