Quellcode durchsuchen

Merge branch 'dev/neo2mysql20210120' into dev/diagnose20210315

wangfeng vor 4 Jahren
Ursprung
Commit
4ae9789de4
20 geänderte Dateien mit 732 neuen und 473 gelöschten Zeilen
  1. 195 0
      cdssman-service/src/main/java/com/diagbot/aggregate/CallIndicationAggregate.java
  2. 40 101
      cdssman-service/src/main/java/com/diagbot/aggregate/RuleTestAggregate.java
  3. 2 0
      cdssman-service/src/main/java/com/diagbot/dto/KlRuleInfoDTO.java
  4. 20 12
      cdssman-service/src/main/java/com/diagbot/entity/KlRulePlan.java
  5. 1 1
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java
  6. 14 24
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptStaticFacade.java
  7. 20 1
      cdssman-service/src/main/java/com/diagbot/facade/KlRuleFacade.java
  8. 10 3
      cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java
  9. 310 305
      cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java
  10. 4 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlRelationMapper.java
  11. 4 0
      cdssman-service/src/main/java/com/diagbot/service/KlRelationService.java
  12. 7 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlRelationServiceImpl.java
  13. 20 0
      cdssman-service/src/main/java/com/diagbot/vo/DisNameFindVO.java
  14. 2 2
      cdssman-service/src/main/java/com/diagbot/vo/KlConceptSaveVO.java
  15. 1 0
      cdssman-service/src/main/java/com/diagbot/vo/KlRuleInfoSaveVO.java
  16. 2 0
      cdssman-service/src/main/java/com/diagbot/vo/KlRuleMenuVO.java
  17. 1 0
      cdssman-service/src/main/java/com/diagbot/vo/KlRuleSatartOrdisaVO.java
  18. 9 0
      cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java
  19. 69 23
      cdssman-service/src/main/resources/mapper/KlRelationMapper.xml
  20. 1 1
      cdssman-service/src/main/resources/mapper/ResultRuleMapper.xml

+ 195 - 0
cdssman-service/src/main/java/com/diagbot/aggregate/CallIndicationAggregate.java

@@ -0,0 +1,195 @@
+package com.diagbot.aggregate;
+
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.IndicationDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.ResultRule;
+import com.diagbot.facade.MedSearchDataFacade;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.FastJsonUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.IndicationPushVO;
+import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.annotation.DataConsumer;
+import io.github.lvyahui8.spring.annotation.DataProvider;
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
+import lombok.extern.slf4j.Slf4j;
+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:zhaops
+ * @time: 2021/3/23 14:55
+ */
+@Component
+@Slf4j
+public class CallIndicationAggregate {
+    @Autowired
+    CdssCoreClient cdssCoreClient;
+    @Autowired
+    MedSearchDataFacade medSearchDataFacade;
+
+    @DataProvider("callIndication")
+    public List<ResultRule> callIndication(
+            @DataConsumer("callIndicationThread1") List<ResultRule> resultlist1,
+            @DataConsumer("callIndicationThread2") List<ResultRule> resultlist2,
+            @DataConsumer("callIndicationThread3") List<ResultRule> resultlist3,
+            @DataConsumer("callIndicationThread4") List<ResultRule> resultlist4) {
+
+        List<ResultRule> retList = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(resultlist1)) {
+            retList.addAll(resultlist1);
+        }
+        if (ListUtil.isNotEmpty(resultlist2)) {
+            retList.addAll(resultlist2);
+        }
+        if (ListUtil.isNotEmpty(resultlist3)) {
+            retList.addAll(resultlist3);
+        }
+        if (ListUtil.isNotEmpty(resultlist4)) {
+            retList.addAll(resultlist4);
+        }
+        return retList;
+    }
+
+    @DataProvider("callIndicationThread1")
+    public List<ResultRule> callIndicationThread1(@InvokeParameter("threadList1") List<ResultRule> threadList1,
+                                                  @InvokeParameter("hospitalId") Long hospitalId) {
+        return callIndicationExe(threadList1, hospitalId);
+    }
+
+    @DataProvider("callIndicationThread2")
+    public List<ResultRule> callIndicationThread2(@InvokeParameter("threadList2") List<ResultRule> threadList2,
+                                                  @InvokeParameter("hospitalId") Long hospitalId) {
+        return callIndicationExe(threadList2, hospitalId);
+    }
+
+    @DataProvider("callIndicationThread3")
+    public List<ResultRule> callIndicationThread3(@InvokeParameter("threadList3") List<ResultRule> threadList3,
+                                                  @InvokeParameter("hospitalId") Long hospitalId) {
+        return callIndicationExe(threadList3, hospitalId);
+    }
+
+    @DataProvider("callIndicationThread4")
+    public List<ResultRule> callIndicationThread4(@InvokeParameter("threadList4") List<ResultRule> threadList4,
+                                                  @InvokeParameter("hospitalId") Long hospitalId) {
+        return callIndicationExe(threadList4, hospitalId);
+    }
+
+    /**
+     * 开单合理性远程调用接口
+     *
+     * @param list
+     * @param hospitalId
+     * @return
+     */
+    public List<ResultRule> callIndicationExe(List<ResultRule> list, Long hospitalId) {
+        List<ResultRule> retList = Lists.newLinkedList();
+        if (ListUtil.isEmpty(list)) {
+            return retList;
+        }
+        Map<Long, List<ResultRule>> ruleMap = list
+                .stream()
+                .collect(Collectors.groupingBy(ResultRule::getRuleOrderNo));
+        for (Map.Entry<Long, List<ResultRule>> entry : ruleMap.entrySet()) {
+
+            if (entry.getValue().get(0).getSuccess() != null
+                    && entry.getValue().get(0).getSuccess().equals(0)) {
+                retList.addAll(entry.getValue());
+                continue;
+            }
+
+            Integer ruleType = entry.getValue().get(0).getRuleType();
+            IndicationPushVO indicationPushVO = medSearchDataFacade.createBillVO(entry.getValue(), hospitalId);
+
+            //入参
+            entry.getValue().forEach(result -> {
+                result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
+            });
+
+            RespDTO<IndicationDTO> respDTO = cdssCoreClient.indication(indicationPushVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                IndicationDTO data = respDTO.data;
+                //出参
+                entry.getValue().forEach(result -> {
+                    result.setOutputParams(FastJsonUtils.getBeanToJson(respDTO.data));
+                });
+                List<BillMsg> msgList = Lists.newLinkedList();
+                switch (ruleType) {
+                    case 1:
+                    case 6:
+                        msgList = data.getBillMsgList();
+                        break;
+                    case 2:
+                        msgList = data.getHighRiskList();
+                        break;
+                    case 3:
+                        msgList = data.getCriticalValList();
+                        break;
+                    case 4:
+                    case 5:
+                        msgList = data.getOtherList();
+                        break;
+                    default:
+                        break;
+                }
+
+                if (ListUtil.isEmpty(msgList)) {
+                    entry.getValue().forEach(result -> {
+                        result.setSuccess(0);
+                        result.setMessage("提醒信息未出现");
+                        retList.add(result);
+                    });
+                    continue;
+                }
+
+                Boolean success = false;
+                for (BillMsg msg : msgList) {
+                    if (!msg.getMsg().equals(entry.getValue().get(0).getExpectedOutput())) {
+                        continue;
+                    } else {
+                        success = true;
+                    }
+                    for (ResultRule result : entry.getValue()) {
+                        ResultRule saveResult = new ResultRule();
+                        BeanUtil.copyProperties(result, saveResult);
+                        saveResult.setOutput(msg.getMsg());
+                        if (saveResult.getOutput().equals(saveResult.getExpectedOutput())) {
+                            saveResult.setSuccess(1);
+                        } else {
+                            saveResult.setSuccess(0);
+                            saveResult.setMessage("提示内容与预期不符");
+                        }
+                        retList.add(saveResult);
+                    }
+                }
+                if (!success) {
+                    for (ResultRule result : entry.getValue()) {
+                        Integer count = 1;
+                        result.setSuccess(0);
+                        result.setMessage(result.getMessage() + "提示内容("
+                                + (count++) + "、"
+                                + msgList.stream().map(i -> i.getMsg()).collect(Collectors.joining(";" + (count++) + "、"))
+                                + ")与预期不符");
+                        retList.add(result);
+                    }
+                }
+            } else {
+                for (ResultRule result : entry.getValue()) {
+                    result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
+                    result.setSuccess(0);
+                    result.setMessage("远程调用推理接口失败");
+                    retList.add(result);
+                }
+            }
+        }
+        return retList;
+    }
+}

+ 40 - 101
cdssman-service/src/main/java/com/diagbot/aggregate/RuleTestAggregate.java

@@ -1,26 +1,20 @@
 package com.diagbot.aggregate;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.diagbot.client.CdssCoreClient;
-import com.diagbot.dto.BillMsg;
-import com.diagbot.dto.IndicationDTO;
-import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.ResultInfo;
 import com.diagbot.entity.ResultRule;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
 import com.diagbot.facade.MedRuleConvertFacade;
-import com.diagbot.facade.MedSearchDataFacade;
 import com.diagbot.facade.RunningInfoFacade;
 import com.diagbot.service.ResultInfoService;
 import com.diagbot.service.ResultRuleService;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.FastJsonUtils;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.RespDTOUtil;
-import com.diagbot.vo.IndicationPushVO;
 import com.diagbot.vo.RuleTestVO;
 import com.diagbot.vo.RunningInfoVO;
 import com.google.common.collect.Lists;
+import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
 import io.github.lvyahui8.spring.annotation.DataConsumer;
 import io.github.lvyahui8.spring.annotation.DataProvider;
 import io.github.lvyahui8.spring.annotation.InvokeParameter;
@@ -31,6 +25,7 @@ import org.springframework.stereotype.Component;
 import org.springframework.transaction.annotation.Transactional;
 
 import java.util.Date;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -43,8 +38,6 @@ import java.util.stream.Collectors;
 @Component
 @Slf4j
 public class RuleTestAggregate {
-    @Autowired
-    private CdssCoreClient cdssCoreClient;
     @Autowired
     @Qualifier("resultRuleServiceImpl")
     private ResultRuleService resultRuleService;
@@ -56,7 +49,7 @@ public class RuleTestAggregate {
     @Autowired
     private MedRuleConvertFacade medRuleConvertFacade;
     @Autowired
-    private MedSearchDataFacade medSearchDataFacade;
+    private DataBeanAggregateQueryFacade dataBeanAggregateQueryFacade;
 
     @DataProvider("ruleTest")
     public Boolean ruleTest(
@@ -231,7 +224,6 @@ public class RuleTestAggregate {
         return true;
     }
 
-
     /**
      * 开单合理性远程调用接口
      *
@@ -244,101 +236,48 @@ public class RuleTestAggregate {
         if (ListUtil.isEmpty(list)) {
             return retList;
         }
+
         Map<Long, List<ResultRule>> ruleMap = list
                 .stream()
                 .collect(Collectors.groupingBy(ResultRule::getRuleOrderNo));
-        for (Map.Entry<Long, List<ResultRule>> entry : ruleMap.entrySet()) {
-
-            if (entry.getValue().get(0).getSuccess() != null
-                    && entry.getValue().get(0).getSuccess().equals(0)) {
-                retList.addAll(entry.getValue());
-                continue;
-            }
-
-            Integer ruleType = entry.getValue().get(0).getRuleType();
-            IndicationPushVO indicationPushVO = medSearchDataFacade.createBillVO(entry.getValue(),hospitalId);
-
-            //入参
-            entry.getValue().forEach(result -> {
-                result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
-            });
-
-            RespDTO<IndicationDTO> respDTO = cdssCoreClient.indication(indicationPushVO);
-            if (RespDTOUtil.respIsOK(respDTO)) {
-                IndicationDTO data = respDTO.data;
-                //出参
-                entry.getValue().forEach(result -> {
-                    result.setOutputParams(FastJsonUtils.getBeanToJson(respDTO.data));
-                });
-                List<BillMsg> msgList = Lists.newLinkedList();
-                switch (ruleType) {
-                    case 1:
-                    case 6:
-                        msgList = data.getBillMsgList();
-                        break;
-                    case 2:
-                        msgList = data.getHighRiskList();
-                        break;
-                    case 3:
-                        msgList = data.getCriticalValList();
-                        break;
-                    case 4:
-                    case 5:
-                        msgList = data.getOtherList();
-                        break;
-                    default:
-                        break;
-                }
-
-                if (ListUtil.isEmpty(msgList)) {
-                    entry.getValue().forEach(result -> {
-                        result.setSuccess(0);
-                        result.setMessage("提醒信息未出现");
-                        retList.add(result);
-                    });
-                    continue;
-                }
 
-                Boolean success = false;
-                for (BillMsg msg : msgList) {
-                    if (!msg.getMsg().equals(entry.getValue().get(0).getExpectedOutput())) {
-                        continue;
-                    } else {
-                        success = true;
-                    }
-                    for (ResultRule result : entry.getValue()) {
-                        ResultRule saveResult = new ResultRule();
-                        BeanUtil.copyProperties(result, saveResult);
-                        saveResult.setOutput(msg.getMsg());
-                        if (saveResult.getOutput().equals(saveResult.getExpectedOutput())) {
-                            saveResult.setSuccess(1);
-                        } else {
-                            saveResult.setSuccess(0);
-                            saveResult.setMessage("提示内容与预期不符");
-                        }
-                        retList.add(saveResult);
-                    }
-                }
-                if (!success) {
-                    for (ResultRule result : entry.getValue()) {
-                        Integer count = 1;
-                        result.setSuccess(0);
-                        result.setMessage(result.getMessage() + "提示内容("
-                                + (count++) + "、"
-                                + msgList.stream().map(i -> i.getMsg()).collect(Collectors.joining(";" + (count++) + "、"))
-                                + ")与预期不符");
-                        retList.add(result);
-                    }
-                }
-            } else {
-                for (ResultRule result : entry.getValue()) {
-                    result.setInputParams(FastJsonUtils.getBeanToJson(indicationPushVO));
-                    result.setSuccess(0);
-                    result.setMessage("远程调用推理接口失败");
-                    retList.add(result);
+        List<ResultRule> threadList1 = Lists.newLinkedList();
+        List<ResultRule> threadList2 = Lists.newLinkedList();
+        List<ResultRule> threadList3 = Lists.newLinkedList();
+        List<ResultRule> threadList4 = Lists.newLinkedList();
+
+        if (ruleMap.size() >= 100) {
+            Integer averageNum = ruleMap.size() / 4;
+            Integer count = 0;
+            for (Map.Entry<Long, List<ResultRule>> entry : ruleMap.entrySet()) {
+                count++;
+                if (count < averageNum) {
+                    threadList1.addAll(entry.getValue());
+                } else if (count >= averageNum && count < averageNum * 2) {
+                    threadList2.addAll(entry.getValue());
+                } else if (count >= averageNum * 2 && count < averageNum * 3) {
+                    threadList3.addAll(entry.getValue());
+                } else if (count >= averageNum * 3) {
+                    threadList4.addAll(entry.getValue());
                 }
             }
+        } else {
+            threadList1.addAll(list);
+        }
+
+        try {
+            Map<String, Object> invokeParams = new HashMap<>();
+            invokeParams.put("threadList1", threadList1);
+            invokeParams.put("threadList2", threadList2);
+            invokeParams.put("threadList3", threadList3);
+            invokeParams.put("threadList4", threadList4);
+            invokeParams.put("hospitalId", hospitalId);
+            retList
+                    = dataBeanAggregateQueryFacade.get("callIndication", invokeParams, List.class);
+        } catch (Exception e) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR);
         }
+
         return retList;
     }
 

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

@@ -29,6 +29,8 @@ public class KlRuleInfoDTO {
      */
     private String modifier;
 
+    private String modifierName;
+
     /**
      * 提示概念id
      */

+ 20 - 12
cdssman-service/src/main/java/com/diagbot/entity/KlRulePlan.java

@@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -48,6 +49,7 @@ public class KlRulePlan implements Serializable {
      * 修改人,如果为0则表示纪录未修改
      */
     private String modifier;
+    private String planCode;
 
     /**
      * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
@@ -70,6 +72,8 @@ public class KlRulePlan implements Serializable {
      * 类型编码
      */
     private String code;
+
+    private Integer firstPlace;
     /**
      * 显示顺序
      */
@@ -77,6 +81,22 @@ public class KlRulePlan implements Serializable {
 
     private String remark;
 
+    public String getPlanCode() {
+        return planCode;
+    }
+
+    public void setPlanCode(String planCode) {
+        this.planCode = planCode;
+    }
+
+    public Integer getFirstPlace() {
+        return firstPlace;
+    }
+
+    public void setFirstPlace(Integer firstPlace) {
+        this.firstPlace = firstPlace;
+    }
+
     public Integer getNumber() {
         return number;
     }
@@ -92,7 +112,6 @@ public class KlRulePlan implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
-
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -100,7 +119,6 @@ public class KlRulePlan implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -108,7 +126,6 @@ public class KlRulePlan implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -116,7 +133,6 @@ public class KlRulePlan implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
-
     public String getCreator() {
         return creator;
     }
@@ -124,7 +140,6 @@ public class KlRulePlan implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
-
     public String getModifier() {
         return modifier;
     }
@@ -132,7 +147,6 @@ public class KlRulePlan implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
-
     public Long getRuleType() {
         return ruleType;
     }
@@ -140,7 +154,6 @@ public class KlRulePlan implements Serializable {
     public void setRuleType(Long ruleType) {
         this.ruleType = ruleType;
     }
-
     public Long getParentId() {
         return parentId;
     }
@@ -148,7 +161,6 @@ public class KlRulePlan implements Serializable {
     public void setParentId(Long parentId) {
         this.parentId = parentId;
     }
-
     public String getName() {
         return name;
     }
@@ -156,7 +168,6 @@ public class KlRulePlan implements Serializable {
     public void setName(String name) {
         this.name = name;
     }
-
     public Integer getType() {
         return type;
     }
@@ -164,7 +175,6 @@ public class KlRulePlan implements Serializable {
     public void setType(Integer type) {
         this.type = type;
     }
-
     public String getCode() {
         return code;
     }
@@ -172,7 +182,6 @@ public class KlRulePlan implements Serializable {
     public void setCode(String code) {
         this.code = code;
     }
-
     public Integer getOrderNo() {
         return orderNo;
     }
@@ -180,7 +189,6 @@ public class KlRulePlan implements Serializable {
     public void setOrderNo(Integer orderNo) {
         this.orderNo = orderNo;
     }
-
     public String getRemark() {
         return remark;
     }

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

@@ -116,7 +116,7 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                 .eq("lib_name", klConceptSaveVO.getLibName())
                 .ne("id", klConceptSaveVO.getConceptId() == null ? -1 : klConceptSaveVO.getConceptId()));
         if (count > 0) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该基础术语名称已存在");
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "医学标准术语名称已存在");
         }
         //校验
         KlConceptSaveSubVO paesubVO = new KlConceptSaveSubVO();

+ 14 - 24
cdssman-service/src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -1,17 +1,14 @@
 package com.diagbot.facade;
 
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
+import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.KlConceptStaticDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.entity.User;
-import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.KlConceptStaticServiceImpl;
-import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.ChangeStatusVO;
@@ -39,7 +36,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
     @Autowired
     private CdssCoreClient cdssCoreClient;
     @Autowired
-    private UserFacade userFacade;
+    private UserServiceClient userServiceClient;
 
     /**
      * 静态知识检索
@@ -91,28 +88,21 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
             page = respDTO.data;
         }
         List<KlConceptStaticDTO> records = page.getRecords();
-        List<Long> userIds = records.stream().map(KlConceptStaticDTO::getModifier)
+        List<String> userIds = records.stream().map(KlConceptStaticDTO::getModifier)
                 .distinct()
-                .map(Long::parseLong)
                 .collect(Collectors.toList());
-        List<User> users = userFacade.list(new QueryWrapper<User>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("id", userIds, false));
-        if (ListUtil.isNotEmpty(users)) {
-            Map<Long, String> userMap = users.stream().collect(Collectors.toMap(User::getId, User::getLinkman));
-            records.forEach(record -> {
-                if (userMap.containsKey(Long.valueOf(record.getModifier()))) {
-                    record.setModifier(userMap.get(Long.valueOf(record.getModifier())));
-                } else {
-                    record.setModifier("");
-                }
-            });
-
-        } else {
-            records.forEach(record -> {
-                record.setModifier("");
-            });
+        RespDTO<Map<String, String>> userRespDTO = userServiceClient.getUserInfoByIds(userIds);
+        if (RespDTOUtil.respIsNG(userRespDTO)) {
+            return page;
         }
+        Map<String, String> userMap = userRespDTO.data;
+        records.forEach(record -> {
+            if (userMap.containsKey(record.getModifier())) {
+                record.setModifier(userMap.get(record.getModifier()));
+            } else {
+                record.setModifier("");
+            }
+        });
         page.setRecords(records);
         return page;
     }

+ 20 - 1
cdssman-service/src/main/java/com/diagbot/facade/KlRuleFacade.java

@@ -3,6 +3,7 @@ package com.diagbot.facade;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
+import com.diagbot.client.UserServiceClient;
 import com.diagbot.dto.KlRuleByIdParDTO;
 import com.diagbot.dto.KlRuleInfoDTO;
 import com.diagbot.dto.RespDTO;
@@ -10,6 +11,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.KlRuleServiceImpl;
 import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.UserUtils;
 import com.diagbot.vo.KlRuleByIdVO;
 import com.diagbot.vo.KlRuleInfoClearVO;
 import com.diagbot.vo.KlRuleInfoSaveVO;
@@ -18,6 +20,10 @@ import com.diagbot.vo.KlRuleSatartOrdisaVO;
 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:zhaops
@@ -27,11 +33,21 @@ import org.springframework.stereotype.Component;
 public class KlRuleFacade extends KlRuleServiceImpl {
     @Autowired
     CdssCoreClient cdssCoreClient;
+    @Autowired
+    UserServiceClient userServiceClient;
 
     public Page<KlRuleInfoDTO> getKlRuleInfoPage(KlRuleInfoVO klRuleInfoVO) {
         RespDTO<Page<KlRuleInfoDTO>> klRuleInfoPages = cdssCoreClient.getKlRuleInfoPages(klRuleInfoVO);
         RespDTOUtil.respNGDeal(klRuleInfoPages, "获取分页获取规则维护列表数据失败");
-        return klRuleInfoPages.data;
+        Page<KlRuleInfoDTO> records = klRuleInfoPages.data;
+        List<String> userIds = records.getRecords().stream()
+                .map(i -> i.getModifier()).distinct().collect(Collectors.toList());
+        RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
+        RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
+        records.getRecords().forEach(i -> {
+            i.setModifierName(respDTO.data.get(i.getModifier()));
+        });
+        return records;
     }
 
     public KlRuleByIdParDTO getByIdRuleInfos(KlRuleByIdVO klRuleByIdVO) {
@@ -41,6 +57,7 @@ public class KlRuleFacade extends KlRuleServiceImpl {
     }
 
     public Boolean saveRuleInfos(KlRuleInfoSaveVO klRuleInfoSaveVO) {
+        klRuleInfoSaveVO.setModifier(UserUtils.getCurrentPrincipleID());
         RespDTO<Boolean> booleanRespDTO = cdssCoreClient.saveRuleInfoAll(klRuleInfoSaveVO);
         RespDTOUtil.respNGDeal(booleanRespDTO, "保存规则详情数据失败");
         return booleanRespDTO.data;
@@ -53,12 +70,14 @@ public class KlRuleFacade extends KlRuleServiceImpl {
     }
 
     public Boolean startOrDisableRule(KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        klRuleSatartOrdisaVO.setModifier(UserUtils.getCurrentPrincipleID());
         RespDTO<Boolean> booleanRespDTO = cdssCoreClient.disableRuleInfos(klRuleSatartOrdisaVO);
         RespDTOUtil.respNGDeal(booleanRespDTO, "停用规则失败");
         return booleanRespDTO.data;
     }
 
     public Boolean startRuleInfos(KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        klRuleSatartOrdisaVO.setModifier(UserUtils.getCurrentPrincipleID());
         RespDTO<Boolean> booleanRespDTO = cdssCoreClient.startRuleInfos(klRuleSatartOrdisaVO);
         RespDTOUtil.respNGDeal(booleanRespDTO, "启用规则失败");
         return booleanRespDTO.data;

+ 10 - 3
cdssman-service/src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -376,9 +376,16 @@ public class LisConfigFacade{
         RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
         List<String> lisNames = respLisDTO.data;
         for (int i = 0; i < lisConfigList.size(); i++) {
-            if (!lisPackNames.contains(lisConfigList.get(i).getUniqueName())
-                    && !lisNames.contains(lisConfigList.get(i).getUniqueName())) {
-                errorNumList.add(String.valueOf(i + 2));
+            if (StringUtil.isBlank(lisConfigList.get(i).getHisDetailName())) {
+                //检验套餐对应套餐
+                if (!lisPackNames.contains(lisConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
+            } else {
+                //检验细项对应细项
+                if (!lisNames.contains(lisConfigList.get(i).getUniqueName())) {
+                    errorNumList.add(String.valueOf(i + 2));
+                }
             }
         }
         if (ListUtil.isNotEmpty(errorNumList)) {

+ 310 - 305
cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java

@@ -1,305 +1,310 @@
-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.*;
-import com.diagbot.entity.KlConcept;
-import com.diagbot.entity.KlRelation;
-import com.diagbot.entity.KlRelationOrder;
-import com.diagbot.enums.IsDeleteEnum;
-import com.diagbot.enums.LexiconEnum;
-import com.diagbot.service.KlRelationService;
-import com.diagbot.service.impl.KlRelationOrderServiceImpl;
-import com.diagbot.service.impl.KlRelationServiceImpl;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.ListUtil;
-import com.diagbot.util.UserUtils;
-import com.diagbot.vo.*;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
-import org.springframework.stereotype.Component;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * @author kwz
- * @date 2021/3/3
- * @time 15:42
- */
-@Component
-public class RelationContactFacade extends KlRelationServiceImpl {
-    @Autowired
-    private UserServiceClient userServiceClient;
-    @Autowired
-    private KlConceptFacade klConceptFacade;
-    @Autowired
-    private KlRelationOrderFacade klRelationOrderFacade;
-    @Autowired
-    @Qualifier("klRelationServiceImpl")
-    private KlRelationService klRelationService;
-    @Autowired
-    @Qualifier("klRelationOrderServiceImpl")
-    private KlRelationOrderServiceImpl klRelationOrderServiceImpl;
-    @Autowired
-    KlDiseaseFacade klDiseaseFacade;
-
-
-
-    @DS("med")
-    @DSTransactional
-    public Boolean addRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
-        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
-            KlRelationSaveVO klRelationSaveVO = klRelationSaveVOs.get(0);
-            Long sid = klRelationSaveVO.getSid();
-            List<Long> conceptid = Lists.newArrayList(sid);
-            Integer rid = klRelationSaveVO.getRid();
-            List<Long> sids = new ArrayList<>();
-            List<RelationNameDTO> relationNameDTOs = this.getRelationNameDTOs(conceptid, rid);
-            if (ListUtil.isNotEmpty(relationNameDTOs)) {
-                for (RelationNameDTO red : relationNameDTOs) {
-                    Long startId = red.getStartId();
-                    Long medId = red.getEndId();
-                    if (!sids.contains(startId)) {
-                        sids.add(startId);
-                    }
-                    if (!sids.contains(medId)) {
-                        sids.add(medId);
-                    }
-                }
-            }
-            List<KlRelation> relationList = this.list(new QueryWrapper<KlRelation>()
-                    .in("start_id", sids)
-                    .eq("relation_id", rid));
-            List<Long> ids = relationList.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);
-            }
-            List<List<KlRelation>> relationGroupList = relationDataForAdd(klRelationSaveVOs);
-
-            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.setCreator(currentUser);
-                    relationOrder.setModifier(UserUtils.getCurrentPrincipleID());
-                    relationOrderList.add(relationOrder);
-                }
-            });
-            klRelationOrderServiceImpl.saveBatch(relationOrderList);
-
-        }
-
-        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();
-        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
-
-            for (KlRelationSaveVO kls : klRelationSaveVOs) {
-                Long sid = kls.getSid();
-                Integer rid = kls.getRid();
-                Long eid = kls.getEid();
-                Integer srid = kls.getSrid();
-                List<Long> eids = kls.getEids();
-                if (relationMap.containsKey(sid.toString() + "&" + rid.toString())) {
-                    List<KlRelation> klRelations_big = relationMap.get(sid.toString() + "&" + rid.toString());
-                    KlRelation klRelation = new KlRelation();
-                    klRelation.setStartId(sid);
-                    klRelation.setRelationId(rid);
-                    klRelation.setEndId(eid);
-                    klRelation.setStatus(1);
-                    klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
-                } else {
-                    List<KlRelation> klRelations_big = Lists.newArrayList();
-                    KlRelation klRelation = new KlRelation();
-                    klRelation.setStartId(sid);
-                    klRelation.setRelationId(rid);
-                    klRelation.setEndId(eid);
-                    klRelation.setStatus(1);
-                    klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
-                }
-                if (srid != null && ListUtil.isNotEmpty(eids)) {
-                    List<KlRelation> klRelations_sub = Lists.newArrayList();
-                    for (Long id : eids) {
-                        KlRelation klRelation = new KlRelation();
-                        klRelation.setStartId(eid);
-                        klRelation.setRelationId(srid);
-                        klRelation.setEndId(id);
-                        klRelation.setStatus(1);
-                        klRelations_sub.add(klRelation);
-                    }
-                    relationMap.put(eid.toString() + "&" + srid.toString(), klRelations_sub);
-                }
-            }
-        }
-        if (MapUtils.isNotEmpty(relationMap)) {
-            relationMap.forEach((x, y) -> {
-                relationList.add(y);
-            });
-        }
-
-        return relationList;
-    }
-
-
-
-    /**
-     * 删除某个诊断依据
-     * @param diseaseDeleteVO
-     * @return
-     */
-    @DS("med")
-    @DSTransactional
-    public Boolean deleteRelation(DiseaseDeleteVO diseaseDeleteVO) {
-        String disName = diseaseDeleteVO.getDisName();
-        if(StringUtils.isNotBlank(disName)){
-            List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("lib_name", disName.trim())
-                    .eq("lib_type", 100));
-            List<Long> ids = klConcepts.stream().map(x -> x.getId()).collect(Collectors.toList());
-            List<Integer> relations = Lists.newArrayList(501, 502, 503, 504, 505, 506, 507, 508);
-            List<KlRelation> klRelations = this.list(new QueryWrapper<KlRelation>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in(ListUtil.isNotEmpty(ids),"start_id", ids)
-                    .in(ListUtil.isNotEmpty(relations),"relation_id", relations));
-            List<Long> kids = klRelations.stream().map(x -> x.getId()).collect(Collectors.toList());
-            this.removeByIds(kids);
-            QueryWrapper<KlRelationOrder> relationOrderQe = new QueryWrapper<>();
-            relationOrderQe.in(ListUtil.isNotEmpty(kids),"t_relation_id", kids);
-            klRelationOrderFacade.remove(relationOrderQe);
-        }
-
-        return true;
-    }
-
-    /**
-     * 新增诊断依据
-     * @param diseaseDeleteVO
-     * @return
-     */
-    public List<KlConcept> addDisease(DiseaseDeleteVO diseaseDeleteVO) {
-        List<KlConcept> diseaseAll = klDiseaseFacade.getDiseaseAll(diseaseDeleteVO);
-        return diseaseAll;
-    }
-
-    public List<String> searchAndPosition(GetAllForRelationVO getAllForRelationVO) {
-        List<String> names = Lists.newArrayList();
-        String name = getAllForRelationVO.getName();
-        Long typeId = getAllForRelationVO.getTypeId();
-        List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .like("lib_name", name.trim())
-                .eq("lib_type", typeId));
-        names = klConcepts.stream().map(x -> x.getLibName()).collect(Collectors.toList());
-
-        return names;
-
-    }
-}
+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.GetAllForRelationDTO;
+import com.diagbot.dto.RelationNameDTO;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlRelation;
+import com.diagbot.entity.KlRelationOrder;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.KlRelationService;
+import com.diagbot.service.impl.KlRelationOrderServiceImpl;
+import com.diagbot.service.impl.KlRelationServiceImpl;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.DisNameFindVO;
+import com.diagbot.vo.DiseaseDeleteVO;
+import com.diagbot.vo.GetAllForRelationVO;
+import com.diagbot.vo.KlRelationSaveVO;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import org.apache.commons.collections4.MapUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import javax.validation.constraints.NotNull;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author kwz
+ * @date 2021/3/3
+ * @time 15:42
+ */
+@Component
+public class RelationContactFacade extends KlRelationServiceImpl {
+    @Autowired
+    private UserServiceClient userServiceClient;
+    @Autowired
+    private KlConceptFacade klConceptFacade;
+    @Autowired
+    private KlRelationOrderFacade klRelationOrderFacade;
+    @Autowired
+    @Qualifier("klRelationServiceImpl")
+    private KlRelationService klRelationService;
+    @Autowired
+    @Qualifier("klRelationOrderServiceImpl")
+    private KlRelationOrderServiceImpl klRelationOrderServiceImpl;
+    @Autowired
+    KlDiseaseFacade klDiseaseFacade;
+
+
+    @DS("med")
+    @DSTransactional
+    public Boolean addRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
+        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
+            KlRelationSaveVO klRelationSaveVO = klRelationSaveVOs.get(0);
+            Long sid = klRelationSaveVO.getSid();
+            List<Long> conceptid = Lists.newArrayList(sid);
+            Integer rid = klRelationSaveVO.getRid();
+            List<Long> sids = new ArrayList<>();
+            List<RelationNameDTO> relationNameDTOs = this.getRelationNameDTOs(conceptid, rid);
+            if (ListUtil.isNotEmpty(relationNameDTOs)) {
+                for (RelationNameDTO red : relationNameDTOs) {
+                    Long startId = red.getStartId();
+                    Long medId = red.getEndId();
+                    if (!sids.contains(startId)) {
+                        sids.add(startId);
+                    }
+                    if (!sids.contains(medId)) {
+                        sids.add(medId);
+                    }
+                }
+            }
+            List<KlRelation> relationList = this.list(new QueryWrapper<KlRelation>()
+                    .in("start_id", sids)
+                    .eq("relation_id", rid));
+            List<Long> ids = relationList.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);
+            }
+            List<List<KlRelation>> relationGroupList = relationDataForAdd(klRelationSaveVOs);
+
+            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.setCreator(currentUser);
+                    relationOrder.setModifier(UserUtils.getCurrentPrincipleID());
+                    relationOrderList.add(relationOrder);
+                }
+            });
+            klRelationOrderServiceImpl.saveBatch(relationOrderList);
+
+        }
+
+        return true;
+    }
+
+
+    @DS("med")
+    @DSTransactional
+    public Boolean saveRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
+        boolean res = false;
+        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);
+                res = 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);
+                });
+            });
+            res = 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);
+                }
+            });
+            res = klRelationOrderServiceImpl.saveBatch(relationOrderList);
+        }
+        return res;
+    }
+
+    private List<List<KlRelation>> relationDataForAdd(List<KlRelationSaveVO> klRelationSaveVOs) {
+        List<List<KlRelation>> relationList = Lists.newArrayList();
+        Map<String, List<KlRelation>> relationMap = Maps.newHashMap();
+        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
+
+            for (KlRelationSaveVO kls : klRelationSaveVOs) {
+                Long sid = kls.getSid();
+                Integer rid = kls.getRid();
+                Long eid = kls.getEid();
+                Integer srid = kls.getSrid();
+                List<Long> eids = kls.getEids();
+                if (relationMap.containsKey(sid.toString() + "&" + rid.toString())) {
+                    List<KlRelation> klRelations_big = relationMap.get(sid.toString() + "&" + rid.toString());
+                    KlRelation klRelation = new KlRelation();
+                    klRelation.setStartId(sid);
+                    klRelation.setRelationId(rid);
+                    klRelation.setEndId(eid);
+                    klRelation.setStatus(1);
+                    klRelations_big.add(klRelation);
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
+                } else {
+                    List<KlRelation> klRelations_big = Lists.newArrayList();
+                    KlRelation klRelation = new KlRelation();
+                    klRelation.setStartId(sid);
+                    klRelation.setRelationId(rid);
+                    klRelation.setEndId(eid);
+                    klRelation.setStatus(1);
+                    klRelations_big.add(klRelation);
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
+                }
+                if (srid != null && ListUtil.isNotEmpty(eids)) {
+                    List<KlRelation> klRelations_sub = Lists.newArrayList();
+                    for (Long id : eids) {
+                        KlRelation klRelation = new KlRelation();
+                        klRelation.setStartId(eid);
+                        klRelation.setRelationId(srid);
+                        klRelation.setEndId(id);
+                        klRelation.setStatus(1);
+                        klRelations_sub.add(klRelation);
+                    }
+                    relationMap.put(eid.toString() + "&" + srid.toString(), klRelations_sub);
+                }
+            }
+        }
+        if (MapUtils.isNotEmpty(relationMap)) {
+            relationMap.forEach((x, y) -> {
+                relationList.add(y);
+            });
+        }
+
+        return relationList;
+    }
+
+
+    /**
+     * 删除某个诊断依据
+     *
+     * @param diseaseDeleteVO
+     * @return
+     */
+    @DS("med")
+    @DSTransactional
+    public Boolean deleteRelation(DiseaseDeleteVO diseaseDeleteVO) {
+        String disName = diseaseDeleteVO.getDisName();
+        if (StringUtils.isNotBlank(disName)) {
+            List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("lib_name", disName.trim())
+                    .eq("lib_type", 100));
+            List<Long> ids = klConcepts.stream().map(x -> x.getId()).collect(Collectors.toList());
+            List<Integer> relations = Lists.newArrayList(501, 502, 503, 504, 505, 506, 507, 508);
+            List<KlRelation> klRelations = this.list(new QueryWrapper<KlRelation>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in(ListUtil.isNotEmpty(ids), "start_id", ids)
+                    .in(ListUtil.isNotEmpty(relations), "relation_id", relations));
+            List<Long> kids = klRelations.stream().map(x -> x.getId()).collect(Collectors.toList());
+            this.removeByIds(kids);
+            QueryWrapper<KlRelationOrder> relationOrderQe = new QueryWrapper<>();
+            relationOrderQe.in(ListUtil.isNotEmpty(kids), "t_relation_id", kids);
+            klRelationOrderFacade.remove(relationOrderQe);
+        }
+
+        return true;
+    }
+
+    /**
+     * 新增诊断依据
+     *
+     * @param diseaseDeleteVO
+     * @return
+     */
+    public List<KlConcept> addDisease(DiseaseDeleteVO diseaseDeleteVO) {
+        List<KlConcept> diseaseAll = klDiseaseFacade.getDiseaseAll(diseaseDeleteVO);
+        return diseaseAll;
+    }
+
+    public List<String> searchAndPosition(GetAllForRelationVO getAllForRelationVO) {
+        List<String> names = Lists.newArrayList();
+        String name = getAllForRelationVO.getName();
+        Long typeId = getAllForRelationVO.getTypeId();
+        List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .like("lib_name", name.trim())
+                .eq("lib_type", typeId));
+        names = klConcepts.stream().map(x -> x.getLibName()).collect(Collectors.toList());
+
+        return names;
+
+    }
+
+    public List<GetAllForRelationDTO> findDisNameAlls(DisNameFindVO disNameFindVO) {
+        return findDisNameAll(disNameFindVO);
+    }
+}

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

@@ -1,10 +1,12 @@
 package com.diagbot.mapper;
 
+import com.diagbot.dto.GetAllForRelationDTO;
 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.DisNameFindVO;
 import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
 import org.apache.ibatis.annotations.Param;
@@ -31,4 +33,6 @@ public interface KlRelationMapper extends BaseMapper<KlRelation> {
     List<RelationDTO> getRelations(RelationVO relationVO);
 
     List<RelationNameDTO> getRelationNameDTOs(@Param(value="conceptIds")List<Long> conceptIds,@Param(value="relationId")Integer relationId);
+
+    List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO);
 }

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

@@ -1,10 +1,12 @@
 package com.diagbot.service;
 
+import com.diagbot.dto.GetAllForRelationDTO;
 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.DisNameFindVO;
 import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
 import io.swagger.models.auth.In;
@@ -25,4 +27,6 @@ public interface KlRelationService extends IService<KlRelation> {
     List<RelationDTO> getRelations(RelationVO relationVO);
 
     List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds, Integer relationId);
+
+    List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO);
 }

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

@@ -2,12 +2,14 @@ package com.diagbot.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.GetAllForRelationDTO;
 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.DisNameFindVO;
 import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationVO;
 import org.apache.ibatis.annotations.Param;
@@ -38,4 +40,9 @@ public class KlRelationServiceImpl extends ServiceImpl<KlRelationMapper, KlRelat
     public List<RelationNameDTO> getRelationNameDTOs(List<Long> conceptIds,Integer relationId) {
         return baseMapper.getRelationNameDTOs(conceptIds,relationId);
     }
+
+    @Override
+    public List<GetAllForRelationDTO> findDisNameAll(DisNameFindVO disNameFindVO) {
+        return baseMapper.findDisNameAll(disNameFindVO);
+    }
 }

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/vo/DisNameFindVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-24 9:39
+ */
+@Setter
+@Getter
+public class DisNameFindVO {
+    @ApiModelProperty(value="名称")
+    @NotBlank(message = "请输入搜索名称")
+    private String diseaseName;
+}

+ 2 - 2
cdssman-service/src/main/java/com/diagbot/vo/KlConceptSaveVO.java

@@ -17,10 +17,10 @@ import java.util.List;
 public class KlConceptSaveVO {
     private Long conceptId;
     private Long libId;
-    @NotBlank(message = "请输入术语名称")
+    @NotBlank(message = "请输入医学标准术语名称")
     private String libName;
     private String spell;
-    @NotNull(message = "请输入术语词性type")
+    @NotNull(message = "请输入医学标准术语词性type")
     private Integer libType;
     private String synonymName;
     @NotNull(message = "请输入状态")

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

@@ -31,5 +31,6 @@ public class KlRuleInfoSaveVO {
     /*    private String parlibName;
         private String parLenName;
         private String parLenCode;*/
+    private String modifier;
     private List<KlRuleInfoSaveSubVO> klRuleInfoSaveSub;
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlRuleMenuVO.java

@@ -15,4 +15,6 @@ public class KlRuleMenuVO {
      * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
      */
     private Integer ruleType;
+
+    private String planCode;
 }

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

@@ -15,4 +15,5 @@ import javax.validation.constraints.NotNull;
 public class KlRuleSatartOrdisaVO {
     @NotNull(message = "请输id")
     private Long id;
+    private String modifier;
 }

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

@@ -100,4 +100,13 @@ public class KlDiseaseController {
         return RespDTO.onSuc(klConcepts);
     }
 
+    @ApiOperation(value = "搜索未添加的疾病医学术语名称[by:wangfeng]",
+            notes = "diseaseName:疾病医学术语名称 <br>")
+    @PostMapping("/findDisName")
+    @SysLogger("findDisName")
+    public RespDTO<GetAllForRelationDTO> findDisNames(@Valid @RequestBody DisNameFindVO disNameFindVO) {
+        List<GetAllForRelationDTO> klConcepts = relationContactFacade.findDisNameAlls(disNameFindVO);
+        return RespDTO.onSuc(klConcepts);
+    }
+
 }

+ 69 - 23
cdssman-service/src/main/resources/mapper/KlRelationMapper.xml

@@ -4,16 +4,16 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.KlRelation">
-        <id column="id" property="id" />
-        <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_create" property="gmtCreate" />
-        <result column="gmt_modified" property="gmtModified" />
-        <result column="creator" property="creator" />
-        <result column="modifier" property="modifier" />
-        <result column="start_id" property="startId" />
-        <result column="relation_id" property="relationId" />
-        <result column="end_id" property="endId" />
-        <result column="status" property="status" />
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="start_id" property="startId"/>
+        <result column="relation_id" property="relationId"/>
+        <result column="end_id" property="endId"/>
+        <result column="status" property="status"/>
     </resultMap>
 
     <select id="getMedClassMedList" resultType="com.diagbot.dto.MedClassMedDTO">
@@ -43,20 +43,20 @@
 
     <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
+        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
+        kl_concept a,
+        kl_relation b,
+        kl_concept c,
+        kl_relation_order d
         WHERE
-            a.is_deleted = 'N'
+        a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND c.is_deleted = 'N'
         AND a.id = b.start_id
@@ -76,7 +76,7 @@
         AND b.id = d.t_relation_id
         AND d.is_deleted = 'N'
         ORDER BY
-            d.order_no
+        d.order_no
     </select>
 
     <select id="getRelationNodeDTOs" resultType="com.diagbot.dto.RelationNodeDTO">
@@ -151,5 +151,51 @@
         WHERE
         m.medId = kc.id
     </select>
+    <select id="findDisNameAll" resultType="com.diagbot.dto.GetAllForRelationDTO">
+        SELECT DISTINCT
+        con.id AS conceptId,
+        con.lib_name AS conceptName,
+        con.lib_type AS libType,
+        le.name AS conceptNameType
+        FROM
+        (
+        SELECT
+        b.id AS conceptId,
+        b.lib_name AS disName
+        FROM
+        `kl_relation` a,
+        kl_concept b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.status = 1
+        AND b.status = 1
+        AND a.start_id = b.id
+        AND b.lib_type=100
+        AND a.relation_id IN (
+        501,
+        502,
+        503,
+        504,
+        505,
+        506,
+        507,
+        508
+        )
+        GROUP BY b.id
+        ) re
+        RIGHT JOIN kl_concept con
+        ON re.conceptId = con.id
+        LEFT JOIN kl_lexicon le ON con.`lib_type` = le.`code`
+        WHERE con.is_deleted = "N"
+        AND re.conceptId IS NULL
+        AND con.lib_type = 100
+        AND con.status= 1
+        <if test="diseaseName != null and diseaseName != ''">
+            AND UPPER(con.lib_name) LIKE CONCAT('%', UPPER(trim(#{diseaseName})), '%')
+        </if>
+        ORDER BY con.lib_name DESC
+
+    </select>
 
 </mapper>

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

@@ -96,7 +96,7 @@
             and find_in_set( #{resultRulePageVO.ruleBaseLibType},t.ruleBaseLibTypes )>0
         </if>
         <if test="resultRulePageVO.ruleBaseLibName != null and resultRulePageVO.ruleBaseLibName != ''">
-            and t.ruleBaseLibName like concat('%', #{resultRulePageVO.ruleBaseLibName}, '%')
+            and t.ruleBaseLibNames like concat('%', #{resultRulePageVO.ruleBaseLibName}, '%')
         </if>
         <if test="resultRulePageVO.message != null and resultRulePageVO.message != ''">
             and t.message like concat('%', #{resultRulePageVO.message}, '%')