Kaynağa Gözat

优化业务流程

hubin 1 yıl önce
ebeveyn
işleme
745588be9d

+ 4 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/vo/TaskApprovalVO.java

@@ -1,5 +1,6 @@
 package com.aizuda.boot.modules.flw.entity.vo;
 
+import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
 import com.aizuda.boot.modules.flw.entity.FlwProcessApproval;
 import com.aizuda.boot.modules.flw.entity.FlwProcessSetting;
 import io.swagger.v3.oas.annotations.media.Schema;
@@ -68,6 +69,9 @@ public class TaskApprovalVO {
     @Schema(description = "流程设置")
     private FlwProcessSetting processSetting;
 
+    @Schema(description = "流程表单模板")
+    private FlwFormTemplate formTemplate;
+
     @Schema(description = "流程审批记录列表")
     private List<FlwProcessApproval> processApprovals;
 

+ 8 - 2
src/main/java/com/aizuda/boot/modules/flw/service/IFlwFormTemplateService.java

@@ -1,8 +1,8 @@
 package com.aizuda.boot.modules.flw.service;
 
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.aizuda.service.service.IBaseService;
 import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
+import com.aizuda.service.service.IBaseService;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 
 import java.util.List;
 
@@ -20,4 +20,10 @@ public interface IFlwFormTemplateService extends IBaseService<FlwFormTemplate> {
 
     boolean existByFormCategoryIds(List<Long> formCategoryIds);
 
+    /**
+     * 根据流程表单配置查询
+     *
+     * @param configureProcessForm 流程表单配置
+     */
+    FlwFormTemplate getByConfigure(String configureProcessForm);
 }

+ 20 - 1
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwFormTemplateServiceImpl.java

@@ -1,9 +1,10 @@
 package com.aizuda.boot.modules.flw.service.impl;
 
-import com.aizuda.core.api.ApiAssert;
 import com.aizuda.boot.modules.flw.entity.FlwFormTemplate;
 import com.aizuda.boot.modules.flw.mapper.FlwFormTemplateMapper;
 import com.aizuda.boot.modules.flw.service.IFlwFormTemplateService;
+import com.aizuda.common.toolkit.JacksonUtils;
+import com.aizuda.core.api.ApiAssert;
 import com.aizuda.service.service.BaseServiceImpl;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 流程表单模板 服务实现类
@@ -50,4 +52,21 @@ public class FlwFormTemplateServiceImpl extends BaseServiceImpl<FlwFormTemplateM
     public boolean existByFormCategoryIds(List<Long> formCategoryIds) {
         return lambdaQuery().in(FlwFormTemplate::getFormCategoryId, formCategoryIds).count() > 0;
     }
+
+    @Override
+    public FlwFormTemplate getByConfigure(String configureProcessForm) {
+        Long id = null;
+        if (null != configureProcessForm) {
+            // 加载表单模板内容
+            Map<String, Object> formMap = JacksonUtils.readMap(configureProcessForm);
+            if (null != formMap) {
+                String formId = (String) formMap.get("formId");
+                if (null != formId) {
+                    id = Long.valueOf(formId);
+                }
+            }
+        }
+        ApiAssert.fail(null == id, "业务表单配置内容有误");
+        return this.checkById(id);
+    }
 }

+ 7 - 15
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessServiceImpl.java

@@ -18,12 +18,12 @@ import com.aizuda.bpm.engine.core.FlowCreator;
 import com.aizuda.bpm.engine.core.FlowLongContext;
 import com.aizuda.bpm.engine.core.enums.FlowState;
 import com.aizuda.bpm.engine.core.enums.NodeSetType;
+import com.aizuda.bpm.engine.core.enums.ProcessType;
 import com.aizuda.bpm.engine.entity.FlwInstance;
 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;
@@ -211,27 +211,19 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
         ApiAssert.isEmpty(flwProcess, "未发现指定流程模型");
         FlwProcessDTO dto = FlwProcessDTO.of(flwProcess);
         // 流程权限
-        List<FlwProcessPermission> flwProcessPermissions = flwProcessPermissionService.getByProcessId(flwProcess.getId());
-        if (CollectionUtils.isNotEmpty(flwProcessPermissions)) {
-            dto.setProcessPermissionList(flwProcessPermissions.stream().map(FlwProcessPermissionDTO::of).toList());
+        List<FlwProcessPermission> permissionList = flwProcessPermissionService.getByProcessId(flwProcess.getId());
+        if (CollectionUtils.isNotEmpty(permissionList)) {
+            dto.setProcessPermissionList(permissionList.stream().map(FlwProcessPermissionDTO::of).toList());
         }
         // 流程配置
         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());
+            dto.setBusinessForm(configure.getProcessForm());
+            if (ProcessType.business.eq(flwProcess.getProcessType())) {
                 // 加载表单模板内容
-                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());
+                dto.setFormTemplate(flwFormTemplateService.getByConfigure(configure.getProcessForm()));
             }
         }
         return dto;

+ 24 - 16
src/main/java/com/aizuda/boot/modules/flw/service/impl/ProcessTaskServiceImpl.java

@@ -9,15 +9,14 @@ import com.aizuda.boot.modules.flw.entity.vo.*;
 import com.aizuda.boot.modules.flw.flow.FlowForm;
 import com.aizuda.boot.modules.flw.flow.FlowHelper;
 import com.aizuda.boot.modules.flw.mapper.FlowlongMapper;
-import com.aizuda.boot.modules.flw.service.IFlwProcessApprovalService;
-import com.aizuda.boot.modules.flw.service.IFlwProcessConfigureService;
-import com.aizuda.boot.modules.flw.service.IFlwProcessFormService;
-import com.aizuda.boot.modules.flw.service.IProcessTaskService;
+import com.aizuda.boot.modules.flw.service.*;
 import com.aizuda.bpm.engine.FlowDataTransfer;
 import com.aizuda.bpm.engine.FlowLongEngine;
+import com.aizuda.bpm.engine.ProcessService;
 import com.aizuda.bpm.engine.TaskService;
 import com.aizuda.bpm.engine.core.FlowCreator;
 import com.aizuda.bpm.engine.core.enums.PerformType;
+import com.aizuda.bpm.engine.core.enums.ProcessType;
 import com.aizuda.bpm.engine.core.enums.TaskType;
 import com.aizuda.bpm.engine.entity.*;
 import com.aizuda.bpm.engine.model.ModelHelper;
@@ -53,6 +52,7 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
     private FlowLongEngine flowLongEngine;
     private IFlwProcessApprovalService flwProcessApprovalService;
     private IFlwProcessFormService flwProcessFormService;
+    private IFlwFormTemplateService flwFormTemplateService;
     private IFlwProcessConfigureService flwProcessConfigureService;
 
     @Override
@@ -98,17 +98,6 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
         vo.setCreateBy(hisInstance.getCreateBy());
         vo.setCreateTime(hisInstance.getCreateTime());
 
-        // 表单填写内容,子流程需要获取主流程表单
-        FlwProcessForm flwProcessForm;
-        if (null != hisInstance.getParentInstanceId()) {
-            flwProcessForm = flwProcessFormService.getByInstanceId(hisInstance.getParentInstanceId());
-        } else {
-            flwProcessForm = flwProcessFormService.getByInstanceId(instanceId);
-        }
-        if (null != flwProcessForm) {
-            vo.setFormContent(flwProcessForm.getContent());
-        }
-
         // 获取当前流程模型
         FlwExtInstance flwExtInstance = extInstanceMapper.selectById(instanceId);
         vo.setModelContent(flwExtInstance.getModelContent());
@@ -134,12 +123,31 @@ public class ProcessTaskServiceImpl implements IProcessTaskService {
             vo.setAllowRollback(nodeModel.getAllowRollback());
         }
 
-        // 流程设置
         FlwProcessConfigure configure = flwProcessConfigureService.getByProcessId(hisInstance.getProcessId());
         if (null != configure) {
+            // 流程设置
             vo.setProcessSetting(configure.getProcessSetting());
+
+            // 表单设置
+            FlwProcess flwProcess = flowLongEngine.processService().getProcessById(hisInstance.getProcessId());
+            if (ProcessType.business.eq(flwProcess.getProcessType())) {
+                // 业务流程,加载表单模板内容
+                vo.setFormTemplate(flwFormTemplateService.getByConfigure(configure.getProcessForm()));
+            } else {
+                // 普通流程,表单填写内容,子流程需要获取主流程表单
+                FlwProcessForm flwProcessForm;
+                if (null != hisInstance.getParentInstanceId()) {
+                    flwProcessForm = flwProcessFormService.getByInstanceId(hisInstance.getParentInstanceId());
+                } else {
+                    flwProcessForm = flwProcessFormService.getByInstanceId(instanceId);
+                }
+                if (null != flwProcessForm) {
+                    vo.setFormContent(flwProcessForm.getContent());
+                }
+            }
         }
 
+
         // 审批记录列表
         List<FlwProcessApproval> processApprovals = flwProcessApprovalService.listByInstanceId(instanceId);