feat: 【工作流】--加签

This commit is contained in:
kehaiyou
2023-09-29 14:57:28 +08:00
parent f088fdff84
commit 7d497ce09b
11 changed files with 508 additions and 25 deletions

View File

@ -50,7 +50,9 @@ public interface ErrorCodeConstants {
ErrorCode TASK_RETURN_FAIL_SOURCE_TARGET_ERROR = new ErrorCode(1_009_005_006, "回退任务失败,目标节点是在并行网关上或非同一路线上,不可跳转");
ErrorCode TASK_DELEGATE_FAIL_USER_REPEAT = new ErrorCode(1_009_005_007, "任务委派失败,委派人和当前审批人为同一人");
ErrorCode TASK_DELEGATE_FAIL_USER_NOT_EXISTS = new ErrorCode(1_009_005_008, "任务委派失败,被委派人不存在");
ErrorCode TASK_ADD_SIGN_USER_NOT_EXIST = new ErrorCode(1_009_005_009, "任务加签:选择的用户不存在");
ErrorCode TASK_ADD_SIGN_TYPE_ERROR = new ErrorCode(1_009_005_010, "任务加签:当前任务已经{},不能{}");
ErrorCode TASK_ADD_SIGN_USER_REPEAT = new ErrorCode(1_009_005_011, "任务加签失败,加签人与现有审批人[{}]重复");
// ========== 流程任务分配规则 1-009-006-000 ==========
ErrorCode TASK_ASSIGN_RULE_EXISTS = new ErrorCode(1_009_006_000, "流程({}) 的任务({}) 已经存在分配规则");
ErrorCode TASK_ASSIGN_RULE_NOT_EXISTS = new ErrorCode(1_009_006_001, "流程任务分配规则不存在");

View File

@ -0,0 +1,33 @@
package cn.iocoder.yudao.module.bpm.enums.task;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 流程任务 -- comment类型枚举
*/
@Getter
@AllArgsConstructor
public enum BpmCommentTypeEnum {
APPROVE(1, "通过"),
REJECT(2, "不通过"),
CANCEL(3, "已取消"),
// ========== 流程任务独有的状态 ==========
BACK(4, "退回"), // 退回
DELEGATE(5, "委派"),
ADD_SIGN(6, "加签"),
SUB_SIGN(7,"减签"),
;
/**
* 结果
*/
private final Integer result;
/**
* 描述
*/
private final String desc;
}

View File

@ -21,11 +21,26 @@ public enum BpmProcessInstanceResultEnum {
// ========== 流程任务独有的状态 ==========
BACK(5, "驳回"), // 退回
DELEGATE(6, "委派");
DELEGATE(6, "委派"),
/**
* 源任务已经审批完成,但是它使用了后加签,后加签的任务未完成,源任务就会是这个状态
* 例如A审批 A 后加签了 B ,并且审批通过了任务,但是 B 还未审批,则当前任务状态为 待后加签任务完成
*/
ADD_SIGN_AFTER(7, "待后加签任务完成"),
/**
* 源任务未审批,但是向前加签了,所以源任务状态变为 待前加签任务完成
* 例如A审批 A 前加签了 B B 还未审核
*/
ADD_SIGN_BEFORE(8, "待前加签任务完成"),
/**
* 后加签任务被创建时的初始状态
* 因为需要源任务先完成,才能到后加签的人来审批,所以加了一个状态区分
*/
WAIT_BEFORE_TASK(9, "待前置任务完成");
/**
* 结果
*
* <p>
* 如果新增时,注意 {@link #isEndResult(Integer)} 是否需要变更
*/
private final Integer result;
@ -36,14 +51,16 @@ public enum BpmProcessInstanceResultEnum {
/**
* 判断该结果是否已经处于 End 最终结果
*
* <p>
* 主要用于一些结果更新的逻辑,如果已经是最终结果,就不再进行更新
*
* @param result 结果
* @return 是否
*/
public static boolean isEndResult(Integer result) {
return ObjectUtils.equalsAny(result, APPROVE.getResult(), REJECT.getResult(), CANCEL.getResult(), BACK.getResult());
return ObjectUtils.equalsAny(result, APPROVE.getResult(), REJECT.getResult(),
CANCEL.getResult(), BACK.getResult(),
ADD_SIGN_AFTER.getResult());
}
}

View File

@ -0,0 +1,40 @@
package cn.iocoder.yudao.module.bpm.enums.task;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* 流程任务 -- 加签类型枚举类型
*/
@Getter
@AllArgsConstructor
public enum BpmTaskAddSignTypeEnum {
/**
* 向前加签,需要前置任务审批完成,才回到原审批人
*/
BEFORE("before", "向前加签"),
/**
* 向后加签,需要后置任务全部审批完,才会通过原审批人节点
*/
AFTER("after", "向后加签"),
/**
* 创建后置加签时的过度状态,用于控制向后加签生成的任务状态
*/
AFTER_CHILDREN_TASK("afterChildrenTask", "向后加签生成的子任务");
private final String type;
private final String desc;
public static String formatDesc(String type) {
for (BpmTaskAddSignTypeEnum value : values()) {
if (value.type.equals(type)) {
return value.desc;
}
}
return null;
}
}