From fb790b724fd96b3bdda327d0d4420d1b0a3e65aa Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Mon, 29 Sep 2025 14:21:41 +0800 Subject: [PATCH 1/3] =?UTF-8?q?feat=20-=20=E6=96=B0=E5=A2=9E=E5=89=8D?= =?UTF-8?q?=E5=90=8E=E5=8A=A0=E7=AD=BE=E7=9A=84=E5=88=86=E6=94=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/CustomCountersignUserTaskCmd.java | 55 ++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java index 4d5f0a7ec..1719d3d5f 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java @@ -22,6 +22,7 @@ import org.flowable.task.api.TaskInfo; import org.flowable.task.api.history.HistoricTaskInstance; import org.flowable.task.api.history.HistoricTaskInstanceQuery; import org.flowable.task.service.impl.persistence.entity.TaskEntity; +import org.flowable.task.service.impl.persistence.entity.TaskEntityImpl; import org.springframework.util.CollectionUtils; import java.io.Serializable; @@ -35,6 +36,7 @@ import java.util.stream.Collectors; import static cn.axzo.workflow.common.code.OtherRespCode.ASSIGNEE_NODE_ID_NOT_EXISTS; import static cn.axzo.workflow.common.constant.BpmnConstants.COUNTERSIGN_ASSIGNER_SHOW_NUMBER; import static cn.axzo.workflow.common.constant.BpmnConstants.INTERNAL_ACTIVITY_RELATION_ASSIGNEE_LIST_INFO_SNAPSHOT; +import static cn.axzo.workflow.common.enums.BpmnCountersignTypeEnum.FORWARD_COUNTERSIGN; import static cn.axzo.workflow.common.enums.BpmnProcessInstanceResultEnum.COUNTERSIGN; import static cn.axzo.workflow.core.common.utils.BpmnMetaParserHelper.getCategoryVersion; import static cn.axzo.workflow.core.engine.cmd.helper.CustomTaskHelper.batchAddAttachment; @@ -130,9 +132,11 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen switch (countersignType) { case FORWARD_COUNTERSIGN: // 加签的一种方式:前加签,具体定义由后续产品需求来定 + forwardCountSign(commandContext, task, valuTargetAssigneeList); break; case BACK_COUNTERSIGN: // 加签的另一种方式 + backCountSign(commandContext, task, valuTargetAssigneeList); break; default: // 共享签,不区分顺序 @@ -143,6 +147,42 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen return null; } + /** + * 前加签 + * + * @param commandContext + * @param task + * @param valuTargetAssigneeList + */ + private void forwardCountSign(CommandContext commandContext, TaskEntity task, List valuTargetAssigneeList) { + ProcessEngineConfigurationImpl processEngineConfiguration = + CommandContextUtil.getProcessEngineConfiguration(commandContext); + TaskService taskService = processEngineConfiguration.getTaskService(); + if (task instanceof TaskEntityImpl) { + TaskEntityImpl taskEntity = (TaskEntityImpl) task; + taskEntity.setCountEnabled(true); + taskEntity.setOwner(task.getAssignee()); + taskEntity.setAssignee(null); + taskEntity.setScopeType(FORWARD_COUNTERSIGN.getType()); + taskService.saveTask(taskEntity); + + valuTargetAssigneeList.forEach(e -> { + // TODO 创建新的任务 + }); + } + } + + /** + * 后加签 + * + * @param commandContext + * @param task + * @param valuTargetAssigneeList + */ + private void backCountSign(CommandContext commandContext, TaskEntity task, List valuTargetAssigneeList) { + + } + /** * 共享签 * @@ -167,8 +207,19 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen private void resolveOriginTask(CommandContext commandContext, ExtAxHiTaskInstService extAxHiTaskInstService, TaskService taskService, TaskEntity task) { - // 构建评论内容 - StringBuilder message = new StringBuilder("添加"); + StringBuilder message = new StringBuilder(); + switch (countersignType) { + case FORWARD_COUNTERSIGN: + message.append("向前加签,添加"); + break; + case BACK_COUNTERSIGN: + message.append("向后加签,添加"); + break; + default: + // 构建评论内容 + message.append("添加"); + break; + } int end = Math.min(targetTaskAssigneeList.size(), COUNTERSIGN_ASSIGNER_SHOW_NUMBER); //加签人员数量显示指定个数 for (int i = 0; i < end; i++) { From 678e19c3a6c3201a896b083dd6c0225af4e5f4fb Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 10 Oct 2025 15:00:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?feat(REQ-5965)=20-=20=E5=89=8D=E5=90=8E?= =?UTF-8?q?=E5=8A=A0=E7=AD=BE=E5=8A=9F=E8=83=BD=E6=96=87=E6=A1=88=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/CustomCountersignUserTaskCmd.java | 27 ++++++++++--------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java index 1719d3d5f..d977c674b 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java @@ -207,19 +207,7 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen private void resolveOriginTask(CommandContext commandContext, ExtAxHiTaskInstService extAxHiTaskInstService, TaskService taskService, TaskEntity task) { - StringBuilder message = new StringBuilder(); - switch (countersignType) { - case FORWARD_COUNTERSIGN: - message.append("向前加签,添加"); - break; - case BACK_COUNTERSIGN: - message.append("向后加签,添加"); - break; - default: - // 构建评论内容 - message.append("添加"); - break; - } + StringBuilder message = new StringBuilder("添加"); int end = Math.min(targetTaskAssigneeList.size(), COUNTERSIGN_ASSIGNER_SHOW_NUMBER); //加签人员数量显示指定个数 for (int i = 0; i < end; i++) { @@ -232,6 +220,19 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen message.append("等"); } message.append(targetTaskAssigneeList.size()).append("人进行审批"); + + switch (countersignType) { + case FORWARD_COUNTERSIGN: + message.append("(前加签)"); + break; + case BACK_COUNTERSIGN: + message.append("(后加签)"); + break; + default: + message.append("(并加签)"); + break; + } + Task virtualTask = createVirtualTask(commandContext, extAxHiTaskInstService, task.getProcessInstanceId(), task.getName(), task.getTaskDefinitionKey(), advice, originTaskAssignee, COUNTERSIGN.getStatus(), new AddComment(message.toString())); batchAddAttachment(commandContext, task.getProcessInstanceId(), task, attachmentList, originTaskAssignee); From f461d17d2c914bed6b6c3bd23f1d4b63dffb520c Mon Sep 17 00:00:00 2001 From: wangli <274027703@qq.com> Date: Fri, 10 Oct 2025 15:27:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat(REQ-5965)=20-=20=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=89=8D=E5=8A=A0=E7=AD=BE=E4=BB=A3=E7=A0=81=E9=80=BB=E8=BE=91?= =?UTF-8?q?=EF=BC=8C=E8=87=AA=E6=B5=8B=E6=B5=81=E7=A8=8B=E5=BC=95=E6=93=8E?= =?UTF-8?q?=E5=86=85=E9=83=A8=E6=98=AF=E5=90=A6=E6=AD=A3=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cmd/CustomCountersignUserTaskCmd.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java index d977c674b..853c99ab4 100644 --- a/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java +++ b/workflow-engine-core/src/main/java/cn/axzo/workflow/core/engine/cmd/CustomCountersignUserTaskCmd.java @@ -11,6 +11,7 @@ import cn.hutool.json.JSONUtil; import com.alibaba.fastjson.JSON; import lombok.extern.slf4j.Slf4j; import org.flowable.bpmn.model.BpmnModel; +import org.flowable.common.engine.impl.cfg.IdGenerator; import org.flowable.common.engine.impl.interceptor.CommandContext; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; @@ -27,6 +28,7 @@ import org.springframework.util.CollectionUtils; import java.io.Serializable; import java.util.ArrayList; +import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -157,6 +159,7 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen private void forwardCountSign(CommandContext commandContext, TaskEntity task, List valuTargetAssigneeList) { ProcessEngineConfigurationImpl processEngineConfiguration = CommandContextUtil.getProcessEngineConfiguration(commandContext); + IdGenerator idGenerator = processEngineConfiguration.getIdGenerator(); TaskService taskService = processEngineConfiguration.getTaskService(); if (task instanceof TaskEntityImpl) { TaskEntityImpl taskEntity = (TaskEntityImpl) task; @@ -168,6 +171,20 @@ public class CustomCountersignUserTaskCmd extends AbstractCommand implemen valuTargetAssigneeList.forEach(e -> { // TODO 创建新的任务 + TaskEntityImpl subTask = (TaskEntityImpl) taskService.newTask(idGenerator.getNextId()); + subTask.setName(task.getName()); + subTask.setDescription(task.getDescription()); + subTask.setCategory(task.getCategory()); + subTask.setParentTaskId(task.getId()); + subTask.setProcessDefinitionId(task.getProcessDefinitionId()); + subTask.setProcessInstanceId(task.getProcessInstanceId()); + subTask.setTaskDefinitionKey(task.getTaskDefinitionKey()); + subTask.setTaskDefinitionId(task.getTaskDefinitionId()); + subTask.setPriority(task.getPriority()); + subTask.setCreateTime(new Date()); + subTask.setTenantId(task.getTenantId()); + subTask.setAssignee(e.buildAssigneeId()); + taskService.saveTask(subTask); }); } }