浏览代码

Merge branch 'dev/neo2mysql20210120' into innerDevelop

gaodm 4 年之前
父节点
当前提交
938b981fb4
共有 41 个文件被更改,包括 1825 次插入73 次删除
  1. 114 9
      src/main/java/com/diagbot/client/CdssCoreClient.java
  2. 149 9
      src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  3. 19 10
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  4. 19 10
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  5. 42 0
      src/main/java/com/diagbot/dto/GetAllForRelationDTO.java
  6. 43 0
      src/main/java/com/diagbot/dto/KlConceptDetailDTO.java
  7. 63 0
      src/main/java/com/diagbot/dto/KlConceptStaticDTO.java
  8. 27 0
      src/main/java/com/diagbot/dto/KlRuleByIdParDTO.java
  9. 31 0
      src/main/java/com/diagbot/dto/KlRuleByIdSubDTO.java
  10. 65 0
      src/main/java/com/diagbot/dto/KlRuleInfoDTO.java
  11. 5 0
      src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java
  12. 3 0
      src/main/java/com/diagbot/entity/DrugConfig.java
  13. 18 0
      src/main/java/com/diagbot/entity/KlRuleMenuWrapper.java
  14. 218 0
      src/main/java/com/diagbot/entity/KlRulePlan.java
  15. 3 0
      src/main/java/com/diagbot/entity/LisConfig.java
  16. 8 0
      src/main/java/com/diagbot/facade/ConceptInfoFacade.java
  17. 246 0
      src/main/java/com/diagbot/facade/KlConceptStaticFacade.java
  18. 28 0
      src/main/java/com/diagbot/facade/KlDictionaryInfoFacade.java
  19. 62 0
      src/main/java/com/diagbot/facade/KlRuleFacade.java
  20. 28 0
      src/main/java/com/diagbot/facade/KlRulePlanFacade.java
  21. 8 3
      src/main/java/com/diagbot/facade/LisConfigFacade.java
  22. 19 13
      src/main/java/com/diagbot/facade/PushFacade.java
  23. 13 2
      src/main/java/com/diagbot/util/CoreUtil.java
  24. 3 0
      src/main/java/com/diagbot/vo/ChangeStatusVO.java
  25. 18 0
      src/main/java/com/diagbot/vo/GetDetailVO.java
  26. 47 0
      src/main/java/com/diagbot/vo/KlConceptDetailVO.java
  27. 33 0
      src/main/java/com/diagbot/vo/KlConceptStaticPageVO.java
  28. 51 0
      src/main/java/com/diagbot/vo/KlConceptStaticVO.java
  29. 18 0
      src/main/java/com/diagbot/vo/KlRuleByIdVO.java
  30. 18 0
      src/main/java/com/diagbot/vo/KlRuleInfoClearVO.java
  31. 30 0
      src/main/java/com/diagbot/vo/KlRuleInfoSaveSubVO.java
  32. 36 0
      src/main/java/com/diagbot/vo/KlRuleInfoSaveVO.java
  33. 30 0
      src/main/java/com/diagbot/vo/KlRuleInfoVO.java
  34. 20 0
      src/main/java/com/diagbot/vo/KlRuleMenuVO.java
  35. 18 0
      src/main/java/com/diagbot/vo/KlRuleSatartOrdisaVO.java
  36. 33 0
      src/main/java/com/diagbot/vo/SearchConceptVO.java
  37. 26 17
      src/main/java/com/diagbot/web/ConceptInfoController.java
  38. 35 0
      src/main/java/com/diagbot/web/KlDictionaryConller.java
  39. 48 0
      src/main/java/com/diagbot/web/KlDiseaseController.java
  40. 87 0
      src/main/java/com/diagbot/web/KlRuleController.java
  41. 43 0
      src/main/java/com/diagbot/web/KlRulePlanController.java

+ 114 - 9
src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -1,26 +1,29 @@
 package com.diagbot.client;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.hystrix.CdssCoreHystrix;
+import com.diagbot.dto.ConceptDetailDTO;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.IndicationDTO;
+import com.diagbot.dto.KlConceptStaticDTO;
+import com.diagbot.dto.KlRuleByIdParDTO;
+import com.diagbot.dto.KlRuleInfoDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushPlanDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.vo.ConceptVO;
-import com.diagbot.vo.HasStaticKnowledgeVO;
-import com.diagbot.vo.IndicationPushVO;
-import com.diagbot.vo.PushPlanVO;
-import com.diagbot.vo.PushVO;
-import com.diagbot.vo.RetrievalVO;
-import com.diagbot.vo.StaticKnowledgeIndexVO;
-import com.diagbot.vo.StaticKnowledgeNameVO;
+import com.diagbot.entity.KlRuleMenuWrapper;
+import com.diagbot.vo.*;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: CDSS核心类客户端
@@ -95,5 +98,107 @@ public interface CdssCoreClient {
      */
     @PostMapping("/staticKnowledge/getSuperNameBatch")
     RespDTO<List<StaticKnowledgeNameVO>> getSuperNameBatch(@Valid @RequestBody List<StaticKnowledgeNameVO> staticKnowledgeNameVO);
-}
 
+    /**
+     * 根据名称和类型获取静态知识内容
+     *
+     * @param staticKnowledgeVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getStaticKnowledge")
+    RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody StaticKnowledgeVO staticKnowledgeVO);
+
+    /**
+     * 分页查询
+     *
+     * @param klConceptStaticPageVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getPage")
+    RespDTO<Page<KlConceptStaticDTO>> getPage(@Valid @RequestBody KlConceptStaticPageVO klConceptStaticPageVO);
+
+    /**
+     * 保存静态知识
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/saveOrUpdateRecord")
+    RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO);
+
+    /**
+     * 静态知识启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/changeStatus")
+    RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO);
+
+    /**
+     * 根据id获取静态知识
+     *
+     * @param idVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getRecordById")
+    RespDTO<KlConceptStaticDTO> getRecordById(@Valid @RequestBody IdVO idVO);
+
+    /**
+     * 静态知识是否已存在
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/isExist")
+    RespDTO<Boolean> isExist(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO);
+
+    /**
+     * 推理结果匹配静态知识
+     *
+     * @param getDetailVO
+     * @return
+     */
+    @PostMapping("/kl/conceptStatic/getDetailByConcept")
+    RespDTO<Map<String, List<ConceptDetailDTO>>> getDetailByConcept(@Valid @RequestBody GetDetailVO getDetailVO);
+
+    /**
+     * 获取规则下拉菜单信息
+     *
+     * @param klRuleMenuVO
+     * @return
+     */
+    @PostMapping("/klRulePlan/getMenu")
+    RespDTO<List<KlRuleMenuWrapper>> getMenus(@RequestBody KlRuleMenuVO klRuleMenuVO);
+
+    //"分页获取规则维护列表
+    @PostMapping("/klRule/getKlRuleInfoPage")
+    RespDTO<Page<KlRuleInfoDTO>> getKlRuleInfoPages(@RequestBody KlRuleInfoVO klRuleInfoVO);
+
+
+    //根据规则Id获取规则详情
+    @PostMapping("/klRule/getByIdRuleInfo")
+    RespDTO<KlRuleByIdParDTO> getByIdRuleInfoAll(@RequestBody @Valid KlRuleByIdVO klRuleByIdVO);
+
+    //保存规则详情[
+    @PostMapping("/klRule/saveRuleInfo")
+    RespDTO<Boolean> saveRuleInfoAll(@RequestBody @Valid KlRuleInfoSaveVO klRuleInfoSaveVO);
+
+    //刪除规则详情
+    @PostMapping("/klRule/clearRuleInfo")
+    RespDTO<Boolean> clearRuleInfoAll(@RequestBody @Valid KlRuleInfoClearVO klRuleInfoClearVO);
+
+    //停用规则
+    @PostMapping("/klRule/disableRuleInfo")
+    RespDTO<Boolean> disableRuleInfos(@RequestBody @Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO);
+
+    //启用规则
+    @PostMapping("/klRule/startRuleInfo")
+    RespDTO<Boolean> startRuleInfos(@RequestBody @Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO);
+
+    @PostMapping("/kl/dictionary/getDictionaryInfo")
+    RespDTO<Map<Long, List<DictionaryInfoDTO>>> getDictionaryAll();
+
+    @PostMapping("/klDisease/searchConcept")
+    RespDTO<List<GetAllForRelationDTO>> searchConcept(@Valid @RequestBody SearchConceptVO searchConceptVO);
+}

+ 149 - 9
src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -1,26 +1,29 @@
 package com.diagbot.client.hystrix;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.ConceptDetailDTO;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.IndicationDTO;
+import com.diagbot.dto.KlConceptStaticDTO;
+import com.diagbot.dto.KlRuleByIdParDTO;
+import com.diagbot.dto.KlRuleInfoDTO;
 import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushPlanDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.vo.ConceptVO;
-import com.diagbot.vo.HasStaticKnowledgeVO;
-import com.diagbot.vo.IndicationPushVO;
-import com.diagbot.vo.PushPlanVO;
-import com.diagbot.vo.PushVO;
-import com.diagbot.vo.RetrievalVO;
-import com.diagbot.vo.StaticKnowledgeIndexVO;
-import com.diagbot.vo.StaticKnowledgeNameVO;
+import com.diagbot.entity.KlRuleMenuWrapper;
+import com.diagbot.vo.*;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
 import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 病历质控客户端(请求失败熔断)
@@ -123,4 +126,141 @@ public class CdssCoreHystrix implements CdssCoreClient {
         log.error("【hystrix】调用{}异常", "getSuperNameBatch");
         return null;
     }
-}
+
+    /**
+     * 根据名称和类型获取静态知识内容
+     *
+     * @param staticKnowledgeVO
+     * @return
+     */
+    @Override
+    public RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody StaticKnowledgeVO staticKnowledgeVO) {
+        log.error("【hystrix】调用{}异常", "getStaticKnowledge");
+        return null;
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param klConceptStaticPageVO
+     * @return
+     */
+    @Override
+    public RespDTO<Page<KlConceptStaticDTO>> getPage(@Valid @RequestBody KlConceptStaticPageVO klConceptStaticPageVO) {
+        log.error("【hystrix】调用{}异常", "getPage");
+        return null;
+    }
+
+    /**
+     * 保存静态知识
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    @Override
+    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {
+        log.error("【hystrix】调用{}异常", "saveOrUpdateRecord");
+        return null;
+    }
+
+    /**
+     * 静态知识启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    @Override
+    public RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
+        log.error("【hystrix】调用{}异常", "changeStatus");
+        return null;
+    }
+
+    /**
+     * 根据id获取静态知识
+     *
+     * @param idVO
+     * @return
+     */
+    @Override
+    public RespDTO<KlConceptStaticDTO> getRecordById(@Valid @RequestBody IdVO idVO) {
+        log.error("【hystrix】调用{}异常", "getRecordById");
+        return null;
+    }
+
+    /**
+     * 静态知识是否已存在
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    @Override
+    public RespDTO<Boolean> isExist(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {
+        log.error("【hystrix】调用{}异常", "isExist");
+        return null;
+    }
+
+    /**
+     * 推理结果匹配静态知识
+     *
+     * @param getDetailVO
+     * @return
+     */
+    public RespDTO<Map<String, List<ConceptDetailDTO>>> getDetailByConcept(@Valid @RequestBody GetDetailVO getDetailVO) {
+        log.error("【hystrix】调用{}异常", "getDetailByConcept");
+        return null;
+    }
+
+    @Override
+    public RespDTO<List<KlRuleMenuWrapper>> getMenus(KlRuleMenuVO klRuleMenuVO) {
+        log.error("【hystrix】调用{}异常", "getMenus");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Page<KlRuleInfoDTO>> getKlRuleInfoPages(KlRuleInfoVO klRuleInfoVO) {
+        log.error("【hystrix】调用{}异常", "getKlRuleInfoPages");
+        return null;
+    }
+
+    @Override
+    public RespDTO<KlRuleByIdParDTO> getByIdRuleInfoAll(@Valid KlRuleByIdVO klRuleByIdVO) {
+        log.error("【hystrix】调用{}异常", "getByIdRuleInfoAll");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> saveRuleInfoAll(@Valid KlRuleInfoSaveVO klRuleInfoSaveVO) {
+        log.error("【hystrix】调用{}异常", "saveRuleInfoAll");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> clearRuleInfoAll(@Valid KlRuleInfoClearVO klRuleInfoClearVO) {
+        log.error("【hystrix】调用{}异常", "clearRuleInfoAll");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> disableRuleInfos(@Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        log.error("【hystrix】调用{}异常", "disableRuleInfos");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> startRuleInfos(@Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        log.error("【hystrix】调用{}异常", "startRuleInfos");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Map<Long, List<DictionaryInfoDTO>>> getDictionaryAll() {
+        log.error("【hystrix】调用{}异常", "getDictionaryAll");
+        return null;
+    }
+
+    @Override
+    public RespDTO<List<GetAllForRelationDTO>> searchConcept(@Valid SearchConceptVO searchConceptVO) {
+        log.error("【hystrix】调用{}异常", "searchConcept");
+        return null;
+    }
+}

+ 19 - 10
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -136,16 +136,16 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 //.antMatchers("/sys/plan/revStopPlans").permitAll()
                 .antMatchers("/sys/tokenHospital/getTokenHospital").permitAll()
                 .antMatchers("/demo/retrieval/index").permitAll()
-                .antMatchers("/graph/conceptInfo/staticKnowledgeIndex").permitAll()
-                .antMatchers("/graph/conceptInfo/staticKnowledgeIndexWithoutInfo").permitAll()
-                .antMatchers("/graph/conceptInfo/getStaticKnowledge").permitAll()
-                .antMatchers("/graph/conceptInfo/getStaticKnowledgeForHIS").permitAll()
-                .antMatchers("/graph/conceptInfo/getPage").permitAll()
-                //.antMatchers("/graph/conceptInfo/saveOrUpdateRecord").permitAll()
-                //.antMatchers("/graph/conceptInfo/changeStatus").permitAll()
-                .antMatchers("/graph/conceptInfo/isExist").permitAll()
-                .antMatchers("/graph/conceptInfo/getRecordById").permitAll()
-                .antMatchers("/graph/conceptInfo/updateHasInfoStatusBatch").permitAll()
+                .antMatchers("/kl/conceptInfo/staticKnowledgeIndex").permitAll()
+                .antMatchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo").permitAll()
+                .antMatchers("/kl/conceptInfo/getStaticKnowledge").permitAll()
+                .antMatchers("/kl/conceptInfo/getStaticKnowledgeForHIS").permitAll()
+                .antMatchers("/kl/conceptInfo/getPage").permitAll()
+                //.antMatchers("/kl/conceptInfo/saveOrUpdateRecord").permitAll()
+                //.antMatchers("/kl/conceptInfo/changeStatus").permitAll()
+                .antMatchers("/kl/conceptInfo/isExist").permitAll()
+                .antMatchers("/kl/conceptInfo/getRecordById").permitAll()
+                .antMatchers("/kl/conceptInfo/updateHasInfoStatusBatch").permitAll()
                 .antMatchers("/sys/planDetail/getPlanDetailDatas").permitAll()
                 //.antMatchers("/sys/planDetail/savePlanDetails").permitAll()
                 //.antMatchers("/sys/planDetail/cancelPlanDetails").permitAll()
@@ -161,6 +161,15 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/demo/mrtestInfo/importExcel").permitAll()
                 .antMatchers("/demo/mrtestInfo/exportExcel").permitAll()
                 .antMatchers("/demo/mrtestInfo/mrTestProcess").permitAll()
+                .antMatchers("/kl/dictionary/getDictionarys").permitAll()
+                .antMatchers("/klRulePlan/getMenu").permitAll()
+                .antMatchers("/klRule/getKlRuleInfoPage").permitAll()
+                .antMatchers("/klRule/getByIdRuleInfo").permitAll()
+                .antMatchers("/klRule/saveRuleInfo").permitAll()
+                .antMatchers("/klRule/clearRuleInfo").permitAll()
+                .antMatchers("/klRule/disableRuleInfo").permitAll()
+                .antMatchers("/klRule/startRuleInfo").permitAll()
+                .antMatchers("/klDisease/searchConcept").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 19 - 10
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -178,16 +178,16 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 //|| matchers("/sys/plan/revStopPlans", request)
                 || matchers("/sys/tokenHospital/getTokenHospital", request)
                 || matchers("/demo/retrieval/index", request)
-                || matchers("/graph/conceptInfo/staticKnowledgeIndex", request)
-                || matchers("/graph/conceptInfo/staticKnowledgeIndexWithoutInfo", request)
-                || matchers("/graph/conceptInfo/getStaticKnowledge", request)
-                || matchers("/graph/conceptInfo/getStaticKnowledgeForHIS", request)
-                || matchers("/graph/conceptInfo/getPage", request)
-                //|| matchers("/graph/conceptInfo/saveOrUpdateRecord", request)
-                //|| matchers("/graph/conceptInfo/changeStatus", request)
-                || matchers("/graph/conceptInfo/isExist", request)
-                || matchers("/graph/conceptInfo/getRecordById", request)
-                || matchers("/graph/conceptInfo/updateHasInfoStatusBatch", request)
+                || matchers("/kl/conceptInfo/staticKnowledgeIndex", request)
+                || matchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo", request)
+                || matchers("/kl/conceptInfo/getStaticKnowledge", request)
+                || matchers("/kl/conceptInfo/getStaticKnowledgeForHIS", request)
+                || matchers("/kl/conceptInfo/getPage", request)
+                //|| matchers("/kl/conceptInfo/saveOrUpdateRecord", request)
+                //|| matchers("/kl/conceptInfo/changeStatus", request)
+                || matchers("/kl/conceptInfo/isExist", request)
+                || matchers("/kl/conceptInfo/getRecordById", request)
+                || matchers("/kl/conceptInfo/updateHasInfoStatusBatch", request)
                 || matchers("/sys/planDetail/getPlanDetailDatas", request)
                 /*|| matchers("/sys/planDetail/savePlanDetails", request)
                 || matchers("/sys/planDetail/cancelPlanDetails", request)
@@ -203,6 +203,15 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/demo/mrtestInfo/importExcel", request)
                 || matchers("/demo/mrtestInfo/exportExcel", request)
                 || matchers("/demo/mrtestInfo/mrTestProcess", request)
+                || matchers("/kl/dictionary/getDictionarys", request)
+                || matchers("/klRulePlan/getMenu", request)
+                || matchers("/klRule/getKlRuleInfoPage", request)
+                || matchers("/klRule/getByIdRuleInfo", request)
+                || matchers("/klRule/saveRuleInfo", request)
+                || matchers("/klRule/clearRuleInfo", request)
+                || matchers("/klRule/disableRuleInfo", request)
+                || matchers("/klRule/startRuleInfo", request)
+                || matchers("/klDisease/searchConcept", request)
                 || matchers("/", request)) {
             return true;
         }

+ 42 - 0
src/main/java/com/diagbot/dto/GetAllForRelationDTO.java

@@ -0,0 +1,42 @@
+package com.diagbot.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-17 15:23
+ */
+@Setter
+@Getter
+public class GetAllForRelationDTO {
+    /**
+     * 概念id
+     */
+    @ApiModelProperty(value="概念id")
+    private Long conceptId;
+
+    /**
+     * 概念名称
+     */
+    @ApiModelProperty(value="概念名称")
+    private String conceptName;
+
+    /**
+     * 概念id
+     */
+    @ApiModelProperty(value="概念id")
+    private Integer libType;
+
+    /**
+     * 概念名称(类型)
+     */
+    @ApiModelProperty(value="概念名称(类型)")
+    private String conceptNameType;
+
+
+
+}
+

+ 43 - 0
src/main/java/com/diagbot/dto/KlConceptDetailDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 13:39
+ */
+@Getter
+@Setter
+public class KlConceptDetailDTO {
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     */
+    private String contentType;
+}

+ 63 - 0
src/main/java/com/diagbot/dto/KlConceptStaticDTO.java

@@ -0,0 +1,63 @@
+package com.diagbot.dto;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 13:38
+ */
+@Getter
+@Setter
+public class KlConceptStaticDTO {
+    /**
+     * 术语id
+     */
+    private Long id;
+    /**
+     * 术语名称
+     */
+    private String name;
+    /**
+     * 关联标题
+     */
+    private String title;
+    /**
+     * 术语类型(词性)
+     */
+    private Integer type;
+    /**
+     * 术语类型(词性)
+     */
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+    /**
+     * 修改时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date gmtModified;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 启用状态
+     */
+    private Integer status;
+    /**
+     * 明细
+     */
+    List<KlConceptDetailDTO> details;
+}

+ 27 - 0
src/main/java/com/diagbot/dto/KlRuleByIdParDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-08 13:18
+ */
+@Setter
+@Getter
+public class KlRuleByIdParDTO {
+    private Long parId;
+    private String parDescription;//规则名称
+    private Integer parRuleType;//规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+    private Long parConceptId;//提示概念id
+    private String parlibName;
+    private Integer parHasSub;//是否有子条件(0:无,1:有)
+    private String parMsg;//附加信息
+    private Integer parStatus;//启用状态(0:禁用,1:启用)
+    private String parLenName;
+    private String parLenCode;
+    private List<KlRuleByIdSubDTO>  klRuleByIdSub;
+}

+ 31 - 0
src/main/java/com/diagbot/dto/KlRuleByIdSubDTO.java

@@ -0,0 +1,31 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-08 13:16
+ */
+@Setter
+@Getter
+public class KlRuleByIdSubDTO {
+    private Long subId;//基础规则id
+    private String subDescription;//基础规则名称
+    private Long subConceptId;//医学标准术语id
+    private String subLibName;//医学标准术语
+    private String subLenName;//基础规则术语类型
+    private String subLenCode;//基础规则术语编码
+    private Integer subType;//基础规则类型(1:开单外等于术语本身;2:开单外存在比较;3:开单外不等于术语本身;4:过敏原;5:开单项;6:检查结果正则表达式)
+    private Integer groupType;
+    private String subMinOperator;//最小域比较符
+    private String subMinValue;//最小域值
+    private String subMinUnit;//最小域单位
+    private String subMaxOperator;//最大域比较符
+    private String subMaxValue;//最大域值
+    private String subMaxUnit;//最大域单位
+    private String subEqOperator;//等于域比较符
+    private String subEqValue;//等于域值
+    private String subEqUnit;//等于域单位
+}

+ 65 - 0
src/main/java/com/diagbot/dto/KlRuleInfoDTO.java

@@ -0,0 +1,65 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-05 13:44
+ */
+@Setter
+@Getter
+public class KlRuleInfoDTO {
+
+    /**
+     * 主键
+     */
+    private Long parId;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 提示概念id
+     */
+    private Long parConceptId;
+
+    private String parConceptName;
+
+
+    private String parLibTypeName;
+    /**
+     * 描述
+     */
+    private String parDescription;
+
+    /**
+     * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+     */
+    private Integer parRuleType;
+
+    /**
+     * 是否有子条件(0:无,1:有)
+     */
+    private Integer parHasSub;
+
+    /**
+     * 启用状态(0:禁用,1:启用)
+     */
+    private Integer parStatus;
+
+    /**
+     * 附加信息
+     */
+    private String parMsg;
+}

+ 5 - 0
src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java

@@ -55,4 +55,9 @@ public class StaticKnowledgeIndexDTO {
      * 是否有治疗方案静态知识
      */
     private Integer hasTreatInfo = 0;
+    /**
+     * 启用禁用
+     */
+    private Integer status;
+
 }

+ 3 - 0
src/main/java/com/diagbot/entity/DrugConfig.java

@@ -1,7 +1,9 @@
 package com.diagbot.entity;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 
@@ -86,6 +88,7 @@ public class DrugConfig implements Serializable {
      * 剂型
      */
     @Excel(name = "药品剂型", width = 60, orderNum = "3", isImportField = "true")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String form;
 
     public Long getId() {

+ 18 - 0
src/main/java/com/diagbot/entity/KlRuleMenuWrapper.java

@@ -0,0 +1,18 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-09 10:20
+ */
+@Getter
+@Setter
+public class KlRuleMenuWrapper extends KlRulePlan {
+    private List<KlRuleMenuWrapper> subMenuList = new ArrayList<>();
+}

+ 218 - 0
src/main/java/com/diagbot/entity/KlRulePlan.java

@@ -0,0 +1,218 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+import java.time.LocalDateTime;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2021-03-09
+ */
+public class KlRulePlan implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 资源ID
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+    private String planCode;
+
+    /**
+     * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+     */
+    private Long ruleType;
+
+    /**
+     * -1:表示顶级,其他值表示上级菜单的id
+     */
+    private Long parentId;
+
+    /**
+     * 基础规则类型
+     */
+    private String name;
+
+    private Integer type;
+    private Integer number;
+    /**
+     * 类型编码
+     */
+    private String code;
+
+    private Integer firstPlace;
+    /**
+     * 显示顺序
+     */
+    private Integer orderNo;
+
+    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;
+    }
+
+    public void setNumber(Integer number) {
+        this.number = number;
+    }
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getRuleType() {
+        return ruleType;
+    }
+
+    public void setRuleType(Long ruleType) {
+        this.ruleType = ruleType;
+    }
+    public Long getParentId() {
+        return parentId;
+    }
+
+    public void setParentId(Long parentId) {
+        this.parentId = parentId;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+    public String getCode() {
+        return code;
+    }
+
+    public void setCode(String code) {
+        this.code = code;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "KlRulePlan{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", ruleType=" + ruleType +
+                ", parentId=" + parentId +
+                ", name=" + name +
+                ", type=" + type +
+                ", code=" + code +
+                ", orderNo=" + orderNo +
+                ", remark=" + remark +
+                "}";
+    }
+}

+ 3 - 0
src/main/java/com/diagbot/entity/LisConfig.java

@@ -1,7 +1,9 @@
 package com.diagbot.entity;
 
 import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.FieldStrategy;
 import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
 import lombok.Data;
@@ -72,6 +74,7 @@ public class LisConfig implements Serializable {
      * 检验细项
      */
     @Excel(name = "检验细项", width = 40, orderNum = "2", isImportField = "true")
+    @TableField(updateStrategy = FieldStrategy.IGNORED)
     private String hisDetailName;
 
     /**

+ 8 - 0
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -7,6 +7,7 @@ import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.ConceptInfoDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeDetailDTO;
@@ -33,6 +34,7 @@ import com.diagbot.vo.ConceptInfoPageVO;
 import com.diagbot.vo.ConceptInfoVO;
 import com.diagbot.vo.HasStaticKnowledgeVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.SearchConceptVO;
 import com.diagbot.vo.StaticKnowledgeHISVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import com.diagbot.vo.StaticKnowledgeNameVO;
@@ -990,4 +992,10 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         }
         return true;
     }
+
+    public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO) {
+        RespDTO<List<GetAllForRelationDTO>> relationDTORespDTO = cdssCoreClient.searchConcept(searchConceptVO);
+        RespDTOUtil.respNGDeal(relationDTORespDTO, "查询诊断依据相关的类型术语失败");
+        return relationDTORespDTO.data;
+    }
 }

+ 246 - 0
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -0,0 +1,246 @@
+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.dto.KlConceptStaticDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StaticKnowledgeDTO;
+import com.diagbot.dto.StaticKnowledgeHISDTO;
+import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.entity.SysUser;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.ChangeStatusVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.KlConceptStaticPageVO;
+import com.diagbot.vo.KlConceptStaticVO;
+import com.diagbot.vo.StaticKnowledgeHISVO;
+import com.diagbot.vo.StaticKnowledgeIndexVO;
+import com.diagbot.vo.StaticKnowledgeVO;
+import com.google.common.collect.Lists;
+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/2/23 15:41
+ */
+@Component
+public class KlConceptStaticFacade {
+
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
+    @Autowired
+    private DictionaryFacade dictionaryFacade;
+    @Autowired
+    private ConceptInfoFacade conceptInfoFacade;
+    @Autowired
+    private SysUserFacade sysUserFacade;
+
+
+    /**
+     * 静态知识检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    public List<StaticKnowledgeIndexDTO> staticKnowledgeIndex(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        List<StaticKnowledgeIndexDTO> retList = Lists.newLinkedList();
+
+        RespDTO<List<StaticKnowledgeIndexDTO>> respDTO = cdssCoreClient.staticKnowledgeIndex(staticKnowledgeIndexVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            retList = respDTO.data;
+        }
+
+        if (staticKnowledgeIndexVO.getHasInfo() != null && staticKnowledgeIndexVO.getHasInfo().equals(1)) {
+            retList = retList.stream().filter(i -> i.getStatus().equals(1)).collect(Collectors.toList());
+        }
+        return retList;
+    }
+
+
+    /**
+     * 获取静态知识
+     *
+     * @param staticKnowledgeVO
+     * @return
+     */
+    public StaticKnowledgeDTO getStaticKnowledge(StaticKnowledgeVO staticKnowledgeVO) {
+        StaticKnowledgeDTO staticKnowledgeDTO = new StaticKnowledgeDTO();
+
+        RespDTO<StaticKnowledgeDTO> respDTO = cdssCoreClient.getStaticKnowledge(staticKnowledgeVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            staticKnowledgeDTO = respDTO.data;
+        }
+        return staticKnowledgeDTO;
+    }
+
+    /**
+     * 医院端获取静态知识(对接)
+     *
+     * @param staticKnowledgeHISVO
+     * @return
+     */
+    public List<StaticKnowledgeHISDTO> getStaticKnowledgeForHIS(StaticKnowledgeHISVO staticKnowledgeHISVO) {
+
+        List<StaticKnowledgeHISDTO> retList = Lists.newArrayList();
+
+        //术语映射
+        List<String> uniqueNameList = conceptInfoFacade.getUniqueNames(staticKnowledgeHISVO);
+        if (ListUtil.isEmpty(uniqueNameList)) {
+            return retList;
+        }
+
+        for (String uniqueName : uniqueNameList) {
+            StaticKnowledgeVO staticKnowledgeVO = new StaticKnowledgeVO();
+            BeanUtil.copyProperties(staticKnowledgeHISVO, staticKnowledgeVO);
+            staticKnowledgeVO.setName(uniqueName);
+            StaticKnowledgeDTO staticKnowledgeDTO = getStaticKnowledge(staticKnowledgeVO);
+            //检验检查大小项互取静态知识
+            if (staticKnowledgeDTO == null) {
+                if (staticKnowledgeHISVO.getType() != null) {
+                    switch (staticKnowledgeHISVO.getType()) {
+                        case 3:
+                            staticKnowledgeVO.setType(4);
+                            break;
+                        case 4:
+                            staticKnowledgeVO.setType(3);
+                            break;
+                        case 5:
+                            staticKnowledgeVO.setType(6);
+                            break;
+                        case 6:
+                            staticKnowledgeVO.setType(5);
+                            break;
+                        default:
+                            break;
+                    }
+                    staticKnowledgeDTO = getStaticKnowledge(staticKnowledgeVO);
+                }
+            }
+            if (staticKnowledgeDTO != null) {
+                StaticKnowledgeHISDTO staticKnowledgeHISDTO = new StaticKnowledgeHISDTO();
+                BeanUtil.copyProperties(staticKnowledgeDTO, staticKnowledgeHISDTO);
+                staticKnowledgeHISDTO.setHisName(staticKnowledgeHISVO.getHisName());
+                staticKnowledgeHISDTO.setHisDetailName(staticKnowledgeHISVO.getHisDetailName());
+                retList.add(staticKnowledgeHISDTO);
+            }
+        }
+        return retList;
+    }
+
+    /**
+     * 分页查询
+     *
+     * @param klConceptStaticPageVO
+     * @return
+     */
+    public IPage<KlConceptStaticDTO> getPage(KlConceptStaticPageVO klConceptStaticPageVO) {
+        Page<KlConceptStaticDTO> page = null;
+        RespDTO<Page<KlConceptStaticDTO>> respDTO = cdssCoreClient.getPage(klConceptStaticPageVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            page = respDTO.data;
+        }
+        List<KlConceptStaticDTO> records = page.getRecords();
+        List<Long> userIds = records.stream().map(KlConceptStaticDTO::getModifier)
+                .distinct()
+                .map(Long::parseLong)
+                .collect(Collectors.toList());
+        List<SysUser> users = sysUserFacade.list(new QueryWrapper<SysUser>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("id", userIds, false));
+        if (ListUtil.isNotEmpty(users)) {
+            Map<Long, String> userMap = users.stream().collect(Collectors.toMap(SysUser::getId, SysUser::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("");
+            });
+        }
+        page.setRecords(records);
+        return page;
+    }
+
+    /**
+     * 保存记录(新增or修改)
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(KlConceptStaticVO klConceptStaticVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        klConceptStaticVO.setUserId(Long.valueOf(userId));
+
+        Boolean success = false;
+        RespDTO<Boolean> respDTO = cdssCoreClient.saveOrUpdateRecord(klConceptStaticVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            success = respDTO.data;
+        }
+        return success;
+    }
+
+    /**
+     * 启用禁用
+     *
+     * @param changeStatusVO
+     * @return
+     */
+    public Boolean changeStatus(ChangeStatusVO changeStatusVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        changeStatusVO.setUserId(Long.valueOf(userId));
+
+        Boolean success = false;
+        RespDTO<Boolean> respDTO = cdssCoreClient.changeStatus(changeStatusVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            success = respDTO.data;
+        }
+        return success;
+    }
+
+    /**
+     * 根据术语id获取静态信息
+     *
+     * @param idVO
+     * @return
+     */
+    public KlConceptStaticDTO getRecordById(IdVO idVO) {
+        KlConceptStaticDTO klConceptStaticDTO = new KlConceptStaticDTO();
+        RespDTO<KlConceptStaticDTO> respDTO = cdssCoreClient.getRecordById(idVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            klConceptStaticDTO = respDTO.data;
+        }
+        return klConceptStaticDTO;
+    }
+
+    /**
+     * 是否已存在
+     *
+     * @param klConceptStaticVO
+     * @return
+     */
+    public Boolean isExist(KlConceptStaticVO klConceptStaticVO) {
+        Boolean exist = false;
+        RespDTO<Boolean> respDTO = cdssCoreClient.isExist(klConceptStaticVO);
+        if (RespDTOUtil.respIsOK(respDTO)) {
+            exist = respDTO.data;
+        }
+        return exist;
+    }
+}

+ 28 - 0
src/main/java/com/diagbot/facade/KlDictionaryInfoFacade.java

@@ -0,0 +1,28 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-17 13:34
+ */
+@Component
+public class KlDictionaryInfoFacade {
+    @Autowired
+    CdssCoreClient cdssCoreClient;
+
+    public Map<Long, List<DictionaryInfoDTO>> getListByGroupType() {
+        RespDTO<Map<Long, List<DictionaryInfoDTO>>> dictionaryAll = cdssCoreClient.getDictionaryAll();
+        RespDTOUtil.respNGDeal(dictionaryAll, "获取字典表信息数据失败");
+        return dictionaryAll.data;
+    }
+}

+ 62 - 0
src/main/java/com/diagbot/facade/KlRuleFacade.java

@@ -0,0 +1,62 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.KlRuleByIdParDTO;
+import com.diagbot.dto.KlRuleInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.KlRuleByIdVO;
+import com.diagbot.vo.KlRuleInfoClearVO;
+import com.diagbot.vo.KlRuleInfoSaveVO;
+import com.diagbot.vo.KlRuleInfoVO;
+import com.diagbot.vo.KlRuleSatartOrdisaVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author: wangfeng
+ * @time: 2021/3/1 16:20
+ */
+@Component
+public class KlRuleFacade {
+    @Autowired
+    CdssCoreClient cdssCoreClient;
+
+    public Page<KlRuleInfoDTO> getKlRuleInfoPage(KlRuleInfoVO klRuleInfoVO) {
+        RespDTO<Page<KlRuleInfoDTO>> klRuleInfoPages = cdssCoreClient.getKlRuleInfoPages(klRuleInfoVO);
+        RespDTOUtil.respNGDeal(klRuleInfoPages, "获取分页获取规则维护列表数据失败");
+        return klRuleInfoPages.data;
+    }
+
+    public KlRuleByIdParDTO getByIdRuleInfos(KlRuleByIdVO klRuleByIdVO) {
+        RespDTO<KlRuleByIdParDTO> byIdRuleInfoAll = cdssCoreClient.getByIdRuleInfoAll(klRuleByIdVO);
+        RespDTOUtil.respNGDeal(byIdRuleInfoAll, "获取规则详情数据失败");
+        return byIdRuleInfoAll.data;
+    }
+
+    public Boolean saveRuleInfos(KlRuleInfoSaveVO klRuleInfoSaveVO) {
+        RespDTO<Boolean> booleanRespDTO = cdssCoreClient.saveRuleInfoAll(klRuleInfoSaveVO);
+        RespDTOUtil.respNGDeal(booleanRespDTO, "保存规则详情数据失败");
+        return booleanRespDTO.data;
+    }
+
+    public Boolean clearRuleInfos(KlRuleInfoClearVO klRuleInfoClearVO) {
+        RespDTO<Boolean> booleanRespDTO = cdssCoreClient.clearRuleInfoAll(klRuleInfoClearVO);
+        RespDTOUtil.respNGDeal(booleanRespDTO, "刪除规则详情数据失败");
+        return booleanRespDTO.data;
+    }
+
+    public Boolean startOrDisableRule(KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        RespDTO<Boolean> booleanRespDTO = cdssCoreClient.disableRuleInfos(klRuleSatartOrdisaVO);
+        RespDTOUtil.respNGDeal(booleanRespDTO, "停用规则失败");
+        return booleanRespDTO.data;
+    }
+
+    public Boolean startRuleInfos(KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        RespDTO<Boolean> booleanRespDTO = cdssCoreClient.startRuleInfos(klRuleSatartOrdisaVO);
+        RespDTOUtil.respNGDeal(booleanRespDTO, "启用规则失败");
+        return booleanRespDTO.data;
+    }
+}

+ 28 - 0
src/main/java/com/diagbot/facade/KlRulePlanFacade.java

@@ -0,0 +1,28 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.KlRuleMenuWrapper;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.vo.KlRuleMenuVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-09 15:30
+ */
+@Component
+public class KlRulePlanFacade {
+    @Autowired
+    CdssCoreClient cdssCoreClient;
+
+    public List<KlRuleMenuWrapper> getMenu(KlRuleMenuVO klRuleMenuVO) {
+        RespDTO<List<KlRuleMenuWrapper>> menus = cdssCoreClient.getMenus(klRuleMenuVO);
+        RespDTOUtil.respNGDeal(menus, "获取规则下拉菜单信息数据失败");
+        return menus.data;
+    }
+}

+ 8 - 3
src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -372,9 +372,14 @@ 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)) {

+ 19 - 13
src/main/java/com/diagbot/facade/PushFacade.java

@@ -2,6 +2,7 @@ package com.diagbot.facade;
 
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.ConceptDetailDTO;
 import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.IndicationDTO;
 import com.diagbot.dto.PushBaseDTO;
@@ -9,12 +10,12 @@ import com.diagbot.dto.PushDTO;
 import com.diagbot.dto.PushPlanDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.TreatDTO;
-import com.diagbot.entity.ConceptDetail;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.vo.GetDetailVO;
 import com.diagbot.vo.IndicationPushVO;
 import com.diagbot.vo.PushPlanVO;
 import com.diagbot.vo.PushVO;
@@ -131,8 +132,6 @@ public class PushFacade {
         List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
         Map<Integer, String> dicStaticTypeValNameMap =
                 EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        Map<String, Integer> dicStaticTypeNameValMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "name", "val");
 
         if (ListUtil.isNotEmpty(pushDTO.getLis())) {
             conceptBaseList.addAll(pushDTO.getLis());
@@ -158,7 +157,14 @@ public class PushFacade {
                     .map(i -> i.getName())
                     .collect(Collectors.toList());
 
-            Map<String, List<ConceptDetail>> conceptDetailMap = conceptInfoFacade.getDetailByConcept(conceptNameList, Arrays.asList(new Integer[] { 1, 2, 3 }));
+            GetDetailVO getDetailVO = new GetDetailVO();
+            getDetailVO.setNameList(conceptNameList);
+            getDetailVO.setContentTypes(Arrays.asList(new Integer[] { 1, 2, 3 }));
+            RespDTO<Map<String, List<ConceptDetailDTO>>> respDTO = cdssCoreClient.getDetailByConcept(getDetailVO);
+            if (RespDTOUtil.respIsNG(respDTO)) {
+                return pushDTO;
+            }
+            Map<String, List<ConceptDetailDTO>> conceptDetailMap = respDTO.data;
             if (pushDTO.getDis() != null) {
                 for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getDis().entrySet()) {
                     if (ListUtil.isNotEmpty(entry.getValue())) {
@@ -182,11 +188,6 @@ public class PushFacade {
                     if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("5"))) {
                         item.setHasInfo(1);
                     }
-                    /*if (item.getHasInfo().equals(0)) {
-                        if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("6))) {
-                            item.setHasInfo(1);
-                        }
-                    }*/
                 });
             }
             if (ListUtil.isNotEmpty(pushDTO.getMedicines())) {
@@ -220,14 +221,19 @@ public class PushFacade {
         List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
         Map<Integer, String> dicStaticTypeValNameMap =
                 EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        Map<String, Integer> dicStaticTypeNameValMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "name", "val");
         if (ListUtil.isNotEmpty(retGeneraTreat)) {
             List<String> conceptNameList = retGeneraTreat.stream()
                     .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
                     .map(i -> i.getUniqueName())
                     .collect(Collectors.toList());
-            Map<String, List<ConceptDetail>> conceptDetailMap = conceptInfoFacade.getDetailByConcept(conceptNameList, Arrays.asList(new Integer[] { 4 }));
+            GetDetailVO getDetailVO = new GetDetailVO();
+            getDetailVO.setNameList(conceptNameList);
+            getDetailVO.setContentTypes(Arrays.asList(new Integer[] { 4 }));
+            RespDTO<Map<String, List<ConceptDetailDTO>>> respDTO = cdssCoreClient.getDetailByConcept(getDetailVO);
+            if (RespDTOUtil.respIsNG(respDTO)) {
+                return retGeneraTreat;
+            }
+            Map<String, List<ConceptDetailDTO>> conceptDetailMap = respDTO.data;
             if (conceptDetailMap == null || conceptDetailMap.size() == 0) {
                 return retGeneraTreat;
             }
@@ -235,7 +241,7 @@ public class PushFacade {
                 if (StringUtil.isNotBlank(treatDTO.getUniqueName())) {
                     String key = treatDTO.getUniqueName() + "_" + dicStaticTypeValNameMap.get("1");
                     if (conceptDetailMap.containsKey(key)) {
-                        List<ConceptDetail> conceptDetailList = conceptDetailMap.get(key);
+                        List<ConceptDetailDTO> conceptDetailList = conceptDetailMap.get(key);
                         treatDTO.setGeneraTreat(conceptDetailList
                                 .stream()
                                 .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("4"))

+ 13 - 2
src/main/java/com/diagbot/util/CoreUtil.java

@@ -23,8 +23,8 @@ public class CoreUtil {
             if (StringUtil.isEmpty(ageStr)) {
                 return 20.0;
             }
-            // 全是整形数字,当成年龄处理
-            if (numbersOnly(ageStr)) {
+            // 数值,当成年龄处理
+            if (isNumbers(ageStr)) {
                 return Double.parseDouble(ageStr);
             }
             // 20日
@@ -81,6 +81,17 @@ public class CoreUtil {
         return str.matches(regex);
     }
 
+    /**
+     * 判断字符串是否数值(正)
+     *
+     * @param str
+     * @return
+     */
+    public static boolean isNumbers(String str) {
+        String regex = "[0-9]+|([0-9]+\\.)+[0-9]*|[0-9]*(\\.[0-9]+)+";
+        return str.matches(regex);
+    }
+
     /**
      * 判断年龄字符串:xx月
      *

+ 3 - 0
src/main/java/com/diagbot/vo/ChangeStatusVO.java

@@ -1,5 +1,6 @@
 package com.diagbot.vo;
 
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -13,4 +14,6 @@ import lombok.Setter;
 public class ChangeStatusVO {
     private Long id;
     private Integer status;
+    @ApiModelProperty(hidden = true)
+    private Long userId;
 }

+ 18 - 0
src/main/java/com/diagbot/vo/GetDetailVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/3/19 13:33
+ */
+@Getter
+@Setter
+public class GetDetailVO {
+    List<String> nameList;
+    List<Integer> contentTypes;
+}

+ 47 - 0
src/main/java/com/diagbot/vo/KlConceptDetailVO.java

@@ -0,0 +1,47 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 15:03
+ */
+@Getter
+@Setter
+public class KlConceptDetailVO {
+    /**
+     * 明细id
+     */
+    private Long id;
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径,4-治疗方案
+     */
+    private String contentType;
+}

+ 33 - 0
src/main/java/com/diagbot/vo/KlConceptStaticPageVO.java

@@ -0,0 +1,33 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 13:41
+ */
+@Getter
+@Setter
+public class KlConceptStaticPageVO extends Page {
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private Integer type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 启用状态
+     */
+    private Integer status;
+}

+ 51 - 0
src/main/java/com/diagbot/vo/KlConceptStaticVO.java

@@ -0,0 +1,51 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/2/24 15:03
+ */
+@Getter
+@Setter
+public class KlConceptStaticVO {
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private Integer type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 静态知识明细
+     */
+    private List<KlConceptDetailVO> details;
+
+    /**
+     * 操作id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long userId;
+}

+ 18 - 0
src/main/java/com/diagbot/vo/KlRuleByIdVO.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-08 11:11
+ */
+@Setter
+@Getter
+public class KlRuleByIdVO {
+    @NotNull(message = "请输id")
+    private Long id;
+}

+ 18 - 0
src/main/java/com/diagbot/vo/KlRuleInfoClearVO.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-08 13:46
+ */
+@Setter
+@Getter
+public class KlRuleInfoClearVO {
+    @NotNull(message = "请输id")
+    private Long id;
+}

+ 30 - 0
src/main/java/com/diagbot/vo/KlRuleInfoSaveSubVO.java

@@ -0,0 +1,30 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-08 13:38
+ */
+@Setter
+@Getter
+public class KlRuleInfoSaveSubVO {
+    private String subDescription;//基础规则名称
+    private Long subConceptId;//医学标准术语id
+/*    private String subLibName;//医学标准术语
+    private String subLenName;//基础规则术语类型
+    private String subLenCode;//基础规则术语编码*/
+    private Integer subType;//基础规则类型(1:开单外等于术语本身;2:开单外存在比较;3:开单外不等于术语本身;4:过敏原;5:开单项;6:检查结果正则表达式)
+    private Integer groupType;
+    private String subMinOperator;//最小域比较符
+    private String subMinValue;//最小域值
+    private String subMinUnit;//最小域单位
+    private String subMaxOperator;//最大域比较符
+    private String subMaxValue;//最大域值
+    private String subMaxUnit;//最大域单位
+    private String subEqOperator;//等于域比较符
+    private String subEqValue;//等于域值
+    private String subEqUnit;//等于域单位
+}

+ 36 - 0
src/main/java/com/diagbot/vo/KlRuleInfoSaveVO.java

@@ -0,0 +1,36 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-08 13:37
+ */
+@Setter
+@Getter
+public class KlRuleInfoSaveVO {
+    private Long parId;
+    @NotBlank(message = "请输入规则名称")
+    private String parDescription;//规则名称
+    @NotNull(message = "请输入规则类型")
+    private Integer parRuleType;//规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+    @NotNull(message = "请输入概念id")
+    private Long parConceptId;//提示概念id
+    @NotNull(message = "请输入概念id")
+    private Integer parHasSub;//是否有子条件(0:无,1:有)
+    private String parMsg;//附加信息
+    @ApiModelProperty(hidden = true)
+    private Integer parStatus = 1;//启用状态(0:禁用,1:启用)
+    /*    private String parlibName;
+        private String parLenName;
+        private String parLenCode;*/
+    private String modifier;
+    private List<KlRuleInfoSaveSubVO> klRuleInfoSaveSub;
+}

+ 30 - 0
src/main/java/com/diagbot/vo/KlRuleInfoVO.java

@@ -0,0 +1,30 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-05 13:44
+ */
+@Setter
+@Getter
+public class KlRuleInfoVO extends Page {
+    /**
+     * 描述
+     */
+    private String parDescription;
+    /**
+     * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+     */
+    private Integer parRuleType;
+
+    private String parConceptName;
+    /**
+     * 启用状态(0:禁用,1:启用)
+     */
+    private Integer parStatus;
+
+}

+ 20 - 0
src/main/java/com/diagbot/vo/KlRuleMenuVO.java

@@ -0,0 +1,20 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-09 13:35
+ */
+@Setter
+@Getter
+public class KlRuleMenuVO {
+    /**
+     * 规则类型(1:开单合理性;2:高危;3:危急值;4:其他值提醒;5:其他值提醒输血;6:正常项目重复开立)
+     */
+    private Integer ruleType;
+
+    private String planCode;
+}

+ 18 - 0
src/main/java/com/diagbot/vo/KlRuleSatartOrdisaVO.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-08 16:32
+ */
+@Setter
+@Getter
+public class KlRuleSatartOrdisaVO {
+    @NotNull(message = "请输id")
+    private Long id;
+}

+ 33 - 0
src/main/java/com/diagbot/vo/SearchConceptVO.java

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

+ 26 - 17
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -3,21 +3,23 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.ConceptInfoDTO;
+import com.diagbot.dto.KlConceptStaticDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeHISDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.facade.ConceptInfoFacade;
+import com.diagbot.facade.KlConceptStaticFacade;
 import com.diagbot.vo.ChangeStatusVO;
-import com.diagbot.vo.ConceptInfoPageVO;
-import com.diagbot.vo.ConceptInfoVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.KlConceptStaticPageVO;
+import com.diagbot.vo.KlConceptStaticVO;
 import com.diagbot.vo.StaticKnowledgeHISVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
 import com.diagbot.vo.StaticKnowledgeVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import jdk.nashorn.internal.ir.annotations.Ignore;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -37,7 +39,7 @@ import java.util.List;
  * @since 2020-08-18
  */
 @RestController
-@RequestMapping("/graph/conceptInfo")
+@RequestMapping("/kl/conceptInfo")
 @Api(value = "静态知识标准术语相关API", tags = { "静态知识标准术语相关API" })
 @SuppressWarnings("unchecked")
 public class ConceptInfoController {
@@ -45,13 +47,17 @@ public class ConceptInfoController {
     @Autowired
     private ConceptInfoFacade conceptInfoFacade;
 
+    @Autowired
+    private KlConceptStaticFacade klConceptStaticFacade;
+
     @ApiOperation(value = "医学知识(静态知识)检索[zhaops]",
             notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作 <br>" +
                     "inputStr: 检索内容<br>")
     @PostMapping("/staticKnowledgeIndex")
     @SysLogger("staticKnowledgeIndex")
     public RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndex(@Valid @RequestBody StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
-        List<StaticKnowledgeIndexDTO> data = conceptInfoFacade.staticKnowledgeIndexWithInfo(staticKnowledgeIndexVO);
+        staticKnowledgeIndexVO.setHasInfo(1);
+        List<StaticKnowledgeIndexDTO> data = klConceptStaticFacade.staticKnowledgeIndex(staticKnowledgeIndexVO);
         return RespDTO.onSuc(data);
     }
 
@@ -62,7 +68,8 @@ public class ConceptInfoController {
     @SysLogger("staticKnowledgeIndexWithoutInfo")
     @Transactional
     public RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndexWithoutInfo(@Valid @RequestBody StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
-        List<StaticKnowledgeIndexDTO> data = conceptInfoFacade.staticKnowledgeIndexWithoutInfo(staticKnowledgeIndexVO);
+        staticKnowledgeIndexVO.setHasInfo(0);
+        List<StaticKnowledgeIndexDTO> data = klConceptStaticFacade.staticKnowledgeIndex(staticKnowledgeIndexVO);
         return RespDTO.onSuc(data);
     }
 
@@ -73,7 +80,7 @@ public class ConceptInfoController {
     @PostMapping("/getStaticKnowledge")
     @SysLogger("getStaticKnowledge")
     public RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody StaticKnowledgeVO staticKnowledgeVO) {
-        StaticKnowledgeDTO data = conceptInfoFacade.getStaticKnowledge(staticKnowledgeVO);
+        StaticKnowledgeDTO data = klConceptStaticFacade.getStaticKnowledge(staticKnowledgeVO);
         return RespDTO.onSuc(data);
     }
 
@@ -85,7 +92,7 @@ public class ConceptInfoController {
     @PostMapping("/getStaticKnowledgeForHIS")
     @SysLogger("getStaticKnowledgeForHIS")
     public RespDTO<List<StaticKnowledgeHISDTO>> getStaticKnowledgeForHIS(@Valid @RequestBody StaticKnowledgeHISVO staticKnowledgeHISVO) {
-        List<StaticKnowledgeHISDTO> data = conceptInfoFacade.getStaticKnowledgeForHIS(staticKnowledgeHISVO);
+        List<StaticKnowledgeHISDTO> data = klConceptStaticFacade.getStaticKnowledgeForHIS(staticKnowledgeHISVO);
         return RespDTO.onSuc(data);
     }
 
@@ -95,8 +102,9 @@ public class ConceptInfoController {
                     "isDeleted: 启用状态:N-启用中、Y-已删除<br>")
     @PostMapping("/getPage")
     @SysLogger("getPage")
-    public RespDTO<IPage<ConceptInfoDTO>> getPage(@Valid @RequestBody ConceptInfoPageVO conceptInfoPageVO) {
-        IPage<ConceptInfoDTO> data = conceptInfoFacade.getPage(conceptInfoPageVO);
+    @SuppressWarnings("unchecked")
+    public RespDTO<IPage<KlConceptStaticDTO>> getPage(@Valid @RequestBody KlConceptStaticPageVO klConceptStaticPageVO) {
+        IPage<KlConceptStaticDTO> data = klConceptStaticFacade.getPage(klConceptStaticPageVO);
         return RespDTO.onSuc(data);
     }
 
@@ -110,8 +118,8 @@ public class ConceptInfoController {
     @PostMapping("/saveOrUpdateRecord")
     @SysLogger("saveOrUpdateRecord")
     @Transactional
-    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
-        Boolean data = conceptInfoFacade.saveOrUpdateRecord(conceptInfoVO);
+    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {
+        Boolean data = klConceptStaticFacade.saveOrUpdateRecord(klConceptStaticVO);
         return RespDTO.onSuc(data);
     }
 
@@ -122,7 +130,7 @@ public class ConceptInfoController {
     @SysLogger("changeStatus")
     @Transactional
     public RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
-        Boolean data = conceptInfoFacade.changeStatus(changeStatusVO);
+        Boolean data = klConceptStaticFacade.changeStatus(changeStatusVO);
         return RespDTO.onSuc(data);
     }
 
@@ -131,8 +139,8 @@ public class ConceptInfoController {
                     "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验细项、5-检查、6-检查子项、7-手术和操作 <br>")
     @PostMapping("/isExist")
     @SysLogger("isExist")
-    public RespDTO<Boolean> isExist(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
-        Boolean data = conceptInfoFacade.isExist(conceptInfoVO);
+    public RespDTO<Boolean> isExist(@Valid @RequestBody KlConceptStaticVO klConceptStaticVO) {
+        Boolean data = klConceptStaticFacade.isExist(klConceptStaticVO);
         return RespDTO.onSuc(data);
     }
 
@@ -140,8 +148,8 @@ public class ConceptInfoController {
             notes = "id: 术语id <br>")
     @PostMapping("/getRecordById")
     @SysLogger("getRecordById")
-    public RespDTO<ConceptInfoDTO> getRecordById(@Valid @RequestBody IdVO idVO) {
-        ConceptInfoDTO data = conceptInfoFacade.getRecordById(idVO);
+    public RespDTO<KlConceptStaticDTO> getRecordById(@Valid @RequestBody IdVO idVO) {
+        KlConceptStaticDTO data = klConceptStaticFacade.getRecordById(idVO);
         return RespDTO.onSuc(data);
     }
 
@@ -149,6 +157,7 @@ public class ConceptInfoController {
             notes = "")
     @PostMapping("/updateHasInfoStatusBatch")
     @SysLogger("updateHasInfoStatusBatch")
+    @Ignore
     public RespDTO<Boolean> updateHasInfoStatusBatch() {
         Boolean data = conceptInfoFacade.updateHasInfoStatusBatch();
         return RespDTO.onSuc(data);

+ 35 - 0
src/main/java/com/diagbot/web/KlDictionaryConller.java

@@ -0,0 +1,35 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlDictionaryInfoFacade;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-17 13:14
+ */
+@RestController
+@RequestMapping("/kl/dictionary")
+@Api(value = "字典表信息相关API", tags = { "字典表信息相关API" })
+public class KlDictionaryConller {
+    @Autowired
+    KlDictionaryInfoFacade dictionaryFacade;
+
+    @ApiOperation(value = "根据分组获取字典表信息详情[by:wangfeng]")
+    @PostMapping("/getDictionarys")
+    @SysLogger("getDictionarys")
+    public RespDTO<Map<Long, List<DictionaryInfoDTO>>> getDictionaryInfoAll() {
+        return RespDTO.onSuc(dictionaryFacade.getListByGroupType());
+    }
+}

+ 48 - 0
src/main/java/com/diagbot/web/KlDiseaseController.java

@@ -0,0 +1,48 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.GetAllForRelationDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.ConceptInfoFacade;
+import com.diagbot.vo.SearchConceptVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 疾病表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2021-03-01
+ */
+@RestController
+@RequestMapping("/klDisease")
+@SuppressWarnings("unchecked")
+@Api(value = "诊断依据相关的类型术语相关API", tags = { "诊断依据相关的类型术语相关API" })
+public class KlDiseaseController {
+
+    @Autowired
+    ConceptInfoFacade klConceptFacade;
+
+    @ApiOperation(value = "查询诊断依据相关的类型术语[by:kongwz]",
+            notes = "name: 查询术语的名称<br>" +
+                    "libType: 查询术语的词性<br>" +
+                    "excludedConceptIds: 需要排除的概念id集合")
+    @PostMapping("/searchConcept")
+    @SysLogger("searchConcept")
+    public RespDTO<List<GetAllForRelationDTO>> searchConcept(@Valid @RequestBody SearchConceptVO searchConceptVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = klConceptFacade.searchConceptByNameAndLibType(searchConceptVO);
+        return RespDTO.onSuc(getAllForRelationDTOS);
+    }
+
+}

+ 87 - 0
src/main/java/com/diagbot/web/KlRuleController.java

@@ -0,0 +1,87 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.KlRuleByIdParDTO;
+import com.diagbot.dto.KlRuleInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlRuleFacade;
+import com.diagbot.vo.KlRuleByIdVO;
+import com.diagbot.vo.KlRuleInfoClearVO;
+import com.diagbot.vo.KlRuleInfoSaveVO;
+import com.diagbot.vo.KlRuleInfoVO;
+import com.diagbot.vo.KlRuleSatartOrdisaVO;
+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;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * <p>
+ * 规则信息表 前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2021-03-05
+ */
+@RestController
+@RequestMapping("/klRule")
+@Api(value = "规则维护相关API", tags = { "规则维护相关API" })
+@SuppressWarnings("unchecked")
+public class KlRuleController {
+
+    @Autowired
+    KlRuleFacade klRuleFacade;
+
+    @ApiOperation(value = "分页获取规则维护列表[by:wangfeng]")
+    @PostMapping("/getKlRuleInfoPage")
+    @SysLogger("getKlRuleInfoPage")
+    public RespDTO<Page<KlRuleInfoDTO>> getKlRuleInfoPages(@RequestBody KlRuleInfoVO klRuleInfoVO) {
+        return RespDTO.onSuc(klRuleFacade.getKlRuleInfoPage(klRuleInfoVO));
+    }
+
+    @ApiOperation(value = "根据规则Id获取规则详情[by:wangfeng]")
+    @PostMapping("/getByIdRuleInfo")
+    @SysLogger("getByIdRuleInfo")
+    public RespDTO<KlRuleByIdParDTO> getByIdRuleInfoAll(@RequestBody @Valid KlRuleByIdVO klRuleByIdVO) {
+        return RespDTO.onSuc(klRuleFacade.getByIdRuleInfos(klRuleByIdVO));
+    }
+
+    @ApiOperation(value = "保存规则详情[by:wangfeng]")
+    @PostMapping("/saveRuleInfo")
+    @SysLogger("saveRuleInfo")
+    @Transactional
+    public RespDTO<Boolean> saveRuleInfoAll(@RequestBody @Valid KlRuleInfoSaveVO klRuleInfoSaveVO) {
+        return RespDTO.onSuc(klRuleFacade.saveRuleInfos(klRuleInfoSaveVO));
+    }
+
+    @ApiOperation(value = "刪除规则详情[by:wangfeng]")
+    @PostMapping("/clearRuleInfo")
+    @SysLogger("clearRuleInfo")
+    @Transactional
+    public RespDTO<Boolean> clearRuleInfoAll(@RequestBody @Valid KlRuleInfoClearVO klRuleInfoClearVO) {
+        return RespDTO.onSuc(klRuleFacade.clearRuleInfos(klRuleInfoClearVO));
+    }
+
+    @ApiOperation(value = "停用规则[by:wangfeng]")
+    @PostMapping("/disableRuleInfo")
+    @SysLogger("disableRuleInfo")
+    public RespDTO<Boolean> disableRuleInfos(@RequestBody @Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        return RespDTO.onSuc(klRuleFacade.startOrDisableRule(klRuleSatartOrdisaVO));
+    }
+
+    @ApiOperation(value = "启用规则[by:wangfeng]")
+    @PostMapping("/startRuleInfo")
+    @SysLogger("startRuleInfo")
+    public RespDTO<Boolean> startRuleInfos(@RequestBody @Valid KlRuleSatartOrdisaVO klRuleSatartOrdisaVO) {
+        return RespDTO.onSuc(klRuleFacade.startRuleInfos(klRuleSatartOrdisaVO));
+    }
+
+}

+ 43 - 0
src/main/java/com/diagbot/web/KlRulePlanController.java

@@ -0,0 +1,43 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.KlRuleMenuWrapper;
+import com.diagbot.facade.KlRulePlanFacade;
+import com.diagbot.vo.KlRuleMenuVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2021-03-09
+ */
+@RestController
+@Api(value = "规则下拉菜单API", tags = { "规则下拉菜单API" })
+@RequestMapping("/klRulePlan")
+@SuppressWarnings("unchecked")
+public class KlRulePlanController {
+
+    @Autowired
+    KlRulePlanFacade klRulePlanFacade;
+
+    @ApiOperation(value = "获取规则下拉菜单信息[by:wangfeng]",
+            notes = "")
+    @PostMapping("/getMenu")
+    @SysLogger("getMenu")
+    public RespDTO<List<KlRuleMenuWrapper>> getMenus(@RequestBody KlRuleMenuVO klRuleMenuVO) {
+        return RespDTO.onSuc( klRulePlanFacade.getMenu(klRuleMenuVO));
+    }
+}