diff --git a/RuoYi-App-master/pages/login.vue b/RuoYi-App-master/pages/login.vue
index d76486a..3a23c05 100644
--- a/RuoYi-App-master/pages/login.vue
+++ b/RuoYi-App-master/pages/login.vue
@@ -102,8 +102,8 @@ export default {
return {
codeUrl: "",
loginForm: {
- username: "admin",
- password: "admin123",
+ username: "",
+ password: "",
rememberMe: false,
code: "",
uuid: ""
diff --git a/pom.xml b/pom.xml
index fff748e..18a8521 100644
--- a/pom.xml
+++ b/pom.xml
@@ -198,13 +198,6 @@
${ruoyi.version}
-
- org.springframework.ai
- spring-ai-bom
- ${spring-ai.version}
- pom
- import
-
diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml
index bcc31f2..35bbfa9 100644
--- a/ruoyi-admin/pom.xml
+++ b/ruoyi-admin/pom.xml
@@ -54,56 +54,6 @@
ruoyi-generator
-
- org.springframework.ai
- spring-ai-starter-model-openai
-
-
-
- org.springframework.ai
- spring-ai-vector-store
-
-
-
- org.springframework.ai
- spring-ai-mariadb-store
-
-
- org.springframework.ai
- spring-ai-advisors-vector-store
-
-
-
-
- org.springframework.ai
- spring-ai-pdf-document-reader
-
-
- org.springframework.ai
- spring-ai-jsoup-document-reader
-
-
- org.springframework.ai
- spring-ai-markdown-document-reader
-
-
-
- org.springframework.ai
- spring-ai-tika-document-reader
-
-
-
-
- org.mariadb.jdbc
- mariadb-java-client
-
-
-
-
- org.springframework.ai
- spring-ai-starter-mcp-client
-
-
com.github.dathlin
HslCommunication
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java
deleted file mode 100644
index 838bdd2..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/config/ChatModelConfig.java
+++ /dev/null
@@ -1,120 +0,0 @@
-package com.ruoyi.ai.chat.config;
-
-import com.alibaba.druid.spring.boot3.autoconfigure.DruidDataSourceBuilder;
-import com.mysql.cj.jdbc.MysqlDataSource;
-import com.ruoyi.ai.chat.service.impl.InSqlMemory;
-import com.ruoyi.ai.util.service.BasStockToolService;
-import com.ruoyi.ai.util.service.ToolService;
-import org.mariadb.jdbc.MariaDbDataSource;
-import org.springframework.ai.chat.client.ChatClient;
-import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
-import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
-import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
-import org.springframework.ai.chat.memory.ChatMemory;
-import org.springframework.ai.embedding.EmbeddingModel;
-import org.springframework.ai.openai.OpenAiChatModel;
-import org.springframework.ai.openai.OpenAiEmbeddingModel;
-import org.springframework.ai.openai.api.OpenAiApi;
-import org.springframework.ai.tool.ToolCallback;
-import org.springframework.ai.tool.ToolCallbackProvider;
-import org.springframework.ai.vectorstore.SearchRequest;
-import org.springframework.ai.vectorstore.SimpleVectorStore;
-import org.springframework.ai.vectorstore.VectorStore;
-import org.springframework.ai.vectorstore.mariadb.MariaDBVectorStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.boot.jdbc.DataSourceBuilder;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.core.JdbcTemplate;
-
-import javax.sql.DataSource;
-import java.sql.SQLException;
-
-@Configuration
-public class ChatModelConfig {
-
-
- private String system = "你是福来瑞达仓库助手,有自动分配功能 自动分配功能逻辑如下:根据仓库id查询库存,找到某一个库存,生成对应的作业";
-
-
- @Bean
- @ConditionalOnProperty(
- name = "spring.ai.enable", // 配置项名称
- havingValue = "true", // 期望的值
- matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
- )
- public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) {
- return ChatClient
- //使用的模型
- .builder(openAiChatModel)
- //设置系统信息
- .defaultSystem(system)
- //打印日志
- .defaultAdvisors(new SimpleLoggerAdvisor())
- //上下文记忆
- .defaultAdvisors(MessageChatMemoryAdvisor.builder(chatMemory).build())
- //实用工具
- .defaultTools(toolService)
- //mcp工具
- //.defaultToolCallbacks(toolCallbackProvider)
- .build();
- }
-
- /**
- * 聊天历史内存
- *
- * @return
- */
- @Bean
- @ConditionalOnProperty(
- name = "spring.ai.enable", // 配置项名称
- havingValue = "true", // 期望的值
- matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
- )
- public ChatMemory chatMemory() {
- return new InSqlMemory();
- }
-
- @Bean
- @ConditionalOnProperty(
- name = "spring.ai.enable", // 配置项名称
- havingValue = "true", // 期望的值
- matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
- )
- @ConfigurationProperties("spring.datasource.druid.slave")
- public MariaDbDataSource dataSource() throws SQLException {
- return DataSourceBuilder.create().username("root")
- .type(MariaDbDataSource.class)
- .build();
- }
-
-
- @Bean
- @ConditionalOnProperty(
- name = "spring.ai.enable", // 配置项名称
- havingValue = "true", // 期望的值
- matchIfMissing = false // 配置不存在时是否匹配(false=不注册)
- )
- public VectorStore vectorStore(MariaDbDataSource dataSource, EmbeddingModel embeddingModel) throws SQLException {
- JdbcTemplate customJdbcTemplate = new JdbcTemplate(dataSource);
- return MariaDBVectorStore.builder(customJdbcTemplate, embeddingModel)
- .dimensions(1024) // Optional: defaults to 1536
- .distanceType(MariaDBVectorStore.MariaDBDistanceType.COSINE) // Optional: defaults to COSINE
- .schemaName("test_ai") // Optional: defaults to null
- .vectorTableName("custom_vectors") // Optional: defaults to "vector_store"
- .contentFieldName("text") // Optional: defaults to "content"
- .embeddingFieldName("embedding") // Optional: defaults to "embedding"
- .idFieldName("doc_id") // Optional: defaults to "id"
- .metadataFieldName("meta") // Optional: defaults to "metadata"
- .initializeSchema(true) // Optional: defaults to false
- .schemaValidation(true) // Optional: defaults to false
- .removeExistingVectorStoreTable(false) // Optional: defaults to false
- .maxDocumentBatchSize(10000) // Optional: defaults to 10000
- .build();
- }
-
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/ChatDemoController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/ChatDemoController.java
deleted file mode 100644
index 5a29acd..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/ChatDemoController.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.ruoyi.ai.chat.controller;
-
-import com.ruoyi.ai.chat.domain.CustomMessage;
-import com.ruoyi.ai.chat.service.ChatService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.*;
-import reactor.core.publisher.Flux;
-
-@RestController
-@RequestMapping("/api/chat")
-public class ChatDemoController {
- @Autowired
- private ChatService chatService;
-
-
- /**
- * 流式调用
- * @param customMessage
- * @return
- */
- @RequestMapping(produces = "text/html;charset=utf-8")
- public Flux chat(@RequestBody CustomMessage customMessage) {
- return chatService.chatByUserContent(customMessage);
- }
-
- /**
- * 知识库调用
- * @param customMessage
- * @return
- */
- @RequestMapping(value = "/knowledgeBase", produces = "text/html;charset=utf-8")
- public Flux chatByKnowledgeBase(@RequestBody CustomMessage customMessage) {
- return chatService.chatByVectorStore(customMessage);
- }
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java
deleted file mode 100644
index f270924..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/controller/EmbeddingDemoController.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.ruoyi.ai.chat.controller;
-
-import org.springframework.ai.document.Document;
-import org.springframework.ai.openai.OpenAiEmbeddingModel;
-import org.springframework.ai.reader.ExtractedTextFormatter;
-import org.springframework.ai.reader.pdf.PagePdfDocumentReader;
-import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig;
-import org.springframework.ai.vectorstore.SearchRequest;
-import org.springframework.ai.vectorstore.VectorStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.io.File;
-import java.util.List;
-
-@RestController
-@RequestMapping("/api/embedding")
-public class EmbeddingDemoController {
-
- @Autowired(required = false)
- private OpenAiEmbeddingModel embeddingModel;
-
- @Autowired(required = false)
- private VectorStore vectorStore;
-
- /**
- * 测试Embedding
- * @param message
- * @return
- */
- @RequestMapping("/demo")
- public float[] demo(String message) {
- FileSystemResource fileSystemResource = new FileSystemResource("D:\\Program Files\\Tencent\\xwechat_files\\lhq1329816987_ff0c\\msg\\file\\2025-08\\加减数显电子标签V5.0-广播通信协议7色款 2023.02.27.pdf");
- PagePdfDocumentReader reader = new PagePdfDocumentReader(fileSystemResource, PdfDocumentReaderConfig.builder()
- .withPageExtractedTextFormatter(ExtractedTextFormatter.defaults())
- .withPagesPerDocument(1) // 每1页PDF作为一个Document
- .build());
- // 2.读取PDF文档,拆分为Document
- List documents = reader.read();
- // 3.写入向量库
- vectorStore.add(documents);
- // 4.配置搜索请求
- SearchRequest request = SearchRequest.builder()
- .query(message) // 搜索内容
- .topK(1) // 返回的相似文档数量
- .similarityThreshold(0.6) // 相似度阈值
- .filterExpression("file_name == '加减数显电子标签V5.0-广播通信协议7色款 2023.02.27.pdf'") // 过滤条件,后续可以传入多个文档
- .build();
- // 5.从向量库中搜索
- List docs = vectorStore.similaritySearch(request);
- if (docs == null) {
- System.out.println("没有搜索到任何内容");
- return null;
- }
- for (Document doc : docs) {
- System.out.println(doc.getId());
- System.out.println(doc.getScore());
- System.out.println(doc.getText());
- }
-
- return null;
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/domain/CustomMessage.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/domain/CustomMessage.java
deleted file mode 100644
index 04320f3..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/domain/CustomMessage.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package com.ruoyi.ai.chat.domain;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.HashMap;
-import java.util.List;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class CustomMessage {
-
- private String message;
-
- private String conversationId;
-
- private String type;
-
- private List> files;
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/ChatService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/ChatService.java
deleted file mode 100644
index 56c9397..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/ChatService.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.ruoyi.ai.chat.service;
-
-import com.ruoyi.ai.chat.domain.CustomMessage;
-import reactor.core.publisher.Flux;
-
-public interface ChatService {
- Flux chatByVectorStore(CustomMessage customMessage);
- Flux chatByUserContent(CustomMessage customMessage);
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java
deleted file mode 100644
index 70a0032..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/ChatServiceImpl.java
+++ /dev/null
@@ -1,133 +0,0 @@
-package com.ruoyi.ai.chat.service.impl;
-
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.IdUtil;
-import com.ruoyi.ai.chat.domain.CustomMessage;
-import com.ruoyi.ai.chat.service.ChatService;
-import com.ruoyi.ai.conversation.domain.Conversations;
-import com.ruoyi.ai.conversation.service.IConversationsService;
-import com.ruoyi.ai.message.domain.ChatMessage;
-import com.ruoyi.ai.message.service.IChatMessageService;
-import com.ruoyi.common.utils.SecurityUtils;
-import org.springframework.ai.chat.client.ChatClient;
-import org.springframework.ai.chat.client.advisor.vectorstore.QuestionAnswerAdvisor;
-import org.springframework.ai.chat.memory.ChatMemory;
-import org.springframework.ai.chat.prompt.PromptTemplate;
-import org.springframework.ai.document.Document;
-import org.springframework.ai.openai.OpenAiChatModel;
-import org.springframework.ai.template.st.StTemplateRenderer;
-import org.springframework.ai.vectorstore.SearchRequest;
-import org.springframework.ai.vectorstore.VectorStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import reactor.core.publisher.Flux;
-
-import java.util.Date;
-import java.util.List;
-
-@Service
-public class ChatServiceImpl implements ChatService {
-
- @Autowired(required = false)
- private ChatClient chatClient;
- @Autowired(required = false)
- private OpenAiChatModel openAiChatModel;
- @Autowired(required = false)
- private ChatMemory chatMemory;
- @Autowired(required = false)
- private VectorStore vectorStore;
- @Autowired(required = false)
- private IChatMessageService chatMessageService;
- @Autowired(required = false)
- private IConversationsService conversationsService;
-
- // 定义问答模板
- private final String PROMPT_BLUEPRINT = """
- 严格参考提供的上下文回答查询:
- {context}
- Query:
- {query}
- 如果您从提供的上下文中没有任何答案,只需说:
- 很抱歉,我没有您要找的信息。
- """;
-
- /**
- * 与AI进行聊天对话
- *
- * @param customMessage 用户消息对象,包含消息内容和会话ID
- * @return Flux 流式返回AI响应内容
- */
- @Override
- public Flux chatByVectorStore(CustomMessage customMessage) {
- // 生成唯一会话ID
- Long sessionId = IdUtil.getSnowflakeNextId();
- //修改会话
- Conversations conversations = conversationsService.selectConversationsById(Convert.toLong(customMessage.getConversationId()));
- conversations.setLastInteractionAt(new Date());
- conversations.setTitle(customMessage.getMessage());
- conversationsService.updateConversations(conversations);
- // 用于收集完整的AI响应
- PromptTemplate customPromptTemplate = PromptTemplate.builder()
- .renderer(StTemplateRenderer.builder().startDelimiterToken('<').endDelimiterToken('>').build())
- .template("""
-
-
- Context information is below.
-
- ---------------------
-
- ---------------------
-
- Given the context information and no prior knowledge, answer the query.
-
- Follow these rules:
-
- 1. If the answer is not in the context, just say that you don't know.
- 2. Avoid statements like "Based on the context..." or "The provided information...".
- """)
- .build();
-
- String question = customMessage.getMessage();
-
- QuestionAnswerAdvisor qaAdvisor = QuestionAnswerAdvisor.builder(vectorStore)
- .promptTemplate(customPromptTemplate)
- .build();
-
-
- // 收集每个流式数据块
- return chatClient.prompt(question)
- .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, customMessage.getConversationId()))
- .advisors(qaAdvisor)
- .stream()
- .content();
- }
-
- /**
- * 与AI进行聊天对话
- *
- * @param customMessage 用户消息对象,包含消息内容和会话ID
- * @return Flux 流式返回AI响应内容
- */
- @Override
- public Flux chatByUserContent(CustomMessage customMessage) {
- if (chatClient == null){
- return Flux.just("未开启聊天模型");
- }
-
- // 生成唯一会话ID
- Long sessionId = IdUtil.getSnowflakeNextId();
- //修改会话
- Conversations conversations = conversationsService.selectConversationsById(Convert.toLong(customMessage.getConversationId()));
- conversations.setLastInteractionAt(new Date());
- conversations.setTitle(customMessage.getMessage());
- conversationsService.updateConversations(conversations);
-
- // 收集每个流式数据块
- return chatClient.prompt(customMessage.getMessage())
- .advisors(a -> a.param(ChatMemory.CONVERSATION_ID, customMessage.getConversationId()))
- .stream()
- .content();
- }
-
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/InSqlMemory.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/InSqlMemory.java
deleted file mode 100644
index fd4b320..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/chat/service/impl/InSqlMemory.java
+++ /dev/null
@@ -1,89 +0,0 @@
-package com.ruoyi.ai.chat.service.impl;
-
-import cn.hutool.core.convert.Convert;
-import com.ruoyi.ai.message.domain.ChatMessage;
-import com.ruoyi.ai.chat.domain.CustomMessage;
-import com.ruoyi.ai.message.service.IChatMessageService;
-import com.ruoyi.common.utils.SecurityUtils;
-import org.springframework.ai.chat.memory.ChatMemory;
-import org.springframework.ai.chat.messages.AssistantMessage;
-import org.springframework.ai.chat.messages.Message;
-import org.springframework.ai.chat.messages.UserMessage;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-@Component
-public class InSqlMemory implements ChatMemory {
- @Autowired
- private IChatMessageService chatMessageService;
-
- @Override
- public void add(String conversationId, List messages) {
- for (Message message : messages) {
- CustomMessage customMessage = new CustomMessage();
- customMessage.setConversationId(conversationId);
- customMessage.setMessage(message.getText());
- String role = "";
- switch (message.getMessageType()) {
- case USER:
- role = "user";
- customMessage.setType(role);
- insertUserMessage(customMessage);
- break;
- case ASSISTANT:
- role = "assistant";
- customMessage.setType(role);
- insertUserMessage(customMessage);
- break;
- default:
- role = "unknown";
- break;
-
- }
- }
- }
-
- @Override
- public List get(String conversationId) {
- ChatMessage chatMessageParam = new ChatMessage();
- chatMessageParam.setConversationId(Convert.toLong(conversationId));
- List chatMessages = chatMessageService.selectChatMessageList(chatMessageParam);
-
- List messages = new ArrayList<>();
- for (ChatMessage chatMessage : chatMessages) {
- switch (chatMessage.getRole()) {
- case "user":
- messages.add(new UserMessage(chatMessage.getContent()));
- break;
- case "assistant":
- messages.add(new AssistantMessage(chatMessage.getContent()));
- break;
- default:
- throw new IllegalArgumentException("Unknown role: " + chatMessage.getRole());
- }
- }
- //System.out.println("message 查询结果数量: " + (messages != null ? messages.size() : 0));
- return messages;
- }
-
- @Override
- public void clear(String conversationId) {
- chatMessageService.deleteChatMessageByConversationId(conversationId);
- }
-
- /**
- * 保存用户消息到数据库
- * @param customMessage 用户消息对象
- */
- private void insertUserMessage(CustomMessage customMessage) {
- ChatMessage chatMessage = new ChatMessage();
- chatMessage.setContent(customMessage.getMessage());
- chatMessage.setRole(customMessage.getType());
- chatMessage.setSessionId(0L);
- chatMessage.setConversationId(Convert.toLong(customMessage.getConversationId()));
- //chatMessage.setCreateDept(SecurityUtils.getDeptId());
- chatMessageService.insertChatMessage(chatMessage);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/controller/ConversationsController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/controller/ConversationsController.java
deleted file mode 100644
index fc7aced..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/controller/ConversationsController.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.ruoyi.ai.conversation.controller;
-
-import java.util.List;
-
-import cn.hutool.core.convert.Convert;
-import com.ruoyi.common.utils.SecurityUtils;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.ai.conversation.domain.Conversations;
-import com.ruoyi.ai.conversation.service.IConversationsService;
-import com.ruoyi.ai.message.domain.ChatMessage;
-import com.ruoyi.ai.message.service.IChatMessageService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
-import java.util.HashMap;
-import java.util.Map;
-
-/**
- * RAG项目会话管理Controller
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-@RestController
-@RequestMapping("/ai/conversations")
-public class ConversationsController extends BaseController
-{
- @Autowired
- private IConversationsService conversationsService;
-
- @Autowired
- private IChatMessageService chatMessageService;
-
- /**
- * 查询RAG项目会话管理列表
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:list')")
- @GetMapping("/list")
- public TableDataInfo list(Conversations conversations)
- {
- startPage();
- conversations.setUserId(Convert.toStr(SecurityUtils.getUserId()));
- List list = conversationsService.selectConversationsList(conversations);
- return getDataTable(list);
- }
-
- /**
- * 导出RAG项目会话管理列表
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:export')")
- @Log(title = "RAG项目会话管理", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export(HttpServletResponse response, Conversations conversations)
- {
- List list = conversationsService.selectConversationsList(conversations);
- ExcelUtil util = new ExcelUtil(Conversations.class);
- util.exportExcel(response, list, "RAG项目会话管理数据");
- }
-
- /**
- * 获取RAG项目会话管理详细信息
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:query')")
- @GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
- return success(conversationsService.selectConversationsById(id));
- }
-
- /**
- * 新增RAG项目会话管理
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:add')")
- @Log(title = "RAG项目会话管理", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@RequestBody Conversations conversations)
- {
- conversationsService.insertConversations(conversations);
- return AjaxResult.success(conversations.getId());
- }
-
- /**
- * 修改RAG项目会话管理
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:edit')")
- @Log(title = "RAG项目会话管理", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@RequestBody Conversations conversations)
- {
- return toAjax(conversationsService.updateConversations(conversations));
- }
-
- /**
- * 删除RAG项目会话管理
- */
- @PreAuthorize("@ss.hasPermi('ai:conversations:remove')")
- @Log(title = "RAG项目会话管理", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
- {
- return toAjax(conversationsService.deleteConversationsByIds(ids));
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/domain/Conversations.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/domain/Conversations.java
deleted file mode 100644
index 8f8bfc4..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/domain/Conversations.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package com.ruoyi.ai.conversation.domain;
-
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
-
-/**
- * RAG项目会话管理对象 conversations
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public class Conversations extends BaseEntity
-{
- private static final long serialVersionUID = 1L;
-
- /** 会话内部唯一ID */
- private Long id;
-
- /** 外部会话标识(sessionId) */
- @Excel(name = "外部会话标识", readConverterExp = "s=essionId")
- private String sessionId;
-
- /** 用户唯一ID */
- @Excel(name = "用户唯一ID")
- private String userId;
-
- /** 会话标题 */
- @Excel(name = "会话标题")
- private String title;
-
- /** 会话状态 */
- @Excel(name = "会话状态")
- private String status;
-
- /** 会话元数据(JSON格式) */
- @Excel(name = "会话元数据", readConverterExp = "J=SON格式")
- private String metadata;
-
- /** 首次查询内容 */
- @Excel(name = "首次查询内容")
- private String firstQuery;
-
- /** 消息总数 */
- @Excel(name = "消息总数")
- private Long messageCount;
-
- /** 累计Token消耗 */
- @Excel(name = "累计Token消耗")
- private Long tokenUsage;
-
- /** 会话创建时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @Excel(name = "会话创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
- private Date createdAt;
-
- /** 最后更新时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @Excel(name = "最后更新时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
- private Date updatedAt;
-
- /** 最后交互时间 */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @Excel(name = "最后交互时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
- private Date lastInteractionAt;
-
- public void setId(Long id)
- {
- this.id = id;
- }
-
- public Long getId()
- {
- return id;
- }
-
- public void setSessionId(String sessionId)
- {
- this.sessionId = sessionId;
- }
-
- public String getSessionId()
- {
- return sessionId;
- }
-
- public void setUserId(String userId)
- {
- this.userId = userId;
- }
-
- public String getUserId()
- {
- return userId;
- }
-
- public void setTitle(String title)
- {
- this.title = title;
- }
-
- public String getTitle()
- {
- return title;
- }
-
- public void setStatus(String status)
- {
- this.status = status;
- }
-
- public String getStatus()
- {
- return status;
- }
-
- public void setMetadata(String metadata)
- {
- this.metadata = metadata;
- }
-
- public String getMetadata()
- {
- return metadata;
- }
-
- public void setFirstQuery(String firstQuery)
- {
- this.firstQuery = firstQuery;
- }
-
- public String getFirstQuery()
- {
- return firstQuery;
- }
-
- public void setMessageCount(Long messageCount)
- {
- this.messageCount = messageCount;
- }
-
- public Long getMessageCount()
- {
- return messageCount;
- }
-
- public void setTokenUsage(Long tokenUsage)
- {
- this.tokenUsage = tokenUsage;
- }
-
- public Long getTokenUsage()
- {
- return tokenUsage;
- }
-
- public void setCreatedAt(Date createdAt)
- {
- this.createdAt = createdAt;
- }
-
- public Date getCreatedAt()
- {
- return createdAt;
- }
-
- public void setUpdatedAt(Date updatedAt)
- {
- this.updatedAt = updatedAt;
- }
-
- public Date getUpdatedAt()
- {
- return updatedAt;
- }
-
- public void setLastInteractionAt(Date lastInteractionAt)
- {
- this.lastInteractionAt = lastInteractionAt;
- }
-
- public Date getLastInteractionAt()
- {
- return lastInteractionAt;
- }
-
- @Override
- public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
- .append("id", getId())
- .append("sessionId", getSessionId())
- .append("userId", getUserId())
- .append("title", getTitle())
- .append("status", getStatus())
- .append("metadata", getMetadata())
- .append("firstQuery", getFirstQuery())
- .append("messageCount", getMessageCount())
- .append("tokenUsage", getTokenUsage())
- .append("createdAt", getCreatedAt())
- .append("updatedAt", getUpdatedAt())
- .append("lastInteractionAt", getLastInteractionAt())
- .toString();
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/mapper/ConversationsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/mapper/ConversationsMapper.java
deleted file mode 100644
index 6942bed..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/mapper/ConversationsMapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.ai.conversation.mapper;
-
-import java.util.List;
-import com.ruoyi.ai.conversation.domain.Conversations;
-
-/**
- * RAG项目会话管理Mapper接口
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public interface ConversationsMapper
-{
- /**
- * 查询RAG项目会话管理
- *
- * @param id RAG项目会话管理主键
- * @return RAG项目会话管理
- */
- public Conversations selectConversationsById(Long id);
-
- /**
- * 查询RAG项目会话管理列表
- *
- * @param conversations RAG项目会话管理
- * @return RAG项目会话管理集合
- */
- public List selectConversationsList(Conversations conversations);
-
- /**
- * 新增RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- public int insertConversations(Conversations conversations);
-
- /**
- * 修改RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- public int updateConversations(Conversations conversations);
-
- /**
- * 删除RAG项目会话管理
- *
- * @param id RAG项目会话管理主键
- * @return 结果
- */
- public int deleteConversationsById(Long id);
-
- /**
- * 批量删除RAG项目会话管理
- *
- * @param ids 需要删除的数据主键集合
- * @return 结果
- */
- public int deleteConversationsByIds(Long[] ids);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/IConversationsService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/IConversationsService.java
deleted file mode 100644
index a903dcd..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/IConversationsService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.ai.conversation.service;
-
-import java.util.List;
-import com.ruoyi.ai.conversation.domain.Conversations;
-
-/**
- * RAG项目会话管理Service接口
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public interface IConversationsService
-{
- /**
- * 查询RAG项目会话管理
- *
- * @param id RAG项目会话管理主键
- * @return RAG项目会话管理
- */
- public Conversations selectConversationsById(Long id);
-
- /**
- * 查询RAG项目会话管理列表
- *
- * @param conversations RAG项目会话管理
- * @return RAG项目会话管理集合
- */
- public List selectConversationsList(Conversations conversations);
-
- /**
- * 新增RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- public int insertConversations(Conversations conversations);
-
- /**
- * 修改RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- public int updateConversations(Conversations conversations);
-
- /**
- * 批量删除RAG项目会话管理
- *
- * @param ids 需要删除的RAG项目会话管理主键集合
- * @return 结果
- */
- public int deleteConversationsByIds(Long[] ids);
-
- /**
- * 删除RAG项目会话管理信息
- *
- * @param id RAG项目会话管理主键
- * @return 结果
- */
- public int deleteConversationsById(Long id);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/impl/ConversationsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/impl/ConversationsServiceImpl.java
deleted file mode 100644
index d0cd556..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/conversation/service/impl/ConversationsServiceImpl.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.ruoyi.ai.conversation.service.impl;
-
-import java.util.Date;
-import java.util.List;
-
-import cn.hutool.core.convert.Convert;
-import com.ruoyi.common.utils.SecurityUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.ai.conversation.mapper.ConversationsMapper;
-import com.ruoyi.ai.conversation.domain.Conversations;
-import com.ruoyi.ai.conversation.service.IConversationsService;
-
-/**
- * RAG项目会话管理Service业务层处理
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-@Service
-public class ConversationsServiceImpl implements IConversationsService
-{
- @Autowired
- private ConversationsMapper conversationsMapper;
-
- /**
- * 查询RAG项目会话管理
- *
- * @param id RAG项目会话管理主键
- * @return RAG项目会话管理
- */
- @Override
- public Conversations selectConversationsById(Long id)
- {
- return conversationsMapper.selectConversationsById(id);
- }
-
- /**
- * 查询RAG项目会话管理列表
- *
- * @param conversations RAG项目会话管理
- * @return RAG项目会话管理
- */
- @Override
- public List selectConversationsList(Conversations conversations)
- {
- return conversationsMapper.selectConversationsList(conversations);
- }
-
- /**
- * 新增RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- @Override
- public int insertConversations(Conversations conversations)
- {
- conversations.setUserId(Convert.toStr(SecurityUtils.getUserId()));
- conversations.setCreatedAt(new Date());
- conversations.setUpdatedAt(new Date());
- conversations.setSessionId(Convert.toStr(SecurityUtils.getUserId()));
- return conversationsMapper.insertConversations(conversations);
- }
-
- /**
- * 修改RAG项目会话管理
- *
- * @param conversations RAG项目会话管理
- * @return 结果
- */
- @Override
- public int updateConversations(Conversations conversations)
- {
- return conversationsMapper.updateConversations(conversations);
- }
-
- /**
- * 批量删除RAG项目会话管理
- *
- * @param ids 需要删除的RAG项目会话管理主键
- * @return 结果
- */
- @Override
- public int deleteConversationsByIds(Long[] ids)
- {
- return conversationsMapper.deleteConversationsByIds(ids);
- }
-
- /**
- * 删除RAG项目会话管理信息
- *
- * @param id RAG项目会话管理主键
- * @return 结果
- */
- @Override
- public int deleteConversationsById(Long id)
- {
- return conversationsMapper.deleteConversationsById(id);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/controller/ChatMessageController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/message/controller/ChatMessageController.java
deleted file mode 100644
index 7932a72..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/controller/ChatMessageController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.ruoyi.ai.message.controller;
-
-import java.util.List;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.ai.message.domain.ChatMessage;
-import com.ruoyi.ai.message.service.IChatMessageService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
-
-/**
- * 聊天消息Controller
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-@RestController
-@RequestMapping("/ai/message")
-public class ChatMessageController extends BaseController
-{
- @Autowired
- private IChatMessageService chatMessageService;
-
- /**
- * 查询聊天消息列表
- */
- @PreAuthorize("@ss.hasPermi('ai:message:list')")
- @GetMapping("/list")
- public TableDataInfo list(ChatMessage chatMessage)
- {
- startPage();
- List list = chatMessageService.selectChatMessageList(chatMessage);
- return getDataTable(list);
- }
-
- /**
- * 导出聊天消息列表
- */
- @PreAuthorize("@ss.hasPermi('ai:message:export')")
- @Log(title = "聊天消息", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export(HttpServletResponse response, ChatMessage chatMessage)
- {
- List list = chatMessageService.selectChatMessageList(chatMessage);
- ExcelUtil util = new ExcelUtil(ChatMessage.class);
- util.exportExcel(response, list, "聊天消息数据");
- }
-
- /**
- * 获取聊天消息详细信息
- */
- @PreAuthorize("@ss.hasPermi('ai:message:query')")
- @GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
- return success(chatMessageService.selectChatMessageById(id));
- }
-
- /**
- * 新增聊天消息
- */
- @PreAuthorize("@ss.hasPermi('ai:message:add')")
- @Log(title = "聊天消息", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@RequestBody ChatMessage chatMessage)
- {
- return toAjax(chatMessageService.insertChatMessage(chatMessage));
- }
-
- /**
- * 修改聊天消息
- */
- @PreAuthorize("@ss.hasPermi('ai:message:edit')")
- @Log(title = "聊天消息", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@RequestBody ChatMessage chatMessage)
- {
- return toAjax(chatMessageService.updateChatMessage(chatMessage));
- }
-
- /**
- * 删除聊天消息
- */
- @PreAuthorize("@ss.hasPermi('ai:message:remove')")
- @Log(title = "聊天消息", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
- {
- return toAjax(chatMessageService.deleteChatMessageByIds(ids));
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/domain/ChatMessage.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/message/domain/ChatMessage.java
deleted file mode 100644
index fb69b31..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/domain/ChatMessage.java
+++ /dev/null
@@ -1,163 +0,0 @@
-package com.ruoyi.ai.message.domain;
-
-import java.math.BigDecimal;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
-
-/**
- * 聊天消息对象 chat_message
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public class ChatMessage extends BaseEntity
-{
- private static final long serialVersionUID = 1L;
-
- /** 主键 */
- private Long id;
-
- /** 会话组id */
- @Excel(name = "会话组id")
- private Long sessionId;
-
- /** 会话id */
- @Excel(name = "会话id")
- private Long conversationId;
-
- /** 消息内容 */
- @Excel(name = "消息内容")
- private String content;
-
- /** 对话角色 */
- @Excel(name = "对话角色")
- private String role;
-
- /** 扣除金额 */
- @Excel(name = "扣除金额")
- private BigDecimal deductCost;
-
- /** 累计 Tokens */
- @Excel(name = "累计 Tokens")
- private Long totalTokens;
-
- /** 模型名称 */
- @Excel(name = "模型名称")
- private String modelName;
-
- /** 创建部门 */
- @Excel(name = "创建部门")
- private Long createDept;
-
- public void setId(Long id)
- {
- this.id = id;
- }
-
- public Long getId()
- {
- return id;
- }
-
- public void setSessionId(Long sessionId)
- {
- this.sessionId = sessionId;
- }
-
- public Long getSessionId()
- {
- return sessionId;
- }
-
- public void setConversationId(Long conversationId)
- {
- this.conversationId = conversationId;
- }
-
- public Long getConversationId()
- {
- return conversationId;
- }
-
- public void setContent(String content)
- {
- this.content = content;
- }
-
- public String getContent()
- {
- return content;
- }
-
- public void setRole(String role)
- {
- this.role = role;
- }
-
- public String getRole()
- {
- return role;
- }
-
- public void setDeductCost(BigDecimal deductCost)
- {
- this.deductCost = deductCost;
- }
-
- public BigDecimal getDeductCost()
- {
- return deductCost;
- }
-
- public void setTotalTokens(Long totalTokens)
- {
- this.totalTokens = totalTokens;
- }
-
- public Long getTotalTokens()
- {
- return totalTokens;
- }
-
- public void setModelName(String modelName)
- {
- this.modelName = modelName;
- }
-
- public String getModelName()
- {
- return modelName;
- }
-
- public void setCreateDept(Long createDept)
- {
- this.createDept = createDept;
- }
-
- public Long getCreateDept()
- {
- return createDept;
- }
-
- @Override
- public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
- .append("id", getId())
- .append("sessionId", getSessionId())
- .append("conversationId", getConversationId())
- .append("content", getContent())
- .append("role", getRole())
- .append("deductCost", getDeductCost())
- .append("totalTokens", getTotalTokens())
- .append("modelName", getModelName())
- .append("createDept", getCreateDept())
- .append("createBy", getCreateBy())
- .append("createTime", getCreateTime())
- .append("updateBy", getUpdateBy())
- .append("updateTime", getUpdateTime())
- .append("remark", getRemark())
- .toString();
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/mapper/ChatMessageMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/message/mapper/ChatMessageMapper.java
deleted file mode 100644
index 51e7e98..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/mapper/ChatMessageMapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.ruoyi.ai.message.mapper;
-
-import java.util.List;
-import com.ruoyi.ai.message.domain.ChatMessage;
-
-/**
- * 聊天消息Mapper接口
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public interface ChatMessageMapper
-{
- /**
- * 查询聊天消息
- *
- * @param id 聊天消息主键
- * @return 聊天消息
- */
- public ChatMessage selectChatMessageById(Long id);
-
- /**
- * 查询聊天消息列表
- *
- * @param chatMessage 聊天消息
- * @return 聊天消息集合
- */
- public List selectChatMessageList(ChatMessage chatMessage);
-
- /**
- * 新增聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- public int insertChatMessage(ChatMessage chatMessage);
-
- /**
- * 修改聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- public int updateChatMessage(ChatMessage chatMessage);
-
- /**
- * 删除聊天消息
- *
- * @param id 聊天消息主键
- * @return 结果
- */
- public int deleteChatMessageById(Long id);
-
- /**
- * 批量删除聊天消息
- *
- * @param ids 需要删除的数据主键集合
- * @return 结果
- */
- public int deleteChatMessageByIds(Long[] ids);
-
- void deleteChatMessageByConversationId(String conversationId);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/IChatMessageService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/IChatMessageService.java
deleted file mode 100644
index 82314c4..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/IChatMessageService.java
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.ruoyi.ai.message.service;
-
-import java.util.List;
-import com.ruoyi.ai.message.domain.ChatMessage;
-
-/**
- * 聊天消息Service接口
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-public interface IChatMessageService
-{
- /**
- * 查询聊天消息
- *
- * @param id 聊天消息主键
- * @return 聊天消息
- */
- public ChatMessage selectChatMessageById(Long id);
-
- /**
- * 查询聊天消息列表
- *
- * @param chatMessage 聊天消息
- * @return 聊天消息集合
- */
- public List selectChatMessageList(ChatMessage chatMessage);
-
- /**
- * 新增聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- public int insertChatMessage(ChatMessage chatMessage);
-
- /**
- * 修改聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- public int updateChatMessage(ChatMessage chatMessage);
-
- /**
- * 批量删除聊天消息
- *
- * @param ids 需要删除的聊天消息主键集合
- * @return 结果
- */
- public int deleteChatMessageByIds(Long[] ids);
-
- /**
- * 删除聊天消息信息
- *
- * @param id 聊天消息主键
- * @return 结果
- */
- public int deleteChatMessageById(Long id);
-
- void deleteChatMessageByConversationId(String conversationId);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/impl/ChatMessageServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/impl/ChatMessageServiceImpl.java
deleted file mode 100644
index 8325e31..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/message/service/impl/ChatMessageServiceImpl.java
+++ /dev/null
@@ -1,101 +0,0 @@
-package com.ruoyi.ai.message.service.impl;
-
-import java.util.List;
-import com.ruoyi.common.utils.DateUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.ai.message.mapper.ChatMessageMapper;
-import com.ruoyi.ai.message.domain.ChatMessage;
-import com.ruoyi.ai.message.service.IChatMessageService;
-
-/**
- * 聊天消息Service业务层处理
- *
- * @author ruoyi
- * @date 2025-08-27
- */
-@Service
-public class ChatMessageServiceImpl implements IChatMessageService
-{
- @Autowired
- private ChatMessageMapper chatMessageMapper;
-
- /**
- * 查询聊天消息
- *
- * @param id 聊天消息主键
- * @return 聊天消息
- */
- @Override
- public ChatMessage selectChatMessageById(Long id)
- {
- return chatMessageMapper.selectChatMessageById(id);
- }
-
- /**
- * 查询聊天消息列表
- *
- * @param chatMessage 聊天消息
- * @return 聊天消息
- */
- @Override
- public List selectChatMessageList(ChatMessage chatMessage)
- {
- return chatMessageMapper.selectChatMessageList(chatMessage);
- }
-
- /**
- * 新增聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- @Override
- public int insertChatMessage(ChatMessage chatMessage)
- {
- chatMessage.setCreateTime(DateUtils.getNowDate());
- return chatMessageMapper.insertChatMessage(chatMessage);
- }
-
- /**
- * 修改聊天消息
- *
- * @param chatMessage 聊天消息
- * @return 结果
- */
- @Override
- public int updateChatMessage(ChatMessage chatMessage)
- {
- chatMessage.setUpdateTime(DateUtils.getNowDate());
- return chatMessageMapper.updateChatMessage(chatMessage);
- }
-
- /**
- * 批量删除聊天消息
- *
- * @param ids 需要删除的聊天消息主键
- * @return 结果
- */
- @Override
- public int deleteChatMessageByIds(Long[] ids)
- {
- return chatMessageMapper.deleteChatMessageByIds(ids);
- }
-
- /**
- * 删除聊天消息信息
- *
- * @param id 聊天消息主键
- * @return 结果
- */
- @Override
- public int deleteChatMessageById(Long id)
- {
- return chatMessageMapper.deleteChatMessageById(id);
- }
-
- @Override
- public void deleteChatMessageByConversationId(String conversationId) {
- chatMessageMapper.deleteChatMessageByConversationId(conversationId);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/domain/ToolParamQuery.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/util/domain/ToolParamQuery.java
deleted file mode 100644
index 102cb2c..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/domain/ToolParamQuery.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.ruoyi.ai.util.domain;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.springframework.ai.tool.annotation.ToolParam;
-
-@Data
-@AllArgsConstructor
-@NoArgsConstructor
-public class ToolParamQuery {
-
- @ToolParam(required = false,description = "地区")
- private String currentTimeRegion;
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/BasStockToolService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/BasStockToolService.java
deleted file mode 100644
index 4c368b1..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/BasStockToolService.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package com.ruoyi.ai.util.service;
-
-import com.ruoyi.stock.stock.domain.BasStock;
-import com.ruoyi.stock.stock.service.IBasStockService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.ai.tool.annotation.Tool;
-import org.springframework.ai.tool.annotation.ToolParam;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-import java.util.List;
-
-@Component
-@Slf4j
-public class BasStockToolService {
-
- @Autowired
- private IBasStockService basStockService;
-
-
- @Tool(description = "根据仓库id查询库存信息")
- public List getStockInfo(@ToolParam(required = true, description = "仓库id") String warehouseId) {
- BasStock basStock = new BasStock();
- basStock.setWarehouseId(warehouseId);
- List basStocks = basStockService.selectBasStockListApi(basStock);
- return basStocks;
- }
-
- @Tool(description = "根据库存id生成作业")
- public String createMydoJob(@ToolParam(required = true, description = "库存id") String stockId) {
- log.info("库存:{},已生成作业",stockId);
- return null;
- }
-
- @Tool(description = "根据单据状态查询单据")
- public String selectInStockInfo(@ToolParam(required = true, description = "单据状态") String status) {
- log.info("根据单据状态查询单据:{},已生成作业",status);
- return null;
- }
-
-
-
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/ToolService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/ToolService.java
deleted file mode 100644
index 1104aa3..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/util/service/ToolService.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.ruoyi.ai.util.service;
-
-import cn.hutool.core.date.DateUtil;
-import org.springframework.ai.tool.annotation.Tool;
-import org.springframework.ai.tool.annotation.ToolParam;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ToolService {
-
-
- @Tool(description = "根据地区,获取当前时间")
- public String getCurrentTime(@ToolParam(required = false, description = "地区") String currentTimeRegion) {
- System.out.println("getCurrentTime"+currentTimeRegion);
- return DateUtil.format(DateUtil.date(), "yyyy-MM-dd HH:mm:ss");
- }
-
-
- @Tool(description = "根据地区,获取当前天气")
- public String getTQ(@ToolParam(required = false, description = "地区") String currentTimeRegion) {
- System.out.println("getTQ"+currentTimeRegion);
- return "特大台风";
- }
-
- @Tool(description = "根据地区,获取当前温度")
- public String getWD(@ToolParam(required = false, description = "地区") String currentTimeRegion) {
- System.out.println("getWD"+currentTimeRegion);
- return "500摄氏度";
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/DataVectorController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/DataVectorController.java
deleted file mode 100644
index 0d3bd3c..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/DataVectorController.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package com.ruoyi.ai.vector.controller;
-
-import com.ruoyi.ai.vector.service.DataVectorService;
-import com.ruoyi.common.core.domain.AjaxResult;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-@RestController
-@RequestMapping("/api/vector")
-public class DataVectorController {
-
-
- @Autowired
- private DataVectorService dataVectorService;
- @RequestMapping("/demo")
- public AjaxResult demo(MultipartFile file) {
- return dataVectorService.demo(file);
- }
-
-
- @RequestMapping("/searchDemo")
- public AjaxResult searchDemo(String message) {
- return dataVectorService.searchDemo(message);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/KnowledgeFileController.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/KnowledgeFileController.java
deleted file mode 100644
index b0eb850..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/controller/KnowledgeFileController.java
+++ /dev/null
@@ -1,104 +0,0 @@
-package com.ruoyi.ai.vector.controller;
-
-import java.util.List;
-import jakarta.servlet.http.HttpServletResponse;
-import org.springframework.security.access.prepost.PreAuthorize;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.PutMapping;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.annotation.Log;
-import com.ruoyi.common.core.controller.BaseController;
-import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.ai.vector.domain.KnowledgeFile;
-import com.ruoyi.ai.vector.service.IKnowledgeFileService;
-import com.ruoyi.common.utils.poi.ExcelUtil;
-import com.ruoyi.common.core.page.TableDataInfo;
-
-/**
- * 知识库文件Controller
- *
- * @author ruoyi
- * @date 2025-09-02
- */
-@RestController
-@RequestMapping("/api/fileVector")
-public class KnowledgeFileController extends BaseController
-{
- @Autowired
- private IKnowledgeFileService knowledgeFileService;
-
- /**
- * 查询知识库文件列表
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:list')")
- @GetMapping("/list")
- public TableDataInfo list(KnowledgeFile knowledgeFile)
- {
- startPage();
- List list = knowledgeFileService.selectKnowledgeFileList(knowledgeFile);
- return getDataTable(list);
- }
-
- /**
- * 导出知识库文件列表
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:export')")
- @Log(title = "知识库文件", businessType = BusinessType.EXPORT)
- @PostMapping("/export")
- public void export(HttpServletResponse response, KnowledgeFile knowledgeFile)
- {
- List list = knowledgeFileService.selectKnowledgeFileList(knowledgeFile);
- ExcelUtil util = new ExcelUtil(KnowledgeFile.class);
- util.exportExcel(response, list, "知识库文件数据");
- }
-
- /**
- * 获取知识库文件详细信息
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:query')")
- @GetMapping(value = "/{id}")
- public AjaxResult getInfo(@PathVariable("id") Long id)
- {
- return success(knowledgeFileService.selectKnowledgeFileById(id));
- }
-
- /**
- * 新增知识库文件
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:add')")
- @Log(title = "知识库文件", businessType = BusinessType.INSERT)
- @PostMapping
- public AjaxResult add(@RequestBody KnowledgeFile knowledgeFile)
- {
- return toAjax(knowledgeFileService.insertKnowledgeFile(knowledgeFile));
- }
-
- /**
- * 修改知识库文件
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:edit')")
- @Log(title = "知识库文件", businessType = BusinessType.UPDATE)
- @PutMapping
- public AjaxResult edit(@RequestBody KnowledgeFile knowledgeFile)
- {
- return toAjax(knowledgeFileService.updateKnowledgeFile(knowledgeFile));
- }
-
- /**
- * 删除知识库文件
- */
- @PreAuthorize("@ss.hasPermi('api:fileVector:remove')")
- @Log(title = "知识库文件", businessType = BusinessType.DELETE)
- @DeleteMapping("/{ids}")
- public AjaxResult remove(@PathVariable Long[] ids)
- {
- return toAjax(knowledgeFileService.deleteKnowledgeFileByIds(ids));
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/domain/KnowledgeFile.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/domain/KnowledgeFile.java
deleted file mode 100644
index 96d3b68..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/domain/KnowledgeFile.java
+++ /dev/null
@@ -1,207 +0,0 @@
-package com.ruoyi.ai.vector.domain;
-
-import java.util.Date;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.apache.commons.lang3.builder.ToStringBuilder;
-import org.apache.commons.lang3.builder.ToStringStyle;
-import com.ruoyi.common.annotation.Excel;
-import com.ruoyi.common.core.domain.BaseEntity;
-
-/**
- * 知识库文件对象 knowledge_file
- *
- * @author ruoyi
- * @date 2025-09-02
- */
-public class KnowledgeFile extends BaseEntity
-{
- private static final long serialVersionUID = 1L;
-
- /** 文件唯一标识 */
- private Long id;
-
- /** 关联的知识库ID */
- @Excel(name = "关联的知识库ID")
- private Long knowledgeBaseId;
-
- /** 文件名 */
- @Excel(name = "文件名")
- private String fileName;
-
- /** 文件存储路径 */
- @Excel(name = "文件存储路径")
- private String filePath;
-
- /** 文件大小,单位字节 */
- @Excel(name = "文件大小,单位字节")
- private Long fileSize;
-
- /** 文件类型,如txt、pdf等 */
- @Excel(name = "文件类型,如txt、pdf等")
- private String fileType;
-
- /** 文件描述 */
- @Excel(name = "文件描述")
- private String description;
-
- /** 向量化 */
- @Excel(name = "向量化")
- private Long isVectorized;
-
- /** 向量化完成时间 */
- @JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "向量化完成时间", width = 30, dateFormat = "yyyy-MM-dd")
- private Date vectorizedTime;
-
- /** 上传时间 */
- @JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "上传时间", width = 30, dateFormat = "yyyy-MM-dd")
- private Date uploadTime;
-
- /** 更新时间 */
- @JsonFormat(pattern = "yyyy-MM-dd")
- @Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
- private Date updatedAt;
-
- /** 是否可用 */
- @Excel(name = "是否可用")
- private Long isDeleted;
-
- public void setId(Long id)
- {
- this.id = id;
- }
-
- public Long getId()
- {
- return id;
- }
-
- public void setKnowledgeBaseId(Long knowledgeBaseId)
- {
- this.knowledgeBaseId = knowledgeBaseId;
- }
-
- public Long getKnowledgeBaseId()
- {
- return knowledgeBaseId;
- }
-
- public void setFileName(String fileName)
- {
- this.fileName = fileName;
- }
-
- public String getFileName()
- {
- return fileName;
- }
-
- public void setFilePath(String filePath)
- {
- this.filePath = filePath;
- }
-
- public String getFilePath()
- {
- return filePath;
- }
-
- public void setFileSize(Long fileSize)
- {
- this.fileSize = fileSize;
- }
-
- public Long getFileSize()
- {
- return fileSize;
- }
-
- public void setFileType(String fileType)
- {
- this.fileType = fileType;
- }
-
- public String getFileType()
- {
- return fileType;
- }
-
- public void setDescription(String description)
- {
- this.description = description;
- }
-
- public String getDescription()
- {
- return description;
- }
-
- public void setIsVectorized(Long isVectorized)
- {
- this.isVectorized = isVectorized;
- }
-
- public Long getIsVectorized()
- {
- return isVectorized;
- }
-
- public void setVectorizedTime(Date vectorizedTime)
- {
- this.vectorizedTime = vectorizedTime;
- }
-
- public Date getVectorizedTime()
- {
- return vectorizedTime;
- }
-
- public void setUploadTime(Date uploadTime)
- {
- this.uploadTime = uploadTime;
- }
-
- public Date getUploadTime()
- {
- return uploadTime;
- }
-
- public void setUpdatedAt(Date updatedAt)
- {
- this.updatedAt = updatedAt;
- }
-
- public Date getUpdatedAt()
- {
- return updatedAt;
- }
-
- public void setIsDeleted(Long isDeleted)
- {
- this.isDeleted = isDeleted;
- }
-
- public Long getIsDeleted()
- {
- return isDeleted;
- }
-
- @Override
- public String toString() {
- return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
- .append("id", getId())
- .append("knowledgeBaseId", getKnowledgeBaseId())
- .append("fileName", getFileName())
- .append("filePath", getFilePath())
- .append("fileSize", getFileSize())
- .append("fileType", getFileType())
- .append("description", getDescription())
- .append("isVectorized", getIsVectorized())
- .append("vectorizedTime", getVectorizedTime())
- .append("uploadTime", getUploadTime())
- .append("updatedAt", getUpdatedAt())
- .append("isDeleted", getIsDeleted())
- .toString();
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/mapper/KnowledgeFileMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/mapper/KnowledgeFileMapper.java
deleted file mode 100644
index 960c7f3..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/mapper/KnowledgeFileMapper.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.ai.vector.mapper;
-
-import java.util.List;
-import com.ruoyi.ai.vector.domain.KnowledgeFile;
-
-/**
- * 知识库文件Mapper接口
- *
- * @author ruoyi
- * @date 2025-09-02
- */
-public interface KnowledgeFileMapper
-{
- /**
- * 查询知识库文件
- *
- * @param id 知识库文件主键
- * @return 知识库文件
- */
- public KnowledgeFile selectKnowledgeFileById(Long id);
-
- /**
- * 查询知识库文件列表
- *
- * @param knowledgeFile 知识库文件
- * @return 知识库文件集合
- */
- public List selectKnowledgeFileList(KnowledgeFile knowledgeFile);
-
- /**
- * 新增知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- public int insertKnowledgeFile(KnowledgeFile knowledgeFile);
-
- /**
- * 修改知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- public int updateKnowledgeFile(KnowledgeFile knowledgeFile);
-
- /**
- * 删除知识库文件
- *
- * @param id 知识库文件主键
- * @return 结果
- */
- public int deleteKnowledgeFileById(Long id);
-
- /**
- * 批量删除知识库文件
- *
- * @param ids 需要删除的数据主键集合
- * @return 结果
- */
- public int deleteKnowledgeFileByIds(Long[] ids);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java
deleted file mode 100644
index ee0364c..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/DataVectorService.java
+++ /dev/null
@@ -1,147 +0,0 @@
-package com.ruoyi.ai.vector.service;
-
-import com.ruoyi.common.core.domain.AjaxResult;
-import org.springframework.ai.document.Document;
-import org.springframework.ai.reader.ExtractedTextFormatter;
-import org.springframework.ai.reader.JsonReader;
-import org.springframework.ai.reader.TextReader;
-import org.springframework.ai.reader.jsoup.JsoupDocumentReader;
-import org.springframework.ai.reader.jsoup.config.JsoupDocumentReaderConfig;
-import org.springframework.ai.reader.markdown.MarkdownDocumentReader;
-import org.springframework.ai.reader.markdown.config.MarkdownDocumentReaderConfig;
-import org.springframework.ai.reader.pdf.PagePdfDocumentReader;
-import org.springframework.ai.reader.pdf.config.PdfDocumentReaderConfig;
-import org.springframework.ai.reader.tika.TikaDocumentReader;
-import org.springframework.ai.vectorstore.VectorStore;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.io.FileSystemResource;
-import org.springframework.core.io.Resource;
-import org.springframework.stereotype.Service;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.List;
-
-@Service
-public class DataVectorService {
-
- @Autowired(required = false)
- private VectorStore vectorStore;
-
- /**
- * 向量化文件
- *
- * @param file
- * @return
- */
- public AjaxResult demo(MultipartFile file) {
- String originalFilename = file.getOriginalFilename();
- //取出文件后缀
- String suffix = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);
- Resource resource = file.getResource();
- List list;
- switch (suffix) {
- case "json":
-
- list = readJson(resource);
- break;
- case "txt":
- //整个文本
- list = readTxt(resource);
- //文本拆分
- break;
- case "html":
- list = readHtml(resource);
- break;
- case "md":
- list = readMd(resource);
- break;
- case "pdf":
- //页面
- list = readPdf(resource);
-
- //段落
-
- break;
- case "doc":
- case "docx":
- list = readDoc(resource);
- break;
- case "ppt":
- case "pptx":
- list = readPpt(resource);
- break;
-
-
- default:
- return AjaxResult.error("不支持的文件格式");
- }
- // 3.写入向量库
- vectorStore.add(list);
- return AjaxResult.success();
- }
-
- private List readPpt(Resource resource) {
- TikaDocumentReader tikaDocumentReader = new TikaDocumentReader(resource);
- return tikaDocumentReader.read();
- }
-
- private List readDoc(Resource resource) {
- TikaDocumentReader tikaDocumentReader = new TikaDocumentReader(resource);
- return tikaDocumentReader.read();
- }
-
- private List readMd(Resource resource) {
- MarkdownDocumentReaderConfig config = MarkdownDocumentReaderConfig.builder()
- .withHorizontalRuleCreateDocument(true)
- .withIncludeCodeBlock(false)
- .withIncludeBlockquote(false)
- .withAdditionalMetadata("filename", "code.md")
- .build();
-
- MarkdownDocumentReader reader = new MarkdownDocumentReader(resource, config);
- return reader.read();
- }
-
- private List readHtml(Resource resource) {
- JsoupDocumentReaderConfig config = JsoupDocumentReaderConfig.builder()
- .selector("article p") // Extract paragraphs within tags
- .charset("ISO-8859-1") // Use ISO-8859-1 encoding
- .includeLinkUrls(true) // Include link URLs in metadata
- .metadataTags(List.of("author", "date")) // Extract author and date meta tags
- .additionalMetadata("source", "my-page.html") // Add custom metadata
- .build();
-
- JsoupDocumentReader reader = new JsoupDocumentReader(resource, config);
- return reader.get();
- }
-
- private List readTxt(Resource resource) {
- TextReader textReader = new TextReader(resource);
- textReader.getCustomMetadata().put("filename", "text-source.txt");
-
- return textReader.read();
- }
-
- private List readJson(Resource resource) {
- JsonReader jsonReader = new JsonReader(resource, "description", "content");
- return jsonReader.get();
- }
-
- private List readPdf(Resource resource) {
- // 1.创建PDF的读取器
- PagePdfDocumentReader reader = new PagePdfDocumentReader(
- resource, // 文件源
- PdfDocumentReaderConfig.builder()
- .withPageExtractedTextFormatter(ExtractedTextFormatter.defaults())
- .withPagesPerDocument(1) // 每1页PDF作为一个Document
- .build()
- );
- // 2.读取PDF文档,拆分为Document
- return reader.read();
- }
-
- public AjaxResult searchDemo(String message) {
- List documents = vectorStore.similaritySearch(message);
- return AjaxResult.success(documents);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/IKnowledgeFileService.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/IKnowledgeFileService.java
deleted file mode 100644
index 0711a5b..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/IKnowledgeFileService.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.ruoyi.ai.vector.service;
-
-import java.util.List;
-import com.ruoyi.ai.vector.domain.KnowledgeFile;
-
-/**
- * 知识库文件Service接口
- *
- * @author ruoyi
- * @date 2025-09-02
- */
-public interface IKnowledgeFileService
-{
- /**
- * 查询知识库文件
- *
- * @param id 知识库文件主键
- * @return 知识库文件
- */
- public KnowledgeFile selectKnowledgeFileById(Long id);
-
- /**
- * 查询知识库文件列表
- *
- * @param knowledgeFile 知识库文件
- * @return 知识库文件集合
- */
- public List selectKnowledgeFileList(KnowledgeFile knowledgeFile);
-
- /**
- * 新增知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- public int insertKnowledgeFile(KnowledgeFile knowledgeFile);
-
- /**
- * 修改知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- public int updateKnowledgeFile(KnowledgeFile knowledgeFile);
-
- /**
- * 批量删除知识库文件
- *
- * @param ids 需要删除的知识库文件主键集合
- * @return 结果
- */
- public int deleteKnowledgeFileByIds(Long[] ids);
-
- /**
- * 删除知识库文件信息
- *
- * @param id 知识库文件主键
- * @return 结果
- */
- public int deleteKnowledgeFileById(Long id);
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/impl/KnowledgeFileServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/impl/KnowledgeFileServiceImpl.java
deleted file mode 100644
index 7c1f3ae..0000000
--- a/ruoyi-admin/src/main/java/com/ruoyi/ai/vector/service/impl/KnowledgeFileServiceImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.ruoyi.ai.vector.service.impl;
-
-import java.util.List;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper;
-import com.ruoyi.ai.vector.domain.KnowledgeFile;
-import com.ruoyi.ai.vector.service.IKnowledgeFileService;
-
-/**
- * 知识库文件Service业务层处理
- *
- * @author ruoyi
- * @date 2025-09-02
- */
-@Service
-public class KnowledgeFileServiceImpl implements IKnowledgeFileService
-{
- @Autowired
- private KnowledgeFileMapper knowledgeFileMapper;
-
- /**
- * 查询知识库文件
- *
- * @param id 知识库文件主键
- * @return 知识库文件
- */
- @Override
- public KnowledgeFile selectKnowledgeFileById(Long id)
- {
- return knowledgeFileMapper.selectKnowledgeFileById(id);
- }
-
- /**
- * 查询知识库文件列表
- *
- * @param knowledgeFile 知识库文件
- * @return 知识库文件
- */
- @Override
- public List selectKnowledgeFileList(KnowledgeFile knowledgeFile)
- {
- return knowledgeFileMapper.selectKnowledgeFileList(knowledgeFile);
- }
-
- /**
- * 新增知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- @Override
- public int insertKnowledgeFile(KnowledgeFile knowledgeFile)
- {
- return knowledgeFileMapper.insertKnowledgeFile(knowledgeFile);
- }
-
- /**
- * 修改知识库文件
- *
- * @param knowledgeFile 知识库文件
- * @return 结果
- */
- @Override
- public int updateKnowledgeFile(KnowledgeFile knowledgeFile)
- {
- return knowledgeFileMapper.updateKnowledgeFile(knowledgeFile);
- }
-
- /**
- * 批量删除知识库文件
- *
- * @param ids 需要删除的知识库文件主键
- * @return 结果
- */
- @Override
- public int deleteKnowledgeFileByIds(Long[] ids)
- {
- return knowledgeFileMapper.deleteKnowledgeFileByIds(ids);
- }
-
- /**
- * 删除知识库文件信息
- *
- * @param id 知识库文件主键
- * @return 结果
- */
- @Override
- public int deleteKnowledgeFileById(Long id)
- {
- return knowledgeFileMapper.deleteKnowledgeFileById(id);
- }
-}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
index ca577ff..6b7cddf 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/api/service/impl/ToWcsServiceImpl.java
@@ -369,6 +369,7 @@ public class ToWcsServiceImpl implements IToWcsService {
MydoJob mydoJob = mydoJobService.selectMydoJobByJobId(reMaterialParam.getJobId());
mydoJob.setClassId("取货无货");
mydoJobService.updateMydoJob(mydoJob);
+
return AjaxResult.success();
}
diff --git a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java
index 35b0497..a125925 100644
--- a/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java
+++ b/ruoyi-admin/src/main/java/com/ruoyi/job/mydojob/service/impl/MydoJobServiceImpl.java
@@ -548,13 +548,11 @@ public class MydoJobServiceImpl implements IMydoJobService {
log.error("任务不存在");
return AjaxResult.error(jobId+"任务不存在");
}
- if ("3".equals(job.getStatus())){
+ if ("1".equals(job.getStatus()) || "2".equals(job.getStatus())){
AjaxResult ajaxResult = iToWcsService.cancelTaskByTaskNo(job);
if(!ajaxResult.isSuccess()){
return AjaxResult.error(jobId+"任务取消失败");
}
- }
- if ("1".equals(job.getStatus()) || "3".equals(job.getStatus())){
MydoJobDetail mydoJobDetail = new MydoJobDetail();
mydoJobDetail.setJobId(jobId);
List mydoJobDetails = mydoJobDetailService.selectMydoJobDetailList(mydoJobDetail);
diff --git a/ruoyi-admin/src/main/resources/application-druid.yml b/ruoyi-admin/src/main/resources/application-druid.yml
index c19358b..f0269d2 100644
--- a/ruoyi-admin/src/main/resources/application-druid.yml
+++ b/ruoyi-admin/src/main/resources/application-druid.yml
@@ -6,7 +6,7 @@ spring:
druid:
# 主库数据源
master:
- url: jdbc:sqlserver://127.0.0.1:1433;databaseName=FT541-wms;encrypt=true;trustServerCertificate=true;
+ url: jdbc:sqlserver://172.19.1.119:1433;databaseName=FT541-wms;encrypt=true;trustServerCertificate=true;
username: sa
password: Flrd0914.
# 从库数据源
diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml
index 4a4e893..6e82395 100644
--- a/ruoyi-admin/src/main/resources/application.yml
+++ b/ruoyi-admin/src/main/resources/application.yml
@@ -71,7 +71,7 @@ spring:
# redis 配置
redis:
# 地址
- host: 127.0.0.1
+ host: 172.19.1.119
# 端口,默认为6379
port: 6379
# 数据库索引
@@ -91,40 +91,6 @@ spring:
# #连接池最大阻塞等待时间(使用负值表示没有限制)
max-wait: -1ms
- ai:
- enable: false
- openai:
- api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key
- base-url: https://api.siliconflow.cn # 产商地址
- #对话模型
- chat:
- options:
- model: deepseek-ai/DeepSeek-V3.1 # 大模型名称
- embedding:
- options:
- model: Qwen/Qwen3-Embedding-8B
- dimensions: 1024
- #MCP
-# mcp:
-# client:
-# toolcallback:
-# enabled: true
-# name: mcp-client
-# stdio:
-# servers-configuration: classpath:/mcp-server-config.json # MCP服务配置
-# enabled: true
-# type: ASYNC
-# sse:
-# connections:
-# author-info-server:
-# url: http://localhost:9090
- #向量数据库
- vectorstore:
- mariadb:
- initialize-schema: true
- distance-type: COSINE
- dimensions: 1024
-
# token配置
token:
@@ -177,4 +143,4 @@ xss:
license:
- enabled: true
+ enabled: false
diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue
index 8a7eb20..7cee42b 100644
--- a/ruoyi-ui/src/views/login.vue
+++ b/ruoyi-ui/src/views/login.vue
@@ -102,8 +102,8 @@ export default {
return {
codeUrl: "",
loginForm: {
- username: "admin",
- password: "admin123",
+ username: "",
+ password: "",
rememberMe: false,
code: "",
uuid: ""
diff --git a/ruoyi-ui/src/views/system/dept/index.vue b/ruoyi-ui/src/views/system/dept/index.vue
index 21841cc..180efda 100644
--- a/ruoyi-ui/src/views/system/dept/index.vue
+++ b/ruoyi-ui/src/views/system/dept/index.vue
@@ -131,7 +131,7 @@
-
+
@@ -143,7 +143,7 @@
-
+ ev