feat(flow): support dynamic countersign add-sign

This commit is contained in:
PIGCLOUD committed 2026-08-01 13:32:20 +08:00
1 parent 5931a5d6d7
commit 2b6a4d2e85
32 files changed
+1916 -37

No files matched your search

@@ -105,6 +105,30 @@ public class ProcessInstanceConstant {
*/
public static final int MULTIPLE_MODE_ALL_SORT = 3;
/** 原始流程分配。 */
public static final String ASSIGNMENT_ORIGIN_ORIGINAL = "ORIGINAL";
/** 动态加签分配。 */
public static final String ASSIGNMENT_ORIGIN_ADD_SIGN = "ADD_SIGN";
/** 执行变量:分配来源。 */
public static final String VAR_ASSIGNMENT_ORIGIN = "assignmentOrigin";
/** 执行变量:本份任务的最初审批人。 */
public static final String VAR_INITIAL_USER_ID = "initialUserId";
/** 执行变量:本轮节点记录。 */
public static final String VAR_NODE_RECORD_ID = "nodeRecordId";
/** 执行变量:加签审计记录。 */
public static final String VAR_ADD_SIGN_RECORD_ID = "addSignRecordId";
/** 执行变量:加签发起人。 */
public static final String VAR_ADDED_BY_USER_ID = "addedByUserId";
/** 任务变量:本次分配操作类型。 */
public static final String VAR_ASSIGNMENT_OPERATION = "assignmentOperation";
/**
* 任务分配类型 定义审批节点的执行人分配方式
*/
@@ -0,0 +1,19 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
import java.util.List;
/**
* 动态加签结果。
*/
@Data
@AllArgsConstructor
public class AddSignResultDto {
private Long recordId;
private List<AddSignTaskSummaryDto> tasks;
}
@@ -0,0 +1,22 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.Data;
import java.util.List;
/**
* 动态加签请求。
*/
@Data
public class AddSignTaskDto {
/** 当前审批任务 ID。 */
private String taskId;
/** 本批次新增的审批人。 */
private List<Long> targetUserIdList;
/** 加签原因。 */
private String reason;
}
@@ -0,0 +1,17 @@
package com.pig4cloud.pigx.flow.dto;
import lombok.AllArgsConstructor;
import lombok.Data;
/**
* 动态加签后新建任务摘要。
*/
@Data
@AllArgsConstructor
public class AddSignTaskSummaryDto {
private String taskId;
private Long userId;
}
@@ -85,6 +85,11 @@ public class Node {
*/
private Integer multipleMode;
/**
* 是否允许当前并行会签节点的原始审批人动态加签
*/
private Boolean allowAddSign;
/**
* 部门主管级别 当assignedType为LEADER时,指定查找第几级主管
*/
@@ -117,4 +117,16 @@ public class ProcessNodeRecordAssignUserParamDto {
*/
private String taskType;
/** 本轮节点执行记录 ID。 */
private Long nodeRecordId;
/** 分配来源:ORIGINAL 或 ADD_SIGN。 */
private String assignmentOrigin;
/** 本份待办最初分配的用户。 */
private Long initialUserId;
/** 动态加签批次记录 ID。 */
private Long addSignRecordId;
}
@@ -158,6 +158,22 @@ public class ProcessNodeRecordAssignUser {
@TableField("local_data")
private String localData;
/** 本轮节点执行记录 ID。 */
@TableField("node_record_id")
private Long nodeRecordId;
/** 分配来源:ORIGINAL 或 ADD_SIGN。 */
@TableField("assignment_origin")
private String assignmentOrigin;
/** 本份待办最初分配的用户。 */
@TableField("initial_user_id")
private Long initialUserId;
/** 动态加签批次记录 ID。 */
@TableField("add_sign_record_id")
private Long addSignRecordId;
/**
* 主键ID
* <p>
@@ -0,0 +1,69 @@
package com.pig4cloud.pigx.flow.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.pig4cloud.pigx.common.core.util.TenantTable;
import lombok.Getter;
import lombok.Setter;
import lombok.experimental.Accessors;
import java.time.LocalDateTime;
/**
* 动态加签批次审计记录。
*/
@Getter
@Setter
@TenantTable
@Accessors(chain = true)
@TableName("process_task_add_sign_record")
public class ProcessTaskAddSignRecord {
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
@TableField("flow_id")
private String flowId;
@TableField("process_instance_id")
private String processInstanceId;
@TableField("node_record_id")
private Long nodeRecordId;
@TableField("node_id")
private String nodeId;
@TableField("source_task_id")
private String sourceTaskId;
@TableField("added_by_user_id")
private Long addedByUserId;
@TableField("reason")
private String reason;
@TableField("target_user_ids")
private String targetUserIds;
@TableField("participant_user_ids_before")
private String participantUserIdsBefore;
@TableField("participant_user_ids_after")
private String participantUserIdsAfter;
@TableLogic
@TableField(fill = FieldFill.INSERT)
private String delFlag;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
@@ -0,0 +1,24 @@
package com.pig4cloud.pigx.flow.vo;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
/**
* 流程进度中的动态加签事件。
*/
@Data
public class AddSignRecordVo {
private Long id;
private String addedByName;
private List<String> targetUserNames;
private String reason;
private LocalDateTime createTime;
}
@@ -30,6 +30,11 @@ public class NodeVo {
*/
private List<UserVo> userVoList;
/**
* 当前节点的动态加签批次事件
*/
private List<AddSignRecordVo> addSignRecordList;
/**
* 节点占位提示
* <p>