zhoutg пре 3 година
родитељ
комит
d91fa3899f

+ 23 - 23
src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

@@ -3,12 +3,19 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlDiagnose;
+import com.diagbot.enums.CommonEnum;
 import com.diagbot.enums.DiagnoseLexiconTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.LexiconExtEnum;
 import com.diagbot.service.KlConceptService;
-import com.diagbot.util.*;
+import com.diagbot.util.CoreUtil;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RegexUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.VerifyUtil;
 import com.diagbot.vo.DiagnoseImportVO;
 import com.diagbot.vo.ImportDiagnoseResVO;
 import com.diagbot.vo.ImportDiagnoseVO;
@@ -28,7 +35,6 @@ import org.springframework.web.multipart.MultipartFile;
 
 import java.io.IOException;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.ListIterator;
@@ -55,7 +61,7 @@ public class KlDiagnoseImportFacade {
         Map<String, Object> message = new LinkedHashMap<>(); // 提示信息
         List<ImportDiagnoseResVO> allData = Lists.newArrayList();  // 最终需要保存的数据
         if (StringUtil.isNotBlank(diagnoseImportVO.getDiagStr())) {
-            List<String> diagList = Arrays.stream(diagnoseImportVO.getDiagStr().split("#")).map(r -> r.trim()).collect(Collectors.toList());
+            List<String> diagList = CoreUtil.getSplit(diagnoseImportVO.getDiagStr());
             diagnoseImportVO.setDiags(diagList);
         }
         // 校验数据
@@ -67,7 +73,7 @@ public class KlDiagnoseImportFacade {
             message.put("导入条数", allData.size() + "条");
             // 如果有指定诊断,提示导入的诊断;如果全部导入,提示“所有诊断”
             if (ListUtil.isNotEmpty(diagnoseImportVO.getDiags())) {
-                message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining("#")));
+                message.put("导入诊断", allData.stream().map(r -> r.getDiseaseName()).collect(Collectors.joining(CommonEnum.splitSymbol.getName())));
             } else {
                 message.put("导入诊断", "所有诊断");
             }
@@ -89,7 +95,7 @@ public class KlDiagnoseImportFacade {
     public Boolean verifyData(MultipartFile file, DiagnoseImportVO diagnoseImportVO, Map<String, Object> diagMessage, List<ImportDiagnoseResVO> allData) {
         Boolean allFlag = true;
         List<String> diagtypes = Lists.newArrayList("拟诊", "确诊", "警惕");
-        List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病","人群","辅助检查结果");
+        List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病", "人群", "辅助检查结果");
         // 获取标准词库Map
         Map<String, KlConcept> concept_map = getConceptMap();
 
@@ -140,10 +146,10 @@ public class KlDiagnoseImportFacade {
 
             //处理公式(确诊)
             List<String> orderList = processFormula(curData, diagtypes);
-            dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map,splitType);
+            dealVerify(currentErrMsg, orderList, diagtypes, curData, concept_map, splitType);
             // 数据赋值
             if (ListUtil.isEmpty(currentErrMsg)) {
-                curData = dealImportDiagnose(diagtypes, curData, concept_map,splitType);
+                curData = dealImportDiagnose(diagtypes, curData, concept_map, splitType);
                 // 添加到正确数据列表
                 importDiagnoseResVO.setImportDiagnoseVOList(curData);
                 allData.add(importDiagnoseResVO);
@@ -231,7 +237,7 @@ public class KlDiagnoseImportFacade {
      * @param concept_map
      * @return
      */
-    private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map,List<String> splitType) {
+    private List<ImportDiagnoseVO> dealImportDiagnose(List<String> diagtypes, List<ImportDiagnoseVO> importDiagnoseVOS, Map<String, KlConcept> concept_map, List<String> splitType) {
         for (ImportDiagnoseVO idv : importDiagnoseVOS) {
             String type = idv.getType();
             String orderNo = idv.getOrderNo();
@@ -240,29 +246,24 @@ public class KlDiagnoseImportFacade {
                 continue;
             }
             if (!type.contains("正则") && !diagtypes.contains(type) && splitType.contains(type)) {
-                // KlConcept klConcept = concept_map.get(rule + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
-                // if (klConcept != null) {
-                //     idv.setConceptId(klConcept.getId());
-                // }
                 List<String> splits = CoreUtil.getSplit(rule);
-                if(ListUtil.isNotEmpty(splits)){
+                if (ListUtil.isNotEmpty(splits)) {
                     List<Long> conceptIds = Lists.newArrayList();
-                    for (String standName:splits) {
+                    for (String standName : splits) {
                         KlConcept klConcept = concept_map.get(standName + "_" + String.valueOf(LexiconExtEnum.getEnum(type).getKey()));
-                        if(klConcept != null){
+                        if (klConcept != null) {
                             conceptIds.add(klConcept.getId());
                         }
                     }
                     idv.setConceptId(conceptIds);
                 }
-
             }
         }
         return importDiagnoseVOS;
     }
 
     //数据及格式校验
-    private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map,List<String> splitType) {
+    private void dealVerify(List<String> currentErrMsg, List<String> orderNums, List<String> diagtypes, List<ImportDiagnoseVO> data, Map<String, KlConcept> concept_map, List<String> splitType) {
         //list元素计数
         Map<String, Long> orderNumMap = orderNums.stream().collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
         for (Map.Entry<String, Long> on : orderNumMap.entrySet()) {
@@ -292,10 +293,10 @@ public class KlDiagnoseImportFacade {
                         continue;
                     }
                     int key = anEnum.getKey();
-                    if (!type.contains("正则") && splitType.contains(type)){
+                    if (!type.contains("正则") && splitType.contains(type)) {
                         List<String> splits = CoreUtil.getSplit(rule);
-                        for (String standName:splits) {
-                            if(!concept_map.containsKey(standName + "_" + String.valueOf(key))){
+                        for (String standName : splits) {
+                            if (!concept_map.containsKey(standName + "_" + String.valueOf(key))) {
                                 currentErrMsg.add(String.format("第%d行【%s】不是标准词", rowNum, standName));
                             }
                         }
@@ -331,7 +332,7 @@ public class KlDiagnoseImportFacade {
                     currentErrMsg.add(String.format("第%d行【类型】不能为空", rowNum));
                 }
                 if (StringUtils.isNotBlank(type) && diagtypes.contains(type) && StringUtils.isBlank(rule)
-                && StringUtils.isBlank(orderNo)) {
+                        && StringUtils.isBlank(orderNo)) {
                     currentErrMsg.add(String.format("第%d行【诊断依据规则】不能为空", rowNum));
                 }
                 if (StringUtils.isNotBlank(type) && !diagtypes.contains(type) && StringUtils.isBlank(rule)) {
@@ -398,8 +399,6 @@ public class KlDiagnoseImportFacade {
                     String rule = importDiagnoseVO.getRule();
                     if (StringUtil.isNotBlank(type) && StringUtil.isNotBlank(rule)) {
                         if ("拟诊".equals(type) || "确诊".equals(type) || "警惕".equals(type)) {
-                            String[] splitGroup = rule.split("\\+");
-
                             KlDiagnoseTypeVO klDiagnoseTypeVO = new KlDiagnoseTypeVO();
                             if ("拟诊".equals(type)) {
                                 klDiagnoseTypeVO.setConditionType(2);
@@ -410,6 +409,7 @@ public class KlDiagnoseImportFacade {
                             }
 
                             //  第三层
+                            String[] splitGroup = rule.split("\\+");
                             List<KlDiagnoseGroupVO> groupVO = Lists.newArrayList();
                             for (String group : splitGroup) {
                                 KlDiagnoseGroupVO klDiagnoseGroupVO = generateDiagnoseGroup(group, map);

+ 10 - 11
src/main/java/com/diagbot/vo/ImportDiagnoseVO.java

@@ -20,23 +20,23 @@ public class ImportDiagnoseVO implements Serializable, IExcelDataModel {
 
     private static final long serialVersionUID = 1L;
 
-    @Excel(name="类型")
+    @Excel(name = "类型")
     private String type = "";
-    @Excel(name="序号")
+    @Excel(name = "序号")
     private String orderNo = "";
-    @Excel(name="规则")
+    @Excel(name = "规则")
     private String rule = "";
-    @Excel(name="等于")
+    @Excel(name = "等于")
     private String eq;
-    @Excel(name="最大值")
+    @Excel(name = "最大值")
     private String max;
-    @Excel(name="最大值符号")
+    @Excel(name = "最大值符号")
     private String maxSymbol;
-    @Excel(name="单位")
+    @Excel(name = "单位")
     private String unit;
-    @Excel(name="最小值")
+    @Excel(name = "最小值")
     private String min;
-    @Excel(name="最小值符号")
+    @Excel(name = "最小值符号")
     private String minSymbol;
     // @Excel(name="单位")
     // private String minUnit;
@@ -55,7 +55,6 @@ public class ImportDiagnoseVO implements Serializable, IExcelDataModel {
 
     @Override
     public void setRowNum(Integer rowNum) {
-        this.rowNum=rowNum+1;//表头占一行
-
+        this.rowNum = rowNum + 1;//表头占一行
     }
 }

+ 1 - 1
src/main/resources/mapper/KlDiagnoseBaseMapper.xml

@@ -72,7 +72,7 @@
                         GROUP_CONCAT(
                             lib_name
                             ORDER BY
-                                concept_id SEPARATOR '##'
+                                concept_id SEPARATOR '#'
                         ) lib_name
                     FROM
                         `kl_diagnose_base_relation` m,