Browse Source

Merge branch 'master' of http://114.55.67.98:8070/songxy/AI_Engineering

songxy 3 months ago
parent
commit
7cb7ba0746

+ 2 - 2
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/controller/KnowledgeFileController.java

@@ -60,8 +60,8 @@ public class KnowledgeFileController {
     }
 
     @GetMapping("/init")
-    public CommonResult<Boolean> initKnowledgeDocument() {
-        knowledgeFileService.initKnowledgeDocument();
+    public CommonResult<Boolean> initKnowledgeDocument(Long parentId) {
+        knowledgeFileService.initKnowledgeDocument(parentId);
         return success(true);
     }
 }

+ 7 - 1
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/UploadDocsService2.java

@@ -1,19 +1,25 @@
 package com.zjugis.ai.knowledge.retrofit.docs;
 
+import com.zjugis.ai.knowledge.retrofit.docs.config.FeignMultipartSupportConfig;
 import com.zjugis.ai.knowledge.retrofit.docs.params.DeleteDocsReqVO;
+import com.zjugis.ai.knowledge.retrofit.docs.params.UploadDocsReqVO;
 import com.zjugis.ai.knowledge.retrofit.docs.vo.DocsRespVO;
 import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.http.MediaType;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestParam;
 
 /**
  * @Author 陈俊
  * @Date 2025/2/21 10:43
  * @Version 1.0
  */
-@FeignClient(name = "knowledgeBaseClient",url = "${retrofit-url.ai-url}")
+@FeignClient(name = "knowledgeBaseClient", url = "${retrofit-url.ai-url}", configuration = FeignMultipartSupportConfig.class)
 public interface UploadDocsService2 {
 
+    @PostMapping(value = "/knowledge_base/upload_docs", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
+    DocsRespVO upload(UploadDocsReqVO reqVO);
 
     @PostMapping("/knowledge_base/delete_docs")
     DocsRespVO delete(@RequestBody DeleteDocsReqVO reqVO);

+ 27 - 0
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/config/FeignMultipartSupportConfig.java

@@ -0,0 +1,27 @@
+package com.zjugis.ai.knowledge.retrofit.docs.config;
+
+import feign.codec.Encoder;
+import feign.form.spring.SpringFormEncoder;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.context.annotation.Scope;
+
+
+/**
+ * @Author 陈俊
+ * @Date 2025/3/10 16:53
+ * @Version 1.0
+ */
+
+@Configuration
+public class FeignMultipartSupportConfig {
+
+    @Bean
+    @Primary
+    @Scope("prototype")
+    public Encoder multipartFormEncoder() {
+        return new SpringFormEncoder();
+    }
+
+}

+ 3 - 2
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/retrofit/docs/params/UploadDocsReqVO.java

@@ -4,6 +4,7 @@ import lombok.Data;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.io.File;
+import java.util.List;
 
 /**
  * @Author 陈俊
@@ -13,7 +14,7 @@ import java.io.File;
 @Data
 public class UploadDocsReqVO {
 
-    private String knowledgeBaseName;
+    private String knowledge_base_name;
 
-    private MultipartFile[] files;
+    private List<MultipartFile> files;
 }

+ 1 - 1
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/service/KnowledgeFileService.java

@@ -22,7 +22,7 @@ public interface KnowledgeFileService {
 
     void deleteKnowledgeDocument(Long id);
 
-    void initKnowledgeDocument();
+    void initKnowledgeDocument(Long parentId);
 
     List<KnowledgeFileDO> getKnowledgeDocumentList(KnowledgeFilePageReqVO pageReqVO);
 }

+ 22 - 19
ais_knowledge/knowledge/src/main/java/com/zjugis/ai/knowledge/service/KnowledgeFileServiceImpl.java

@@ -11,6 +11,7 @@ import com.zjugis.ai.knowledge.dal.mapper.KnowledgeFileMapper;
 import com.zjugis.ai.knowledge.retrofit.docs.UploadDocsService;
 import com.zjugis.ai.knowledge.retrofit.docs.UploadDocsService2;
 import com.zjugis.ai.knowledge.retrofit.docs.params.DeleteDocsReqVO;
+import com.zjugis.ai.knowledge.retrofit.docs.params.UploadDocsReqVO;
 import com.zjugis.ai.knowledge.retrofit.docs.vo.DocsRespVO;
 import com.zjugis.ai.knowledge.util.files.FileTypeUtils;
 import com.zjugis.ai.knowledge.util.object.BeanUtils;
@@ -24,9 +25,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import java.util.*;
 
 import static com.zjugis.ai.knowledge.common.exception.util.ServiceExceptionUtil.exception;
 
@@ -58,15 +57,12 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService {
             fileDO.setSize(content.length);
             String type = FileTypeUtils.getMineType(content, file.getOriginalFilename());
             fileDO.setType(type);
-            // 准备文本参数
-            RequestBody knowledgeBaseName =
-                    RequestBody.create(MediaType.parse("text/plain"), BASE_NAME);
-            // 准备文件列表
-            RequestBody fileRQ = RequestBody.create(MediaType.parse(type), content);
-            MultipartBody.Part part = MultipartBody.Part.createFormData("picture", file.getName(), fileRQ);
-            List<MultipartBody.Part> parts = new ArrayList<>();
-            parts.add(part);
-            DocsRespVO respVO = uploadDocsService.upload(knowledgeBaseName, parts);
+            UploadDocsReqVO reqVO = new UploadDocsReqVO();
+            reqVO.setKnowledge_base_name(BASE_NAME);
+            List<MultipartFile> files = new ArrayList<>();
+            files.add(file);
+            reqVO.setFiles(files);
+            DocsRespVO respVO = uploadDocsService2.upload(reqVO);
             if (respVO.getCode() != 200) {
                 throw exception(new ErrorCode(respVO.getCode(), respVO.getMsg()));
             }
@@ -105,15 +101,19 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService {
     }
 
     @Override
-    public void initKnowledgeDocument() {
+    public void initKnowledgeDocument(Long parentId) {
         try {
             // 读取文件夹中的所有文件
-            List<String> fileNames = readFileNamesFromFolder(folderPath);
+            List<Map<String,Object>> fileNames = readFileNamesFromFolder(folderPath);
             List<KnowledgeFileDO> list = new ArrayList<>(fileNames.size());
             fileNames.forEach(s -> {
                 KnowledgeFileDO fileDO = new KnowledgeFileDO();
-                fileDO.setName(s);
-                fileDO.setType(FileTypeUtils.getMineType(s));
+                String fileName = s.get("fileName").toString();
+                Integer fileSize = Integer.parseInt(s.get("fileSize").toString());
+                fileDO.setName(fileName);
+                fileDO.setType(FileTypeUtils.getMineType(fileName));
+                fileDO.setParentId(parentId);
+                fileDO.setSize(fileSize);
                 list.add(fileDO);
             });
             knowledgeFileMapper.insertBatch(list);
@@ -130,8 +130,8 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService {
     /**
      * 读取指定文件夹中的所有文件名
      */
-    private static List<String> readFileNamesFromFolder(String folderPath) {
-        List<String> fileNames = new ArrayList<>();
+    private static List<Map<String,Object>> readFileNamesFromFolder(String folderPath) {
+        List<Map<String,Object>> fileNames = new ArrayList<>();
         File folder = new File(folderPath);
 
         if (!folder.exists() || !folder.isDirectory()) {
@@ -142,7 +142,10 @@ public class KnowledgeFileServiceImpl implements KnowledgeFileService {
         if (files != null) {
             for (File file : files) {
                 if (file.isFile()) {
-                    fileNames.add(file.getName());
+                    Map<String,Object> map = new HashMap<>();
+                    map.put("fileName",file.getName());
+                    map.put("fileSize",file.length());
+                    fileNames.add(map);
                 }
             }
         }

+ 1 - 1
ais_knowledge/knowledge/src/main/resources/application.yaml

@@ -13,7 +13,7 @@ spring:
     pathmatch:
       matching-strategy: ANT_PATH_MATCHER # 解决 SpringFox 与 SpringBoot 2.6.x 不兼容的问题,参见 SpringFoxHandlerProviderBeanPostProcessor 类
   profiles:
-    active: hzprod
+    active: dev
 server:
   port: 9999