|
@@ -1,6 +1,7 @@
|
|
package com.pavis.admin.aigc.service.impl;
|
|
package com.pavis.admin.aigc.service.impl;
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.pavis.admin.aigc.mapper.DocChunkMapper;
|
|
import com.pavis.admin.aigc.mapper.DocChunkMapper;
|
|
import com.pavis.admin.aigc.mapper.DocMapper;
|
|
import com.pavis.admin.aigc.mapper.DocMapper;
|
|
@@ -12,6 +13,7 @@ import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
+import top.continew.starter.cache.redisson.util.RedisUtils;
|
|
import top.continew.starter.extension.crud.service.BaseServiceImpl;
|
|
import top.continew.starter.extension.crud.service.BaseServiceImpl;
|
|
import com.pavis.admin.aigc.mapper.KnowledgeMapper;
|
|
import com.pavis.admin.aigc.mapper.KnowledgeMapper;
|
|
import com.pavis.admin.aigc.model.entity.KnowledgeDO;
|
|
import com.pavis.admin.aigc.model.entity.KnowledgeDO;
|
|
@@ -47,81 +49,92 @@ public class KnowledgeServiceImpl extends BaseServiceImpl<KnowledgeMapper, Knowl
|
|
public void addDocs(DocDO data) {
|
|
public void addDocs(DocDO data) {
|
|
aigcDocsMapper.insert(data);
|
|
aigcDocsMapper.insert(data);
|
|
}
|
|
}
|
|
|
|
+ @Override
|
|
|
|
+ @Transactional
|
|
|
|
+ public void delKnowAndDocAndSlice(Long knowId) {
|
|
|
|
+ // 1. 根据知识库ID删除知识库,文件和切片
|
|
|
|
+ aigcDocsSliceMapper.delete(new QueryWrapper<DocChunkDO>()
|
|
|
|
+ .eq("knowledge_id", knowId));
|
|
|
|
+ aigcDocsMapper.delete(new QueryWrapper<DocDO>()
|
|
|
|
+ .eq("knowledge_id", knowId));
|
|
|
|
+ baseMapper.deleteById(knowId);
|
|
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void addDocsSlice(DocChunkDO data) {
|
|
|
|
- // aigcDocsSliceMapper.insert(data);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void updateDocs(DocDO data) {
|
|
|
|
- // aigcDocsMapper.updateById(data);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void addDocs(AigcDocs data) {
|
|
|
|
- // data.setCreateTime(new Date());
|
|
|
|
- // aigcDocsMapper.insert(data);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void updateDocs(AigcDocs data) {
|
|
|
|
- // aigcDocsMapper.updateById(data);
|
|
|
|
- // }
|
|
|
|
-
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void addDocsSlice(AigcDocsSlice data) {
|
|
|
|
- // data.setCreateTime(new Date())
|
|
|
|
- // .setWordNum(data.getContent().length())
|
|
|
|
- // .setStatus(true)
|
|
|
|
- // ;
|
|
|
|
- // aigcDocsSliceMapper.insert(data);
|
|
|
|
- // }
|
|
|
|
|
|
+ }
|
|
|
|
|
|
- // @Override
|
|
|
|
- // @Transactional
|
|
|
|
- // public void updateDocsSlice(AigcDocsSlice data) {
|
|
|
|
- // aigcDocsSliceMapper.updateById(data);
|
|
|
|
- // }
|
|
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void addDocsSlice(DocChunkDO data) {
|
|
|
|
+// aigcDocsSliceMapper.insert(data);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void updateDocs(DocDO data) {
|
|
|
|
+// aigcDocsMapper.updateById(data);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void addDocs(AigcDocs data) {
|
|
|
|
+// data.setCreateTime(new Date());
|
|
|
|
+// aigcDocsMapper.insert(data);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void updateDocs(AigcDocs data) {
|
|
|
|
+// aigcDocsMapper.updateById(data);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void addDocsSlice(AigcDocsSlice data) {
|
|
|
|
+// data.setCreateTime(new Date())
|
|
|
|
+// .setWordNum(data.getContent().length())
|
|
|
|
+// .setStatus(true)
|
|
|
|
+// ;
|
|
|
|
+// aigcDocsSliceMapper.insert(data);
|
|
|
|
+// }
|
|
|
|
+
|
|
|
|
+// @Override
|
|
|
|
+// @Transactional
|
|
|
|
+// public void updateDocsSlice(AigcDocsSlice data) {
|
|
|
|
+// aigcDocsSliceMapper.updateById(data);
|
|
|
|
+// }
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public List<String> listSliceVectorIdsOfDoc(String docsId) {
|
|
public List<String> listSliceVectorIdsOfDoc(String docsId) {
|
|
LambdaQueryWrapper<DocChunkDO> selectWrapper = Wrappers.<DocChunkDO>lambdaQuery()
|
|
LambdaQueryWrapper<DocChunkDO> selectWrapper = Wrappers.<DocChunkDO>lambdaQuery()
|
|
- .select(DocChunkDO::getEmbedStoreId)
|
|
|
|
- .eq(DocChunkDO::getDocId, docsId);
|
|
|
|
|
|
+ .select(DocChunkDO::getEmbedStoreId)
|
|
|
|
+ .eq(DocChunkDO::getDocId, docsId);
|
|
List<String> vectorIds = aigcDocsSliceMapper.selectList(selectWrapper)
|
|
List<String> vectorIds = aigcDocsSliceMapper.selectList(selectWrapper)
|
|
- .stream()
|
|
|
|
- .map(DocChunkDO::getEmbedStoreId)
|
|
|
|
- .toList();
|
|
|
|
|
|
+ .stream()
|
|
|
|
+ .map(DocChunkDO::getEmbedStoreId)
|
|
|
|
+ .toList();
|
|
log.debug("slices of doc: [{}], count: [{}]", docsId, vectorIds.size());
|
|
log.debug("slices of doc: [{}], count: [{}]", docsId, vectorIds.size());
|
|
return vectorIds;
|
|
return vectorIds;
|
|
}
|
|
}
|
|
|
|
|
|
- // @Override
|
|
|
|
- // public List<AigcDocs> getDocsByKb(String knowledgeId) {
|
|
|
|
- // return aigcDocsMapper.selectList(Wrappers.<AigcDocs>lambdaQuery()
|
|
|
|
- // .eq(AigcDocs::getKnowledgeId, knowledgeId));
|
|
|
|
- // }
|
|
|
|
|
|
+// @Override
|
|
|
|
+// public List<AigcDocs> getDocsByKb(String knowledgeId) {
|
|
|
|
+// return aigcDocsMapper.selectList(Wrappers.<AigcDocs>lambdaQuery()
|
|
|
|
+// .eq(AigcDocs::getKnowledgeId, knowledgeId));
|
|
|
|
+// }
|
|
|
|
|
|
// @Override
|
|
// @Override
|
|
- // @Transactional
|
|
|
|
- // public void removeKnowledge(String knowledgeId) {
|
|
|
|
- // baseMapper.deleteById(knowledgeId);
|
|
|
|
- // // del docs & docsSlice
|
|
|
|
- // List<String> docsIds = getDocsByKb(knowledgeId).stream().map(AigcDocs::getId).toList();
|
|
|
|
- // docsIds.forEach(this::removeSlicesOfDoc);
|
|
|
|
- // }
|
|
|
|
- //
|
|
|
|
|
|
+// @Transactional
|
|
|
|
+// public void removeKnowledge(String knowledgeId) {
|
|
|
|
+// baseMapper.deleteById(knowledgeId);
|
|
|
|
+// // del docs & docsSlice
|
|
|
|
+// List<String> docsIds = getDocsByKb(knowledgeId).stream().map(AigcDocs::getId).toList();
|
|
|
|
+// docsIds.forEach(this::removeSlicesOfDoc);
|
|
|
|
+// }
|
|
|
|
+//
|
|
@Override
|
|
@Override
|
|
@Transactional
|
|
@Transactional
|
|
public void removeSlicesOfDoc(String docsId) {
|
|
public void removeSlicesOfDoc(String docsId) {
|
|
LambdaQueryWrapper<DocChunkDO> deleteWrapper = Wrappers.<DocChunkDO>lambdaQuery()
|
|
LambdaQueryWrapper<DocChunkDO> deleteWrapper = Wrappers.<DocChunkDO>lambdaQuery()
|
|
- .eq(DocChunkDO::getDocId, docsId);
|
|
|
|
|
|
+ .eq(DocChunkDO::getDocId, docsId);
|
|
int count = aigcDocsSliceMapper.delete(deleteWrapper);
|
|
int count = aigcDocsSliceMapper.delete(deleteWrapper);
|
|
log.debug("remove all slices of doc: [{}], count: [{}]", docsId, count);
|
|
log.debug("remove all slices of doc: [{}], count: [{}]", docsId, count);
|
|
}
|
|
}
|