Просмотр исходного кода

业务流程表单加载功能支持

hubin 1 год назад
Родитель
Сommit
9fdbc19fff

+ 10 - 0
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessController.java

@@ -100,6 +100,16 @@ public class ProcessController extends ApiController {
         return flwProcessService.getDtoById(id);
     }
 
+    @Operation(summary = "查询 key 业务流程信息")
+    @Parameters({
+            @Parameter(name = "key", description = "流程KEY")
+    })
+    @Permission("sys:process:business")
+    @GetMapping("/business")
+    public FlwProcessDTO business(@RequestParam String key) {
+        return flwProcessService.getDtoByKey(key);
+    }
+
     @Operation(summary = "查询 id 克隆流程定义信息")
     @Parameters({
             @Parameter(name = "id", description = "流程ID")

+ 4 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/dto/FlwProcessDTO.java

@@ -1,6 +1,7 @@
 package com.aizuda.boot.modules.flw.entity.dto;
 
 
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
 import com.aizuda.boot.modules.flw.entity.FlwProcessSetting;
 import com.aizuda.bpm.engine.entity.FlwProcess;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -65,6 +66,9 @@ public class FlwProcessDTO {
     @Schema(description = "流程定义配置")
     private FlwProcessSetting processSetting;
 
+    @Schema(description = "流程表单模板")
+    private FlwFormTemplate formTemplate;
+
     public String getProcessName() {
         if (StringUtils.isBlank(processName)) {
             return "未命名审批";

+ 1 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwFormTemplateService.java

@@ -19,4 +19,5 @@ public interface IFlwFormTemplateService extends IBaseService<FlwFormTemplate> {
     Page<FlwFormTemplate> pageSimple(Page<FlwFormTemplate> page, FlwFormTemplate flwFormTemplate);
 
     boolean existByFormCategoryIds(List<Long> formCategoryIds);
+
 }

+ 7 - 0
src/main/java/com/aizuda/boot/modules/flw/service/IFlwProcessService.java

@@ -68,6 +68,13 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      */
     FlwProcessDTO getDtoById(Long id);
 
+    /**
+     * 根据 key 查询流程定义相关信息
+     *
+     * @param key 流程定义KEY
+     */
+    FlwProcessDTO getDtoByKey(String key);
+
     /**
      * 创建添加流程定义配置
      *

+ 23 - 3
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessServiceImpl.java

@@ -23,6 +23,7 @@ import com.aizuda.bpm.engine.entity.FlwProcess;
 import com.aizuda.bpm.engine.model.*;
 import com.aizuda.bpm.mybatisplus.mapper.FlwProcessMapper;
 import com.aizuda.common.toolkit.DateUtils;
+import com.aizuda.common.toolkit.JacksonUtils;
 import com.aizuda.core.api.ApiAssert;
 import com.aizuda.service.web.UserSession;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@@ -53,6 +54,7 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
     private IFlwProcessConfigureService flwProcessConfigureService;
     private IFlwProcessActorService flwProcessActorService;
     private IFlwProcessFormService flwProcessFormService;
+    private IFlwFormTemplateService flwFormTemplateService;
     private FlowlongMapper flowlongMapper;
     private FlowLongEngine flowLongEngine;
 
@@ -192,20 +194,32 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
 
     @Override
     public FlwProcessDTO getDtoById(Long id) {
-        FlwProcess flwProcess = this.checkById(id);
+        return getFlwProcessDTO(this.checkById(id));
+    }
+
+    public FlwProcessDTO getFlwProcessDTO(FlwProcess flwProcess) {
+        ApiAssert.isEmpty(flwProcess, "未发现指定流程模型");
         FlwProcessDTO dto = FlwProcessDTO.of(flwProcess);
         // 流程权限
-        List<FlwProcessPermission> flwProcessPermissions = flwProcessPermissionService.getByProcessId(id);
+        List<FlwProcessPermission> flwProcessPermissions = flwProcessPermissionService.getByProcessId(flwProcess.getId());
         if (CollectionUtils.isNotEmpty(flwProcessPermissions)) {
             dto.setProcessPermissionList(flwProcessPermissions.stream().map(FlwProcessPermissionDTO::of).toList());
         }
         // 流程配置
-        FlwProcessConfigure configure = flwProcessConfigureService.getByProcessId(id);
+        FlwProcessConfigure configure = flwProcessConfigureService.getByProcessId(flwProcess.getId());
         if (null != configure) {
             dto.setCategoryId(configure.getCategoryId());
             dto.setProcessSetting(configure.getProcessSetting());
             if (Objects.equals(flwProcess.getProcessType(), "business")) {
                 dto.setBusinessForm(configure.getProcessForm());
+                // 加载表单模板内容
+                Map<String, Object> formMap = JacksonUtils.readMap(configure.getProcessForm());
+                if (null != formMap) {
+                    String formId = (String) formMap.get("formId");
+                    if (null != formId) {
+                        dto.setFormTemplate(flwFormTemplateService.getById(Long.valueOf(formId)));
+                    }
+                }
             } else {
                 dto.setProcessForm(configure.getProcessForm());
             }
@@ -213,6 +227,12 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
         return dto;
     }
 
+    @Override
+    public FlwProcessDTO getDtoByKey(String key) {
+        return getFlwProcessDTO(baseMapper.selectOne(Wrappers.<FlwProcess>lambdaQuery()
+                .eq(FlwProcess::getProcessKey, key).last("LIMIT 1")));
+    }
+
     @Transactional(rollbackFor = Exception.class)
     @Override
     public Long saveDto(FlwProcessDTO dto) {