|
@@ -1,5 +1,6 @@
|
|
package com.lantone.daqe.facade;
|
|
package com.lantone.daqe.facade;
|
|
|
|
|
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
@@ -28,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.IOException;
|
|
import java.io.IOException;
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
+import java.util.LinkedHashMap;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.concurrent.atomic.AtomicBoolean;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
@@ -140,36 +142,45 @@ public class DiseaseManagementFacade {
|
|
Asserts.fail("Excel文件为空");
|
|
Asserts.fail("Excel文件为空");
|
|
}
|
|
}
|
|
//数据规范校验
|
|
//数据规范校验
|
|
- checkData(response, diagnoseExcelVOS);
|
|
|
|
- //去重
|
|
|
|
- List<ImportDiseaseVO> temp = diagnoseExcelVOS.stream().distinct().collect(Collectors.toList());
|
|
|
|
- //导入
|
|
|
|
- List<DiseaseInfo> insert = BeanUtil.listCopyTo(temp,DiseaseInfo.class);
|
|
|
|
- boolean out = diseaseInfoServiceImpl.saveBatch(insert);
|
|
|
|
- CommonResult<String> outMsg = null;
|
|
|
|
- response.setContentType("text/html;charset=utf-8");
|
|
|
|
- if(out){
|
|
|
|
- outMsg = CommonResult.success(String.format("模板成功导入%s条数据",insert.size()));
|
|
|
|
- try {
|
|
|
|
- response.getWriter().println(outMsg);
|
|
|
|
- response.flushBuffer();
|
|
|
|
- } catch (IOException e) {
|
|
|
|
- e.printStackTrace();
|
|
|
|
|
|
+ List<ExportImportDiseaseErrDTO> errExports = new ArrayList<>();
|
|
|
|
+ if (checkData(diagnoseExcelVOS, errExports)) {
|
|
|
|
+ String fileName = "诊断标准词匹配信息导入异常.xls";
|
|
|
|
+ ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportDiseaseErrDTO.class, fileName, response);
|
|
|
|
+ } else {
|
|
|
|
+ //去重
|
|
|
|
+ List<ImportDiseaseVO> temp = delRepeat(diagnoseExcelVOS);
|
|
|
|
+ //导入
|
|
|
|
+ List<DiseaseInfo> insert = BeanUtil.listCopyTo(temp, DiseaseInfo.class);
|
|
|
|
+ boolean out = diseaseInfoServiceImpl.saveBatch(insert);
|
|
|
|
+ CommonResult<String> outMsg = null;
|
|
|
|
+ response.setContentType("text/html;charset=utf-8");
|
|
|
|
+ if (out) {
|
|
|
|
+ outMsg = CommonResult.success(String.format("模板成功导入%s条数据", insert.size()));
|
|
|
|
+ try {
|
|
|
|
+ response.getWriter().println(JSONObject.toJSONString(outMsg));
|
|
|
|
+ response.flushBuffer();
|
|
|
|
+ } catch (IOException e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ Asserts.fail("数据插入失败");
|
|
}
|
|
}
|
|
- }else {
|
|
|
|
- Asserts.fail("数据插入失败");
|
|
|
|
}
|
|
}
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- private void checkData(HttpServletResponse response, List<ImportDiseaseVO> diagnoseExcelVOS) {
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 数据校验
|
|
|
|
+ *
|
|
|
|
+ * @param diagnoseExcelVOS 导入数据
|
|
|
|
+ * @param errExports 导出异常
|
|
|
|
+ * @Return java.lang.Boolean
|
|
|
|
+ */
|
|
|
|
+ private Boolean checkData(List<ImportDiseaseVO> diagnoseExcelVOS, List<ExportImportDiseaseErrDTO> errExports) {
|
|
AtomicBoolean errorFlog = new AtomicBoolean(false);
|
|
AtomicBoolean errorFlog = new AtomicBoolean(false);
|
|
- List<ExportImportDiseaseErrDTO> errExports = new ArrayList<>();
|
|
|
|
-
|
|
|
|
diagnoseExcelVOS.stream().forEach(importDiseaseVO -> {
|
|
diagnoseExcelVOS.stream().forEach(importDiseaseVO -> {
|
|
ExportImportDiseaseErrDTO exportImportDiseaseErrDTO = new ExportImportDiseaseErrDTO();
|
|
ExportImportDiseaseErrDTO exportImportDiseaseErrDTO = new ExportImportDiseaseErrDTO();
|
|
- BeanUtil.copyProperties(importDiseaseVO,exportImportDiseaseErrDTO);
|
|
|
|
|
|
+ BeanUtil.copyProperties(importDiseaseVO, exportImportDiseaseErrDTO);
|
|
StringBuffer errMsg = new StringBuffer();
|
|
StringBuffer errMsg = new StringBuffer();
|
|
//数据校验
|
|
//数据校验
|
|
if (StringUtil.isEmpty(importDiseaseVO.getName())) {
|
|
if (StringUtil.isEmpty(importDiseaseVO.getName())) {
|
|
@@ -181,18 +192,15 @@ public class DiseaseManagementFacade {
|
|
errorFlog.set(true);
|
|
errorFlog.set(true);
|
|
}
|
|
}
|
|
exportImportDiseaseErrDTO.setErrMsg(errMsg.toString());
|
|
exportImportDiseaseErrDTO.setErrMsg(errMsg.toString());
|
|
|
|
+ errExports.add(exportImportDiseaseErrDTO);
|
|
});
|
|
});
|
|
-
|
|
|
|
- if(errorFlog.get()){
|
|
|
|
- String fileName = "诊断标准词匹配信息导入异常.xls";
|
|
|
|
- ExcelUtils.exportExcelUser(errExports, null, "sheet1", ExportImportDiseaseErrDTO.class, fileName, response);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+ return errorFlog.get();
|
|
}
|
|
}
|
|
|
|
|
|
private List<ImportDiseaseVO> delRepeat(List<ImportDiseaseVO> diagnoseExcelVOS) {
|
|
private List<ImportDiseaseVO> delRepeat(List<ImportDiseaseVO> diagnoseExcelVOS) {
|
|
-
|
|
|
|
- return null;
|
|
|
|
|
|
+ //通过标准词去重
|
|
|
|
+ LinkedHashMap<String, ImportDiseaseVO> tempMap = diagnoseExcelVOS.stream()
|
|
|
|
+ .collect(Collectors.toMap(ImportDiseaseVO::getName, ImportDiseaseVO -> ImportDiseaseVO, (k1, k2) -> k1, LinkedHashMap::new));
|
|
|
|
+ return tempMap.values().stream().collect(Collectors.toList());
|
|
}
|
|
}
|
|
}
|
|
}
|