From 65d83e255e4e1bdfb0336bea920d6c884c510711 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Tue, 30 Sep 2025 09:43:55 +0800
Subject: [PATCH] feat(ai): 新增知识库文件管理功能

---
 src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java |   80 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 80 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
index afc19e3..ba6b536 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiKnowledgeFileServiceImpl.java
@@ -1,12 +1,35 @@
 package cc.mrbird.febs.ai.service.impl;
 
+import cc.mrbird.febs.ai.entity.AiCompany;
 import cc.mrbird.febs.ai.entity.AiKnowledgeFile;
+import cc.mrbird.febs.ai.entity.AiProduct;
+import cc.mrbird.febs.ai.entity.AiProductCategory;
 import cc.mrbird.febs.ai.mapper.AiKnowledgeFileMapper;
+import cc.mrbird.febs.ai.service.AiCompanyService;
 import cc.mrbird.febs.ai.service.AiKnowledgeFileService;
+import cc.mrbird.febs.ai.util.KnowledgeBaseUtil;
+import cc.mrbird.febs.ai.util.UUID;
+import cc.mrbird.febs.common.entity.FebsResponse;
+import cc.mrbird.febs.common.entity.QueryRequest;
+import cc.mrbird.febs.common.exception.FebsException;
+import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 @Slf4j
 @Service
@@ -14,4 +37,61 @@
 public class AiKnowledgeFileServiceImpl extends ServiceImpl<AiKnowledgeFileMapper, AiKnowledgeFile> implements AiKnowledgeFileService {
 
     private final AiKnowledgeFileMapper aiKnowledgeFileMapper;
+    private final AiCompanyService aiCompanyService;
+
+    @Override
+    public IPage<AiKnowledgeFile> listInPage(AiKnowledgeFile dto, QueryRequest request) {
+        Page<AiKnowledgeFile> page = new Page<>(request.getPageNum(), request.getPageSize());
+        LambdaQueryWrapper<AiKnowledgeFile> query = Wrappers.lambdaQuery(AiKnowledgeFile.class);
+        if (StrUtil.isNotEmpty(dto.getCompanyId())){
+            query.eq(AiKnowledgeFile::getCompanyId, dto.getCompanyId());
+        }
+        query.orderByDesc(AiKnowledgeFile::getCompanyId);
+        Page<AiKnowledgeFile> pages = aiKnowledgeFileMapper.selectPage(page, query);
+        return pages;
+    }
+
+    @Override
+    @Transactional
+    public FebsResponse add(AiKnowledgeFile dto) {
+        AiKnowledgeFile entity = new AiKnowledgeFile();
+        entity.setId(UUID.getSimpleUUIDString());
+        entity.setCompanyId(dto.getCompanyId());
+        entity.setName(dto.getName());
+        entity.setSavePath(dto.getSavePath());
+        entity.setCreatedTime(new Date());
+        this.save(entity);
+
+        String categoryId = null;
+        String knowledgeId = null;
+        if (StrUtil.isNotEmpty(entity.getCompanyId())){
+            AiCompany aiCompany = aiCompanyService.getById(entity.getCompanyId());
+            if (StrUtil.isNotEmpty(aiCompany.getCategoryId())){
+                categoryId = aiCompany.getCategoryId();
+                knowledgeId = aiCompany.getKnowledgeId();
+            }
+        }else{
+            categoryId = KnowledgeBaseUtil.DEFAULT_CATEGORY_ID;
+            knowledgeId = KnowledgeBaseUtil.DEFAULT_KNOWLEDGE_ID;
+        }
+
+        String fileId = KnowledgeBaseUtil.uploadFileToAppData(entity.getSavePath(), categoryId);
+        if (StrUtil.isBlank(fileId)){
+            throw new FebsException("初始化应用数据失败");
+        }
+
+        String jobId = KnowledgeBaseUtil.updateKnowledgeBase(fileId, knowledgeId, null);
+        aiKnowledgeFileMapper.update(null,
+                Wrappers.lambdaUpdate(AiKnowledgeFile.class)
+                        .set(AiKnowledgeFile::getFileId, fileId)
+                        .set(AiKnowledgeFile::getJobId, jobId)
+                        .eq(AiKnowledgeFile::getId, entity.getId())
+                );
+        return new FebsResponse().success().message("操作成功");
+    }
+
+    @Override
+    public FebsResponse update(AiKnowledgeFile dto) {
+        return null;
+    }
 }

--
Gitblit v1.9.1