From 01273bbaa65964b608df8fafb1e91332d513b74e Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Wed, 26 Jun 2024 17:52:23 +0800
Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=81=E7=A8=8B=E6=8F=90?=
 =?UTF-8?q?=E4=BA=A4=E7=9B=B8=E5=85=B3=E4=BB=A3=E7=A0=81?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../knowledge/KnowledgeFlowController.java    |  17 +-
 .../knowledge/KnowledgeFlowRecordResVO.java   |  29 +++
 .../entity/vo/knowledge/ProcessFlowReqVO.java |  17 ++
 .../knowsub/enums/FlowTypeEnum.java           |   7 +-
 .../knowsub/service/KnowledgeFlowService.java |   8 +
 .../impl/KnowledgeFlowServiceImpl.java        | 173 ++++++++++++++++--
 .../knowsub/model/KnowledgeFlowRecord.java    |  13 +-
 .../vo/knowledge/KnowledgeFlowResVO.java      |   2 +
 .../mapper/KnowledgeFlowRecordMapper.xml      |   4 +-
 9 files changed, 250 insertions(+), 20 deletions(-)
 create mode 100644 know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/KnowledgeFlowRecordResVO.java
 create mode 100644 know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/ProcessFlowReqVO.java

diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/controller/knowledge/KnowledgeFlowController.java b/know_sub_business/src/main/java/com/supervision/knowsub/controller/knowledge/KnowledgeFlowController.java
index b5777bb..9841c64 100644
--- a/know_sub_business/src/main/java/com/supervision/knowsub/controller/knowledge/KnowledgeFlowController.java
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/controller/knowledge/KnowledgeFlowController.java
@@ -1,6 +1,8 @@
 package com.supervision.knowsub.controller.knowledge;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.supervision.knowsub.entity.vo.knowledge.KnowledgeFlowRecordResVO;
+import com.supervision.knowsub.entity.vo.knowledge.ProcessFlowReqVO;
 import com.supervision.knowsub.model.KnowledgeFlowRecord;
 import com.supervision.knowsub.service.KnowledgeFlowService;
 import com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO;
@@ -12,9 +14,12 @@ import io.swagger.v3.oas.annotations.tags.Tag;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.servlet.mvc.condition.RequestConditionHolder;
 
 import java.time.Instant;
 import java.time.LocalDateTime;
+import java.util.List;
 
 @Slf4j
 @RestController
@@ -54,14 +59,18 @@ public class KnowledgeFlowController {
 
     @Operation(summary = "审批知识流程")
     @PostMapping("processKnowledgeFlow")
-    public void processKnowledgeFlow() {
-
+    public void processKnowledgeFlow(@RequestBody ProcessFlowReqVO reqVO) {
+        knowledgeFlowService.processKnowledgeFlow(reqVO);
     }
 
     @Operation(summary = "查询知识库流转记录")
+    @Parameters({
+            @Parameter(name = "knowledgeId", description = "审批状态 1未审批 2已审批", in = ParameterIn.QUERY),
+            @Parameter(name = "flowId", description = "标题,支持模糊", in = ParameterIn.QUERY)
+    })
     @GetMapping("queryKnowledgeFlowRecord")
-    public void queryKnowledgeFlowRecord(String knowledgeId) {
-
+    public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, @RequestParam(required = false) String flowId) {
+        return knowledgeFlowService.queryKnowledgeFlowRecord(knowledgeId, flowId);
     }
 
 
diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/KnowledgeFlowRecordResVO.java b/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/KnowledgeFlowRecordResVO.java
new file mode 100644
index 0000000..bedfc3d
--- /dev/null
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/KnowledgeFlowRecordResVO.java
@@ -0,0 +1,29 @@
+package com.supervision.knowsub.entity.vo.knowledge;
+
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+@Data
+public class KnowledgeFlowRecordResVO {
+
+    private String id;
+
+    private String knowledgeId;
+
+    private String processName;
+
+    private String remark;
+
+    private LocalDateTime processTime;
+
+    private String processUserId;
+
+    private String processDeptId;
+
+    private String processUserName;
+
+    private String processDeptName;
+
+    private Integer processOrder;
+}
diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/ProcessFlowReqVO.java b/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/ProcessFlowReqVO.java
new file mode 100644
index 0000000..d1a2039
--- /dev/null
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/entity/vo/knowledge/ProcessFlowReqVO.java
@@ -0,0 +1,17 @@
+package com.supervision.knowsub.entity.vo.knowledge;
+
+import io.swagger.v3.oas.annotations.media.Schema;
+import lombok.Data;
+
+@Data
+public class ProcessFlowReqVO {
+
+    @Schema(description = "操作类型 1通过 2驳回")
+    private Integer operate;
+
+    private String todoId;
+
+    private String knowledgeId;
+
+    private String remark;
+}
diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/enums/FlowTypeEnum.java b/know_sub_business/src/main/java/com/supervision/knowsub/enums/FlowTypeEnum.java
index da164c4..d573450 100644
--- a/know_sub_business/src/main/java/com/supervision/knowsub/enums/FlowTypeEnum.java
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/enums/FlowTypeEnum.java
@@ -1,14 +1,17 @@
 package com.supervision.knowsub.enums;
 
+/**
+ * 1知识报送 2知识撤回 3知识删除
+ */
 public enum FlowTypeEnum {
 
     SUBMIT(1, "知识报送"),
     RECALL(2, "知识撤回"),
     DELETE(3, "知识删除");
 
-    private Integer flowType;
+    private final Integer flowType;
 
-    private String desc;
+    private final String desc;
 
     FlowTypeEnum(Integer flowType, String desc) {
         this.flowType = flowType;
diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/service/KnowledgeFlowService.java b/know_sub_business/src/main/java/com/supervision/knowsub/service/KnowledgeFlowService.java
index 31d025b..90e77d5 100644
--- a/know_sub_business/src/main/java/com/supervision/knowsub/service/KnowledgeFlowService.java
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/service/KnowledgeFlowService.java
@@ -1,14 +1,18 @@
 package com.supervision.knowsub.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.supervision.knowsub.entity.vo.knowledge.KnowledgeFlowRecordResVO;
+import com.supervision.knowsub.entity.vo.knowledge.ProcessFlowReqVO;
 import com.supervision.knowsub.enums.FlowTypeEnum;
 import com.supervision.knowsub.model.Knowledge;
 import com.supervision.knowsub.model.KnowledgeFlowRecord;
 import com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
 
 import java.time.Instant;
 import java.time.LocalDateTime;
+import java.util.List;
 
 public interface KnowledgeFlowService {
 
@@ -17,4 +21,8 @@ public interface KnowledgeFlowService {
                                                      Integer pageNum, Integer pageSize);
 
     void submitFlowProcess(Knowledge knowledge, FlowTypeEnum flowTypeEnum, String userId, String deptId, String remark);
+
+    void processKnowledgeFlow(ProcessFlowReqVO reqVO);
+
+    List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowId);
 }
diff --git a/know_sub_business/src/main/java/com/supervision/knowsub/service/impl/KnowledgeFlowServiceImpl.java b/know_sub_business/src/main/java/com/supervision/knowsub/service/impl/KnowledgeFlowServiceImpl.java
index 0404927..8ede3ba 100644
--- a/know_sub_business/src/main/java/com/supervision/knowsub/service/impl/KnowledgeFlowServiceImpl.java
+++ b/know_sub_business/src/main/java/com/supervision/knowsub/service/impl/KnowledgeFlowServiceImpl.java
@@ -1,22 +1,30 @@
 package com.supervision.knowsub.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.core.util.StrUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.supervision.knowsub.domain.UserInfo;
+import com.supervision.knowsub.entity.vo.knowledge.KnowledgeFlowRecordResVO;
+import com.supervision.knowsub.entity.vo.knowledge.ProcessFlowReqVO;
 import com.supervision.knowsub.enums.FlowTypeEnum;
+import com.supervision.knowsub.enums.StatusEnum;
 import com.supervision.knowsub.exception.BusinessException;
 import com.supervision.knowsub.mapper.KnowledgeFlowRecordMapper;
 import com.supervision.knowsub.model.*;
 import com.supervision.knowsub.service.*;
+import com.supervision.knowsub.util.UserUtil;
 import com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.ObjectUtils;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.Instant;
 import java.time.LocalDateTime;
+import java.util.ArrayList;
 import java.util.Comparator;
 import java.util.List;
 import java.util.Optional;
@@ -34,6 +42,12 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
 
     private final SystemFlowRuleUserService systemFlowRuleUserService;
 
+    private final KnowledgeFlowTodoService knowledgeFlowTodoService;
+
+    private final SystemFlowService systemFlowService;
+
+    private final KnowledgeService knowledgeService;
+
     @Override
     public IPage<KnowledgeFlowResVO> queryKnowledgeFlowPage(Integer processStatus, String title, String publishDeptId, String baseId,
                                                             String submittedDeptId, Instant flowType,
@@ -68,25 +82,16 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
                 .eq(SystemFlowTypeRelation::getFlowType, flowTypeEnum.getFlowType())
                 .last(" limit 1").oneOpt();
         SystemFlowTypeRelation systemFlowTypeRelation = systemFlowTypeRelationOpt.orElseThrow(() -> new BusinessException("未找到审批流程,请联系管理员配置审批流程"));
-        List<SystemFlowRule> ruleList = systemFlowRuleService.lambdaQuery().eq(SystemFlowRule::getFlowId, systemFlowTypeRelation.getFlowId()).list();
-        if (CollUtil.isEmpty(ruleList)) {
-            throw new BusinessException("审批流节点为空,请联系管理员配置审批流节点");
-        }
-        // 根据rule_order进行升序排序
-        List<SystemFlowRule> orderList = ruleList.stream().sorted(Comparator.comparingInt(SystemFlowRule::getRuleOrder)).toList();
-        // 应该最少有两个节点,一个是起始节点,一个是审批节点才行
-        if (orderList.size() < 2) {
-            throw new BusinessException("审批流节点数量不足,请联系管理员确认审批流节点是否正确");
-        }
+        List<SystemFlowRule> roleOrderList = queryFlowRuleWithOrder(systemFlowTypeRelation.getFlowId());
         // 首先获取第一个节点,校验当前用户是否有权限提交
-        SystemFlowRule firstRule = orderList.get(0);
+        SystemFlowRule firstRule = roleOrderList.get(0);
         Optional<SystemFlowRuleUser> systemFlowRuleUserOpt = systemFlowRuleUserService.lambdaQuery().eq(SystemFlowRuleUser::getFlowId, firstRule.getId())
                 .eq(SystemFlowRuleUser::getUserId, userId).eq(SystemFlowRuleUser::getRuleId, firstRule.getId()).oneOpt();
         if (systemFlowRuleUserOpt.isEmpty()) {
             throw new BusinessException("当前用户没有权限提交:" + flowTypeEnum.getDesc() + " 流程,请联系管理员确认");
         }
         // 然后找到下一个节点
-        SystemFlowRule nextRule = orderList.get(1);
+        SystemFlowRule nextRule = roleOrderList.get(1);
         List<SystemFlowRuleUser> nextRuleUserList = systemFlowRuleUserService.lambdaQuery().eq(SystemFlowRuleUser::getFlowId, nextRule.getId()).eq(SystemFlowRuleUser::getRuleId, nextRule.getId()).list();
         if (CollUtil.isEmpty(nextRuleUserList)) {
             throw new BusinessException("审批节点未配置审批用户,流程提交失败");
@@ -98,6 +103,7 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
                 .flowId(systemFlowTypeRelation.getFlowId())
                 .flowType(flowTypeEnum.getFlowType())
                 .flowRuleId(firstRule.getId())
+                .flowRuleOrder(firstRule.getRuleOrder())
                 .processName(firstRule.getRuleName())
                 .remark(remark)
                 .submitUserId(userId)
@@ -115,4 +121,147 @@ public class KnowledgeFlowServiceImpl implements KnowledgeFlowService {
             todo.insert();
         }
     }
+
+    private List<SystemFlowRule> queryFlowRuleWithOrder(String flowId) {
+        List<SystemFlowRule> ruleList = systemFlowRuleService.lambdaQuery().eq(SystemFlowRule::getFlowId, flowId).list();
+        if (CollUtil.isEmpty(ruleList)) {
+            throw new BusinessException("审批流节点为空,请联系管理员配置审批流节点");
+        }
+        // 根据rule_order进行升序排序
+        List<SystemFlowRule> ruleOrderList = ruleList.stream().sorted(Comparator.comparingInt(SystemFlowRule::getRuleOrder)).toList();
+        // 应该最少有两个节点,一个是起始节点,一个是审批节点才行
+        if (ruleOrderList.size() < 2) {
+            throw new BusinessException("审批流节点数量不足,请联系管理员确认审批流节点是否正确");
+        }
+        return ruleOrderList;
+    }
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void processKnowledgeFlow(ProcessFlowReqVO reqVO) {
+        // 首先获取这个审批任务
+        KnowledgeFlowTodo knowledgeFlowTodo = knowledgeFlowTodoService.getOptById(reqVO.getTodoId()).orElseThrow(() -> new BusinessException("审批任务不存在"));
+        // 找到最开始的节点
+        KnowledgeFlowRecord submitFlowRecord = knowledgeFlowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, reqVO.getKnowledgeId())
+                .eq(KnowledgeFlowRecord::getFlowId, knowledgeFlowTodo.getFlowId()).eq(KnowledgeFlowRecord::getFlowType, knowledgeFlowTodo.getFlowType())
+                .eq(KnowledgeFlowRecord::getType, 1).orderByDesc(KnowledgeFlowRecord::getCreateTime).last(" limit 1").oneOpt().orElse(new KnowledgeFlowRecord());
+        UserInfo user = UserUtil.getUser();
+        // 将这个任务对应的TODO删除掉
+        knowledgeFlowTodoService.lambdaUpdate().eq(KnowledgeFlowTodo::getKnowledgeId, reqVO.getKnowledgeId())
+                .eq(KnowledgeFlowTodo::getFlowId, knowledgeFlowTodo.getFlowId())
+                .eq(KnowledgeFlowTodo::getFlowType, knowledgeFlowTodo.getFlowType())
+                .eq(KnowledgeFlowTodo::getRuleId, knowledgeFlowTodo.getRuleId()).remove();
+        // 然后获取下一个节点
+        List<SystemFlowRule> ruleOrderList = queryFlowRuleWithOrder(knowledgeFlowTodo.getFlowId());
+        // 从list中找到当前节点
+        SystemFlowRule currentRule = null;
+        // 然后根据order找到当前节点在ruleOrderList中的索引号(根据ID进行查找)
+        int index = 0;
+        for (int i = 0; i < ruleOrderList.size(); i++) {
+            SystemFlowRule rule = ruleOrderList.get(i);
+            if (rule.getId().equals(knowledgeFlowTodo.getRuleId())) {
+                index = i;
+                currentRule = rule;
+            }
+        }
+        if (ObjectUtils.isEmpty(currentRule)) {
+            throw new BusinessException("审批节点不存在");
+        }
+        if (1 == reqVO.getOperate()) {
+            // 如果当前节点的索引号和节点数量相等,说明是最后一个节点,这时说明流程走完了
+            if (ruleOrderList.size() == index) {
+                // 这时走流程结束的流程
+
+                KnowledgeFlowRecord newKnowledgeFlowRecord = KnowledgeFlowRecord.builder().type(2)
+                        .knowledgeId(knowledgeFlowTodo.getKnowledgeId())
+                        .flowId(knowledgeFlowTodo.getFlowId())
+                        .flowType(knowledgeFlowTodo.getFlowType())
+                        .flowRuleId(currentRule.getId())
+                        .flowRuleOrder(currentRule.getRuleOrder())
+                        .processName(currentRule.getRuleName())
+                        .processStatus(1)
+                        .processUserId(user.getId())
+                        .processDeptId(user.getDeptId())
+                        .processTime(LocalDateTime.now())
+                        .remark(reqVO.getRemark())
+                        .submitUserId(submitFlowRecord.getSubmitUserId())
+                        .submitDeptId(submitFlowRecord.getSubmitDeptId()).build();
+                knowledgeFlowRecordService.save(newKnowledgeFlowRecord);
+                // 将知识的状态进行修改
+                knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.PASS.getStatus()).set(Knowledge::getDraftBelongUserId, null)
+                        .eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
+            } else {
+                SystemFlowRule nextRule;
+                try {
+                    nextRule = ruleOrderList.get(index + 1);
+                } catch (Exception e) {
+                    throw new BusinessException("未找到下一个审批节点,请联系管理员解决");
+                }
+                List<SystemFlowRuleUser> nextRuleUserList = systemFlowRuleUserService.lambdaQuery().eq(SystemFlowRuleUser::getFlowId, nextRule.getId())
+                        .eq(SystemFlowRuleUser::getRuleId, nextRule.getId()).list();
+                if (CollUtil.isEmpty(nextRuleUserList)) {
+                    throw new BusinessException("下级审批节点未配置审批用户,审批失败,请联系管理员解决");
+                }
+                // 生成下一个节点的TODO
+                for (SystemFlowRuleUser todoUser : nextRuleUserList) {
+                    KnowledgeFlowTodo todo = new KnowledgeFlowTodo();
+                    todo.setFlowId(nextRule.getFlowId());
+                    todo.setKnowledgeId(knowledgeFlowTodo.getKnowledgeId());
+                    todo.setTodoUserId(todoUser.getUserId());
+                    todo.setFlowType(knowledgeFlowTodo.getFlowType());
+                    todo.setRuleId(nextRule.getId());
+                    todo.insert();
+                }
+            }
+        }
+        // 驳回流程
+        else if (2 == reqVO.getOperate()) {
+            KnowledgeFlowRecord newKnowledgeFlowRecord = KnowledgeFlowRecord.builder().type(2)
+                    .knowledgeId(knowledgeFlowTodo.getKnowledgeId())
+                    .flowId(knowledgeFlowTodo.getFlowId())
+                    .flowType(knowledgeFlowTodo.getFlowType())
+                    .flowRuleId(currentRule.getId())
+                    .flowRuleOrder(currentRule.getRuleOrder())
+                    .processName(currentRule.getRuleName())
+                    .processStatus(2)
+                    .processUserId(user.getId())
+                    .processDeptId(user.getDeptId())
+                    .processTime(LocalDateTime.now())
+                    .remark(reqVO.getRemark())
+                    .submitUserId(submitFlowRecord.getSubmitUserId())
+                    .submitDeptId(submitFlowRecord.getSubmitDeptId()).build();
+            knowledgeFlowRecordService.save(newKnowledgeFlowRecord);
+            // 将知识的状态进行修改
+            knowledgeService.lambdaUpdate().set(Knowledge::getStatus, StatusEnum.REJECT.getStatus())
+                    .eq(Knowledge::getId, reqVO.getKnowledgeId()).update();
+        } else {
+            throw new BusinessException("暂不支持的审批类型");
+        }
+    }
+
+    @Override
+    public List<KnowledgeFlowRecordResVO> queryKnowledgeFlowRecord(String knowledgeId, String flowId) {
+        List<KnowledgeFlowRecord> list = knowledgeFlowRecordService.lambdaQuery().eq(KnowledgeFlowRecord::getKnowledgeId, knowledgeId)
+                .eq(StrUtil.isNotBlank(flowId), KnowledgeFlowRecord::getFlowId, flowId).list();
+        List<KnowledgeFlowRecordResVO> list1 = list.stream().sorted(Comparator.comparingInt(KnowledgeFlowRecord::getFlowRuleOrder)).map(knowledgeFlowRecord -> {
+            KnowledgeFlowRecordResVO node = new KnowledgeFlowRecordResVO();
+            node.setKnowledgeId(knowledgeFlowRecord.getKnowledgeId());
+            node.setProcessName(knowledgeFlowRecord.getProcessName());
+            node.setRemark(knowledgeFlowRecord.getRemark());
+            // 判断
+            node.setProcessTime(knowledgeFlowRecord.getProcessTime());
+//            node.setProcessUserId();
+//            node.setProcessDeptId();
+//            node.setProcessUserName();
+//            node.setProcessDeptName();
+//            node.setProcessOrder();
+
+
+
+
+            return node;
+        }).toList();
+        return null;
+    }
 }
diff --git a/know_sub_model/src/main/java/com/supervision/knowsub/model/KnowledgeFlowRecord.java b/know_sub_model/src/main/java/com/supervision/knowsub/model/KnowledgeFlowRecord.java
index ffe34e5..7db7af8 100644
--- a/know_sub_model/src/main/java/com/supervision/knowsub/model/KnowledgeFlowRecord.java
+++ b/know_sub_model/src/main/java/com/supervision/knowsub/model/KnowledgeFlowRecord.java
@@ -3,6 +3,7 @@ package com.supervision.knowsub.model;
 import com.baomidou.mybatisplus.annotation.*;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 import lombok.AllArgsConstructor;
@@ -51,11 +52,21 @@ public class KnowledgeFlowRecord implements Serializable {
      */
     private String flowRuleId;
 
+    /**
+     * 流程流转的顺序排序
+     */
+    private Integer flowRuleOrder;
+
     /**
      * 操作名称
      */
     private String processName;
 
+    /**
+     * 审批结果,1通过 2驳回
+     */
+    private Integer processStatus;
+
     /**
      * 审批人ID
      */
@@ -69,7 +80,7 @@ public class KnowledgeFlowRecord implements Serializable {
     /**
      * 审批时间
      */
-    private Date processTime;
+    private LocalDateTime processTime;
 
     /**
      * 备注
diff --git a/know_sub_model/src/main/java/com/supervision/knowsub/vo/knowledge/KnowledgeFlowResVO.java b/know_sub_model/src/main/java/com/supervision/knowsub/vo/knowledge/KnowledgeFlowResVO.java
index 9241888..f3c01ff 100644
--- a/know_sub_model/src/main/java/com/supervision/knowsub/vo/knowledge/KnowledgeFlowResVO.java
+++ b/know_sub_model/src/main/java/com/supervision/knowsub/vo/knowledge/KnowledgeFlowResVO.java
@@ -9,6 +9,8 @@ public class KnowledgeFlowResVO {
 
     @Schema(description = "待办ID")
     private String todoId;
+    @Schema(description = "流程ID")
+    private String flowId;
     @Schema(description = "知识ID")
     private String knowledgeId;
     @Schema(description = "标题")
diff --git a/know_sub_model/src/main/resources/mapper/KnowledgeFlowRecordMapper.xml b/know_sub_model/src/main/resources/mapper/KnowledgeFlowRecordMapper.xml
index e2de2b8..c0ee610 100644
--- a/know_sub_model/src/main/resources/mapper/KnowledgeFlowRecordMapper.xml
+++ b/know_sub_model/src/main/resources/mapper/KnowledgeFlowRecordMapper.xml
@@ -32,6 +32,7 @@
 
     <select id="queryKnowledgeFlowTodoPage" resultType="com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO">
         select t1.id as todoId,
+        t1.flow_id as flowId,
         t2.id as knowledgeId,
         t2.title as title,
         t1.flow_type as flowType,
@@ -75,7 +76,8 @@
 
     <select id="queryKnowledgeFlowCompletePage"
             resultType="com.supervision.knowsub.vo.knowledge.KnowledgeFlowResVO">
-        select t1.id as todoId,
+        select
+        t1.flow_id as flowId,
         t2.id as knowledgeId,
         t2.title as title,
         t1.flow_type as flowType,