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

Merge branch 'dev/scale_preserve20210511' into debug

zhoutg 4 роки тому
батько
коміт
55c9ab1bb0
38 змінених файлів з 495 додано та 495 видалено
  1. 8 2
      cdssman-service/src/main/java/com/diagbot/aggregate/CallIndicationAggregate.java
  2. 7 7
      cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java
  3. 9 2
      cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  4. 17 0
      cdssman-service/src/main/java/com/diagbot/dto/IndexBatchDTO.java
  5. 27 0
      cdssman-service/src/main/java/com/diagbot/dto/RegulationIndexDTO.java
  6. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/DeptConfigFacade.java
  7. 9 5
      cdssman-service/src/main/java/com/diagbot/facade/DiseaseConfigFacade.java
  8. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java
  9. 59 10
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java
  10. 18 14
      cdssman-service/src/main/java/com/diagbot/facade/KlDrugRegisterFacade.java
  11. 29 0
      cdssman-service/src/main/java/com/diagbot/facade/KlRegulationFacade.java
  12. 9 8
      cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java
  13. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/NurseConfigFacade.java
  14. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java
  15. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/PacsConfigFacade.java
  16. 2 1
      cdssman-service/src/main/java/com/diagbot/facade/PlanFacade.java
  17. 13 12
      cdssman-service/src/main/java/com/diagbot/facade/ResultStaticKnowledgeFacade.java
  18. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/ScaleConfigFacade.java
  19. 8 5
      cdssman-service/src/main/java/com/diagbot/facade/TcmdiseaseConfigFacade.java
  20. 8 5
      cdssman-service/src/main/java/com/diagbot/facade/TcmsyndromeConfigFacade.java
  21. 25 25
      cdssman-service/src/main/java/com/diagbot/facade/TermImportFacade.java
  22. 5 4
      cdssman-service/src/main/java/com/diagbot/facade/TransfusionConfigFacade.java
  23. 47 0
      cdssman-service/src/main/java/com/diagbot/facade/UserClientFacade.java
  24. 36 63
      cdssman-service/src/main/java/com/diagbot/facade/XLSXCovertCSVReader.java
  25. 0 293
      cdssman-service/src/main/java/com/diagbot/util/ExcelBigUtil.java
  26. 21 0
      cdssman-service/src/main/java/com/diagbot/vo/RegulationIndexVO.java
  27. 27 0
      cdssman-service/src/main/java/com/diagbot/vo/SearchVO.java
  28. 14 0
      cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java
  29. 4 5
      cdssman-service/src/main/java/com/diagbot/web/KlDrugRegisterController.java
  30. 43 0
      cdssman-service/src/main/java/com/diagbot/web/KlRegulationController.java
  31. 0 1
      cdssman-service/src/main/resources/mapper/KlConceptMapper.xml
  32. 1 1
      cdssman-service/src/main/resources/mapper/KlDrugRegisterMapper.xml
  33. 3 1
      config-server/src/main/resources/shared/cdssman-service-dev.yml
  34. 4 1
      config-server/src/main/resources/shared/cdssman-service-local.yml
  35. 3 1
      config-server/src/main/resources/shared/cdssman-service-pre.yml
  36. 3 1
      config-server/src/main/resources/shared/cdssman-service-pro.yml
  37. 3 1
      config-server/src/main/resources/shared/cdssman-service-test.yml
  38. 3 3
      docs/041.20210511知识库扩展/knowledgeExt_init.sql

+ 8 - 2
cdssman-service/src/main/java/com/diagbot/aggregate/CallIndicationAggregate.java

@@ -115,12 +115,17 @@ public class CallIndicationAggregate {
             });
 
             RespDTO<IndicationDTO> respDTO = cdssCoreClient.indication(indicationPushVO);
+            Integer callCount = 0;
+            while (callCount <= 3 && RespDTOUtil.respIsNG(respDTO)) {
+                respDTO = cdssCoreClient.indication(indicationPushVO);
+                callCount++;
+            }
             if (RespDTOUtil.respIsOK(respDTO)) {
                 IndicationDTO data = respDTO.data;
                 //出参
-                entry.getValue().forEach(result -> {
+                for (ResultRule result : entry.getValue()) {
                     result.setOutputParams(FastJsonUtils.getBeanToJson(respDTO.data));
-                });
+                }
                 List<BillMsg> msgList = Lists.newLinkedList();
                 switch (ruleType) {
                     case 1:
@@ -187,6 +192,7 @@ public class CallIndicationAggregate {
             } else {
                 for (ResultRule result : entry.getValue()) {
                     result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
+                    result.setOutputParams(FastJsonUtils.getBeanToJson(respDTO));
                     result.setSuccess(0);
                     result.setMessage("远程调用推理接口失败");
                     retList.add(result);

+ 7 - 7
cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -1,30 +1,26 @@
 package com.diagbot.client;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.diagbot.annotation.SysLogger;
 import com.diagbot.client.hystrix.CdssCoreHystrix;
 import com.diagbot.dto.DiagnosesFindDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.IndicationDTO;
 import com.diagbot.dto.KlConceptStaticDTO;
 import com.diagbot.dto.KlDiagnoseInfoDTO;
 import com.diagbot.dto.KlDiagnoseTypeDTO;
 import com.diagbot.dto.KlRuleByIdParDTO;
 import com.diagbot.dto.KlRuleInfoDTO;
+import com.diagbot.dto.RegulationIndexDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.entity.KlRuleMenuWrapper;
-import com.diagbot.enums.StatusEnum;
 import com.diagbot.vo.*;
-import io.swagger.annotations.ApiOperation;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
 
 import javax.validation.Valid;
 import java.util.List;
@@ -62,7 +58,7 @@ public interface CdssCoreClient {
      * @return
      */
     @PostMapping("/retrieval/getConceptNames")
-    RespDTO<List<String>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO);
+    RespDTO<List<IndexBatchDTO>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO);
 
     /**
      * 化验大项、化验小项、辅检、诊断、药品、手术等检索
@@ -218,4 +214,8 @@ public interface CdssCoreClient {
 
     @PostMapping("/klDiagnose/findDiaName")
     public RespDTO<List<DiagnosesFindDTO>> findDiaNameAll(@Valid @RequestBody DiagnosesFindVO diagnosesFindVO);
+
+    @PostMapping("/klRegulation/index")
+    public RespDTO<List<RegulationIndexDTO>> index(@RequestBody RegulationIndexVO regulationIndexVO);
+
 }

+ 9 - 2
cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -1,16 +1,17 @@
 package com.diagbot.client.hystrix;
 
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.DiagnosesFindDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.IndicationDTO;
 import com.diagbot.dto.KlConceptStaticDTO;
 import com.diagbot.dto.KlDiagnoseInfoDTO;
 import com.diagbot.dto.KlDiagnoseTypeDTO;
 import com.diagbot.dto.KlRuleByIdParDTO;
 import com.diagbot.dto.KlRuleInfoDTO;
+import com.diagbot.dto.RegulationIndexDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
@@ -64,7 +65,7 @@ public class CdssCoreHystrix implements CdssCoreClient {
      * @return
      */
     @Override
-    public RespDTO<List<String>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO) {
+    public RespDTO<List<IndexBatchDTO>> getConceptNames(@Valid @RequestBody ConceptVO conceptVO) {
         log.error("【hystrix】调用{}异常", "getConceptNames");
         return null;
     }
@@ -284,4 +285,10 @@ public class CdssCoreHystrix implements CdssCoreClient {
         log.error("【hystrix】调用{}异常", "findDiaNameAll");
         return null;
     }
+
+    @Override
+    public RespDTO<List<RegulationIndexDTO>> index(RegulationIndexVO regulationIndexVO) {
+        log.error("【hystrix】调用{}异常", "index");
+        return null;
+    }
 }

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/dto/IndexBatchDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/6/7 10:27
+ */
+@Getter
+@Setter
+public class IndexBatchDTO {
+    private Long id;
+    private String name;
+    private String code;
+}

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/dto/RegulationIndexDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2020/8/17 11:28
+ */
+@Data
+public class RegulationIndexDTO {
+
+    /**
+     * 规则名称
+     */
+    private String name;
+
+    /**
+     * 规则编码
+     */
+    private Long code;
+
+    /**
+     * 规则类型:(1:量表)
+     */
+    private Integer type;
+}

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/DeptConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DeptConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -336,9 +337,9 @@ public class DeptConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Dept.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < deptConfigList.size(); i++) {
                 if (!names.contains(deptConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -502,9 +503,9 @@ public class DeptConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Dept.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (DeptConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 9 - 5
cdssman-service/src/main/java/com/diagbot/facade/DiseaseConfigFacade.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DiseaseConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -313,9 +314,9 @@ public class DiseaseConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Disease.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < diseaseConfigList.size(); i++) {
                 if (!names.contains(diseaseConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -517,16 +518,19 @@ public class DiseaseConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Disease.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<IndexBatchDTO> uniqueNameList = respDTO.data;
+        Map<String, IndexBatchDTO> uniqueMap = uniqueNameList.stream().collect(Collectors.toMap(IndexBatchDTO::getName, v -> v));
+        //List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (DiseaseConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {
                     List<DiseaseConfig> items = allMap.get(originItem.getHisName());
                     boolean flag = false;
                     for (DiseaseConfig item : items) {
-                        if (uniqueNames.contains(item.getUniqueName())) {
+                        if (uniqueMap.containsKey(item.getUniqueName())) {
+                            item.setIcdCode(uniqueMap.get(item.getUniqueName()).getCode());
                             retList.add(item);
                             flag = true;
                         }

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DrugConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -377,9 +378,9 @@ public class DrugConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Drug.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < drugConfigList.size(); i++) {
                 if (!names.contains(drugConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -771,9 +772,9 @@ public class DrugConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Drug.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (DrugConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 59 - 10
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -16,6 +16,7 @@ import com.diagbot.entity.KlConceptCommon;
 import com.diagbot.entity.KlConceptStatic;
 import com.diagbot.entity.KlDiagnose;
 import com.diagbot.entity.KlDiagnoseBase;
+import com.diagbot.entity.KlDrugMapping;
 import com.diagbot.entity.KlLexicon;
 import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.entity.KlRelation;
@@ -23,6 +24,7 @@ import com.diagbot.entity.KlRule;
 import com.diagbot.entity.KlRuleBase;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
+import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -44,6 +46,7 @@ import com.diagbot.vo.KlConceptSaveSubVO;
 import com.diagbot.vo.KlConceptSaveVO;
 import com.diagbot.vo.KlLibraryInfoVO;
 import com.diagbot.vo.SearchConceptVO;
+import com.diagbot.vo.SearchVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang3.StringUtils;
@@ -105,7 +108,6 @@ public class KlConceptFacade extends KlConceptServiceImpl {
     @Autowired
     KlTcmSyndromeFacade klTcmSyndromeFacade;
 
-
     /**
      * @param klConceptInfoVO
      * @return
@@ -355,14 +357,14 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                     break;
                 case LisName: // 实验室检查套餐
                 case LisSubName: // 实验室检查子项目
-                    klLisFacade.saveAll(commonParam,klConceptSaveVO.getKlLisVO());
+                    klLisFacade.saveAll(commonParam, klConceptSaveVO.getKlLisVO());
                     break;
                 case PacsSubName: // 辅助检查子项目
                 case PacsName: // 辅助检查项目
-                    klPacsFacade.saveAll(commonParam,klConceptSaveVO.getKlPacsVO());
+                    klPacsFacade.saveAll(commonParam, klConceptSaveVO.getKlPacsVO());
                     break;
                 case Operation: // 手术和操作
-                    klOperationFacade.saveAll(commonParam,klConceptSaveVO.getKlOperationVO());
+                    klOperationFacade.saveAll(commonParam, klConceptSaveVO.getKlOperationVO());
                     break;
                 case VitalResult: // 体征结果
                     klRelationFacade.saveKlVitalRes(commonParam, klConceptSaveVO.getKlVitalResultVO());
@@ -441,6 +443,12 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return retList;
     }
 
+    /**
+     * 根据类型和名称查找术语,名称和类型不能为空
+     *
+     * @param searchConceptVO
+     * @return
+     */
     public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO) {
         List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
         String name = searchConceptVO.getName();
@@ -467,6 +475,34 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return getAllForRelationDTOS;
     }
 
+    /**
+     * 根据类型和名称查找术语,名称可为空
+     *
+     * @param SearchVO
+     * @return
+     */
+    public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchVO SearchVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
+        List<Long> excludedConceptIds = SearchVO.getExcludedConceptIds();
+        List<KlConcept> conceptList = this.list(new QueryWrapper<KlConcept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("lib_type", SearchVO.getLibType())
+                .eq("status", StatusEnum.Enable.getKey())
+                .like(StringUtil.isNotBlank(SearchVO.getName()), "lib_name", SearchVO.getName())
+                .notIn(ListUtil.isNotEmpty(excludedConceptIds), "id", excludedConceptIds));
+        if (ListUtil.isNotEmpty(conceptList)) {
+            getAllForRelationDTOS = conceptList.stream().map(x -> {
+                GetAllForRelationDTO getAllForRelationDTO = new GetAllForRelationDTO();
+                getAllForRelationDTO.setConceptNameType(x.getLibName());
+                getAllForRelationDTO.setConceptName(x.getLibName());
+                getAllForRelationDTO.setConceptId(x.getId());
+                getAllForRelationDTO.setLibType(x.getLibType());
+                return getAllForRelationDTO;
+            }).collect(Collectors.toList());
+        }
+        return getAllForRelationDTOS;
+    }
+
     /**
      * 筛选符合类型的概念id
      *
@@ -513,11 +549,17 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             }
 
             //kl_relation
-            int relationsum = klRelationFacade.count(new QueryWrapper<KlRelation>().eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("start_id", klConceptSatarOrdisaVO.getConceptId()).or()
-                    .eq("end_id", klConceptSatarOrdisaVO.getConceptId()));
+            List<Integer> notRelationList = Lists.newArrayList(RelationLibTypeEnum.relationDept.getKey(),
+                    RelationLibTypeEnum.relationPart.getKey(), RelationLibTypeEnum.relationSystem.getKey(),
+                    RelationLibTypeEnum.relationAccSymptom.getKey(), RelationLibTypeEnum.relationNature.getKey());
+            int relationsum = klRelationFacade.count(new QueryWrapper<KlRelation>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .and(r -> r.eq("end_id", klConceptSatarOrdisaVO.getConceptId())
+                            .or(r1 -> r1.eq("start_id", klConceptSatarOrdisaVO.getConceptId()).notIn("relation_id", notRelationList))
+                    )
+            );
             if (relationsum > 0) {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与树形结构或疾病相关存在关系!");
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与树形结构或疾病相关或扩展信息存在关系!");
             }
             //kl_rule
             int rulesum = klRuleFacade.count(new QueryWrapper<KlRule>().eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -543,12 +585,19 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             if (diagnoseBasesum > 0) {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与诊断依据维护明细存在关系!");
             }
+            //kl_drug_mapping
+            int drugMappingSum = klDrugMappingFacade.count(new QueryWrapper<KlDrugMapping>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("drug_concept", klConceptSatarOrdisaVO.getConceptId()));
+            if (drugMappingSum > 0) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与注册药品存在关系!");
+            }
         }
         UpdateWrapper<KlConcept> klLibraryUpdate = new UpdateWrapper<>();
         klLibraryUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("id", klConceptSatarOrdisaVO.getConceptId())
-                .set("status", status).set("gmt_modified", now)
-                .set("modifier", UserUtils.getCurrentPrincipleID());
+                .set("status", status).set("gmt_modified", now);
+        // .set("modifier", UserUtils.getCurrentPrincipleID()
+        // );
         return this.update(klLibraryUpdate);
 
     }

+ 18 - 14
cdssman-service/src/main/java/com/diagbot/facade/KlDrugRegisterFacade.java

@@ -3,6 +3,7 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugExportDTO;
 import com.diagbot.dto.KlDrugRegisterDTO;
 import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.KlConcept;
@@ -17,6 +18,7 @@ import com.diagbot.service.KlDrugRegisterService;
 import com.diagbot.service.impl.KlDrugRegisterServiceImpl;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
+import com.diagbot.util.ExcelUtils;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.KlDrugMappingGetVO;
@@ -34,6 +36,7 @@ import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -56,6 +59,8 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
     KlDrugRegisterService klDrugRegisterService;
     @Autowired
     UserFacade userFacade;
+    @Autowired
+    UserClientFacade userClientFacade;
 
     /**
      * 保存或更新
@@ -130,6 +135,9 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
      */
     public IPage<KlDrugRegisterDTO> getPageFac(KlDrugRegisterPageVO klDrugRegisterPageVO) {
         IPage<KlDrugRegisterDTO> res = this.getPage(klDrugRegisterPageVO);
+
+        // 设置操作人姓名
+        userClientFacade.setUserName(res.getRecords());
         return res;
     }
 
@@ -202,12 +210,11 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
      * @param file
      * @return
      */
-    public Map importRegister(MultipartFile file) {
+    public void importRegister(MultipartFile file, HttpServletResponse response) {
         Map res = new LinkedMap();
         Long t1 = System.currentTimeMillis();
         List<KlDrugRegisterTestVO> list = XLSXCovertCSVReader.readData(file, "注册药品",
                 30, KlDrugRegisterTestVO.class);
-        // List<KlDrugRegisterTestVO> list = ExcelBigUtil.readData(file, null, 0, KlDrugRegisterTestVO.class);
         Long t2 = System.currentTimeMillis();
         res.put("读取sheet耗时:", (t2 - t1) / 1000.0 + "秒");
         try {
@@ -216,7 +223,7 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
             Map<String, Long> druMap = klConceptList.stream().collect(Collectors.toMap(k -> k.getLibName(), v -> v.getId(), (r1, r2) -> (r2)));
             List<String> errMsg = Lists.newArrayList();
             List<KlDrugRegister> drugRegisterList = Lists.newLinkedList();
-            int i = 2;
+            // int i = 2;
             for (KlDrugRegisterTestVO  klDrugRegisterTestVO : list) {
                 KlDrugRegister klDrugRegister = new KlDrugRegister();
                 BeanUtil.copyProperties(klDrugRegisterTestVO, klDrugRegister);
@@ -231,22 +238,20 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
                 // } else if (druMap.get(drugName) == null) {
                 //     errMsg.add(String.format("第%s行【%s】不是标准词", i, drugName));
                 // }
-                i++;
+                // i++;
             }
             if (ListUtil.isNotEmpty(errMsg)) {
                 errMsg = errMsg.stream().distinct().collect(Collectors.toList());
+                List<KlDrugExportDTO> klDrugExportDTOList = Lists.newLinkedList();
                 for (String s : errMsg) {
-                    System.out.println(s);
+                    KlDrugExportDTO klDrugExportDTO = new KlDrugExportDTO();
+                    klDrugExportDTO.setName(s);
+                    klDrugExportDTOList.add(klDrugExportDTO);
                 }
-                // List<KlDrugExportDTO> klDrugExportDTOList = Lists.newLinkedList();
-                // for (String s : errMsg) {
-                //     KlDrugExportDTO klDrugExportDTO = new KlDrugExportDTO();
-                //     klDrugExportDTO.setName(s);
-                //     klDrugExportDTOList.add(klDrugExportDTO);
-                // }
-                // ExcelUtils.exportExcel(klDrugExportDTOList, null, "title");
+                ExcelUtils.exportExcel(klDrugExportDTOList, null, "药品通用名", KlDrugExportDTO.class,
+                        "未校验通过的药品通用名", response, 12.8f);
                 res.put("错误", StringUtils.join(errMsg, ";"));
-                return res;
+                return;
             }
             this.remove(new QueryWrapper<KlDrugRegister>()); // 删除主表
             Long t3 = System.currentTimeMillis();
@@ -271,7 +276,6 @@ public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
         }
         Long end = System.currentTimeMillis();
         res.put("总耗时:", (end - t1) / 1000.0 + "秒");
-        return res;
     }
 
     public static void main(String[] args) {

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlRegulationFacade.java

@@ -0,0 +1,29 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.RegulationIndexDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.RegulationIndexVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: zhoutg
+ * @time: 2021/3/15 10:58
+ */
+@Component
+public class KlRegulationFacade {
+
+    @Autowired
+    CdssCoreClient cdssCoreClient;
+
+    public RespDTO<List<RegulationIndexDTO>> index(RegulationIndexVO regulationIndexVO) {
+        RespDTO<List<RegulationIndexDTO>> respDTO = cdssCoreClient.index(regulationIndexVO);
+        RespDTOUtil.respNGDealCover(respDTO, "远程调用【cdss-core】,检索规则编码失败");
+        return respDTO;
+    }
+}

+ 9 - 8
cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.LisConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -365,13 +366,13 @@ public class LisConfigFacade{
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
-            RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respLisPackDTO, "标准术语校验失败");
-            List<String> lisPackNames = respLisPackDTO.data;
+            List<String> lisPackNames = respLisPackDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             conceptVO.setType(ConceptTypeEnum.Lis.getKey());
-            RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
-            List<String> lisNames = respLisDTO.data;
+            List<String> lisNames = respLisDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < lisConfigList.size(); i++) {
                 if (StringUtil.isBlank(lisConfigList.get(i).getHisDetailName())) {
                     //检验套餐对应套餐
@@ -618,13 +619,13 @@ public class LisConfigFacade{
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
-        RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respLisPackDTO, "标准术语校验失败");
-        List<String> lisPackNames = respLisPackDTO.data;
+        List<String> lisPackNames = respLisPackDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         conceptVO.setType(ConceptTypeEnum.Lis.getKey());
-        RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
-        List<String> lisNames = respLisDTO.data;
+        List<String> lisNames = respLisDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
 
         if (ListUtil.isNotEmpty(originList)) {
             for (LisConfig originItem : originList) {

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/NurseConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.NurseConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -321,9 +322,9 @@ public class NurseConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Nurse.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < nurseConfigList.size(); i++) {
                 if (!names.contains(nurseConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -525,9 +526,9 @@ public class NurseConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Nurse.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (NurseConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.OperationConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -321,9 +322,9 @@ public class OperationConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Operation.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < operationConfigList.size(); i++) {
                 if (!names.contains(operationConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -525,9 +526,9 @@ public class OperationConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Operation.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (OperationConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/PacsConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.PacsConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -319,9 +320,9 @@ public class PacsConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Pacs.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < pacsConfigList.size(); i++) {
                 if (!names.contains(pacsConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -523,9 +524,9 @@ public class PacsConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Pacs.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (PacsConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 2 - 1
cdssman-service/src/main/java/com/diagbot/facade/PlanFacade.java

@@ -119,8 +119,9 @@ public class PlanFacade extends PlanServiceImpl {
                         planDetailSubNew.add(dataSubNew);
                     }
                     dataNew.setPlanDetailSub(planDetailSubNew);
-                    planDetailParentNew.add(dataNew);
+
                 }
+                planDetailParentNew.add(dataNew);
             }
         }
 

+ 13 - 12
cdssman-service/src/main/java/com/diagbot/facade/ResultStaticKnowledgeFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.ExportCommonStaticTestDTO;
 import com.diagbot.dto.ExportCommonTestDTO;
 import com.diagbot.dto.ExportLisStaticTestDTO;
 import com.diagbot.dto.ExportLisTestDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.DiseaseConfig;
 import com.diagbot.entity.DrugConfig;
@@ -197,16 +198,16 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
-        RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> lisPackNames = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respLisPackDTO)) {
-            lisPackNames = respLisPackDTO.data;
+            lisPackNames = respLisPackDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
         conceptVO.setType(ConceptTypeEnum.Lis.getKey());
-        RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> lisNames = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respLisDTO)) {
-            lisNames = respLisDTO.data;
+            lisNames = respLisDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
 
         //判断是否有标准术语
@@ -395,10 +396,10 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Pacs.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> names = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respDTO)) {
-            names = respDTO.data;
+            names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
         for (ResultStaticKnowledge result : mappingList) {
             if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {
@@ -586,10 +587,10 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Drug.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> names = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respDTO)) {
-            names = respDTO.data;
+            names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
         for (ResultStaticKnowledge result : mappingList) {
             if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {
@@ -742,10 +743,10 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Disease.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> names = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respDTO)) {
-            names = respDTO.data;
+            names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
         for (ResultStaticKnowledge result : mappingList) {
             if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {
@@ -898,10 +899,10 @@ public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImp
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Operation.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         List<String> names = Lists.newLinkedList();
         if (RespDTOUtil.respIsOK(respDTO)) {
-            names = respDTO.data;
+            names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         }
         for (ResultStaticKnowledge result : mappingList) {
             if (result.getHasStandName() == null || result.getHasStandName().equals(0)) {

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/ScaleConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ScaleConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -321,9 +322,9 @@ public class ScaleConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Scale.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < scaleConfigList.size(); i++) {
                 if (!names.contains(scaleConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -525,9 +526,9 @@ public class ScaleConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Scale.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (ScaleConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 8 - 5
cdssman-service/src/main/java/com/diagbot/facade/TcmdiseaseConfigFacade.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.TcmdiseaseConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -311,9 +312,9 @@ public class TcmdiseaseConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Tcmdisease.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
+        List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         for (int i = 0; i < tcmdiseaseConfigList.size(); i++) {
             if (!names.contains(tcmdiseaseConfigList.get(i).getUniqueName())) {
                 errorNumList.add(String.valueOf(i + 2));
@@ -514,16 +515,18 @@ public class TcmdiseaseConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Tcmdisease.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<IndexBatchDTO> uniqueNameList = respDTO.data;
+        Map<String, IndexBatchDTO> uniqueMap = uniqueNameList.stream().collect(Collectors.toMap(IndexBatchDTO::getName, v -> v));
         if (ListUtil.isNotEmpty(originList)) {
             for (TcmdiseaseConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {
                     List<TcmdiseaseConfig> items = allMap.get(originItem.getHisName());
                     boolean flag = false;
                     for (TcmdiseaseConfig item : items) {
-                        if (uniqueNames.contains(item.getUniqueName())) {
+                        if (uniqueMap.containsKey(item.getUniqueName())) {
+                            item.setUniqueCode(uniqueMap.get(item.getUniqueName()).getCode());
                             retList.add(item);
                             flag = true;
                         }

+ 8 - 5
cdssman-service/src/main/java/com/diagbot/facade/TcmsyndromeConfigFacade.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.TcmsyndromeConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -311,9 +312,9 @@ public class TcmsyndromeConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(uniqueNames);
         conceptVO.setType(ConceptTypeEnum.Tcmsyndrome.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> names = respDTO.data;
+        List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         for (int i = 0; i < tcmsyndromeConfigList.size(); i++) {
             if (!names.contains(tcmsyndromeConfigList.get(i).getUniqueName())) {
                 errorNumList.add(String.valueOf(i + 2));
@@ -514,16 +515,18 @@ public class TcmsyndromeConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Tcmsyndrome.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<IndexBatchDTO> uniqueNameList = respDTO.data;
+        Map<String, IndexBatchDTO> uniqueMap = uniqueNameList.stream().collect(Collectors.toMap(IndexBatchDTO::getName, v -> v));
         if (ListUtil.isNotEmpty(originList)) {
             for (TcmsyndromeConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {
                     List<TcmsyndromeConfig> items = allMap.get(originItem.getHisName());
                     boolean flag = false;
                     for (TcmsyndromeConfig item : items) {
-                        if (uniqueNames.contains(item.getUniqueName())) {
+                        if (uniqueMap.containsKey(item.getUniqueName())) {
+                            item.setUniqueCode(uniqueMap.get(item.getUniqueName()).getCode());
                             retList.add(item);
                             flag = true;
                         }

+ 25 - 25
cdssman-service/src/main/java/com/diagbot/facade/TermImportFacade.java

@@ -117,7 +117,7 @@ public class TermImportFacade {
             ImportConceptAllVO data = conceptExportMap.get(row);
             //校验医学标准术语、类型、性别、最小年龄、最大年龄必填
             if (StringUtil.isBlank(data.getLibName()) ||
-                    StringUtil.isBlank(data.getLibName()) ||
+                    StringUtil.isBlank(data.getTypeName()) ||
                     null == data.getSexType()
                     || null == data.getMinAge()
                     || null == data.getMaxAge()) {
@@ -153,8 +153,8 @@ public class TermImportFacade {
                 if (null == integer) {
                     libNameMap.put(data.getLibName() + "_" + data.getLibType(), data.getRowNum());
                 } else {
-                    errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? data.getLibName() + "_重复出现----" :
-                            errMsg.get(data.getRowNum()) + data.getLibName() + "_重复出现----");
+                    errMsg.put(data.getRowNum(), errMsg.get(data.getRowNum()) == null ? data.getLibName() + "重复出现----" :
+                            errMsg.get(data.getRowNum()) + data.getLibName() + "重复出现----");
                 }
 
 
@@ -197,8 +197,9 @@ public class TermImportFacade {
         for (String libName : libNameMap.keySet()) {
             Integer integer = libNameMap.get(libName);
             if (set.contains(libName)) {
-                errMsg.put(integer, errMsg.get(integer) == null ? "--数据库中" + libName + "已存在--" :
-                        errMsg.get(integer) + "--数据库中" + libName + "已存在--");
+                String str1 = libName.substring(0, libName.indexOf("_"));
+                errMsg.put(integer, errMsg.get(integer) == null ? "--数据库中" + str1 + "已存在--" :
+                        errMsg.get(integer) + "--数据库中" + str1 + "已存在--");
             }
         }
 
@@ -238,7 +239,6 @@ public class TermImportFacade {
             klLibraryInfo.setModifier(UserUtils.getCurrentPrincipleID());
             klLibraryInfo.setGmtCreate(now);
             klLibraryInfo.setGmtModified(now);
-            klLibraryInfo.setRemark("dr");
             klLibraryInfo.setIsConcept(1);
             klLibraryInfo.setTypeId(data.getLibType());
             String spell = "";
@@ -253,6 +253,8 @@ public class TermImportFacade {
         List<KlConcept> klConcepts = new ArrayList<>();
         for (KlLibraryInfo klLibraryInfo : libraryInfos) {
             KlConcept klConcept = new KlConcept();
+            klConcept.setGmtCreate(now);
+            klConcept.setGmtModified(now);
             klConcept.setModifier(UserUtils.getCurrentPrincipleID());
             klConcept.setLibId(klLibraryInfo.getId());
             klConcept.setLibName(klLibraryInfo.getName());
@@ -267,15 +269,15 @@ public class TermImportFacade {
         res = klLibraryInfoService.updateBatchById(libraryInfos);
 
         //增加同义词
-        Map<String, ImportConceptAllVO> conceptListMap = conceptList.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r));
+        Map<String, ImportConceptAllVO> conceptListMap = conceptList.stream().collect(Collectors.toMap(r -> r.getLibName() + r.getLibType(), r -> r));
 
-        Map<String, KlConcept> klConceptsMap = klConcepts.stream().collect(Collectors.toMap(r -> r.getLibName(), r -> r));
+        Map<String, KlConcept> klConceptsMap = klConcepts.stream().collect(Collectors.toMap(r -> r.getLibName() + r.getLibType(), r -> r));
 
         List<KlLibraryInfo> libraryInfosSub = new ArrayList<>();
 
         for (Map.Entry<String, KlConcept> klConData : klConceptsMap.entrySet()) {
             KlConcept value = klConData.getValue();
-            ImportConceptAllVO importConceptAllVOS = conceptListMap.get(value.getLibName());
+            ImportConceptAllVO importConceptAllVOS = conceptListMap.get(value.getLibName() + value.getLibType());
             List<ImportConceptSubVO> synonymsList = importConceptAllVOS.getSynonymsList();
             if (ListUtil.isNotEmpty(synonymsList)) {
                 for (ImportConceptSubVO subVO : synonymsList) {
@@ -300,25 +302,23 @@ public class TermImportFacade {
         List<KlConceptCommon> conceptCommonList = new ArrayList<>();
         for (Map.Entry<String, ImportConceptAllVO> entry : conceptListMap.entrySet()) {
             ImportConceptAllVO value = entry.getValue();
-            for (Map.Entry<String, KlConcept> entry2 : klConceptsMap.entrySet()) {
-                KlConcept value1 = entry2.getValue();
-                if (value.getLibName().equals(value1.getLibName())) {
-                    if (null != value.getIsHasCommon() && value.getIsHasCommon().equals(1)) {
-                        KlConceptCommon conceptCommon = new KlConceptCommon();
-                        conceptCommon.setSexType(value.getSexType());
-                        conceptCommon.setMaxAge(value.getMaxAge());
-                        conceptCommon.setMinAge(value.getMinAge());
-                        conceptCommon.setConceptId(value1.getId());
-                        conceptCommon.setCreator(UserUtils.getCurrentPrincipleID());
-                        conceptCommon.setModifier(UserUtils.getCurrentPrincipleID());
-                        conceptCommon.setGmtCreate(now);
-                        conceptCommon.setGmtModified(now);
-                        conceptCommonList.add(conceptCommon);
-                    }
+            KlConcept klConcept = klConceptsMap.get(value.getLibName() + value.getLibType());
+            if (null != klConcept) {
+                if (null != value.getIsHasCommon() && value.getIsHasCommon().equals(1)) {
+                    KlConceptCommon conceptCommon = new KlConceptCommon();
+                    conceptCommon.setSexType(value.getSexType());
+                    conceptCommon.setMaxAge(value.getMaxAge());
+                    conceptCommon.setMinAge(value.getMinAge());
+                    conceptCommon.setConceptId(klConcept.getId());
+                    conceptCommon.setCreator(UserUtils.getCurrentPrincipleID());
+                    conceptCommon.setModifier(UserUtils.getCurrentPrincipleID());
+                    conceptCommon.setGmtCreate(now);
+                    conceptCommon.setGmtModified(now);
+                    conceptCommonList.add(conceptCommon);
                 }
-
             }
 
+
         }
         res = klConceptCommonService.saveBatch(conceptCommonList);
     }

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/facade/TransfusionConfigFacade.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.HosRelationNumDTO;
+import com.diagbot.dto.IndexBatchDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.TransfusionConfig;
 import com.diagbot.enums.ConceptTypeEnum;
@@ -319,9 +320,9 @@ public class TransfusionConfigFacade {
             ConceptVO conceptVO = new ConceptVO();
             conceptVO.setNames(uniqueNames);
             conceptVO.setType(ConceptTypeEnum.Transfusion.getKey());
-            RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+            RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
             RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-            List<String> names = respDTO.data;
+            List<String> names = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
             for (int i = 0; i < transfusionConfigList.size(); i++) {
                 if (!names.contains(transfusionConfigList.get(i).getUniqueName())) {
                     errorNumList.add(String.valueOf(i + 2));
@@ -523,9 +524,9 @@ public class TransfusionConfigFacade {
         ConceptVO conceptVO = new ConceptVO();
         conceptVO.setNames(precUniqueName);
         conceptVO.setType(ConceptTypeEnum.Transfusion.getKey());
-        RespDTO<List<String>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTO<List<IndexBatchDTO>> respDTO = cdssCoreClient.getConceptNames(conceptVO);
         RespDTOUtil.respNGDealCover(respDTO, "标准术语校验失败");
-        List<String> uniqueNames = respDTO.data;
+        List<String> uniqueNames = respDTO.data.stream().map(IndexBatchDTO::getName).collect(Collectors.toList());
         if (ListUtil.isNotEmpty(originList)) {
             for (TransfusionConfig originItem : originList) {
                 if (allMap.containsKey(originItem.getHisName())) {

+ 47 - 0
cdssman-service/src/main/java/com/diagbot/facade/UserClientFacade.java

@@ -0,0 +1,47 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.ReflectUtil;
+import com.diagbot.util.RespDTOUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 通用方法
+ * @author: zhoutg
+ * @time: 2021/6/3 18:56
+ */
+@Component
+public class UserClientFacade {
+
+    @Autowired
+    UserServiceClient userServiceClient;
+
+    /**
+     * 设置操作人姓名
+     *
+     * @param tList
+     * @param <T>
+     */
+    public <T> void setUserName(List<T> tList) {
+        if (ListUtil.isEmpty(tList)) {
+            return;
+        }
+        List<String> userIdList = ReflectUtil.getPropertyList(tList, "modifier");
+        if (ListUtil.isNotEmpty(userIdList)) {
+            userIdList = userIdList.stream().distinct().collect(Collectors.toList());
+            RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(userIdList);
+            RespDTOUtil.respNGDealCover(mapRespDTO, "获取操作人失败");
+            Map<String, String> data = mapRespDTO.data;
+            for (T t : tList) {
+                ReflectUtil.setFieldValue(t, "modifier", data.get(ReflectUtil.getProperty(t, "modifier")));
+            }
+        }
+    }
+}

+ 36 - 63
cdssman-service/src/main/java/com/diagbot/facade/XLSXCovertCSVReader.java

@@ -1,7 +1,6 @@
 package com.diagbot.facade;
 
 import com.diagbot.entity.Ex;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.ReflectUtil;
 import com.diagbot.util.StringUtil;
 import com.google.common.collect.Lists;
@@ -107,14 +106,10 @@ public class XLSXCovertCSVReader {
         /**
          * Accepts objects needed while parsing.
          *
-         * @param styles
-         *            Table of styles
-         * @param strings
-         *            Table of shared strings
-         * @param cols
-         *            Minimum number of columns to show
-         * @param target
-         *            Sink for output
+         * @param styles  Table of styles
+         * @param strings Table of shared strings
+         * @param cols    Minimum number of columns to show
+         * @param target  Sink for output
          */
         public MyXSSFSheetHandler(StylesTable styles,
                                   ReadOnlySharedStringsTable strings, int cols, PrintStream target) {
@@ -163,26 +158,27 @@ public class XLSXCovertCSVReader {
                 this.formatString = null;
                 String cellType = attributes.getValue("t");
                 String cellStyleStr = attributes.getValue("s");
-                if ("b".equals(cellType))
+                if ("b".equals(cellType)) {
                     nextDataType = xssfDataType.BOOL;
-                else if ("e".equals(cellType))
+                } else if ("e".equals(cellType)) {
                     nextDataType = xssfDataType.ERROR;
-                else if ("inlineStr".equals(cellType))
+                } else if ("inlineStr".equals(cellType)) {
                     nextDataType = xssfDataType.INLINESTR;
-                else if ("s".equals(cellType))
+                } else if ("s".equals(cellType)) {
                     nextDataType = xssfDataType.SSTINDEX;
-                else if ("str".equals(cellType))
+                } else if ("str".equals(cellType)) {
                     nextDataType = xssfDataType.FORMULA;
-                else if (cellStyleStr != null) {
+                } else if (cellStyleStr != null) {
                     // It's a number, but almost certainly one
                     // with a special style or format
                     int styleIndex = Integer.parseInt(cellStyleStr);
                     XSSFCellStyle style = stylesTable.getStyleAt(styleIndex);
                     this.formatIndex = style.getDataFormat();
                     this.formatString = style.getDataFormatString();
-                    if (this.formatString == null)
+                    if (this.formatString == null) {
                         this.formatString = BuiltinFormats
                                 .getBuiltinFormat(this.formatIndex);
+                    }
                 }
             }
 
@@ -211,20 +207,20 @@ public class XLSXCovertCSVReader {
                         break;
 
                     case ERROR:
-                        thisStr = "\"ERROR:" + value.toString() + '"';
+                        thisStr = "ERROR:" + value.toString();
                         break;
 
                     case FORMULA:
                         // A formula could result in a string value,
                         // so always add double-quote characters.
-                        thisStr = '"' + value.toString() + '"';
+                        thisStr = value.toString();
                         break;
 
                     case INLINESTR:
                         // TODO: have seen an example of this, so it's untested.
                         XSSFRichTextString rtsi = new XSSFRichTextString(
                                 value.toString());
-                        thisStr = '"' + rtsi.toString() + '"';
+                        thisStr = rtsi.toString();
                         break;
 
                     case SSTINDEX:
@@ -233,7 +229,7 @@ public class XLSXCovertCSVReader {
                             int idx = Integer.parseInt(sstIndex);
                             XSSFRichTextString rtss = new XSSFRichTextString(
                                     sharedStringsTable.getEntryAt(idx));
-                            thisStr = '"' + rtss.toString() + '"';
+                            thisStr = rtss.toString();
                         } catch (NumberFormatException ex) {
                             output.println("Failed to parse SST index '" + sstIndex
                                     + "': " + ex.toString());
@@ -245,14 +241,15 @@ public class XLSXCovertCSVReader {
                         // 判断是否是日期格式
                         if (HSSFDateUtil.isADateFormat(this.formatIndex, n)) {
                             Double d = Double.parseDouble(n);
-                            Date date=HSSFDateUtil.getJavaDate(d);
-                            thisStr=formateDateToString(date);
-                        } else if (this.formatString != null)
+                            Date date = HSSFDateUtil.getJavaDate(d);
+                            thisStr = formateDateToString(date);
+                        } else if (this.formatString != null) {
                             thisStr = formatter.formatRawCellContents(
                                     Double.parseDouble(n), this.formatIndex,
                                     this.formatString);
-                        else
+                        } else {
                             thisStr = n;
+                        }
                         break;
 
                     default:
@@ -269,13 +266,17 @@ public class XLSXCovertCSVReader {
                 if (thisStr == null || "".equals(isCellNull)) {
                     isCellNull = true;// 设置单元格是否为空值
                 }
+                // trim()
+                if (thisStr != null) {
+                    thisStr = thisStr.trim();
+                }
                 record[thisColumn] = thisStr;
                 // Update column
-                if (thisColumn > -1)
+                if (thisColumn > -1) {
                     lastColumnNumber = thisColumn;
+                }
 
             } else if ("row".equals(name)) {
-
                 // Print out any missing commas if needed
                 if (minColumns > 0) {
                     // Columns are 0 based
@@ -311,8 +312,9 @@ public class XLSXCovertCSVReader {
          */
         public void characters(char[] ch, int start, int length)
                 throws SAXException {
-            if (vIsOpen)
+            if (vIsOpen) {
                 value.append(ch, start, length);
+            }
         }
 
         /**
@@ -348,12 +350,9 @@ public class XLSXCovertCSVReader {
     /**
      * Creates a new XLSX -> CSV converter
      *
-     * @param pkg
-     *            The XLSX package to process
-     * @param output
-     *            The PrintStream to output the CSV to
-     * @param minColumns
-     *            The minimum number of columns to output, or -1 for no minimum
+     * @param pkg        The XLSX package to process
+     * @param output     The PrintStream to output the CSV to
+     * @param minColumns The minimum number of columns to output, or -1 for no minimum
      */
     public XLSXCovertCSVReader(OPCPackage pkg, PrintStream output,
                                String sheetName, int minColumns) {
@@ -414,25 +413,15 @@ public class XLSXCovertCSVReader {
                 ++index;
             }
         }
-        if (ListUtil.isNotEmpty(list)) {
-            for (String[] arr : list) {
-                for (int i = 0; i < arr.length; i++) {
-                    arr[i] = getObject(arr[i]);
-                }
-            }
-        }
         return list;
     }
 
     /**
      * 读取Excel
      *
-     * @param path
-     *            文件路径
-     * @param sheetName
-     *            sheet名称
-     * @param minColumns
-     *            列总数
+     * @param path       文件路径
+     * @param sheetName  sheet名称
+     * @param minColumns 列总数
      * @return
      * @throws SAXException
      * @throws ParserConfigurationException
@@ -463,7 +452,7 @@ public class XLSXCovertCSVReader {
      * @throws SAXException
      */
     private static List<String[]> readerExcel(InputStream inputStream, String sheetName,
-                                             int minColumns) throws IOException, OpenXML4JException,
+                                              int minColumns) throws IOException, OpenXML4JException,
             ParserConfigurationException, SAXException {
         OPCPackage p = OPCPackage.open(inputStream);
         XLSXCovertCSVReader xlsx2csv = new XLSXCovertCSVReader(p, System.out,
@@ -473,22 +462,6 @@ public class XLSXCovertCSVReader {
         return list;
     }
 
-    /**
-     * 去除前后的""
-     *
-     * @param s
-     * @return
-     */
-    public static String getObject(String s) {
-        if (StringUtil.isBlank(s)) {
-            return s;
-        }
-        if (s.startsWith("\"") && s.endsWith("\"")) {
-            s = s.substring(1, s.length() -1);
-        }
-        return s;
-    }
-
     /**
      * 读取数据
      *

+ 0 - 293
cdssman-service/src/main/java/com/diagbot/util/ExcelBigUtil.java

@@ -1,293 +0,0 @@
-package com.diagbot.util;
-
-import com.diagbot.entity.Ex;
-import com.diagbot.vo.KlDrugRegisterTestVO;
-import com.google.common.collect.Lists;
-import org.apache.commons.collections4.map.LinkedMap;
-import org.apache.poi.hssf.usermodel.HSSFWorkbook;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellType;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @description:
- * @author: zhoutg
- * @time: 2021/5/24 19:58
- */
-public class ExcelBigUtil {
-
-    /**
-     * 读取数据
-     *
-     * @param file
-     * @param sheetName
-     * @param titleNo 标题所在行
-     * @param c
-     * @param <T>
-     * @return
-     */
-    public static <T> List<T> readData(MultipartFile file, String sheetName, int titleNo, Class<T> c) {
-        List<T> list = Lists.newArrayList();
-        try {
-            Sheet sheet = getSheet(file, sheetName);
-            List<String[]> stringList = getListData(sheet, titleNo);
-            return dealData(stringList, c);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return list;
-    }
-
-    /**
-     * 读取数据
-     *
-     * @param path
-     * @param sheetName
-     * @param titleNo
-     * @param c
-     * @param <T>
-     * @return
-     */
-    public static <T> List<T> readData(String path, String sheetName, int titleNo, Class<T> c) {
-        List<T> list = Lists.newArrayList();
-        try {
-            Sheet sheet = getSheet(path, sheetName);
-            List<String[]> stringList = getListData(sheet, titleNo);
-            return dealData(stringList, c);
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return list;
-    }
-
-    /**
-     * 获取Sheet
-     *
-     * @param filePath
-     * @param sheetName
-     * @return
-     */
-    private static Sheet getSheet(String filePath, String sheetName) {
-        Sheet sheet = null;
-        FileInputStream fileInputStream = null;
-        try {
-            fileInputStream = new FileInputStream(filePath);
-            XSSFWorkbook sheets = new XSSFWorkbook(fileInputStream);
-            if (StringUtil.isBlank(sheetName)) {
-                sheet = sheets.getSheetAt(0);
-            } else {
-                sheet = sheets.getSheet(sheetName);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return sheet;
-    }
-
-    /**
-     * 获取Sheet
-     *
-     * @param file
-     * @param sheetName
-     * @return
-     */
-    private static Sheet getSheet(MultipartFile file, String sheetName) {
-        Sheet sheet = null;
-        try {
-            // XSSFWorkbook sheets = new XSSFWorkbook(file.getInputStream());
-            Workbook workbook = getWorkBook(file);
-            //获取sheet
-            if (StringUtil.isBlank(sheetName)) {
-                sheet = workbook.getSheetAt(0);
-            } else {
-                sheet = workbook.getSheet(sheetName);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return sheet;
-    }
-
-    /**
-     * 得到Workbook对象
-     * @param file
-     * @return
-     * @throws IOException
-     */
-    public static Workbook getWorkBook(MultipartFile file) throws IOException {
-        //这样写  excel 能兼容03和07
-        InputStream is = file.getInputStream();
-        Workbook hssfWorkbook = null;
-        try {
-            hssfWorkbook = new HSSFWorkbook(is);
-        } catch (Exception ex) {
-            is =file.getInputStream();
-            hssfWorkbook = new XSSFWorkbook(is);
-        }
-        return hssfWorkbook;
-    }
-
-    /**
-     * 将sheet数据放入List
-     *
-     * @param sheet
-     * @param title
-     * @return
-     */
-    private static List<String[]> getListData(Sheet sheet, Integer title) {
-        List<String[]> list = new ArrayList<>();
-        int colLength = sheet.getRow(title).getLastCellNum();
-        for (int j = title; j <= sheet.getLastRowNum(); j++) {
-            Row row = sheet.getRow(j);
-            if (row != null) { // 空行数据
-                String[] str = new String[colLength];
-                for (int i = 0; i < colLength; i++) {
-                    Cell cell = row.getCell(i);
-                    if (cell == null) {
-                        str[i] = null;
-                    } else {
-                        cell.setCellType(CellType.STRING);
-                        str[i] = cell.toString();
-                    }
-                }
-                list.add(str);
-            }
-        }
-        return list;
-    }
-
-    /**
-     * 数据处理
-     *
-     * @param list
-     * @param c
-     * @param <T>
-     * @return
-     */
-    public static <T> List<T> dealData(List<String[]> list, Class<T> c) {
-        List<T> res = Lists.newArrayList();
-        try {
-            // 标题
-            String[] titleRow = list.get(0);
-            Map<Integer, String> colMap = new LinkedMap();
-            for (int i = 0; i < titleRow.length; i++) {
-                if (StringUtil.isBlank(titleRow[i])) {
-                    break;
-                }
-                colMap.put(i, titleRow[i]);
-            }
-            // System.out.println(colMap);
-
-            // 字段映射
-            Field[] fields = c.getDeclaredFields();
-            // 属性和表格列对应
-            Map<String, Map<String, String>> classMap = new LinkedHashMap();
-            for (Field field : fields) {
-                if (field.isAnnotationPresent(Ex.class)) {
-                    Ex annotation = field.getAnnotation(Ex.class);
-                    Map<String, String> propertyMap = new LinkedHashMap<>();
-                    propertyMap.put("field", field.getName());
-                    propertyMap.put("convertType", field.getGenericType().toString());
-                    classMap.put(annotation.name(), propertyMap);
-                }
-                field.getClass();
-            }
-            // System.out.println(classMap);
-
-            // 有效数据读取
-            int rowNum = 1;
-            for (String[] row : list) {
-                if (rowNum++ == 1) {
-                    continue;
-                }
-                T obj = c.newInstance();
-                for (int i = 0; i < row.length; i++) {
-                    if (classMap.get(colMap.get(i)) == null) {
-                        continue;
-                    }
-                    String property = classMap.get(colMap.get(i)).get("field");
-                    String convertType = classMap.get(colMap.get(i)).get("convertType");
-                    // System.out.println(property + ":" + row[i]);
-                    if (StringUtil.isNotBlank(property)) {
-                        Object value = convertValue(row[i], convertType);
-                        if (value != null) {
-                            ReflectUtil.setFieldValue(obj, property, value);
-                        }
-                    }
-                }
-                res.add(obj);
-            }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        return res;
-    }
-
-    /**
-     * 根据反射转成不同的类型
-     *
-     * @param object
-     * @param convertType
-     * @return
-     */
-    public static Object convertValue(String object, String convertType) {
-        Object res = null;
-        if (object == null) {
-            return null;
-        }
-        try {
-            switch (convertType) {
-                case "class java.lang.Integer":
-                case "int":
-                    res = Integer.parseInt(object);
-                    break;
-                case "class java.lang.Long":
-                case "long":
-                    res = Long.parseLong(object);
-                    break;
-                case "class java.lang.Float":
-                case "float":
-                    res = Float.parseFloat(object);
-                    break;
-                case "class java.lang.Double":
-                case "double":
-                    res = Double.parseDouble(object);
-                    break;
-                case "class java.lang.Boolean":
-                case "boolean":
-                    res = Boolean.parseBoolean(object);
-                    break;
-                case "class java.lang.String":
-                    res = object;
-                    break;
-                default:
-                    res = object;
-                    break;
-            }
-        } catch (Exception e) {
-            // e.printStackTrace();
-            return null;
-        }
-        return res;
-    }
-
-    public static void main(String[] args) {
-        String path = "D:\\newSVN\\2020新版CDSS\\05.其他资料\\数据\\其他数据\\【注册药品导入模板】 - 副本.xlsx";
-        List<KlDrugRegisterTestVO> klDrugRegisterTestVOList = readData(path, null, 0, KlDrugRegisterTestVO.class);
-        System.out.println(klDrugRegisterTestVOList);
-    }
-}
-

+ 21 - 0
cdssman-service/src/main/java/com/diagbot/vo/RegulationIndexVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description: 规则搜索
+ * @Author:zhoutg
+ * @time: 2020/7/29 15:34
+ */
+@Data
+public class RegulationIndexVO {
+
+    // 内容
+    private String name;
+    // 规则类型:(1:量表)
+    private Integer type;
+    // 过滤编码
+    private List<String> notCodeList;
+}

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/vo/SearchVO.java

@@ -0,0 +1,27 @@
+package com.diagbot.vo;
+
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @date 2021/3/10
+ * @time 12:57
+ */
+@Data
+public class SearchVO {
+
+    @ApiModelProperty(value="名称")
+    private String name;
+
+    @ApiModelProperty(value="词性id")
+    @NotNull(message ="请输入搜索词的词性" )
+    private Integer libType;
+
+    @ApiModelProperty(value="需要排除的概念id集合")
+    private List<Long> excludedConceptIds = Lists.newArrayList();
+}

+ 14 - 0
cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java

@@ -4,6 +4,7 @@ package com.diagbot.web;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptInfoDTO;
 import com.diagbot.dto.RespDTO;
@@ -14,6 +15,7 @@ import com.diagbot.vo.KlConceptClearVO;
 import com.diagbot.vo.KlConceptInfoVO;
 import com.diagbot.vo.KlConceptSatarOrdisaVO;
 import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.SearchVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -23,6 +25,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -189,4 +192,15 @@ public class KlConceptController {
     public RespDTO<Boolean> startRuleInfos(@RequestBody @Valid KlConceptSatarOrdisaVO klConceptSatarOrdisaVO) {
         return RespDTO.onSuc(klConceptFacade.startOrDisableRule(klConceptSatarOrdisaVO,StatusEnum.Enable.getKey()));
     }
+
+    @ApiOperation(value = "根据类型和名称查找术语,名称可为空[by:zhoutg]",
+            notes = "name: 术语的名称<br>" +
+                    "libType: 术语的词性<br>" +
+                    "excludedConceptIds: 需要排除的概念id集合")
+    @PostMapping("/search")
+    @SysLogger("search")
+    public RespDTO<GetAllForRelationDTO> search(@RequestBody SearchVO SearchVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = klConceptFacade.searchConceptByNameAndLibType(SearchVO);
+        return RespDTO.onSuc(getAllForRelationDTOS);
+    }
 }

+ 4 - 5
cdssman-service/src/main/java/com/diagbot/web/KlDrugRegisterController.java

@@ -23,8 +23,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 import org.springframework.web.multipart.MultipartFile;
 
+import javax.servlet.http.HttpServletResponse;
 import java.util.List;
-import java.util.Map;
 
 /**
  * <p>
@@ -74,7 +74,7 @@ public class KlDrugRegisterController {
                     "form:药品剂型\n" +
                     "company:药品企业\n" +
                     "insuranceType:医保类型\n" +
-                    "commonName:药品通用名")
+                    "drugName:药品通用名")
     @PostMapping("/getPage")
     @SysLogger("getPage")
     public RespDTO<IPage<KlDrugRegisterDTO>> getPage(@RequestBody KlDrugRegisterPageVO klDrugRegisterPageVO) {
@@ -112,8 +112,7 @@ public class KlDrugRegisterController {
             notes = "")
     @PostMapping("/importRegister")
     @DSTransactional
-    public RespDTO<Map> importRegister(@RequestParam("file") MultipartFile file) {
-        Map data = klDrugRegisterFacade.importRegister(file);
-        return RespDTO.onSuc(data);
+    public void importRegister(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
+        klDrugRegisterFacade.importRegister(file, response);
     }
 }

+ 43 - 0
cdssman-service/src/main/java/com/diagbot/web/KlRegulationController.java

@@ -0,0 +1,43 @@
+package com.diagbot.web;
+
+
+import com.diagbot.dto.RegulationIndexDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlRegulationFacade;
+import com.diagbot.vo.RegulationIndexVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 通用规则表 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-06-15
+ */
+@RestController
+@RequestMapping("/klRegulation")
+@Api(value = "其他规则API", tags = { "其他规则API" })
+public class KlRegulationController {
+
+    @Autowired
+    KlRegulationFacade klRegulationFacade;
+
+    @ApiOperation(value = "规则搜索[zhoutg]", notes =
+            "name:内容\n" +
+            "type:规则类型:(1:量表)\n" +
+            "notCodeList:过滤编码")
+    @PostMapping("/index")
+    public RespDTO<List<RegulationIndexDTO>> index(@RequestBody RegulationIndexVO regulationIndexVO) {
+        RespDTO<List<RegulationIndexDTO>> res = klRegulationFacade.index(regulationIndexVO);
+        return res;
+    }
+}

+ 0 - 1
cdssman-service/src/main/resources/mapper/KlConceptMapper.xml

@@ -134,7 +134,6 @@
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND t.is_deleted = 'N'
-        AND a.`status` = 1
         AND t.`status` = 1
         <if test="conceptId!=null and conceptId!=''">
             AND a.id = #{conceptId}

+ 1 - 1
cdssman-service/src/main/resources/mapper/KlDrugRegisterMapper.xml

@@ -28,7 +28,7 @@
     </resultMap>
 
     <select id="getPage" resultType="com.diagbot.dto.KlDrugRegisterDTO">
-        SELECT a.*, c.lib_name commonName FROM `kl_drug_register` a
+        SELECT a.*, c.lib_name drugName FROM `kl_drug_register` a
         left join kl_drug_mapping b on b.register_id = a.id
         left join kl_concept c on c.id = b.drug_concept and c.status = 1
         WHERE a.is_deleted = 'N'

+ 3 - 1
config-server/src/main/resources/shared/cdssman-service-dev.yml

@@ -121,10 +121,12 @@ mybatis-plus:
 hystrix.command.CdssCoreClient#getConceptNames(ConceptVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 #远程调用更新数据接口时间加长
 hystrix.command.CdssCoreClient#clearStandRuleDrugAll().execution.isolation.thread.timeoutInMilliseconds: 3600000
+#远程调用开单合理性接口时间加长
+hystrix.command.CdssCoreClient#indication(IndicationPushVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 
 io.github.lvyahui8.spring:
   base-packages: com.diagbot.aggregate
-  thread-number: 100
+  thread-number: 200
 
 imageUrl:
   prefix: http://192.168.2.236:82

+ 4 - 1
config-server/src/main/resources/shared/cdssman-service-local.yml

@@ -120,10 +120,13 @@ mybatis-plus:
 hystrix.command.CdssCoreClient#getConceptNames(ConceptVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 #远程调用更新数据接口时间加长
 hystrix.command.CdssCoreClient#clearStandRuleDrugAll().execution.isolation.thread.timeoutInMilliseconds: 3600000
+#远程调用开单合理性接口时间加长
+hystrix.command.CdssCoreClient#indication(IndicationPushVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
+
 
 io.github.lvyahui8.spring:
   base-packages: com.diagbot.aggregate
-  thread-number: 100
+  thread-number: 200
 
 imageUrl:
   prefix: http://192.168.2.236:82

+ 3 - 1
config-server/src/main/resources/shared/cdssman-service-pre.yml

@@ -121,10 +121,12 @@ mybatis-plus:
 hystrix.command.CdssCoreClient#getConceptNames(ConceptVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 #远程调用更新数据接口时间加长
 hystrix.command.CdssCoreClient#clearStandRuleDrugAll().execution.isolation.thread.timeoutInMilliseconds: 3600000
+#远程调用开单合理性接口时间加长
+hystrix.command.CdssCoreClient#indication(IndicationPushVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 
 io.github.lvyahui8.spring:
   base-packages: com.diagbot.aggregate
-  thread-number: 100
+  thread-number: 200
 
 imageUrl:
   prefix: http://192.168.2.121:82

+ 3 - 1
config-server/src/main/resources/shared/cdssman-service-pro.yml

@@ -121,10 +121,12 @@ mybatis-plus:
 hystrix.command.CdssCoreClient#getConceptNames(ConceptVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 #远程调用更新数据接口时间加长
 hystrix.command.CdssCoreClient#clearStandRuleDrugAll().execution.isolation.thread.timeoutInMilliseconds: 3600000
+#远程调用开单合理性接口时间加长
+hystrix.command.CdssCoreClient#indication(IndicationPushVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 
 io.github.lvyahui8.spring:
   base-packages: com.diagbot.aggregate
-  thread-number: 100
+  thread-number: 200
 
 imageUrl:
   prefix: http://192.168.2.122:82

+ 3 - 1
config-server/src/main/resources/shared/cdssman-service-test.yml

@@ -121,10 +121,12 @@ mybatis-plus:
 hystrix.command.CdssCoreClient#getConceptNames(ConceptVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 #远程调用更新数据接口时间加长
 hystrix.command.CdssCoreClient#clearStandRuleDrugAll().execution.isolation.thread.timeoutInMilliseconds: 3600000
+#远程调用开单合理性接口时间加长
+hystrix.command.CdssCoreClient#indication(IndicationPushVO).execution.isolation.thread.timeoutInMilliseconds: 3600000
 
 io.github.lvyahui8.spring:
   base-packages: com.diagbot.aggregate
-  thread-number: 100
+  thread-number: 200
 
 imageUrl:
   prefix: http://192.168.2.241:82

+ 3 - 3
docs/041.20210511知识库扩展/knowledgeExt_init.sql

@@ -111,9 +111,9 @@ CREATE TABLE `kl_symptom` (
   `ch_western` TINYINT(4) not null DEFAULT '0' COMMENT '中西医症状(0:通用,1:西,2:中)',
   `mitigating_fac` varchar(255) NOT NULL DEFAULT '' COMMENT '缓解因素',
   `aggravate_fac` varchar(255) NOT NULL DEFAULT '' COMMENT '加重因素',
-  `cause` varchar(255) NOT NULL DEFAULT '' COMMENT '症状起因',
-  `common_dis` varchar(255) NOT NULL DEFAULT '' COMMENT '常见疾病',
-  `pre_measures` varchar(255) NOT NULL DEFAULT '' COMMENT '预防措施',
+  `cause` varchar(1024) NOT NULL DEFAULT '' COMMENT '症状起因',
+  `common_dis` varchar(1024) NOT NULL DEFAULT '' COMMENT '常见疾病',
+  `pre_measures` varchar(1024) NOT NULL DEFAULT '' COMMENT '预防措施',
   `food_prohibition` varchar(1024) not null DEFAULT '' COMMENT '饮食禁忌',
   `common_explain` varchar(255) NOT NULL DEFAULT '' COMMENT '通俗解释',
   `remark` varchar(300) DEFAULT NULL COMMENT '备注',