Commit 68b7a9a9544c172139dfb85598e28f69781d7de4

Authored by Lesan
1 parent 25c86c05

feat: 提交人权限-允许撤销审批中的申请

yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java
@@ -38,6 +38,7 @@ public interface ErrorCodeConstants { @@ -38,6 +38,7 @@ public interface ErrorCodeConstants {
38 ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_003, "任务({})的候选人未配置"); 38 ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_003, "任务({})的候选人未配置");
39 ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_EXISTS = new ErrorCode(1_009_004_004, "任务({})的候选人({})不存在"); 39 ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_EXISTS = new ErrorCode(1_009_004_004, "任务({})的候选人({})不存在");
40 ErrorCode PROCESS_INSTANCE_START_USER_CAN_START = new ErrorCode(1_009_004_005, "发起流程失败,你没有权限发起该流程"); 40 ErrorCode PROCESS_INSTANCE_START_USER_CAN_START = new ErrorCode(1_009_004_005, "发起流程失败,你没有权限发起该流程");
  41 + ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW = new ErrorCode(1_009_004_005, "流程取消失败,该流程不允许取消");
41 42
42 // ========== 流程任务 1-009-005-000 ========== 43 // ========== 流程任务 1-009-005-000 ==========
43 ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你"); 44 ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你");
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/controller/admin/definition/vo/model/BpmModelMetaInfoVO.java
@@ -62,4 +62,7 @@ public class BpmModelMetaInfoVO { @@ -62,4 +62,7 @@ public class BpmModelMetaInfoVO {
62 @Schema(description = "排序", example = "1") 62 @Schema(description = "排序", example = "1")
63 private Long sort; // 创建时,后端自动生成 63 private Long sort; // 创建时,后端自动生成
64 64
  65 + @Schema(description = "允许撤销审批中的申请")
  66 + private Boolean allowCancelRunningProcess;
  67 +
65 } 68 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/dal/dataobject/definition/BpmProcessDefinitionInfoDO.java
@@ -150,4 +150,10 @@ public class BpmProcessDefinitionInfoDO extends BaseDO { @@ -150,4 +150,10 @@ public class BpmProcessDefinitionInfoDO extends BaseDO {
150 @TableField(typeHandler = StringListTypeHandler.class) // 为了可以使用 find_in_set 进行过滤 150 @TableField(typeHandler = StringListTypeHandler.class) // 为了可以使用 find_in_set 进行过滤
151 private List<Long> managerUserIds; 151 private List<Long> managerUserIds;
152 152
  153 + /**
  154 + * 允许撤销审批中的申请
  155 + * TODO @芋艿 需要同步修改数据库字段
  156 + */
  157 + private Boolean allowCancelRunningProcess;
  158 +
153 } 159 }
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/task/BpmProcessInstanceServiceImpl.java
@@ -642,6 +642,13 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService @@ -642,6 +642,13 @@ public class BpmProcessInstanceServiceImpl implements BpmProcessInstanceService
642 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) { 642 if (!Objects.equals(instance.getStartUserId(), String.valueOf(userId))) {
643 throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF); 643 throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF);
644 } 644 }
  645 + // 1.3 校验允许撤销审批中的申请
  646 + BpmProcessDefinitionInfoDO processDefinitionInfo = processDefinitionService.getProcessDefinitionInfo(instance.getProcessDefinitionId());
  647 + Assert.notNull(processDefinitionInfo, "流程定义({})不存在", processDefinitionInfo);
  648 + if (processDefinitionInfo.getAllowCancelRunningProcess() != null // 防止未配置 AllowCancelRunningProcess , 默认为可取消
  649 + && !processDefinitionInfo.getAllowCancelRunningProcess()) {
  650 + throw exception(PROCESS_INSTANCE_CANCEL_FAIL_NOT_ALLOW);
  651 + }
645 652
646 // 2. 取消流程 653 // 2. 取消流程
647 updateProcessInstanceCancel(cancelReqVO.getId(), 654 updateProcessInstanceCancel(cancelReqVO.getId(),