From 8563428bf914a5be054db9078f4a334e4d94e4f1 Mon Sep 17 00:00:00 2001
From: ageerle <32251822+ageerle@users.noreply.github.com>
Date: 星期日, 11 五月 2025 14:55:44 +0800
Subject: [PATCH] Merge pull request #77 from zhangpengxiang/ExcelFileLader/dev

---
 ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java |   41 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)

diff --git a/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java
new file mode 100644
index 0000000..b47ce11
--- /dev/null
+++ b/ruoyi-modules-api/ruoyi-knowledge-api/src/main/java/org/ruoyi/chain/loader/ExcelFileLoader.java
@@ -0,0 +1,41 @@
+package org.ruoyi.chain.loader;
+
+import dev.langchain4j.data.document.Document;
+import dev.langchain4j.data.document.parser.apache.tika.ApacheTikaDocumentParser;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.ruoyi.chain.split.TextSplitter;
+import org.ruoyi.common.core.exception.UtilException;
+import org.springframework.stereotype.Component;
+
+import java.io.BufferedInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.List;
+@Component
+@AllArgsConstructor
+@Slf4j
+public class ExcelFileLoader implements ResourceLoader {
+    private final TextSplitter textSplitter;
+    private static final int DEFAULT_BUFFER_SIZE = 8192;
+    @Override
+    public String getContent(InputStream inputStream) {
+        // 浣跨敤甯︾紦鍐茬殑杈撳叆娴佸寘瑁咃紙淇濇寔鍘熸祦涓嶈嚜鍔ㄥ叧闂級
+        try (InputStream bufferedStream = new BufferedInputStream(inputStream, DEFAULT_BUFFER_SIZE)) {
+            ApacheTikaDocumentParser apacheTikaDocumentParser = new ApacheTikaDocumentParser();
+            Document document = apacheTikaDocumentParser.parse(bufferedStream);
+            return document.text();
+        } catch (IOException e) {
+            String errorMsg = "Excel鏂囦欢娴佽鍙栧け璐�";
+            throw new UtilException(errorMsg, e);
+        } catch (RuntimeException e) {
+            String errorMsg = "Excel鍐呭瑙f瀽寮傚父";
+            throw new UtilException(errorMsg, e);
+        }
+    }
+
+    @Override
+    public List<String> getChunkList(String content, String kid) {
+        return textSplitter.split(content, kid);
+    }
+}

--
Gitblit v1.9.3