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 index 33ab00b..51bec46 100644 --- 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 @@ -1,35 +1,23 @@ 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 @@ -40,6 +28,11 @@ public class ChatModelConfig { @Bean + @ConditionalOnProperty( + name = "spring.ai.enable", // 配置项名称 + havingValue = "true", // 期望的值 + matchIfMissing = false // 配置不存在时是否匹配(false=不注册) + ) public ChatClient chatClient(OpenAiChatModel openAiChatModel, ChatMemory chatMemory, BasStockToolService toolService/*, ToolCallbackProvider toolCallbackProvider*/) { return ChatClient //使用的模型 @@ -63,11 +56,21 @@ public class ChatModelConfig { * @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") @@ -77,6 +80,11 @@ public class ChatModelConfig { @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) 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 index 5a29acd..1f539ad 100644 --- 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 @@ -3,7 +3,9 @@ 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 org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; @RestController 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 index c866df3..e47a71f 100644 --- 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 @@ -12,17 +12,16 @@ 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 + @Autowired(required = false) private OpenAiEmbeddingModel embeddingModel; - @Autowired + @Autowired(required = false) private VectorStore vectorStore; /** 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 index 757666d..51ac69b 100644 --- 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 @@ -6,39 +6,34 @@ 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 + @Autowired(required = false) private ChatClient chatClient; - @Autowired + @Autowired(required = false) private OpenAiChatModel openAiChatModel; - @Autowired + @Autowired(required = false) private ChatMemory chatMemory; - @Autowired + @Autowired(required = false) private VectorStore vectorStore; - @Autowired + @Autowired(required = false) private IChatMessageService chatMessageService; - @Autowired + @Autowired(required = false) private IConversationsService conversationsService; // 定义问答模板 @@ -110,6 +105,10 @@ public class ChatServiceImpl implements ChatService { */ @Override public Flux chatByUserContent(CustomMessage customMessage) { + if (chatClient == null){ + return Flux.just("未开启聊天模型"); + } + // 生成唯一会话ID Long sessionId = IdUtil.getSnowflakeNextId(); //修改会话 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 index fd4b320..d81488b 100644 --- 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 @@ -1,10 +1,9 @@ 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.domain.ChatMessage; 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; 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 index fc7aced..4d49ca2 100644 --- 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 @@ -1,32 +1,22 @@ 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.ai.conversation.domain.Conversations; +import com.ruoyi.ai.conversation.service.IConversationsService; +import com.ruoyi.ai.message.service.IChatMessageService; 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; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * RAG项目会话管理Controller @@ -40,7 +30,7 @@ public class ConversationsController extends BaseController { @Autowired private IConversationsService conversationsService; - + @Autowired private IChatMessageService chatMessageService; 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 index 8f8bfc4..45916f3 100644 --- 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 @@ -1,11 +1,12 @@ 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; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; /** * RAG项目会话管理对象 conversations 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 index 6942bed..377cb63 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.conversation.mapper; -import java.util.List; import com.ruoyi.ai.conversation.domain.Conversations; +import java.util.List; + /** * RAG项目会话管理Mapper接口 - * + * * @author ruoyi * @date 2025-08-27 */ -public interface ConversationsMapper +public interface ConversationsMapper { /** * 查询RAG项目会话管理 - * + * * @param id RAG项目会话管理主键 * @return RAG项目会话管理 */ @@ -21,7 +22,7 @@ public interface ConversationsMapper /** * 查询RAG项目会话管理列表 - * + * * @param conversations RAG项目会话管理 * @return RAG项目会话管理集合 */ @@ -29,7 +30,7 @@ public interface ConversationsMapper /** * 新增RAG项目会话管理 - * + * * @param conversations RAG项目会话管理 * @return 结果 */ @@ -37,7 +38,7 @@ public interface ConversationsMapper /** * 修改RAG项目会话管理 - * + * * @param conversations RAG项目会话管理 * @return 结果 */ @@ -45,7 +46,7 @@ public interface ConversationsMapper /** * 删除RAG项目会话管理 - * + * * @param id RAG项目会话管理主键 * @return 结果 */ @@ -53,7 +54,7 @@ public interface ConversationsMapper /** * 批量删除RAG项目会话管理 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ 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 index a903dcd..e3b115d 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.conversation.service; -import java.util.List; import com.ruoyi.ai.conversation.domain.Conversations; +import java.util.List; + /** * RAG项目会话管理Service接口 - * + * * @author ruoyi * @date 2025-08-27 */ -public interface IConversationsService +public interface IConversationsService { /** * 查询RAG项目会话管理 - * + * * @param id RAG项目会话管理主键 * @return RAG项目会话管理 */ @@ -21,7 +22,7 @@ public interface IConversationsService /** * 查询RAG项目会话管理列表 - * + * * @param conversations RAG项目会话管理 * @return RAG项目会话管理集合 */ @@ -29,7 +30,7 @@ public interface IConversationsService /** * 新增RAG项目会话管理 - * + * * @param conversations RAG项目会话管理 * @return 结果 */ @@ -37,7 +38,7 @@ public interface IConversationsService /** * 修改RAG项目会话管理 - * + * * @param conversations RAG项目会话管理 * @return 结果 */ @@ -45,7 +46,7 @@ public interface IConversationsService /** * 批量删除RAG项目会话管理 - * + * * @param ids 需要删除的RAG项目会话管理主键集合 * @return 结果 */ @@ -53,7 +54,7 @@ public interface IConversationsService /** * 删除RAG项目会话管理信息 - * + * * @param id RAG项目会话管理主键 * @return 结果 */ 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 index d0cd556..622847d 100644 --- 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 @@ -1,15 +1,15 @@ package com.ruoyi.ai.conversation.service.impl; -import java.util.Date; -import java.util.List; - import cn.hutool.core.convert.Convert; +import com.ruoyi.ai.conversation.domain.Conversations; +import com.ruoyi.ai.conversation.mapper.ConversationsMapper; +import com.ruoyi.ai.conversation.service.IConversationsService; 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; + +import java.util.Date; +import java.util.List; /** * RAG项目会话管理Service业务层处理 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 index 7932a72..692ef0c 100644 --- 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 @@ -1,29 +1,23 @@ 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.ai.message.domain.ChatMessage; +import com.ruoyi.ai.message.service.IChatMessageService; 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; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 聊天消息Controller - * + * * @author ruoyi * @date 2025-08-27 */ 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 index fb69b31..c9040e8 100644 --- 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 @@ -1,14 +1,15 @@ 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; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.math.BigDecimal; /** * 聊天消息对象 chat_message - * + * * @author ruoyi * @date 2025-08-27 */ @@ -51,92 +52,92 @@ public class ChatMessage extends BaseEntity @Excel(name = "创建部门") private Long createDept; - public void setId(Long id) + public void setId(Long id) { this.id = id; } - public Long getId() + public Long getId() { return id; } - public void setSessionId(Long sessionId) + public void setSessionId(Long sessionId) { this.sessionId = sessionId; } - public Long getSessionId() + public Long getSessionId() { return sessionId; } - public void setConversationId(Long conversationId) + public void setConversationId(Long conversationId) { this.conversationId = conversationId; } - public Long getConversationId() + public Long getConversationId() { return conversationId; } - public void setContent(String content) + public void setContent(String content) { this.content = content; } - public String getContent() + public String getContent() { return content; } - public void setRole(String role) + public void setRole(String role) { this.role = role; } - public String getRole() + public String getRole() { return role; } - public void setDeductCost(BigDecimal deductCost) + public void setDeductCost(BigDecimal deductCost) { this.deductCost = deductCost; } - public BigDecimal getDeductCost() + public BigDecimal getDeductCost() { return deductCost; } - public void setTotalTokens(Long totalTokens) + public void setTotalTokens(Long totalTokens) { this.totalTokens = totalTokens; } - public Long getTotalTokens() + public Long getTotalTokens() { return totalTokens; } - public void setModelName(String modelName) + public void setModelName(String modelName) { this.modelName = modelName; } - public String getModelName() + public String getModelName() { return modelName; } - public void setCreateDept(Long createDept) + public void setCreateDept(Long createDept) { this.createDept = createDept; } - public Long getCreateDept() + public Long getCreateDept() { return createDept; } 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 index 51e7e98..3e3caf0 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.message.mapper; -import java.util.List; import com.ruoyi.ai.message.domain.ChatMessage; +import java.util.List; + /** * 聊天消息Mapper接口 - * + * * @author ruoyi * @date 2025-08-27 */ -public interface ChatMessageMapper +public interface ChatMessageMapper { /** * 查询聊天消息 - * + * * @param id 聊天消息主键 * @return 聊天消息 */ @@ -21,7 +22,7 @@ public interface ChatMessageMapper /** * 查询聊天消息列表 - * + * * @param chatMessage 聊天消息 * @return 聊天消息集合 */ @@ -29,7 +30,7 @@ public interface ChatMessageMapper /** * 新增聊天消息 - * + * * @param chatMessage 聊天消息 * @return 结果 */ @@ -37,7 +38,7 @@ public interface ChatMessageMapper /** * 修改聊天消息 - * + * * @param chatMessage 聊天消息 * @return 结果 */ @@ -45,7 +46,7 @@ public interface ChatMessageMapper /** * 删除聊天消息 - * + * * @param id 聊天消息主键 * @return 结果 */ @@ -53,7 +54,7 @@ public interface ChatMessageMapper /** * 批量删除聊天消息 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ 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 index 82314c4..6df6389 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.message.service; -import java.util.List; import com.ruoyi.ai.message.domain.ChatMessage; +import java.util.List; + /** * 聊天消息Service接口 - * + * * @author ruoyi * @date 2025-08-27 */ -public interface IChatMessageService +public interface IChatMessageService { /** * 查询聊天消息 - * + * * @param id 聊天消息主键 * @return 聊天消息 */ @@ -21,7 +22,7 @@ public interface IChatMessageService /** * 查询聊天消息列表 - * + * * @param chatMessage 聊天消息 * @return 聊天消息集合 */ @@ -29,7 +30,7 @@ public interface IChatMessageService /** * 新增聊天消息 - * + * * @param chatMessage 聊天消息 * @return 结果 */ @@ -37,7 +38,7 @@ public interface IChatMessageService /** * 修改聊天消息 - * + * * @param chatMessage 聊天消息 * @return 结果 */ @@ -45,7 +46,7 @@ public interface IChatMessageService /** * 批量删除聊天消息 - * + * * @param ids 需要删除的聊天消息主键集合 * @return 结果 */ @@ -53,7 +54,7 @@ public interface IChatMessageService /** * 删除聊天消息信息 - * + * * @param id 聊天消息主键 * @return 结果 */ 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 index 8325e31..88399c7 100644 --- 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 @@ -1,12 +1,13 @@ package com.ruoyi.ai.message.service.impl; -import java.util.List; +import com.ruoyi.ai.message.domain.ChatMessage; +import com.ruoyi.ai.message.mapper.ChatMessageMapper; +import com.ruoyi.ai.message.service.IChatMessageService; 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; + +import java.util.List; /** * 聊天消息Service业务层处理 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 index b0eb850..5dd3070 100644 --- 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 @@ -1,29 +1,23 @@ 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.ai.vector.domain.KnowledgeFile; +import com.ruoyi.ai.vector.service.IKnowledgeFileService; 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; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import jakarta.servlet.http.HttpServletResponse; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.List; /** * 知识库文件Controller - * + * * @author ruoyi * @date 2025-09-02 */ 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 index 96d3b68..c259e5e 100644 --- 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 @@ -1,15 +1,16 @@ 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; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; /** * 知识库文件对象 knowledge_file - * + * * @author ruoyi * @date 2025-09-02 */ @@ -67,122 +68,122 @@ public class KnowledgeFile extends BaseEntity @Excel(name = "是否可用") private Long isDeleted; - public void setId(Long id) + public void setId(Long id) { this.id = id; } - public Long getId() + public Long getId() { return id; } - public void setKnowledgeBaseId(Long knowledgeBaseId) + public void setKnowledgeBaseId(Long knowledgeBaseId) { this.knowledgeBaseId = knowledgeBaseId; } - public Long getKnowledgeBaseId() + public Long getKnowledgeBaseId() { return knowledgeBaseId; } - public void setFileName(String fileName) + public void setFileName(String fileName) { this.fileName = fileName; } - public String getFileName() + public String getFileName() { return fileName; } - public void setFilePath(String filePath) + public void setFilePath(String filePath) { this.filePath = filePath; } - public String getFilePath() + public String getFilePath() { return filePath; } - public void setFileSize(Long fileSize) + public void setFileSize(Long fileSize) { this.fileSize = fileSize; } - public Long getFileSize() + public Long getFileSize() { return fileSize; } - public void setFileType(String fileType) + public void setFileType(String fileType) { this.fileType = fileType; } - public String getFileType() + public String getFileType() { return fileType; } - public void setDescription(String description) + public void setDescription(String description) { this.description = description; } - public String getDescription() + public String getDescription() { return description; } - public void setIsVectorized(Long isVectorized) + public void setIsVectorized(Long isVectorized) { this.isVectorized = isVectorized; } - public Long getIsVectorized() + public Long getIsVectorized() { return isVectorized; } - public void setVectorizedTime(Date vectorizedTime) + public void setVectorizedTime(Date vectorizedTime) { this.vectorizedTime = vectorizedTime; } - public Date getVectorizedTime() + public Date getVectorizedTime() { return vectorizedTime; } - public void setUploadTime(Date uploadTime) + public void setUploadTime(Date uploadTime) { this.uploadTime = uploadTime; } - public Date getUploadTime() + public Date getUploadTime() { return uploadTime; } - public void setUpdatedAt(Date updatedAt) + public void setUpdatedAt(Date updatedAt) { this.updatedAt = updatedAt; } - public Date getUpdatedAt() + public Date getUpdatedAt() { return updatedAt; } - public void setIsDeleted(Long isDeleted) + public void setIsDeleted(Long isDeleted) { this.isDeleted = isDeleted; } - public Long getIsDeleted() + public Long getIsDeleted() { return isDeleted; } 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 index 960c7f3..d550b98 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.vector.mapper; -import java.util.List; import com.ruoyi.ai.vector.domain.KnowledgeFile; +import java.util.List; + /** * 知识库文件Mapper接口 - * + * * @author ruoyi * @date 2025-09-02 */ -public interface KnowledgeFileMapper +public interface KnowledgeFileMapper { /** * 查询知识库文件 - * + * * @param id 知识库文件主键 * @return 知识库文件 */ @@ -21,7 +22,7 @@ public interface KnowledgeFileMapper /** * 查询知识库文件列表 - * + * * @param knowledgeFile 知识库文件 * @return 知识库文件集合 */ @@ -29,7 +30,7 @@ public interface KnowledgeFileMapper /** * 新增知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -37,7 +38,7 @@ public interface KnowledgeFileMapper /** * 修改知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -45,7 +46,7 @@ public interface KnowledgeFileMapper /** * 删除知识库文件 - * + * * @param id 知识库文件主键 * @return 结果 */ @@ -53,7 +54,7 @@ public interface KnowledgeFileMapper /** * 批量删除知识库文件 - * + * * @param ids 需要删除的数据主键集合 * @return 结果 */ 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 index db128b6..3715218 100644 --- 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 @@ -14,7 +14,6 @@ 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; @@ -24,7 +23,7 @@ import java.util.List; @Service public class DataVectorService { - @Autowired + @Autowired(required = false) private VectorStore vectorStore; /** 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 index 0711a5b..374ba19 100644 --- 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 @@ -1,19 +1,20 @@ package com.ruoyi.ai.vector.service; -import java.util.List; import com.ruoyi.ai.vector.domain.KnowledgeFile; +import java.util.List; + /** * 知识库文件Service接口 - * + * * @author ruoyi * @date 2025-09-02 */ -public interface IKnowledgeFileService +public interface IKnowledgeFileService { /** * 查询知识库文件 - * + * * @param id 知识库文件主键 * @return 知识库文件 */ @@ -21,7 +22,7 @@ public interface IKnowledgeFileService /** * 查询知识库文件列表 - * + * * @param knowledgeFile 知识库文件 * @return 知识库文件集合 */ @@ -29,7 +30,7 @@ public interface IKnowledgeFileService /** * 新增知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -37,7 +38,7 @@ public interface IKnowledgeFileService /** * 修改知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -45,7 +46,7 @@ public interface IKnowledgeFileService /** * 批量删除知识库文件 - * + * * @param ids 需要删除的知识库文件主键集合 * @return 结果 */ @@ -53,7 +54,7 @@ public interface IKnowledgeFileService /** * 删除知识库文件信息 - * + * * @param id 知识库文件主键 * @return 结果 */ 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 index 7c1f3ae..9c46316 100644 --- 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 @@ -1,27 +1,28 @@ package com.ruoyi.ai.vector.service.impl; -import java.util.List; +import com.ruoyi.ai.vector.domain.KnowledgeFile; +import com.ruoyi.ai.vector.mapper.KnowledgeFileMapper; +import com.ruoyi.ai.vector.service.IKnowledgeFileService; 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; + +import java.util.List; /** * 知识库文件Service业务层处理 - * + * * @author ruoyi * @date 2025-09-02 */ @Service -public class KnowledgeFileServiceImpl implements IKnowledgeFileService +public class KnowledgeFileServiceImpl implements IKnowledgeFileService { @Autowired private KnowledgeFileMapper knowledgeFileMapper; /** * 查询知识库文件 - * + * * @param id 知识库文件主键 * @return 知识库文件 */ @@ -33,7 +34,7 @@ public class KnowledgeFileServiceImpl implements IKnowledgeFileService /** * 查询知识库文件列表 - * + * * @param knowledgeFile 知识库文件 * @return 知识库文件 */ @@ -45,7 +46,7 @@ public class KnowledgeFileServiceImpl implements IKnowledgeFileService /** * 新增知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -57,7 +58,7 @@ public class KnowledgeFileServiceImpl implements IKnowledgeFileService /** * 修改知识库文件 - * + * * @param knowledgeFile 知识库文件 * @return 结果 */ @@ -69,7 +70,7 @@ public class KnowledgeFileServiceImpl implements IKnowledgeFileService /** * 批量删除知识库文件 - * + * * @param ids 需要删除的知识库文件主键 * @return 结果 */ @@ -81,7 +82,7 @@ public class KnowledgeFileServiceImpl implements IKnowledgeFileService /** * 删除知识库文件信息 - * + * * @param id 知识库文件主键 * @return 结果 */ diff --git a/ruoyi-admin/src/main/java/com/ruoyi/out/productAndStock/service/IViewProductAndStockService.java b/ruoyi-admin/src/main/java/com/ruoyi/out/productAndStock/service/IViewProductAndStockService.java index 13a7871..0b36e25 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/out/productAndStock/service/IViewProductAndStockService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/out/productAndStock/service/IViewProductAndStockService.java @@ -5,15 +5,15 @@ import com.ruoyi.out.productAndStock.domain.ViewProductAndStock; /** * 库存物资Service接口 - * + * * @author ruoyi * @date 2025-09-12 */ -public interface IViewProductAndStockService +public interface IViewProductAndStockService { /** * 查询库存物资 - * + * * @param onlyIdentity 库存物资主键 * @return 库存物资 */ @@ -21,7 +21,7 @@ public interface IViewProductAndStockService /** * 查询库存物资列表 - * + * * @param viewProductAndStock 库存物资 * @return 库存物资集合 */ @@ -29,7 +29,7 @@ public interface IViewProductAndStockService /** * 新增库存物资 - * + * * @param viewProductAndStock 库存物资 * @return 结果 */ @@ -37,7 +37,7 @@ public interface IViewProductAndStockService /** * 修改库存物资 - * + * * @param viewProductAndStock 库存物资 * @return 结果 */ @@ -45,7 +45,7 @@ public interface IViewProductAndStockService /** * 批量删除库存物资 - * + * * @param onlyIdentitys 需要删除的库存物资主键集合 * @return 结果 */ @@ -53,7 +53,7 @@ public interface IViewProductAndStockService /** * 删除库存物资信息 - * + * * @param onlyIdentity 库存物资主键 * @return 结果 */ diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index 04d0be2..e23a67a 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -92,6 +92,7 @@ spring: max-wait: -1ms ai: + enable: false openai: api-key: sk-dzftrybcpjujsjgehjgtsjzjuhqxciosldcncjtlazxvjams # 密钥key base-url: https://api.siliconflow.cn # 产商地址 @@ -120,9 +121,9 @@ spring: #向量数据库 vectorstore: mariadb: - initialize-schema: true - distance-type: COSINE - dimensions: 1024 + initialize-schema: truea + distance-type: COSINEa + dimensions: 1024a # token配置