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 lombok.Data;
import java.time.temporal.TemporalUnit;
import java.util.List;
@Data
public class MedicalAnswerVideoResVo {
@ApiModelProperty("消息内容")
private String message;
@ApiModelProperty("成功个数")
private int totalCount;
@ApiModelProperty("模板是否正确 true:正确 false:错误")
private boolean templateErrorFlag = true;
@ApiModelProperty("失败个数")
private int failCount;
@ApiModelProperty("文件id")
private String fileId;

@ -6,12 +6,13 @@ import lombok.Data;
@Data
public class UploadQuestionLibraryResVo {
@ApiModelProperty("消息内容")
private String message;
@ApiModelProperty("总数据条数")
private int totalCount;
@ApiModelProperty("失败数据条数")
private int failCount;
@ApiModelProperty("文件id")
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());
// 校验模板是否正确
List<String> assertTitle = 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;
}
assertTitle(reader);
List<UploadQuestionLibraryDTO> uploadQuestionLibraryDTOS = reader.readAll(UploadQuestionLibraryDTO.class);
questionExcelDoAction(uploadQuestionLibraryDTOS);
@ -186,23 +179,13 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
*
* @param reader
*/
private List<String> assertTitle(ExcelReader reader){
HashSet<String> messages = new HashSet<>();
private void assertTitle(ExcelReader reader){
List<Object> titleList = reader.readRow(0);
if (CollUtil.isEmpty(titleList)){
messages.add("标题行为空");
return CollUtil.newArrayList(messages);
}
Assert.isTrue(CollUtil.isEmpty(titleList), "表头格式有误,请重新导入");
for (int i = 0; i < UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.size(); i++) {
if (titleList.size() <= i){
messages.add("标题行长度不匹配");
return CollUtil.newArrayList(messages);
}
if (!UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i))){
messages.add("标题行不匹配");
}
Assert.isTrue(titleList.size() <= i, "表头格式有误,请重新导入");
Assert.isTrue(!UploadQuestionLibraryDTO.READ_ANSWER_VIDEO_TITLE.get(i).equals(titleList.get(i)), "表头格式有误,请重新导入");
}
return CollUtil.newArrayList(messages);
}
@ -246,8 +229,9 @@ public class AskQuestionLibraryManageServiceImpl implements AskQuestionLibraryMa
String message = StrUtil.format("共导入数据{}条,失败{}条。", uploadQuestionLibraryDTOS.size(),
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;

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

Loading…
Cancel
Save