Переглянути джерело

Merge remote-tracking branch 'origin/dev/20220228_v3.0.1通用版_渠道管理第一期' into dev/20220228_v3.0.1通用版_渠道管理第一期

zhanghang 3 роки тому
батько
коміт
692aab18a1

+ 39 - 31
daqe-center/src/main/java/com/lantone/daqe/facade/DiseaseManagementFacade.java

@@ -1,5 +1,6 @@
 package com.lantone.daqe.facade;
 
+import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -28,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.stream.Collectors;
@@ -140,36 +142,45 @@ public class DiseaseManagementFacade {
             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);
-        List<ExportImportDiseaseErrDTO> errExports = new ArrayList<>();
-
         diagnoseExcelVOS.stream().forEach(importDiseaseVO -> {
             ExportImportDiseaseErrDTO exportImportDiseaseErrDTO = new ExportImportDiseaseErrDTO();
-            BeanUtil.copyProperties(importDiseaseVO,exportImportDiseaseErrDTO);
+            BeanUtil.copyProperties(importDiseaseVO, exportImportDiseaseErrDTO);
             StringBuffer errMsg = new StringBuffer();
             //数据校验
             if (StringUtil.isEmpty(importDiseaseVO.getName())) {
@@ -181,18 +192,15 @@ public class DiseaseManagementFacade {
                 errorFlog.set(true);
             }
             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) {
-
-        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());
     }
 }