Browse Source

新增流程发起相关接口

hubin 1 year ago
parent
commit
5b1ce24ab0

+ 22 - 3
src/main/java/com/aizuda/boot/modules/flw/controller/ProcessController.java

@@ -1,6 +1,8 @@
 package com.aizuda.boot.modules.flw.controller;
 
+import com.aizuda.boot.modules.flw.FlowHelper;
 import com.aizuda.boot.modules.flw.entity.dto.FlwProcessDTO;
+import com.aizuda.boot.modules.flw.entity.dto.ProcessStartDTO;
 import com.aizuda.boot.modules.flw.entity.vo.FlwProcessCategoryVO;
 import com.aizuda.boot.modules.flw.service.IFlwProcessService;
 import com.aizuda.core.api.ApiController;
@@ -28,7 +30,7 @@ public class ProcessController extends ApiController {
     private IFlwProcessService flwProcessService;
 
     @Operation(summary = "获取所有分类流程定义列表")
-    @Permission("flw:processCategory:listAll")
+    @Permission("flw:process:listCategory")
     @Parameters({
             @Parameter(name = "keyword", description = "关键词")
     })
@@ -37,15 +39,32 @@ public class ProcessController extends ApiController {
         return flwProcessService.listCategoryAll(keyword);
     }
 
+    @Operation(summary = "获取发起分类流程定义列表")
+    @Permission("flw:process:listStart")
+    @Parameters({
+            @Parameter(name = "keyword", description = "关键词")
+    })
+    @PostMapping("/list-start")
+    public List<FlwProcessCategoryVO> listStart(@RequestParam(required = false) String keyword) {
+        return flwProcessService.listCategoryAll(keyword);
+    }
+
+    @Operation(summary = "获取所有分类流程定义列表")
+    @Permission("flw:process:start")
+    @PostMapping("/start")
+    public boolean startProcess(@RequestBody ProcessStartDTO dto) {
+        return flwProcessService.startProcess(dto, FlowHelper.getFlowCreator());
+    }
+
     @Operation(summary = "查询 id 信息")
-    @Permission("sys:processCategory:get")
+    @Permission("sys:process:get")
     @GetMapping("/get")
     public FlwProcessDTO get(@RequestParam Long id) {
         return flwProcessService.getDtoById(id);
     }
 
     @Operation(summary = "查询 id 克隆流程定义信息")
-    @Permission("sys:processCategory:clone")
+    @Permission("sys:process:clone")
     @GetMapping("/clone")
     public boolean clone(@RequestParam Long id) {
         return flwProcessService.cloneById(id);

+ 23 - 0
src/main/java/com/aizuda/boot/modules/flw/entity/dto/ProcessStartDTO.java

@@ -0,0 +1,23 @@
+package com.aizuda.boot.modules.flw.entity.dto;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * 流程发起 DTO
+ *
+ * @author 青苗
+ * @since 2023-12-12
+ */
+@Getter
+@Setter
+public class ProcessStartDTO {
+
+    @Schema(description = "流程ID")
+    private Long processId;
+
+    @Schema(description = "流程表单JSON内容")
+    private String processForm;
+
+}

+ 10 - 6
src/main/java/com/aizuda/boot/modules/flw/service/IFlwProcessService.java

@@ -1,8 +1,10 @@
 package com.aizuda.boot.modules.flw.service;
 
 import com.aizuda.boot.modules.flw.entity.dto.FlwProcessDTO;
+import com.aizuda.boot.modules.flw.entity.dto.ProcessStartDTO;
 import com.aizuda.boot.modules.flw.entity.vo.FlwProcessCategoryVO;
 import com.aizuda.service.service.IBaseService;
+import com.flowlong.bpm.engine.core.FlowCreator;
 import com.flowlong.bpm.engine.entity.FlwProcess;
 
 import java.util.List;
@@ -19,15 +21,21 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      * 流程定义分类查询所有流程定义列表
      *
      * @param keyword 搜索关键词
-     * @return
      */
     List<FlwProcessCategoryVO> listCategoryAll(String keyword);
 
+    /**
+     * 根据流程ID发起流程
+     *
+     * @param dto         流程发起 DTO
+     * @param flowCreator 流程创建者
+     */
+    boolean startProcess(ProcessStartDTO dto, FlowCreator flowCreator);
+
     /**
      * 根据ID查询流程定义相关信息
      *
      * @param id 流程定义ID
-     * @return
      */
     FlwProcessDTO getDtoById(Long id);
 
@@ -43,7 +51,6 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      * 根据ID删除流程定义相关信息
      *
      * @param id 流程定义ID
-     * @return
      */
     boolean removeProcessInfo(Long id);
 
@@ -52,7 +59,6 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      *
      * @param id   流程定义ID
      * @param sort 流程定义排序
-     * @return
      */
     boolean updateSortById(Long id, Integer sort);
 
@@ -61,7 +67,6 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      *
      * @param id    流程定义ID
      * @param state 流程状态 0,不可用 1,可用
-     * @return
      */
     boolean updateSateById(Long id, Integer state);
 
@@ -69,7 +74,6 @@ public interface IFlwProcessService extends IBaseService<FlwProcess> {
      * 根据ID克隆流程定义信息
      *
      * @param id 流程定义ID
-     * @return
      */
     boolean cloneById(Long id);
 }

+ 10 - 0
src/main/java/com/aizuda/boot/modules/flw/service/impl/FlwProcessServiceImpl.java

@@ -7,6 +7,7 @@ import com.aizuda.boot.modules.flw.entity.FlwProcessPermission;
 import com.aizuda.boot.modules.flw.entity.dto.FlwProcessActorDTO;
 import com.aizuda.boot.modules.flw.entity.dto.FlwProcessDTO;
 import com.aizuda.boot.modules.flw.entity.dto.FlwProcessPermissionDTO;
+import com.aizuda.boot.modules.flw.entity.dto.ProcessStartDTO;
 import com.aizuda.boot.modules.flw.entity.vo.FlwProcessCategoryVO;
 import com.aizuda.boot.modules.flw.entity.vo.FlwProcessVO;
 import com.aizuda.boot.modules.flw.mapper.FlowlongMapper;
@@ -16,6 +17,8 @@ import com.aizuda.service.web.UserSession;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.flowlong.bpm.engine.FlowLongEngine;
+import com.flowlong.bpm.engine.core.FlowCreator;
 import com.flowlong.bpm.engine.entity.FlwProcess;
 import com.flowlong.bpm.mybatisplus.mapper.FlwProcessMapper;
 import lombok.AllArgsConstructor;
@@ -42,6 +45,7 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
     private IFlwProcessConfigureService flwProcessConfigureService;
     private IFlwProcessActorService flwProcessActorService;
     private FlowlongMapper flowlongMapper;
+    private FlowLongEngine flowLongEngine;
 
     @Override
     public List<FlwProcessCategoryVO> listCategoryAll(String keyword) {
@@ -89,6 +93,12 @@ public class FlwProcessServiceImpl extends ServiceImpl<FlwProcessMapper, FlwProc
         return flwProcessCategoryService.list(lqw);
     }
 
+    @Override
+    public boolean startProcess(ProcessStartDTO dto, FlowCreator flowCreator) {
+        // TODO 待保存表单
+        return flowLongEngine.startInstanceById(dto.getProcessId(), flowCreator).isPresent();
+    }
+
     @Override
     public FlwProcessDTO getDtoById(Long id) {
         FlwProcess flwProcess = this.checkById(id);