|
|
@ -11,13 +11,13 @@ import cn.hutool.poi.excel.ExcelUtil;
|
|
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
|
|
import cn.hutool.poi.excel.ExcelWriter;
|
|
|
|
import com.supervision.manage.dto.MedicalRecAnswerExcelDTO;
|
|
|
|
import com.supervision.manage.dto.MedicalRecAnswerExcelDTO;
|
|
|
|
import com.supervision.manage.pojo.vo.MedicalAnswerVideoResVo;
|
|
|
|
import com.supervision.manage.pojo.vo.MedicalAnswerVideoResVo;
|
|
|
|
import com.supervision.manage.pojo.vo.MedicalRecQaVO;
|
|
|
|
|
|
|
|
import com.supervision.manage.service.AnswerVideoResourceService;
|
|
|
|
import com.supervision.manage.service.AnswerVideoResourceService;
|
|
|
|
import com.supervision.manage.service.AskQuestionLibraryManageService;
|
|
|
|
import com.supervision.manage.service.AskQuestionLibraryManageService;
|
|
|
|
import com.supervision.manage.service.FileManageService;
|
|
|
|
import com.supervision.manage.service.FileManageService;
|
|
|
|
import com.supervision.manage.service.QaKnowledgeManageService;
|
|
|
|
import com.supervision.manage.service.QaKnowledgeManageService;
|
|
|
|
import com.supervision.model.*;
|
|
|
|
import com.supervision.model.*;
|
|
|
|
import com.supervision.service.*;
|
|
|
|
import com.supervision.service.*;
|
|
|
|
|
|
|
|
import com.supervision.vo.manage.MedicalRecQaVO;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
import org.springframework.core.io.ResourceLoader;
|
|
|
|
import org.springframework.core.io.ResourceLoader;
|
|
|
@ -67,7 +67,7 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
TimeInterval timer = DateUtil.timer();
|
|
|
|
TimeInterval timer = DateUtil.timer();
|
|
|
|
|
|
|
|
|
|
|
|
ExcelReader reader = ExcelUtil.getReader(inputStream);
|
|
|
|
ExcelReader reader = ExcelUtil.getReader(inputStream);
|
|
|
|
log.info("generationMedicalAnswerVideo : 读取文件耗时:{} s" , timer.intervalSecond());
|
|
|
|
log.info("generationMedicalAnswerVideo : 读取文件耗时:{} s", timer.intervalSecond());
|
|
|
|
|
|
|
|
|
|
|
|
// 校验模板是否正确
|
|
|
|
// 校验模板是否正确
|
|
|
|
assertTitle(reader);
|
|
|
|
assertTitle(reader);
|
|
|
@ -80,19 +80,19 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
timer.restart();
|
|
|
|
timer.restart();
|
|
|
|
medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isEmpty(dto.getErrorCodeEnums()))
|
|
|
|
medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isEmpty(dto.getErrorCodeEnums()))
|
|
|
|
.forEach(dto -> {
|
|
|
|
.forEach(dto -> {
|
|
|
|
String questionLibraryId = askQuestionLibraryManageService.saveQuestionLibrary(dto.toAskTemplateQuestionLibrary(),false);
|
|
|
|
String questionLibraryId = askQuestionLibraryManageService.saveQuestionLibrary(dto.toAskTemplateQuestionLibrary(), false);
|
|
|
|
dto.setLibraryQuestionId(questionLibraryId);
|
|
|
|
dto.setLibraryQuestionId(questionLibraryId);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
log.info("generationMedicalAnswerVideo : 扩充知识库耗时:{} s" , timer.intervalSecond());
|
|
|
|
log.info("generationMedicalAnswerVideo : 扩充知识库耗时:{} s", timer.intervalSecond());
|
|
|
|
|
|
|
|
|
|
|
|
timer.restart();
|
|
|
|
timer.restart();
|
|
|
|
qaKnowledgeManageService.refreshQaKnowledge();
|
|
|
|
qaKnowledgeManageService.refreshQaKnowledge();
|
|
|
|
log.info("generationMedicalAnswerVideo : 刷新知识库耗时:{} s" , timer.intervalSecond());
|
|
|
|
log.info("generationMedicalAnswerVideo : 刷新知识库耗时:{} s", timer.intervalSecond());
|
|
|
|
|
|
|
|
|
|
|
|
timer.restart();
|
|
|
|
timer.restart();
|
|
|
|
// 生成错误信息excel
|
|
|
|
// 生成错误信息excel
|
|
|
|
File file = writeExcel(medicalRecAnswerExcelDTOS);
|
|
|
|
File file = writeExcel(medicalRecAnswerExcelDTOS);
|
|
|
|
log.info("generationMedicalAnswerVideo : 生成错误信息excel耗时:{} s" , timer.intervalSecond());
|
|
|
|
log.info("generationMedicalAnswerVideo : 生成错误信息excel耗时:{} s", timer.intervalSecond());
|
|
|
|
|
|
|
|
|
|
|
|
FileResource fileResource;
|
|
|
|
FileResource fileResource;
|
|
|
|
try {
|
|
|
|
try {
|
|
|
@ -101,12 +101,13 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
FileUtil.del(file);
|
|
|
|
FileUtil.del(file);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return wrapperMedicalAnswerVideoResVo(medicalRecAnswerExcelDTOS,fileResource.getId());
|
|
|
|
return wrapperMedicalAnswerVideoResVo(medicalRecAnswerExcelDTOS, fileResource.getId());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 数据合法性校验,填充必要的数据,为进一步处理准备
|
|
|
|
* 数据合法性校验,填充必要的数据,为进一步处理准备
|
|
|
|
* @param medicalId 病历id
|
|
|
|
*
|
|
|
|
|
|
|
|
* @param medicalId 病历id
|
|
|
|
* @param medicalRecAnswerExcelDTOS 数据列表
|
|
|
|
* @param medicalRecAnswerExcelDTOS 数据列表
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void medicalRecAnswerExcelDoAction(String medicalId, List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS) {
|
|
|
|
private void medicalRecAnswerExcelDoAction(String medicalId, List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS) {
|
|
|
@ -123,28 +124,28 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
// 查询类目字段
|
|
|
|
// 查询类目字段
|
|
|
|
List<CommonDic> questionTypeDicList = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
|
|
|
|
List<CommonDic> questionTypeDicList = commonDicService.lambdaQuery().eq(CommonDic::getGroupCode, "AQT").list();
|
|
|
|
|
|
|
|
|
|
|
|
medicalRecAnswerExcelDTOS.forEach(dto->dto.doAction(
|
|
|
|
medicalRecAnswerExcelDTOS.forEach(dto -> dto.doAction(
|
|
|
|
questionLibraryList,askPatientAnswerList,materialLibraryList,questionTypeDicList,questionMap));
|
|
|
|
questionLibraryList, askPatientAnswerList, materialLibraryList, questionTypeDicList, questionMap));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public void updateAskPatientAnswer(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS,String medicalId){
|
|
|
|
public void updateAskPatientAnswer(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS, String medicalId) {
|
|
|
|
|
|
|
|
|
|
|
|
if (CollUtil.isEmpty(medicalRecAnswerExcelDTOS)){
|
|
|
|
if (CollUtil.isEmpty(medicalRecAnswerExcelDTOS)) {
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
for (MedicalRecAnswerExcelDTO dto : medicalRecAnswerExcelDTOS) {
|
|
|
|
for (MedicalRecAnswerExcelDTO dto : medicalRecAnswerExcelDTOS) {
|
|
|
|
if (CollUtil.isNotEmpty(dto.getErrorCodeEnums())){
|
|
|
|
if (CollUtil.isNotEmpty(dto.getErrorCodeEnums())) {
|
|
|
|
// 校验不通过,不进行入库处理
|
|
|
|
// 校验不通过,不进行入库处理
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
String askPatientAnswerId = dto.getAskPatientAnswerId();
|
|
|
|
String askPatientAnswerId = dto.getAskPatientAnswerId();
|
|
|
|
if (StrUtil.isNotEmpty(askPatientAnswerId)){
|
|
|
|
if (StrUtil.isNotEmpty(askPatientAnswerId)) {
|
|
|
|
//更新操作
|
|
|
|
//更新操作
|
|
|
|
AskPatientAnswer askPatientAnswer = dto.toAskPatientAnswer();
|
|
|
|
AskPatientAnswer askPatientAnswer = dto.toAskPatientAnswer();
|
|
|
|
askPatientAnswerService.lambdaUpdate().eq(AskPatientAnswer::getId,askPatientAnswerId)
|
|
|
|
askPatientAnswerService.lambdaUpdate().eq(AskPatientAnswer::getId, askPatientAnswerId)
|
|
|
|
.set(AskPatientAnswer::getAnswerResourceId,askPatientAnswer.getAnswerResourceId())
|
|
|
|
.set(AskPatientAnswer::getAnswerResourceId, askPatientAnswer.getAnswerResourceId())
|
|
|
|
.update();
|
|
|
|
.update();
|
|
|
|
}else {
|
|
|
|
} else {
|
|
|
|
//新增操作
|
|
|
|
//新增操作
|
|
|
|
AskPatientAnswer askPatientAnswer = dto.toAskPatientAnswer();
|
|
|
|
AskPatientAnswer askPatientAnswer = dto.toAskPatientAnswer();
|
|
|
|
askPatientAnswer.setMedicalId(medicalId);
|
|
|
|
askPatientAnswer.setMedicalId(medicalId);
|
|
|
@ -155,11 +156,12 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 组装返回消息
|
|
|
|
* 组装返回消息
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param medicalRecAnswerExcelDTOS 数据
|
|
|
|
* @param medicalRecAnswerExcelDTOS 数据
|
|
|
|
* @param fileId 文件id
|
|
|
|
* @param fileId 文件id
|
|
|
|
* @return MedicalAnswerVideoResVo
|
|
|
|
* @return MedicalAnswerVideoResVo
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private MedicalAnswerVideoResVo wrapperMedicalAnswerVideoResVo(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS,String fileId) {
|
|
|
|
private MedicalAnswerVideoResVo wrapperMedicalAnswerVideoResVo(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS, String fileId) {
|
|
|
|
|
|
|
|
|
|
|
|
MedicalAnswerVideoResVo medicalAnswerVideoResVo = new MedicalAnswerVideoResVo();
|
|
|
|
MedicalAnswerVideoResVo medicalAnswerVideoResVo = new MedicalAnswerVideoResVo();
|
|
|
|
|
|
|
|
|
|
|
@ -193,8 +195,8 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
|
|
|
|
|
|
|
|
File templateFile = FileUtil.writeFromStream(
|
|
|
|
File templateFile = FileUtil.writeFromStream(
|
|
|
|
resourceLoader.getResource(MEDICAL_ANSWER_TEMPLATE_ERROR_EXCEL_PATH).getInputStream(),
|
|
|
|
resourceLoader.getResource(MEDICAL_ANSWER_TEMPLATE_ERROR_EXCEL_PATH).getInputStream(),
|
|
|
|
FileUtil.createTempFile("导入详情",".xlsx",true), true);
|
|
|
|
FileUtil.createTempFile("导入详情", ".xlsx", true), true);
|
|
|
|
try (ExcelWriter writer = ExcelUtil.getWriter(templateFile)){
|
|
|
|
try (ExcelWriter writer = ExcelUtil.getWriter(templateFile)) {
|
|
|
|
writer.setHeaderAlias(MedicalRecAnswerExcelDTO.WRITE_HEADER_ALIAS);
|
|
|
|
writer.setHeaderAlias(MedicalRecAnswerExcelDTO.WRITE_HEADER_ALIAS);
|
|
|
|
writer.setOnlyAlias(true);
|
|
|
|
writer.setOnlyAlias(true);
|
|
|
|
writer.write(errorList, true);
|
|
|
|
writer.write(errorList, true);
|
|
|
@ -206,9 +208,10 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* 校验行头
|
|
|
|
* 校验行头
|
|
|
|
|
|
|
|
*
|
|
|
|
* @param reader
|
|
|
|
* @param reader
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
private void assertTitle(ExcelReader reader){
|
|
|
|
private void assertTitle(ExcelReader reader) {
|
|
|
|
List<Object> titleList = reader.readRow(0);
|
|
|
|
List<Object> titleList = reader.readRow(0);
|
|
|
|
Assert.isTrue(CollUtil.isNotEmpty(titleList), "表头格式有误,请重新导入");
|
|
|
|
Assert.isTrue(CollUtil.isNotEmpty(titleList), "表头格式有误,请重新导入");
|
|
|
|
for (int i = 0; i < MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) {
|
|
|
|
for (int i = 0; i < MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) {
|
|
|
|