From 1495c169d1a39f60e09eaad71908255587f4d381 Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期三, 08 四月 2026 09:40:19 +0800
Subject: [PATCH] 知识库添加附件上传

---
 src/main/java/com/ruoyi/approve/controller/KnowledgeBaseFileController.java    |   72 ++++++++++++
 src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseFileServiceImpl.java |   31 +++++
 src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseFileMapper.java            |   22 +++
 src/main/java/com/ruoyi/approve/pojo/KnowledgeBaseFile.java                    |   55 +++++++++
 src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java     |   30 ++++
 src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java              |    7 +
 src/main/java/com/ruoyi/approve/service/KnowledgeBaseFileService.java          |   20 +++
 src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java        |   26 +++-
 src/main/java/com/ruoyi/approve/vo/KnowledgeBaseVo.java                        |   14 ++
 src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java                |    3 
 src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml                  |   30 +++++
 src/main/resources/mapper/approve/KnowledgeBaseMapper.xml                      |    2 
 12 files changed, 302 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
index b6ede4a..b6cfcf8 100644
--- a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
+++ b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseController.java
@@ -1,11 +1,17 @@
 package com.ruoyi.approve.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.mapper.KnowledgeBaseFileMapper;
 import com.ruoyi.approve.mapper.KnowledgeBaseMapper;
 import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
 import com.ruoyi.approve.pojo.RpaProcessAutomation;
+import com.ruoyi.approve.service.KnowledgeBaseFileService;
 import com.ruoyi.approve.service.KnowledgeBaseService;
+import com.ruoyi.approve.vo.KnowledgeBaseVo;
 import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.web.domain.AjaxResult;
 import io.swagger.annotations.Api;
@@ -13,6 +19,7 @@
 import lombok.AllArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
 import javax.servlet.http.HttpServletResponse;
 import java.util.List;
@@ -24,6 +31,8 @@
 public class KnowledgeBaseController {
     @Autowired
     private KnowledgeBaseService knowledgeBaseService;
+    @Autowired
+    private KnowledgeBaseFileService knowledgeBaseFileService;
 
     /**銆�
      * 鑾峰彇鍒楄〃
@@ -31,25 +40,29 @@
      */
     @GetMapping("/getList")
     public AjaxResult getList(@RequestParam(defaultValue = "1") long current,
-                              @RequestParam(defaultValue = "10") long size, KnowledgeBase knowledgeBase) {
+                              @RequestParam(defaultValue = "10") long size, KnowledgeBaseVo knowledgeBase) {
         Page page = new Page(current, size);
-        return AjaxResult.success(knowledgeBaseService.listpage(page,knowledgeBase));
+        IPage<KnowledgeBaseVo> listpage = knowledgeBaseService.listpage(page, knowledgeBase);
+        listpage.getRecords().forEach(item -> {
+            item.setFiles(knowledgeBaseFileService.list(new QueryWrapper<KnowledgeBaseFile>().lambda().eq(KnowledgeBaseFile::getKnowledgeBaseId, item.getId())));
+        });
+        return AjaxResult.success(listpage);
     }
     /**銆�
      * 澧炴坊
      * @return
      */
     @PostMapping("/add")
-    public AjaxResult add(@RequestBody KnowledgeBase knowledgeBase){
-        return AjaxResult.success(knowledgeBaseService.save(knowledgeBase));
+    public AjaxResult add(@RequestBody KnowledgeBaseVo knowledgeBase){
+        return AjaxResult.success(knowledgeBaseService.add(knowledgeBase));
     }
     /**
      * 鏇存柊
      * @return
      */
     @PostMapping("/update")
-    public AjaxResult update(@RequestBody KnowledgeBase knowledgeBase){
-        return AjaxResult.success(knowledgeBaseService.updateById(knowledgeBase));
+    public AjaxResult update(@RequestBody KnowledgeBaseVo knowledgeBase){
+        return AjaxResult.success(knowledgeBaseService.updateKnowledgeBase(knowledgeBase));
     }
     /**
      * 鍒犻櫎
@@ -58,6 +71,7 @@
     @DeleteMapping("/delete")
     public AjaxResult delete(@RequestBody List<Long> ids){
         if(CollectionUtils.isEmpty(ids)) return AjaxResult.error("璇蜂紶鍏ヨ鍒犻櫎鐨処D");
+        knowledgeBaseFileService.remove(new QueryWrapper<KnowledgeBaseFile>().lambda().in(KnowledgeBaseFile::getKnowledgeBaseId, ids));
         return AjaxResult.success(knowledgeBaseService.removeByIds(ids));
     }
 
diff --git a/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseFileController.java b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseFileController.java
new file mode 100644
index 0000000..f7564c6
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/controller/KnowledgeBaseFileController.java
@@ -0,0 +1,72 @@
+package com.ruoyi.approve.controller;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountFile;
+import com.ruoyi.account.service.AccountFileService;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import com.ruoyi.approve.service.KnowledgeBaseFileService;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+
+/**
+ * <p>
+ * 鐭ヨ瘑搴�--闄勪欢 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-07 01:45:45
+ */
+@RestController
+@RequestMapping("/knowledgeBaseFile")
+public class KnowledgeBaseFileController {
+
+
+    @Resource
+    private KnowledgeBaseFileService knowledgeBaseFileService;
+
+
+    /**
+     * 鏂板
+     * @param accountFile
+     * @return
+     */
+    @PostMapping("/add")
+    @ApiOperation("鏂板")
+    public AjaxResult add(@RequestBody KnowledgeBaseFile accountFile) {
+        return AjaxResult.success(knowledgeBaseFileService.save(accountFile));
+    }
+
+    /**
+     * 鍒犻櫎
+     * @param ids
+     * @return
+     */
+    @DeleteMapping("/del")
+    @ApiOperation("鍒犻櫎")
+    public AjaxResult delAccountFile(@RequestBody List<Integer> ids) {
+        if(CollectionUtils.isEmpty(ids)){
+            return AjaxResult.error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+        }
+        //鍒犻櫎妫�楠岄檮浠�
+        return AjaxResult.success(knowledgeBaseFileService.removeBatchByIds(ids));
+    }
+
+    /**
+     *鍒嗛〉鏌ヨ
+     * @param page
+     * @param accountFile
+     * @return
+     */
+    @GetMapping("/listPage")
+    @ApiOperation("鍒嗛〉鏌ヨ")
+    public AjaxResult accountFileListPage(Page page, KnowledgeBaseFile accountFile) {
+        return AjaxResult.success(knowledgeBaseFileService.knowledgeBaseFileListPage(page, accountFile));
+    }
+
+
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseFileMapper.java b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseFileMapper.java
new file mode 100644
index 0000000..33b103b
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseFileMapper.java
@@ -0,0 +1,22 @@
+package com.ruoyi.approve.mapper;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 鐭ヨ瘑搴�--闄勪欢 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-07 01:45:45
+ */
+@Mapper
+public interface KnowledgeBaseFileMapper extends BaseMapper<KnowledgeBaseFile> {
+
+    IPage<KnowledgeBaseFile> knowledgeBaseFileListPage(Page page,@Param("accountFile") KnowledgeBaseFile accountFile);
+}
diff --git a/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
index adae509..b428d09 100644
--- a/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
+++ b/src/main/java/com/ruoyi/approve/mapper/KnowledgeBaseMapper.java
@@ -5,9 +5,10 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.vo.KnowledgeBaseVo;
 import org.apache.ibatis.annotations.Mapper;
 
 @Mapper
 public interface KnowledgeBaseMapper extends BaseMapper<KnowledgeBase> {
-    IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+    IPage<KnowledgeBaseVo> listpage(Page page, KnowledgeBase knowledgeBase);
 }
diff --git a/src/main/java/com/ruoyi/approve/pojo/KnowledgeBaseFile.java b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBaseFile.java
new file mode 100644
index 0000000..e7d9cd6
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/pojo/KnowledgeBaseFile.java
@@ -0,0 +1,55 @@
+package com.ruoyi.approve.pojo;
+
+import com.baomidou.mybatisplus.annotation.FieldFill;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.time.LocalDateTime;
+
+@Data
+public class KnowledgeBaseFile {
+
+    /**
+     * 搴忓彿
+     */
+    @TableId(type = IdType.AUTO)
+    private Long id;
+
+    @ApiModelProperty(value = "鏂囦欢鍚嶇О")
+    private String name;
+
+    @ApiModelProperty(value = "鏂囦欢璺緞")
+    private String url;
+
+    @ApiModelProperty(value = "鏂囦欢澶у皬")
+    private int fileSize;
+
+    @ApiModelProperty(value = "鐭ヨ瘑搴搃d")
+    @NotBlank(message = "鐭ヨ瘑搴搃d涓嶈兘涓虹┖!")
+    private Long knowledgeBaseId;
+
+
+    @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+    @TableField(fill = FieldFill.INSERT)
+    private LocalDateTime createTime;
+
+    @ApiModelProperty(value = "淇敼鏃堕棿")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private LocalDateTime updateTime;
+
+    @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT)
+    private Integer createUser;
+
+    @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+    @TableField(fill = FieldFill.INSERT_UPDATE)
+    private Integer updateUser;
+
+    @ApiModelProperty(value = "绉熸埛ID")
+    @TableField(fill = FieldFill.INSERT)
+    private Long tenantId;
+}
diff --git a/src/main/java/com/ruoyi/approve/service/KnowledgeBaseFileService.java b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseFileService.java
new file mode 100644
index 0000000..0a1f3e7
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseFileService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.approve.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountFile;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 鐭ヨ瘑搴�--闄勪欢 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-07 01:45:45
+ */
+public interface KnowledgeBaseFileService extends IService<KnowledgeBaseFile> {
+
+    IPage<KnowledgeBaseFile> knowledgeBaseFileListPage(Page page, KnowledgeBaseFile accountFile);
+}
diff --git a/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
index c8a3664..3ed06cf 100644
--- a/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
+++ b/src/main/java/com/ruoyi/approve/service/KnowledgeBaseService.java
@@ -4,7 +4,12 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.vo.KnowledgeBaseVo;
 
 public interface KnowledgeBaseService extends IService<KnowledgeBase> {
-    IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase);
+    IPage<KnowledgeBaseVo> listpage(Page page, KnowledgeBaseVo knowledgeBase);
+
+    Boolean add(KnowledgeBaseVo knowledgeBase);
+
+    Boolean updateKnowledgeBase(KnowledgeBaseVo knowledgeBase);
 }
diff --git a/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseFileServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseFileServiceImpl.java
new file mode 100644
index 0000000..271d709
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseFileServiceImpl.java
@@ -0,0 +1,31 @@
+package com.ruoyi.approve.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.account.pojo.AccountFile;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import com.ruoyi.approve.mapper.KnowledgeBaseFileMapper;
+import com.ruoyi.approve.service.KnowledgeBaseFileService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 鐭ヨ瘑搴�--闄勪欢 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-04-07 01:45:45
+ */
+@Service
+public class KnowledgeBaseFileServiceImpl extends ServiceImpl<KnowledgeBaseFileMapper, KnowledgeBaseFile> implements KnowledgeBaseFileService {
+
+    @Autowired
+    private KnowledgeBaseFileMapper knowledgeBaseFileMapper;
+
+    @Override
+    public IPage<KnowledgeBaseFile> knowledgeBaseFileListPage(Page page, KnowledgeBaseFile accountFile) {
+        return knowledgeBaseFileMapper.knowledgeBaseFileListPage(page,accountFile);
+    }
+}
diff --git a/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
index 57a3fa7..dd200d1 100644
--- a/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
+++ b/src/main/java/com/ruoyi/approve/service/impl/KnowledgeBaseServiceImpl.java
@@ -3,19 +3,47 @@
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.ruoyi.approve.mapper.KnowledgeBaseFileMapper;
 import com.ruoyi.approve.mapper.KnowledgeBaseMapper;
 import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
 import com.ruoyi.approve.service.KnowledgeBaseService;
+import com.ruoyi.approve.vo.KnowledgeBaseVo;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
 
 @Service
 public class KnowledgeBaseServiceImpl extends ServiceImpl<KnowledgeBaseMapper, KnowledgeBase> implements KnowledgeBaseService {
     @Autowired
     private KnowledgeBaseMapper knowledgeBaseMapper;
+    @Autowired
+    private KnowledgeBaseFileMapper knowledgeBaseFileMapper;
 
     @Override
-    public IPage<KnowledgeBase> listpage(Page page, KnowledgeBase knowledgeBase) {
+    public IPage<KnowledgeBaseVo> listpage(Page page, KnowledgeBaseVo knowledgeBase) {
         return knowledgeBaseMapper.listpage(page,knowledgeBase);
     }
+
+    @Override
+    public Boolean add(KnowledgeBaseVo knowledgeBase) {
+        this.save(knowledgeBase);
+        for (KnowledgeBaseFile file : knowledgeBase.getFiles()) {
+            file.setKnowledgeBaseId(knowledgeBase.getId());
+            knowledgeBaseFileMapper.insert(file);
+        }
+        return true;
+    }
+
+    @Override
+    public Boolean updateKnowledgeBase(KnowledgeBaseVo knowledgeBase) {
+        this.updateById(knowledgeBase);
+        for (KnowledgeBaseFile file : knowledgeBase.getFiles()) {
+            if (file.getId() == null) {
+                file.setKnowledgeBaseId(knowledgeBase.getId());
+                knowledgeBaseFileMapper.insert(file);
+            }
+        }
+        return true;
+    }
 }
diff --git a/src/main/java/com/ruoyi/approve/vo/KnowledgeBaseVo.java b/src/main/java/com/ruoyi/approve/vo/KnowledgeBaseVo.java
new file mode 100644
index 0000000..03180ea
--- /dev/null
+++ b/src/main/java/com/ruoyi/approve/vo/KnowledgeBaseVo.java
@@ -0,0 +1,14 @@
+package com.ruoyi.approve.vo;
+
+import com.ruoyi.approve.pojo.KnowledgeBase;
+import com.ruoyi.approve.pojo.KnowledgeBaseFile;
+import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
+
+@Data
+public class KnowledgeBaseVo extends KnowledgeBase {
+
+    private List<KnowledgeBaseFile> files;
+}
diff --git a/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml b/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml
new file mode 100644
index 0000000..e5d4b02
--- /dev/null
+++ b/src/main/resources/mapper/approve/KnowledgeBaseFileMapper.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.approve.mapper.KnowledgeBaseFileMapper">
+
+    <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+    <resultMap id="BaseResultMap" type="com.ruoyi.approve.pojo.KnowledgeBaseFile">
+        <id column="id" property="id" />
+        <result column="name" property="name" />
+        <result column="url" property="url" />
+        <result column="file_size" property="fileSize" />
+        <result column="knowledge_base_id" property="knowledgeBaseId" />
+        <result column="create_time" property="createTime" />
+        <result column="create_user" property="createUser" />
+        <result column="update_time" property="updateTime" />
+        <result column="update_user" property="updateUser" />
+        <result column="tenant_id" property="tenantId" />
+    </resultMap>
+    <select id="knowledgeBaseFileListPage" resultType="com.ruoyi.approve.pojo.KnowledgeBaseFile">
+        SELECT
+        *
+        FROM account_file
+        where
+        <if test="accountFile.knowledgeBaseId != null and accountFile.knowledgeBaseId != ''">
+            AND knowledge_base_id = #{accountFile.knowledgeBaseId}
+        </if>
+        <if test="accountFile.name != null and accountFile.name != '' ">
+            AND name = #{accountFile.name}
+        </if>
+    </select>
+</mapper>
diff --git a/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
index e4819c2..3c286e6 100644
--- a/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
+++ b/src/main/resources/mapper/approve/KnowledgeBaseMapper.xml
@@ -5,7 +5,7 @@
 <mapper namespace="com.ruoyi.approve.mapper.KnowledgeBaseMapper">
 
 
-    <select id="listpage" resultType="com.ruoyi.approve.pojo.KnowledgeBase">
+    <select id="listpage" resultType="com.ruoyi.approve.vo.KnowledgeBaseVo">
         select * from knowledge_base
         <where>
             1=1

--
Gitblit v1.9.3