|
|
|
@ -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;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|