manage: fix bug

dev_2.1.0
xueqingkun 1 year ago
parent 1c3b3681dd
commit ae2ebf7a11

@ -3,17 +3,16 @@ package com.supervision.manage.pojo.vo;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import java.time.temporal.TemporalUnit;
import java.util.List; import java.util.List;
@Data @Data
public class MedicalAnswerVideoResVo { public class MedicalAnswerVideoResVo {
@ApiModelProperty("消息内容") @ApiModelProperty("成功个数")
private String message; private int totalCount;
@ApiModelProperty("模板是否正确 true:正确 false:错误") @ApiModelProperty("失败个数")
private boolean templateErrorFlag = true; private int failCount;
@ApiModelProperty("文件id") @ApiModelProperty("文件id")
private String fileId; private String fileId;

@ -6,12 +6,13 @@ import lombok.Data;
@Data @Data
public class UploadQuestionLibraryResVo { public class UploadQuestionLibraryResVo {
@ApiModelProperty("消息内容") @ApiModelProperty("总数据条数")
private String message; private int totalCount;
@ApiModelProperty("失败数据条数")
private int failCount;
@ApiModelProperty("文件id") @ApiModelProperty("文件id")
private String fileId; private String fileId;
@ApiModelProperty("模板是否正确 true:正确 false:错误")
private boolean templateErrorFlag = true;
} }

@ -129,14 +129,7 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
log.info("uploadQuestionLibrary : 读取文件耗时:{} s" , timer.intervalSecond()); log.info("uploadQuestionLibrary : 读取文件耗时:{} s" , timer.intervalSecond());
// 校验模板是否正确 // 校验模板是否正确
List<String> assertTitle = assertTitle(reader); assertTitle(reader);
if (CollUtil.isNotEmpty(assertTitle)){
FileResource fileResource = fileManageService.uploadFile(multipartFile,multipartFile.getContentType());
UploadQuestionLibraryResVo uploadQuestionLibraryResVo = new UploadQuestionLibraryResVo();
uploadQuestionLibraryResVo.setFileId(fileResource.getId());
uploadQuestionLibraryResVo.setTemplateErrorFlag(false);
return uploadQuestionLibraryResVo;
}
List<UploadQuestionLibraryDTO> uploadQuestionLibraryDTOS = reader.readAll(UploadQuestionLibraryDTO.class); List<UploadQuestionLibraryDTO> uploadQuestionLibraryDTOS = reader.readAll(UploadQuestionLibraryDTO.class);
questionExcelDoAction(uploadQuestionLibraryDTOS); questionExcelDoAction(uploadQuestionLibraryDTOS);
@ -186,23 +179,13 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
* *
* @param reader * @param reader
*/ */
private List<String> assertTitle(ExcelReader reader){ private void assertTitle(ExcelReader reader){
HashSet<String> messages = new HashSet<>();
List<Object> titleList = reader.readRow(0); List<Object> titleList = reader.readRow(0);
if (CollUtil.isEmpty(titleList)){ Assert.isTrue(CollUtil.isEmpty(titleList), "表头格式有误,请重新导入");
messages.add("标题行为空");
return CollUtil.newArrayList(messages);
}
for (int i = 0; i < UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) { for (int i = 0; i < UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) {
if (titleList.size() <= i){ Assert.isTrue(titleList.size() <= i, "表头格式有误,请重新导入");
messages.add("标题行长度不匹配"); Assert.isTrue(!UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i)), "表头格式有误,请重新导入");
return CollUtil.newArrayList(messages);
}
if (!UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i))){
messages.add("标题行不匹配");
}
} }
return CollUtil.newArrayList(messages);
} }
@ -246,8 +229,9 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
String message = StrUtil.format("共导入数据{}条,失败{}条。", uploadQuestionLibraryDTOS.size(), String message = StrUtil.format("共导入数据{}条,失败{}条。", uploadQuestionLibraryDTOS.size(),
uploadQuestionLibraryDTOS.stream().filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).count()); uploadQuestionLibraryDTOS.stream().filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).count());
uploadQuestionLibraryResVo.setMessage(message);
uploadQuestionLibraryResVo.setTotalCount(uploadQuestionLibraryDTOS.size());
uploadQuestionLibraryResVo.setFailCount((int) uploadQuestionLibraryDTOS.stream().filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).count());
return uploadQuestionLibraryResVo; return uploadQuestionLibraryResVo;

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.TimeInterval; import cn.hutool.core.date.TimeInterval;
import cn.hutool.core.io.FileUtil; import cn.hutool.core.io.FileUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.ExcelReader; import cn.hutool.poi.excel.ExcelReader;
import cn.hutool.poi.excel.ExcelUtil; import cn.hutool.poi.excel.ExcelUtil;
@ -20,11 +21,9 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.io.BufferedOutputStream; import java.io.*;
import java.io.File;
import java.io.InputStream;
import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@ -49,21 +48,15 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
private final CommonDicService commonDicService; private final CommonDicService commonDicService;
@Override @Override
public MedicalAnswerVideoResVo preGenerationMedicalAnswerVideo(InputStream bookStream, String medicalId) throws Exception { public MedicalAnswerVideoResVo preGenerationMedicalAnswerVideo(InputStream inputStream, String medicalId) throws Exception {
TimeInterval timer = DateUtil.timer(); TimeInterval timer = DateUtil.timer();
ExcelReader reader = ExcelUtil.getReader(bookStream);
ExcelReader reader = ExcelUtil.getReader(inputStream);
log.info("generationMedicalAnswerVideo : 读取文件耗时:{} s" , timer.intervalSecond()); log.info("generationMedicalAnswerVideo : 读取文件耗时:{} s" , timer.intervalSecond());
// 校验模板是否正确 // 校验模板是否正确
List<String> assertTitle = assertTitle(reader); assertTitle(reader);
if (CollUtil.isNotEmpty(assertTitle)){
FileResource fileResource = fileManageService.uploadFile(bookStream);
MedicalAnswerVideoResVo medicalAnswerVideoResVo = new MedicalAnswerVideoResVo();
medicalAnswerVideoResVo.setFileId(fileResource.getId());
medicalAnswerVideoResVo.setTemplateErrorFlag(false);
return medicalAnswerVideoResVo;
}
List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS = reader.readAll(MedicalRecAnswerExcelDTO.class); List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS = reader.readAll(MedicalRecAnswerExcelDTO.class);
@ -118,9 +111,8 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
MedicalAnswerVideoResVo medicalAnswerVideoResVo = new MedicalAnswerVideoResVo(); MedicalAnswerVideoResVo medicalAnswerVideoResVo = new MedicalAnswerVideoResVo();
medicalAnswerVideoResVo.setFileId(fileId); medicalAnswerVideoResVo.setFileId(fileId);
String message = StrUtil.format("共导入数据{}条,失败{}条。",medicalRecAnswerExcelDTOS.size(), medicalAnswerVideoResVo.setTotalCount(medicalRecAnswerExcelDTOS.size());
medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).count()); medicalAnswerVideoResVo.setFailCount((int) medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).count());
medicalAnswerVideoResVo.setMessage(message);
List<MedicalRecQaVO> medicalRecQaVOList = medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isEmpty(dto.getErrorCodeEnums())).map(dto -> { List<MedicalRecQaVO> medicalRecQaVOList = medicalRecAnswerExcelDTOS.stream().filter(dto -> CollUtil.isEmpty(dto.getErrorCodeEnums())).map(dto -> {
MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO(); MedicalRecQaVO medicalRecQaVO = new MedicalRecQaVO();
@ -168,8 +160,9 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
public File writeExcel(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS) throws Exception { public File writeExcel(List<MedicalRecAnswerExcelDTO> medicalRecAnswerExcelDTOS) throws Exception {
List<MedicalRecAnswerExcelDTO> errorList = medicalRecAnswerExcelDTOS.stream() List<Map<String, Object>> errorList = medicalRecAnswerExcelDTOS.stream()
.filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums())).collect(Collectors.toList()); .filter(dto -> CollUtil.isNotEmpty(dto.getErrorCodeEnums()))
.map(MedicalRecAnswerExcelDTO::toExcelMap).collect(Collectors.toList());
File templateFile = fileManageService.downloadFile(errorTemplateResourceId); File templateFile = fileManageService.downloadFile(errorTemplateResourceId);
try (ExcelWriter writer = ExcelUtil.getWriter(templateFile)){ try (ExcelWriter writer = ExcelUtil.getWriter(templateFile)){
@ -186,23 +179,13 @@ public class OfflineAnswerVideoResource implements AnswerVideoResourceService {
* *
* @param reader * @param reader
*/ */
private List<String> assertTitle(ExcelReader reader){ private void assertTitle(ExcelReader reader){
HashSet<String> messages = new HashSet<>();
List<Object> titleList = reader.readRow(0); List<Object> titleList = reader.readRow(0);
if (CollUtil.isEmpty(titleList)){ Assert.isTrue(CollUtil.isNotEmpty(titleList), "表头格式有误,请重新导入");
messages.add("标题行为空");
return CollUtil.newArrayList(messages);
}
for (int i = 0; i < MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) { for (int i = 0; i < MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) {
if (titleList.size() <= i){ Assert.isTrue(titleList.size() > i, "表头格式有误,请重新导入");
messages.add("标题行长度不匹配"); Assert.isTrue(MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i)), "表头格式有误,请重新导入");
return CollUtil.newArrayList(messages);
}
if (!MedicalRecAnswerExcelDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i))){
messages.add("标题行不匹配");
}
} }
return CollUtil.newArrayList(messages);
} }

Loading…
Cancel
Save