Browse Source

1、创建租户后自动复制部署当前的12个流程

dongpo 7 months ago
parent
commit
f94ae4a292

+ 38 - 30
yudao-module-bpm/yudao-module-bpm-biz/src/main/java/cn/iocoder/yudao/module/bpm/service/definition/BpmModelServiceImpl.java

@@ -160,26 +160,30 @@ public class BpmModelServiceImpl implements BpmModelService {
                     newModel.setTenantId(FlowableUtils.getTenantId());
 
                     byte[] bpmnBytes = this.getModelBpmnXML(model.getId());
-                    BpmModelRespVO bpmModelRespVO = BpmModelConvert.INSTANCE.buildModel(model, bpmnBytes);
-                    BpmModelUpdateReqVO updateReqVO = BeanUtils.toBean(bpmModelRespVO, BpmModelUpdateReqVO.class);
-                    // 修改流程定义
-                    BpmModelConvert.INSTANCE.copyToUpdateModel(newModel, updateReqVO);
-                    // 添加模型
-                    repositoryService.saveModel(newModel);
-                    // 添加 BPMN XML
-                    repositoryService.addModelEditorSource(newModel.getId(), StrUtil.utf8Bytes(updateReqVO.getBpmnXml()));
+                    if (bpmnBytes != null && bpmnBytes.length > 0) {
+                        BpmModelRespVO bpmModelRespVO = BpmModelConvert.INSTANCE.buildModel(model, bpmnBytes);
+                        BpmModelUpdateReqVO updateReqVO = BeanUtils.toBean(bpmModelRespVO, BpmModelUpdateReqVO.class);
+                        // 修改流程定义
+                        BpmModelConvert.INSTANCE.copyToUpdateModel(newModel, updateReqVO);
+                        // 添加模型
+                        repositoryService.saveModel(newModel);
+                        // 添加 BPMN XML
+                        repositoryService.addModelEditorSource(newModel.getId(), StrUtil.utf8Bytes(updateReqVO.getBpmnXml()));
+                    }
 
                     // 添加分配规则
                     List<BpmTaskAssignRuleDO> taskAssignRuleListByModelId = taskAssignRuleService.getTaskAssignRuleListByModelId2(model.getId());
-                    for (BpmTaskAssignRuleDO bpmTaskAssignRuleDO : taskAssignRuleListByModelId) {
-                        bpmTaskAssignRuleDO.setModelId(newModel.getId());
-                        BpmTaskAssignRuleCreateReqVO bpmTaskAssignRuleCreateReqVO = BeanUtils.toBean(bpmTaskAssignRuleDO, BpmTaskAssignRuleCreateReqVO.class);
-                        taskAssignRuleService.createTaskAssignRule(bpmTaskAssignRuleCreateReqVO);
+                    if (CollUtil.isNotEmpty(taskAssignRuleListByModelId)) {
+                        for (BpmTaskAssignRuleDO bpmTaskAssignRuleDO : taskAssignRuleListByModelId) {
+                            bpmTaskAssignRuleDO.setModelId(newModel.getId());
+                            BpmTaskAssignRuleCreateReqVO bpmTaskAssignRuleCreateReqVO = BeanUtils.toBean(bpmTaskAssignRuleDO, BpmTaskAssignRuleCreateReqVO.class);
+                            taskAssignRuleService.createTaskAssignRule(bpmTaskAssignRuleCreateReqVO);
+                        }
+
+                        // 部署流程
+                        this.deployModel(newModel.getId());
                     }
 
-                    // 部署流程
-                    this.deployModel(newModel.getId());
-
                     resultMap.put(modelKey + ":" + FlowableUtils.getTenantId(), "模型复制部署成功");
                     // resultBuilder.append(modelKey).append(":").append(FlowableUtils.getTenantId()).append(" 模型复制部署成功;").append(System.lineSeparator());
                 } else {
@@ -219,26 +223,30 @@ public class BpmModelServiceImpl implements BpmModelService {
                     newModel.setTenantId(FlowableUtils.getTenantId());
 
                     byte[] bpmnBytes = this.getModelBpmnXML(model.getId());
-                    BpmModelRespVO bpmModelRespVO = BpmModelConvert.INSTANCE.buildModel(model, bpmnBytes);
-                    BpmModelUpdateReqVO updateReqVO = BeanUtils.toBean(bpmModelRespVO, BpmModelUpdateReqVO.class);
-                    // 修改流程定义
-                    BpmModelConvert.INSTANCE.copyToUpdateModel(newModel, updateReqVO);
-                    // 添加模型
-                    repositoryService.saveModel(newModel);
-                    // 添加 BPMN XML
-                    repositoryService.addModelEditorSource(newModel.getId(), StrUtil.utf8Bytes(updateReqVO.getBpmnXml()));
+                    if (bpmnBytes != null && bpmnBytes.length > 0) {
+                        BpmModelRespVO bpmModelRespVO = BpmModelConvert.INSTANCE.buildModel(model, bpmnBytes);
+                        BpmModelUpdateReqVO updateReqVO = BeanUtils.toBean(bpmModelRespVO, BpmModelUpdateReqVO.class);
+                        // 修改流程定义
+                        BpmModelConvert.INSTANCE.copyToUpdateModel(newModel, updateReqVO);
+                        // 添加模型
+                        repositoryService.saveModel(newModel);
+                        // 添加 BPMN XML
+                        repositoryService.addModelEditorSource(newModel.getId(), StrUtil.utf8Bytes(updateReqVO.getBpmnXml()));
+                    }
 
                     // 添加分配规则
                     List<BpmTaskAssignRuleDO> taskAssignRuleListByModelId = taskAssignRuleService.getTaskAssignRuleListByModelId2(model.getId());
-                    for (BpmTaskAssignRuleDO bpmTaskAssignRuleDO : taskAssignRuleListByModelId) {
-                        bpmTaskAssignRuleDO.setModelId(newModel.getId());
-                        BpmTaskAssignRuleCreateReqVO bpmTaskAssignRuleCreateReqVO = BeanUtils.toBean(bpmTaskAssignRuleDO, BpmTaskAssignRuleCreateReqVO.class);
-                        taskAssignRuleService.createTaskAssignRule(bpmTaskAssignRuleCreateReqVO);
+                    if (CollUtil.isNotEmpty(taskAssignRuleListByModelId)) {
+                        for (BpmTaskAssignRuleDO bpmTaskAssignRuleDO : taskAssignRuleListByModelId) {
+                            bpmTaskAssignRuleDO.setModelId(newModel.getId());
+                            BpmTaskAssignRuleCreateReqVO bpmTaskAssignRuleCreateReqVO = BeanUtils.toBean(bpmTaskAssignRuleDO, BpmTaskAssignRuleCreateReqVO.class);
+                            taskAssignRuleService.createTaskAssignRule(bpmTaskAssignRuleCreateReqVO);
+                        }
+
+                        // 部署流程
+                        this.deployModel(newModel.getId());
                     }
 
-                    // 部署流程
-                    this.deployModel(newModel.getId());
-
                     resultMap.put(modelKey + ":" + FlowableUtils.getTenantId(), "模型复制部署成功");
                     // resultBuilder.append(modelKey).append(":").append(FlowableUtils.getTenantId()).append(" 模型复制部署成功;").append(System.lineSeparator());
                 } else {

+ 5 - 0
yudao-module-system/yudao-module-system-biz/pom.xml

@@ -48,6 +48,11 @@
             <artifactId>yudao-module-attendance-api</artifactId>
             <version>${revision}</version>
         </dependency>
+        <dependency>
+            <groupId>cn.iocoder.boot</groupId>
+            <artifactId>yudao-module-bpm-api</artifactId>
+            <version>${revision}</version>
+        </dependency>
 
         <!-- 业务组件 -->
         <dependency>

+ 14 - 2
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/tenant/TenantServiceImpl.java

@@ -17,6 +17,7 @@ import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
 import cn.iocoder.yudao.framework.tenant.config.TenantProperties;
 import cn.iocoder.yudao.framework.tenant.core.context.TenantContextHolder;
 import cn.iocoder.yudao.framework.tenant.core.util.TenantUtils;
+import cn.iocoder.yudao.module.bpm.api.definition.BpmModelApi;
 import cn.iocoder.yudao.module.employee.api.EmployeeApi;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeCreateReqDTO;
 import cn.iocoder.yudao.module.employee.api.dto.EmployeeQueryReqDTO;
@@ -27,7 +28,11 @@ import cn.iocoder.yudao.module.system.controller.admin.auth.vo.AuthLoginRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuListReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.menu.MenuTenantRelateSaveReqVO;
 import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
-import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.*;
+import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantJoinReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantPageReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantRespVO;
+import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSaveReqVO;
+import cn.iocoder.yudao.module.system.controller.admin.tenant.vo.tenant.TenantSimpleRespVO;
 import cn.iocoder.yudao.module.system.controller.admin.user.vo.tenant.UserTenantRelateSaveReqVO;
 import cn.iocoder.yudao.module.system.convert.auth.AuthConvert;
 import cn.iocoder.yudao.module.system.convert.tenant.TenantConvert;
@@ -64,7 +69,10 @@ import org.springframework.validation.annotation.Validated;
 
 import javax.annotation.Resource;
 import java.time.LocalDateTime;
-import java.util.*;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
@@ -112,6 +120,8 @@ public class TenantServiceImpl implements TenantService {
     private AdminAuthService authService;
     @Resource
     private MenuTenantRelateService menuTenantRelateService;
+    @Resource
+    private BpmModelApi bpmModelApi;
 
     @Override
     public List<Long> getTenantIdList() {
@@ -189,6 +199,8 @@ public class TenantServiceImpl implements TenantService {
             permissionService.assignUserRole(user.getId(), singleton(roleId));
             // 修改租户的管理员
             tenantMapper.updateById(new TenantDO().setId(tenant.getId()).setContactUserId(user.getId()));
+            // 复制部署流程(目前共12个)
+            bpmModelApi.copyAndDeploy(null, null);
         });
         TenantSimpleRespVO tenantSimpleRespVO = new TenantSimpleRespVO();
         tenantSimpleRespVO.setId(tenant.getId());