浏览代码

Merge branch 'dev/neo2mysql20210120' into debug

wangfeng 4 年之前
父节点
当前提交
95fd891c79
共有 26 个文件被更改,包括 601 次插入43 次删除
  1. 2 1
      cdssman-service/src/main/java/com/diagbot/dto/DiseaseSubDetailDTO.java
  2. 6 0
      cdssman-service/src/main/java/com/diagbot/dto/GetAllForRelationDTO.java
  3. 9 9
      cdssman-service/src/main/java/com/diagbot/dto/KlRuleInfoDTO.java
  4. 21 0
      cdssman-service/src/main/java/com/diagbot/dto/RelationDTO.java
  5. 19 0
      cdssman-service/src/main/java/com/diagbot/dto/TreeAllDTO.java
  6. 20 0
      cdssman-service/src/main/java/com/diagbot/dto/TreeDTO.java
  7. 60 0
      cdssman-service/src/main/java/com/diagbot/enums/RelationLibTypeEnum.java
  8. 63 0
      cdssman-service/src/main/java/com/diagbot/enums/RuleTypeEnum.java
  9. 42 5
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java
  10. 19 1
      cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java
  11. 67 0
      cdssman-service/src/main/java/com/diagbot/facade/KlRelationFacade.java
  12. 83 14
      cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java
  13. 4 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlRelationMapper.java
  14. 1 0
      cdssman-service/src/main/java/com/diagbot/service/KlConceptService.java
  15. 4 0
      cdssman-service/src/main/java/com/diagbot/service/KlRelationService.java
  16. 2 0
      cdssman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java
  17. 6 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java
  18. 3 1
      cdssman-service/src/main/java/com/diagbot/vo/GetAllForRelationVO.java
  19. 18 0
      cdssman-service/src/main/java/com/diagbot/vo/KlConceptClearVO.java
  20. 17 0
      cdssman-service/src/main/java/com/diagbot/vo/RelationVO.java
  21. 29 0
      cdssman-service/src/main/java/com/diagbot/vo/SearchConceptVO.java
  22. 15 0
      cdssman-service/src/main/java/com/diagbot/vo/TreeVO.java
  23. 10 2
      cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java
  24. 27 0
      cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java
  25. 15 10
      cdssman-service/src/main/java/com/diagbot/web/TreeContactController.java
  26. 39 0
      cdssman-service/src/main/resources/mapper/KlRelationMapper.xml

+ 2 - 1
cdssman-service/src/main/java/com/diagbot/dto/DiseaseSubDetailDTO.java

@@ -17,5 +17,6 @@ import java.util.List;
 public class DiseaseSubDetailDTO implements Serializable {
     private Integer rid;
     private String rname;
-    List<KlConcept> details;
+    private List<KlConcept> details;
+    private List<Integer> libType;
 }

+ 6 - 0
cdssman-service/src/main/java/com/diagbot/dto/GetAllForRelationDTO.java

@@ -24,6 +24,12 @@ public class GetAllForRelationDTO {
 	 */
 	@ApiModelProperty(value="概念名称")
 	private String conceptName;
+
+	/**
+	 * 概念id
+	 */
+	@ApiModelProperty(value="概念id")
+	private Integer libType;
 	
 	/**
 	 * 概念名称(类型)

+ 9 - 9
cdssman-service/src/main/java/com/diagbot/dto/KlRuleInfoDTO.java

@@ -17,7 +17,7 @@ public class KlRuleInfoDTO {
     /**
      * 主键
      */
-    private Long id;
+    private Long parId;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
@@ -32,34 +32,34 @@ public class KlRuleInfoDTO {
     /**
      * 提示概念id
      */
-    private Long conceptId;
+    private Long parConceptId;
 
-    private String conceptName;
+    private String parConceptName;
 
 
-    private String libTypeName;
+    private String parLibTypeName;
     /**
      * 描述
      */
-    private String description;
+    private String parDescription;
 
     /**
      * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
      */
-    private Integer ruleType;
+    private Integer parRuleType;
 
     /**
      * 是否有子条件(0:无,1:有)
      */
-    private Integer hasSubCond;
+    private Integer parHasSub;
 
     /**
      * 启用状态(0:禁用,1:启用)
      */
-    private Integer status;
+    private Integer parStatus;
 
     /**
      * 附加信息
      */
-    private String msg;
+    private String parMsg;
 }

+ 21 - 0
cdssman-service/src/main/java/com/diagbot/dto/RelationDTO.java

@@ -0,0 +1,21 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/3/10 16:52
+ */
+@Getter
+@Setter
+public class RelationDTO {
+    private Long sId;
+    private String sName;
+    private Long sType;
+    private Long rId;
+    private Long eId;
+    private String eName;
+    private Long eType;
+}

+ 19 - 0
cdssman-service/src/main/java/com/diagbot/dto/TreeAllDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/3/10 17:02
+ */
+@Getter
+@Setter
+public class TreeAllDTO {
+    private List<Long> types;
+    private TreeDTO treeDTO;
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/dto/TreeDTO.java

@@ -0,0 +1,20 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/3/10 17:02
+ */
+@Getter
+@Setter
+public class TreeDTO {
+    private Long id;
+    private String name;
+    private List<TreeDTO> nextTree = new ArrayList<>();
+}

+ 60 - 0
cdssman-service/src/main/java/com/diagbot/enums/RelationLibTypeEnum.java

@@ -0,0 +1,60 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author kongwz
+ * @Description: 关系对应lib_type
+ * @date 2018年10月11日 下午3:33:22
+ */
+
+public enum RelationLibTypeEnum implements KeyedNamed {
+
+    mainSymptom(501, "103"),
+    ciSymptom(502, "103"),
+    vitalResult(503, "104"),
+    lisItem(504, "107"),
+    pacsItem(505, "109&110"),
+    disMedicine(506, "101"),
+    disOperator(507, "106"),
+    disDifferentDis(508, "100");
+
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    RelationLibTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static RelationLibTypeEnum getEnum(int key) {
+        for (RelationLibTypeEnum item : RelationLibTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        RelationLibTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+
+}

+ 63 - 0
cdssman-service/src/main/java/com/diagbot/enums/RuleTypeEnum.java

@@ -0,0 +1,63 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+ * @date 2021-03-11 9:50
+ */
+public enum RuleTypeEnum implements KeyedNamed {
+
+    Rationality(1, "开单合理性"),
+    HighRisk(2, "高危"),
+    Critical(3, "危急值"),
+    OtherValReminders(4, "其他值提醒"),
+    Transfusion(5, "其他值提醒输血"),
+    Repeatedly(6, "正常项目重复开立");
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    RuleTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static RuleTypeEnum getEnum(int key) {
+        for (RuleTypeEnum item : RuleTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static RuleTypeEnum getEnum(String value) {
+        for (RuleTypeEnum item : RuleTypeEnum.values()) {
+            if (item.getName().equals(value)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        RuleTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 42 - 5
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -13,6 +13,7 @@ import com.diagbot.entity.KlConceptCommon;
 import com.diagbot.entity.KlDisease;
 import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.entity.KlLis;
+import com.diagbot.entity.KlRule;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
@@ -25,12 +26,9 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
-import com.diagbot.vo.GetAllForRelationVO;
-import com.diagbot.vo.KlConceptAllVO;
-import com.diagbot.vo.KlConceptInfoVO;
-import com.diagbot.vo.KlConceptSaveSubVO;
-import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -283,6 +281,7 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                     getAllForRelationDTO.setConceptId(x.getId());
                     getAllForRelationDTO.setConceptName(x.getLibName());
                     getAllForRelationDTO.setConceptNameType(String.valueOf(x.getLibType()));
+                    getAllForRelationDTO.setLibType(x.getLibType());
                     return getAllForRelationDTO;
                 }).collect(Collectors.toList());
             }
@@ -291,6 +290,31 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return retList;
     }
 
+    public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO){
+        List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
+        String name = searchConceptVO.getName();
+        List<Integer> libTypes = searchConceptVO.getLibTypes();
+        List<Long> excludedConceptIds = searchConceptVO.getExcludedConceptIds();
+        if(StringUtils.isNotBlank(name) || ListUtil.isNotEmpty(libTypes) ){
+            List<KlConcept> conceptList = this.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+            .like(StringUtil.isNotBlank(name),"lib_name",name.trim())
+            .in(ListUtil.isNotEmpty(libTypes),"lib_type",libTypes)
+            .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
      *
@@ -307,4 +331,17 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         conceptQe.eq("lib_type", libTypeId);
         return list(conceptQe).stream().map(i -> i.getId()).collect(Collectors.toList());
     }
+
+    public Boolean clearConceptInfo(KlConceptClearVO klConceptClearVO) {
+        Date now = DateUtil.now();
+        int sum = klLibraryInfoFacade.count(new QueryWrapper<KlLibraryInfo>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", klConceptClearVO.getLibId()).eq("is_concept",0));
+        if (sum == 0) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该数据已不存在或删除的不是同义词!");
+        }
+        UpdateWrapper<KlLibraryInfo> klLibraryUpdate = new UpdateWrapper<>();
+        klLibraryUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("id", klConceptClearVO.getLibId()).set("is_deleted",IsDeleteEnum.Y.getKey()).set("gmt_modified",now);
+        return klLibraryInfoFacade.update(klLibraryUpdate);
+    }
 }

+ 19 - 1
cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java

@@ -8,6 +8,7 @@ import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.dto.DiseaseSubDetailDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlLexiconRelationship;
+import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.service.KlDiseaseService;
 import com.diagbot.service.KlLexiconRelationshipService;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
@@ -20,6 +21,7 @@ import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
+import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
@@ -35,11 +37,21 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
     @Autowired
     KlLexiconRelationshipFacade klLexiconRelationshipFacade;
 
+    /**
+     * 诊断依据分页查询
+     * @param klConceptInfoVO
+     * @return
+     */
     public IPage<DiseasePageDTO> getDiseasePageAll(DiseasePageVO klConceptInfoVO) {
         return this.getDiseasePage(klConceptInfoVO);
     }
 
 
+    /**
+     * 某个诊断依据的具体数据
+     * @param getDiseaseDetailVO
+     * @return
+     */
     public DiseaseDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
         DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
 
@@ -86,10 +98,13 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         if (MapUtils.isNotEmpty(disSubDetailMap)) {
             for (Integer type : types) {
                 if (disSubDetailMap.containsKey(type)) {
-                    datas.add(disSubDetailMap.get(type));
+                    DiseaseSubDetailDTO diseaseSubDetailDTO = disSubDetailMap.get(type);
+                    diseaseSubDetailDTO.setLibType(Arrays.stream(RelationLibTypeEnum.getName(type).split("&")).map(x ->Integer.parseInt(x)).collect(Collectors.toList()));
+                    datas.add(diseaseSubDetailDTO);
                 } else {
                     DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
                     diseaseSubDetailDTO.setRid(type);
+                    diseaseSubDetailDTO.setLibType(Arrays.stream(RelationLibTypeEnum.getName(type).split("&")).map(x ->Integer.parseInt(x)).collect(Collectors.toList()));
                     diseaseSubDetailDTO.setRname(type_nameMap.get(type));
                     datas.add(diseaseSubDetailDTO);
                 }
@@ -99,4 +114,7 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         diseaseDetailDTO.setDatas(datas);
         return diseaseDetailDTO;
     }
+
+
 }
+

+ 67 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlRelationFacade.java

@@ -1,8 +1,19 @@
 package com.diagbot.facade;
 
+import com.diagbot.dto.RelationDTO;
+import com.diagbot.dto.TreeAllDTO;
+import com.diagbot.dto.TreeDTO;
 import com.diagbot.service.impl.KlRelationServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.RelationVO;
+import com.diagbot.vo.TreeVO;
 import org.springframework.stereotype.Component;
 
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * @Description:
  * @Author:zhaops
@@ -10,4 +21,60 @@ import org.springframework.stereotype.Component;
  */
 @Component
 public class KlRelationFacade extends KlRelationServiceImpl {
+    public TreeAllDTO getTree(TreeVO treeVO) {
+        List<Long[]> pList = new ArrayList<>();
+        pList.add(new Long[] { 402L, 600L, 301L, 600L, 101L });//药品化学物质类别
+        pList.add(new Long[] { 403L, 600L, 302L, 600L, 101L });//药品治疗学类别
+        pList.add(new Long[] { 404L, 600L, 303L, 600L, 101L });//药品药理学类别
+        pList.add(new Long[] { 405L, 600L, 304L, 600L, 101L });//药品解剖学类别
+        pList.add(new Long[] { 406L, 600L, 305L, 600L, 103L });//症状类别
+        pList.add(new Long[] { 407L, 600L, 306L, 600L, 106L });//手术和操作类别
+        pList.add(new Long[] { 408L, 600L, 107L, 600L, 108L });//实验室检查类别
+        pList.add(new Long[] { 409L, 600L, 109L, 600L, 110L });//实验室检查类别
+
+        Integer index = treeVO.getType() - 1;
+        List<Long> types = new ArrayList<>();
+        types.add(pList.get(index)[0]);
+        types.add(pList.get(index)[1]);
+        types.add(pList.get(index)[2]);
+        types.add(pList.get(index)[3]);
+        types.add(pList.get(index)[4]);
+
+        RelationVO relationVO = new RelationVO();
+        relationVO.setSType(pList.get(index)[0]);
+        relationVO.setRId(pList.get(index)[1]);
+        relationVO.setEType(pList.get(index)[2]);
+        List<RelationDTO> root = this.getRelations(relationVO);
+
+        RelationVO relationVO2 = new RelationVO();
+        relationVO2.setSType(pList.get(index)[2]);
+        relationVO2.setRId(pList.get(index)[3]);
+        relationVO2.setEType(pList.get(index)[4]);
+        List<RelationDTO> sub = this.getRelations(relationVO2);
+        Map<Long, List<RelationDTO>> map = EntityUtil.makeEntityListMap(sub, "sId");
+
+        TreeDTO treeDTO = new TreeDTO();
+        treeDTO.setId(root.get(0).getSId());
+        treeDTO.setName(root.get(0).getSName());
+        for (RelationDTO relationDTO : root) {
+            TreeDTO treeDTO2 = new TreeDTO();
+            treeDTO2.setId(relationDTO.getEId());
+            treeDTO2.setName(relationDTO.getEName());
+            List<RelationDTO> e = map.get(relationDTO.getEId());
+            if (ListUtil.isNotEmpty(e)) {
+                for (RelationDTO relationDTO1 : e) {
+                    TreeDTO treeDTO3 = new TreeDTO();
+                    treeDTO3.setId(relationDTO1.getEId());
+                    treeDTO3.setName(relationDTO1.getEName());
+                    treeDTO2.getNextTree().add(treeDTO3);
+                }
+            }
+            treeDTO.getNextTree().add(treeDTO2);
+        }
+
+        TreeAllDTO treeAllDTO = new TreeAllDTO();
+        treeAllDTO.setTypes(types);
+        treeAllDTO.setTreeDTO(treeDTO);
+        return treeAllDTO;
+    }
 }

+ 83 - 14
cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java

@@ -3,9 +3,11 @@ package com.diagbot.facade;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.dto.RelationNamesDTO;
 import com.diagbot.dto.RelationNodeDTO;
+import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.entity.KlRelationOrder;
@@ -25,7 +27,6 @@ import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationContactDetailVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import io.swagger.models.auth.In;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -45,6 +46,8 @@ import java.util.stream.Collectors;
  */
 @Component
 public class RelationContactFacade extends KlRelationServiceImpl {
+    @Autowired
+    private UserServiceClient userServiceClient;
     @Autowired
     private KlConceptFacade klConceptFacade;
     @Autowired
@@ -135,6 +138,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
 
         return relationNodeDTOList;
     }
+
     @DS("med")
     @DSTransactional
     public Boolean addRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
@@ -171,14 +175,12 @@ public class RelationContactFacade extends KlRelationServiceImpl {
             }
             List<List<KlRelation>> relationGroupList = relationDataForAdd(klRelationSaveVOs);
 
-//            String currentUser = UserUtils.getCurrentPrincipleID();
             Date now = DateUtil.now();
             List<KlRelation> relationLists = Lists.newArrayList();
             relationGroupList.forEach(i -> {
                 i.forEach(j -> {
-//                    j.setCreator(currentUser);
                     j.setGmtCreate(now);
-//                    j.setModifier(currentUser);
+//                    j.setModifier(UserUtils.getCurrentPrincipleID());
                     j.setGmtModified(now);
                     relationLists.add(j);
                 });
@@ -196,7 +198,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     relationOrder.setGmtCreate(now);
                     relationOrder.setGmtModified(now);
 //                    relationOrder.setCreator(currentUser);
-//                    relationOrder.setModifier(currentUser);
+//                    relationOrder.setModifier(UserUtils.getCurrentPrincipleID());
                     relationOrderList.add(relationOrder);
                 }
             });
@@ -207,6 +209,73 @@ public class RelationContactFacade extends KlRelationServiceImpl {
         return true;
     }
 
+
+    @DS("med")
+    @DSTransactional
+    public Boolean saveRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
+        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
+            List<List<KlRelation>> relationGroupList = Lists.newArrayList();
+            KlRelationSaveVO klRelationSaveVO = klRelationSaveVOs.get(0);
+            Long sid = klRelationSaveVO.getSid();
+            List<KlRelation> klRelations = this.list(new QueryWrapper<KlRelation>()
+                    .eq("start_id", sid));
+            List<Long> ids = klRelations.stream().map(x -> x.getId()).collect(Collectors.toList());
+            //先删除
+            if (ListUtil.isNotEmpty(ids)) {
+                this.removeByIds(ids);
+                QueryWrapper<KlRelationOrder> relationOrderQe = new QueryWrapper<>();
+                relationOrderQe.in("t_relation_id", ids);
+                klRelationOrderFacade.remove(relationOrderQe);
+            }
+            for (KlRelationSaveVO kls : klRelationSaveVOs) {
+                @NotNull(message = "概念开始id必传") Long sid1 = kls.getSid();
+                @NotNull(message = "关系id必传") Integer rid = kls.getRid();
+                List<Long> eids = kls.getEids();
+                if (ListUtil.isNotEmpty(eids)) {
+                    List<KlRelation> collect = eids.stream().map(x -> {
+                        KlRelation klRelation = new KlRelation();
+                        klRelation.setEndId(x);
+                        klRelation.setRelationId(rid);
+                        klRelation.setStartId(sid1);
+                        klRelation.setStatus(1);
+                        return klRelation;
+                    }).collect(Collectors.toList());
+                    relationGroupList.add(collect);
+                }
+            }
+            Date now = DateUtil.now();
+            List<KlRelation> relationLists = Lists.newArrayList();
+            relationGroupList.forEach(i -> {
+                i.forEach(j -> {
+                    j.setGmtCreate(now);
+//                    j.setModifier(UserUtils.getCurrentPrincipleID());
+                    j.setGmtModified(now);
+                    relationLists.add(j);
+                });
+            });
+            klRelationService.saveBatch(relationLists);
+
+            List<KlRelationOrder> relationOrderList = Lists.newArrayList();
+            relationGroupList.forEach(i -> {
+                int orderNo = 0;
+                for (KlRelation j : i) {
+                    orderNo++;
+                    KlRelationOrder relationOrder = new KlRelationOrder();
+                    relationOrder.setOrderNo(orderNo);
+                    relationOrder.settRelationId(j.getId());
+                    relationOrder.setGmtCreate(now);
+                    relationOrder.setGmtModified(now);
+//                    relationOrder.setModifier(UserUtils.getCurrentPrincipleID());
+                    relationOrderList.add(relationOrder);
+                }
+            });
+            klRelationOrderServiceImpl.saveBatch(relationOrderList);
+
+
+        }
+        return true;
+    }
+
     private List<List<KlRelation>> relationDataForAdd(List<KlRelationSaveVO> klRelationSaveVOs) {
         List<List<KlRelation>> relationList = Lists.newArrayList();
         Map<String, List<KlRelation>> relationMap = Maps.newHashMap();
@@ -218,7 +287,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                 Long eid = kls.getEid();
                 Integer srid = kls.getSrid();
                 List<Long> eids = kls.getEids();
-                if(relationMap.containsKey(sid.toString()+"&"+rid.toString())){
+                if (relationMap.containsKey(sid.toString() + "&" + rid.toString())) {
                     List<KlRelation> klRelations_big = relationMap.get(sid.toString() + "&" + rid.toString());
                     KlRelation klRelation = new KlRelation();
                     klRelation.setStartId(sid);
@@ -226,8 +295,8 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     klRelation.setEndId(eid);
                     klRelation.setStatus(1);
                     klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(),klRelations_big);
-                }else {
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
+                } else {
                     List<KlRelation> klRelations_big = Lists.newArrayList();
                     KlRelation klRelation = new KlRelation();
                     klRelation.setStartId(sid);
@@ -235,11 +304,11 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     klRelation.setEndId(eid);
                     klRelation.setStatus(1);
                     klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(),klRelations_big);
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
                 }
-                if(srid != null && ListUtil.isNotEmpty(eids)){
+                if (srid != null && ListUtil.isNotEmpty(eids)) {
                     List<KlRelation> klRelations_sub = Lists.newArrayList();
-                    for (Long id:eids) {
+                    for (Long id : eids) {
                         KlRelation klRelation = new KlRelation();
                         klRelation.setStartId(eid);
                         klRelation.setRelationId(srid);
@@ -247,12 +316,12 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                         klRelation.setStatus(1);
                         klRelations_sub.add(klRelation);
                     }
-                    relationMap.put(eid.toString() + "&" + srid.toString(),klRelations_sub);
+                    relationMap.put(eid.toString() + "&" + srid.toString(), klRelations_sub);
                 }
             }
         }
-        if(MapUtils.isNotEmpty(relationMap)){
-            relationMap.forEach((x,y)->{
+        if (MapUtils.isNotEmpty(relationMap)) {
+            relationMap.forEach((x, y) -> {
                 relationList.add(y);
             });
         }

+ 4 - 0
cdssman-service/src/main/java/com/diagbot/mapper/KlRelationMapper.java

@@ -1,10 +1,12 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.dto.RelationNodeDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.diagbot.vo.KlRelationVO;
+import com.diagbot.vo.RelationVO;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -26,5 +28,7 @@ public interface KlRelationMapper extends BaseMapper<KlRelation> {
 
     List<MedClassMedDTO> getMedClassMedList();
 
+    List<RelationDTO> getRelations(RelationVO relationVO);
+
     List<RelationNameDTO> getRelationNameDTOs(@Param(value="conceptIds")List<Long> conceptIds,@Param(value="relationId")Integer relationId);
 }

+ 1 - 0
cdssman-service/src/main/java/com/diagbot/service/KlConceptService.java

@@ -1,5 +1,6 @@
 package com.diagbot.service;
 
+import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptInfoDTO;

+ 4 - 0
cdssman-service/src/main/java/com/diagbot/service/KlRelationService.java

@@ -1,10 +1,12 @@
 package com.diagbot.service;
 
 import com.diagbot.dto.MedClassMedDTO;
+import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.entity.KlRelation;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.vo.KlRelationVO;
+import com.diagbot.vo.RelationVO;
 import io.swagger.models.auth.In;
 
 import java.util.List;
@@ -20,5 +22,7 @@ import java.util.List;
 public interface KlRelationService extends IService<KlRelation> {
     List<MedClassMedDTO> getMedClassMedList();
 
+    List<RelationDTO> getRelations(RelationVO relationVO);
+
     List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds, Integer relationId);
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java

@@ -1,6 +1,7 @@
 package com.diagbot.service.impl;
 
 import com.diagbot.enums.DisclaimerCodeEnum;
+import com.diagbot.enums.RuleTypeEnum;
 import com.diagbot.service.EnumsDataService;
 import com.diagbot.util.EnumEntriesBuilder;
 import org.springframework.stereotype.Service;
@@ -25,6 +26,7 @@ public class EnumsDataServiceImpl implements EnumsDataService {
     public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData() {
         Map<String, List<EnumEntriesBuilder.Entry>> enumMap = new EnumEntriesBuilder()
                 .addEnums("disclaimerCodeAllEnum", DisclaimerCodeEnum.values())
+                .addEnums("RuleTypeEnum", RuleTypeEnum.values())
                 .build();
         return enumMap;
     }

+ 6 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java

@@ -3,11 +3,13 @@ package com.diagbot.service.impl;
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.dto.MedClassMedDTO;
+import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.RelationNameDTO;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.mapper.KlRelationMapper;
 import com.diagbot.service.KlRelationService;
 import com.diagbot.vo.KlRelationVO;
+import com.diagbot.vo.RelationVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
@@ -28,6 +30,10 @@ public class KlRelationServiceImpl extends ServiceImpl<KlRelationMapper, KlRelat
         return baseMapper.getMedClassMedList();
     }
 
+    public List<RelationDTO> getRelations(RelationVO relationVO){
+        return baseMapper.getRelations(relationVO);
+    }
+
     @Override
     public List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds,Integer relationId) {
         return baseMapper.getRelationNameDTOs(conceptIds,relationId);

+ 3 - 1
cdssman-service/src/main/java/com/diagbot/vo/GetAllForRelationVO.java

@@ -1,6 +1,7 @@
 package com.diagbot.vo;
 
 import com.diagbot.annotation.CryptField;
+import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
@@ -14,12 +15,13 @@ import java.util.List;
  */
 @Getter
 @Setter
+@ApiModel(value = "搜索的入参")
 public class GetAllForRelationVO {
     
     /**
      * 名称
      */
-    @CryptField
+
     @ApiModelProperty(value="名称")
     private String name;
     

+ 18 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlConceptClearVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-11 9:20
+ */
+@Setter
+@Getter
+public class KlConceptClearVO {
+    @NotNull(message = "请输id")
+    private Long libId;
+}

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/vo/RelationVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/3/10 16:52
+ */
+@Getter
+@Setter
+public class RelationVO {
+    private Long sType;
+    private Long rId;
+    private Long eType;
+}

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/vo/SearchConceptVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author kwz
+ * @date 2021/3/10
+ * @time 12:57
+ */
+@Setter
+@Getter
+public class SearchConceptVO {
+    @ApiModelProperty(value="名称")
+    private String name;
+    /**
+     * 词性id
+     */
+    @ApiModelProperty(value="词性id")
+    private List<Integer> libTypes;
+    /**
+     * 需要排除的概念id集合
+     */
+    @ApiModelProperty(value="需要排除的概念id集合")
+    private List<Long> excludedConceptIds;
+}

+ 15 - 0
cdssman-service/src/main/java/com/diagbot/vo/TreeVO.java

@@ -0,0 +1,15 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/3/10 17:01
+ */
+@Getter
+@Setter
+public class TreeVO {
+    private Integer type;
+}

+ 10 - 2
cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java

@@ -1,6 +1,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;
@@ -10,6 +11,7 @@ import com.diagbot.dto.RespDTO;
 import com.diagbot.facade.KlConceptFacade;
 import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
+import com.diagbot.vo.KlConceptClearVO;
 import com.diagbot.vo.KlConceptInfoVO;
 import com.diagbot.vo.KlConceptSaveVO;
 import io.swagger.annotations.Api;
@@ -56,10 +58,16 @@ public class KlConceptController {
     @ApiOperation(value = "新增和修改基础术语详情[by:wangfeng]")
     @PostMapping("/saveConceptInfo")
     @SysLogger("saveConceptInfo")
-    @Transactional
+    @DSTransactional
     public RespDTO<Boolean> saveConceptInfos(@RequestBody KlConceptSaveVO klConceptSaveVO) {
         return RespDTO.onSuc(klConceptFacade.saveConceptInfo(klConceptSaveVO));
     }
-
+    @ApiOperation(value = "删除同义词[by:wangfeng]")
+    @PostMapping("/clearConceptInfo")
+    @SysLogger("clearConceptInfo")
+    @DSTransactional
+    public RespDTO<Boolean> clearConceptInfos(@RequestBody @Valid KlConceptClearVO klConceptClearVO) {
+        return RespDTO.onSuc(klConceptFacade.clearConceptInfo(klConceptClearVO));
+    }
 
 }

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java

@@ -5,10 +5,15 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.DiseaseDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlConceptFacade;
 import com.diagbot.facade.KlDiseaseFacade;
+import com.diagbot.facade.RelationContactFacade;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
+import com.diagbot.vo.KlRelationSaveVO;
+import com.diagbot.vo.SearchConceptVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -35,6 +41,10 @@ import javax.validation.Valid;
 public class KlDiseaseController {
     @Autowired
     KlDiseaseFacade klDiseaseFacade;
+    @Autowired
+    KlConceptFacade klConceptFacade;
+    @Autowired
+    RelationContactFacade relationContactFacade;
 
     @ApiOperation(value = "分页获取基础术语维护列表[by:kongwz]")
     @PostMapping("/getDiseasePage")
@@ -50,4 +60,21 @@ public class KlDiseaseController {
         DiseaseDetailDTO diagnoseDetailSaveDTO = klDiseaseFacade.getDetail(getDiseaseDetailVO);
         return RespDTO.onSuc(diagnoseDetailSaveDTO);
     }
+
+    @ApiOperation(value = "查询诊断依据相关的类型术语[by:kongwz]")
+    @PostMapping("/searchConcept")
+    @SysLogger("searchConcept")
+    public RespDTO<GetAllForRelationDTO> searchConcept(@Valid @RequestBody SearchConceptVO searchConceptVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = klConceptFacade.searchConceptByNameAndLibType(searchConceptVO);
+        return RespDTO.onSuc(getAllForRelationDTOS);
+    }
+
+    @ApiOperation(value = "诊断依据保存[by:kongwz]")
+    @PostMapping("/save")
+    @SysLogger("save")
+    public RespDTO<Boolean> save(@Valid @RequestBody List<KlRelationSaveVO> klRelationSaveVOs) {
+        Boolean aBoolean = relationContactFacade.saveRelation(klRelationSaveVOs);
+        return RespDTO.onSuc(aBoolean);
+    }
+
 }

+ 15 - 10
cdssman-service/src/main/java/com/diagbot/web/TreeContactController.java

@@ -4,13 +4,18 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.RelationNodeDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.TreeAllDTO;
+import com.diagbot.dto.TreeDTO;
 import com.diagbot.facade.KlConceptFacade;
+import com.diagbot.facade.KlRelationFacade;
 import com.diagbot.facade.RelationContactFacade;
-import com.diagbot.vo.*;
+import com.diagbot.vo.GetAllForRelationVO;
+import com.diagbot.vo.KlRelationSaveVO;
+import com.diagbot.vo.RelationContactDetailVO;
+import com.diagbot.vo.TreeVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-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;
@@ -33,6 +38,8 @@ public class TreeContactController {
     private RelationContactFacade relationContactFacade;
     @Autowired
     private KlConceptFacade klConceptFacade;
+    @Autowired
+    private KlRelationFacade klRelationFacade;
 
 
     @ApiOperation(value = "知识库标准化-树形结构维护相关API-详情(根据类别查询)[by:kongwz]")
@@ -42,9 +49,12 @@ public class TreeContactController {
         return RespDTO.onSuc(relationContactFacade.relationContactDetail(relationContactDetailVO));
     }
 
-    /*public RespDTO<RelationNodeDTO> relationContactDetail(@Valid @RequestBody KlRelationVO klRelationVO) {
-        return RespDTO.onSuc(relationContactFacade.relationContactDetail(klRelationVO));
-    }*/
+    @ApiOperation(value = "知识库标准化-树形结构维护相关API-详情(根据类别查询)[by:kongwz]")
+    @PostMapping("/getTree")
+    @SysLogger("getTree")
+    public RespDTO<TreeAllDTO> getTree(@RequestBody TreeVO treeVO) {
+        return RespDTO.onSuc(klRelationFacade.getTree(treeVO));
+    }
 
     @ApiOperation(value = "知识库标准化-获取所有概念(术语关系维护时筛选使用)[by:kongwz]")
     @PostMapping("/getAllForRelation")
@@ -56,14 +66,9 @@ public class TreeContactController {
     @ApiOperation(value = "知识库标准化-医学术语多层关联维护-添加或者编辑[by:kongwz]")
     @PostMapping("/addRelation")
     @SysLogger("addRelation")
-    /*public RespDTO<Boolean> addRelation(@Valid @RequestBody KlRelationNodeVO klRelationNodeVO) {
-        return RespDTO.onSuc(relationContactFacade.addRelation(klRelationNodeVO));
-    }*/
-
     public RespDTO<Boolean> addRelation(@Valid @RequestBody List<KlRelationSaveVO> klRelationSaveVOs) {
         return RespDTO.onSuc(relationContactFacade.addRelation(klRelationSaveVOs));
     }
 
 
-
 }

+ 39 - 0
cdssman-service/src/main/resources/mapper/KlRelationMapper.xml

@@ -41,6 +41,45 @@
         AND c.`status` = 1
     </select>
 
+    <select id="getRelations" parameterType="com.diagbot.vo.RelationVO" resultType="com.diagbot.dto.RelationDTO">
+        SELECT
+            a.id AS sId,
+            a.lib_name AS sName,
+            a.lib_type AS sType,
+            b.relation_id AS rId,
+            c.id AS eId,
+            c.lib_name AS eName,
+            c.lib_type AS eType
+        FROM
+            kl_concept a,
+            kl_relation b,
+            kl_concept c,
+            kl_relation_order d
+        WHERE
+            a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND a.id = b.start_id
+        AND c.id = b.end_id
+        <if test="sType!=null">
+            AND a.lib_type = #{sType}
+        </if>
+        <if test="rId!=null">
+            AND b.relation_id = #{rId}
+        </if>
+        <if test="eType!=null">
+            AND c.lib_type = #{eType}
+        </if>
+        AND a.`status` = 1
+        AND b.`status` = 1
+        AND c.`status` = 1
+        AND b.id = d.t_relation_id
+        AND d.is_deleted = 'N'
+        ORDER BY
+            a.id,
+            d.order_no
+    </select>
+
     <select id="getRelationNodeDTOs" resultType="com.diagbot.dto.RelationNodeDTO">
         SELECT
         d.id AS conceptId,