Преглед изворни кода

通用事项审批:一个流程单据不能重复发起流程

dongpo пре 1 година
родитељ
комит
a03f8b1ebf

+ 1 - 0
yudao-module-bpm/yudao-module-bpm-api/src/main/java/cn/iocoder/yudao/module/bpm/enums/ErrorCodeConstants.java

@@ -37,6 +37,7 @@ public interface ErrorCodeConstants {
     ErrorCode PROCESS_INSTANCE_CANCEL_FAIL_NOT_SELF = new ErrorCode(1_009_004_002, "流程取消失败,该流程不是你发起的");
     ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_CONFIG = new ErrorCode(1_009_004_003, "审批任务({})的审批人未配置");
     ErrorCode PROCESS_INSTANCE_START_USER_SELECT_ASSIGNEES_NOT_EXISTS = new ErrorCode(1_009_004_004, "审批任务({})的审批人({})不存在");
+    ErrorCode PROCESS_INSTANCE_CREATE_FAIL_HAS_PROCESS = new ErrorCode(1_009_004_005, "流程发起失败,单据已发起过流程");
 
     // ========== 流程任务 1-009-005-000 ==========
     ErrorCode TASK_OPERATE_FAIL_ASSIGN_NOT_SELF = new ErrorCode(1_009_005_001, "操作失败,原因:该任务的审批人不是你");

+ 4 - 0
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/oa/universal/OaUniversalServiceImpl.java

@@ -147,6 +147,10 @@ public class OaUniversalServiceImpl implements OaUniversalService {
         if (oaUniversal.getId() == null) {
             oaUniversalMapper.insert(oaUniversal);
         } else {
+            OaUniversalDO oaUniversalDO = oaUniversalMapper.selectById(oaUniversal.getId());
+            if (StrUtil.isNotBlank(oaUniversalDO.getProcInstId())) {
+                throw exception(ErrorCodeConstants.PROCESS_INSTANCE_CREATE_FAIL_HAS_PROCESS);
+            }
             oaUniversalMapper.updateById(oaUniversal);
         }
         // 发起流程