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