代码提交,修改上传知识库逻辑

topo_dev
liu 9 months ago
parent a67e64ae72
commit 385125f2fc

@ -9,4 +9,6 @@ import java.util.List;
public interface NoteRecordService extends IService<NoteRecord> {
List<NoteRecordDTO> selectNoteRecordDTOList(NoteRecord noteRecord);
void uploadFileToLangChainChat(String caseId);
}

@ -29,6 +29,7 @@ import com.supervision.police.mybatis.RowSqlMapper;
import com.supervision.police.service.CaseStatusManageService;
import com.supervision.police.service.ModelIndexService;
import com.supervision.police.service.ModelService;
import com.supervision.police.service.NoteRecordService;
import com.supervision.utils.SqlParserUtil;
import jakarta.servlet.ServletOutputStream;
import jakarta.servlet.http.HttpServletResponse;
@ -74,6 +75,8 @@ public class ModelServiceImpl implements ModelService {
private final CaseStatusManageService caseStatusManageService;
private final NoteRecordService noteRecordService;
@Override
public R<?> analyseCase(AnalyseCaseDTO analyseCaseDTO) {
@ -149,6 +152,8 @@ public class ModelServiceImpl implements ModelService {
// 最终计算得分
calculateFinalScore(analyseCaseDTO, modelCase, atomicResultMap);
caseStatusManageService.whenAnalyseCaseSuccess(analyseCaseDTO.getCaseId(), modelCase.getTotalScore());
// TODO 计算完成之后,把所有的笔录异步上传到模型
noteRecordService.uploadFileToLangChainChat(analyseCaseDTO.getCaseId());
return R.ok();
}

@ -1,14 +1,25 @@
package com.supervision.police.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.supervision.chat.UploadParamEnum;
import com.supervision.chat.client.CustomMultipartFile;
import com.supervision.chat.client.LangChainChatService;
import com.supervision.chat.client.dto.LangChainChatRes;
import com.supervision.common.utils.StringUtils;
import com.supervision.config.BusinessException;
import com.supervision.minio.domain.MinioFile;
import com.supervision.minio.service.MinioService;
import com.supervision.police.domain.ModelCase;
import com.supervision.police.domain.NoteRecord;
import com.supervision.police.dto.NoteRecordDTO;
import com.supervision.police.mapper.NoteRecordMapper;
import com.supervision.police.service.ModelCaseService;
import com.supervision.police.service.NoteRecordService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.InputStream;
import java.util.List;
@Slf4j
@ -16,8 +27,54 @@ import java.util.List;
@RequiredArgsConstructor
public class NoteRecordServiceImpl extends ServiceImpl<NoteRecordMapper, NoteRecord>
implements NoteRecordService {
private final LangChainChatService langChainChatService;
private final ModelCaseService modelCaseService;
private final MinioService minioService;
@Override
public List<NoteRecordDTO> selectNoteRecordDTOList(NoteRecord noteRecord) {
return super.getBaseMapper().selectNoteRecordDTOList(noteRecord);
}
public void uploadFileToLangChainChat(String caseId) {
List<NoteRecord> recordList = this.lambdaQuery().eq(NoteRecord::getCaseId, caseId).list();
ModelCase modelCase = modelCaseService.getById(caseId);
for (NoteRecord record : recordList) {
if (StringUtils.isEmpty(modelCase.getCaseNo())) {
throw new BusinessException("案件编号不能为空");
}
for (String fileId : record.getFileIds().split(",")) {
MinioFile minioFile = minioService.getMinioFile(fileId);
InputStream inputStream = null;
try {
inputStream = minioService.getObjectInputStream(minioFile);
// 这里需要把文件传输,传输到知识库中去
CustomMultipartFile mockMultipartFile = new CustomMultipartFile(minioFile.getFilename(), inputStream);
LangChainChatRes langChainChatRes = langChainChatService.uploadFile(modelCase.getCaseNo(),
mockMultipartFile,
"问讯笔录",
UploadParamEnum.to_vector_store.getBooleanValue(),
UploadParamEnum.override.getBooleanValue(),
UploadParamEnum.not_refresh_vs_cache.getBooleanValue(),
UploadParamEnum.chunk_size.getIntValue(),
UploadParamEnum.chunk_overlap.getIntValue(),
UploadParamEnum.zh_title_enhance.getBooleanValue(),
UploadParamEnum.docs.getStrValue());
if (!langChainChatRes.getCode().equals(200)) {
log.error("上传文件到知识库失败:{}", langChainChatRes.getMsg());
}
} catch (Exception e) {
e.printStackTrace();
log.error("从minio中获取文件失败:{}", e.getMessage());
continue;
}
}
}
}
}

@ -108,22 +108,6 @@ public class NoteRecordSplitServiceImpl extends ServiceImpl<NoteRecordSplitMappe
log.error("从minio中获取文件失败:{}", e.getMessage());
continue;
}
// 这里需要把文件传输,传输到知识库中去
CustomMultipartFile mockMultipartFile = new CustomMultipartFile(minioFile.getFilename(), inputStream);
LangChainChatRes langChainChatRes = langChainChatService.uploadFile(modelCase.getCaseNo(),
mockMultipartFile,
"问讯笔录",
UploadParamEnum.to_vector_store.getBooleanValue(),
UploadParamEnum.override.getBooleanValue(),
UploadParamEnum.not_refresh_vs_cache.getBooleanValue(),
UploadParamEnum.chunk_size.getIntValue(),
UploadParamEnum.chunk_overlap.getIntValue(),
UploadParamEnum.zh_title_enhance.getBooleanValue(),
UploadParamEnum.docs.getStrValue());
if (!langChainChatRes.getCode().equals(200)) {
log.error("上传文件失败:{}", langChainChatRes.getMsg());
throw new RuntimeException("上传文件失败");
}
String context = WordReadUtil.readWord(inputStream);
List<QARecordNodeDTO> qaList = RecordRegexUtil.recordRegex(context, record.getName());
List<NoteRecordSplit> splitList = new ArrayList<>();

Loading…
Cancel
Save