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 @RequiredArgsConstructor public class AiKnowledgeFileServiceImpl extends ServiceImpl implements AiKnowledgeFileService { private final AiKnowledgeFileMapper aiKnowledgeFileMapper; private final AiCompanyService aiCompanyService; @Override public IPage listInPage(AiKnowledgeFile dto, QueryRequest request) { Page page = new Page<>(request.getPageNum(), request.getPageSize()); LambdaQueryWrapper query = Wrappers.lambdaQuery(AiKnowledgeFile.class); if (StrUtil.isNotEmpty(dto.getCompanyId())){ query.eq(AiKnowledgeFile::getCompanyId, dto.getCompanyId()); } query.orderByDesc(AiKnowledgeFile::getCompanyId); Page 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; } }