Преглед на файлове

Merge branch 'develop' into dev/triage20200319_shaoyifu

wangfeng преди 5 години
родител
ревизия
4856e0ce1d
променени са 36 файла, в които са добавени 1303 реда и са изтрити 188 реда
  1. 36 9
      aipt-service/src/main/java/com/diagbot/aggregate/SearchItemAggregate.java
  2. 10 0
      aipt-service/src/main/java/com/diagbot/client/TranServiceClient.java
  3. 13 1
      aipt-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java
  4. 2 2
      aipt-service/src/main/java/com/diagbot/facade/PushFacade.java
  5. 34 3
      aipt-service/src/main/java/com/diagbot/facade/TransferFacade.java
  6. 19 0
      aipt-service/src/main/java/com/diagbot/vo/OperationConfigVO.java
  7. 55 14
      config-server/src/main/resources/shared/ltkg-service-dev.yml
  8. 55 14
      config-server/src/main/resources/shared/ltkg-service-local.yml
  9. 55 14
      config-server/src/main/resources/shared/ltkg-service-pre.yml
  10. 55 14
      config-server/src/main/resources/shared/ltkg-service-pro.yml
  11. 55 14
      config-server/src/main/resources/shared/ltkg-service-test.yml
  12. 15 0
      docs/033.20200330手术开单合理项映射脚本/init_tran.sql
  13. 48 0
      docs/034.20200330官网知识平台二期/init_ltkg.sql
  14. 40 0
      ltkg-service/pom.xml
  15. 1 1
      ltkg-service/src/main/java/com/diagbot/LtkgServiceApplication.java
  16. 33 0
      ltkg-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java
  17. 23 0
      ltkg-service/src/main/java/com/diagbot/dto/MrInfoDTO.java
  18. 159 0
      ltkg-service/src/main/java/com/diagbot/entity/PresetInfo.java
  19. 31 16
      ltkg-service/src/main/java/com/diagbot/facade/KgFacade.java
  20. 29 0
      ltkg-service/src/main/java/com/diagbot/facade/PresetInfoFacade.java
  21. 16 0
      ltkg-service/src/main/java/com/diagbot/mapper/PresetInfoMapper.java
  22. 18 0
      ltkg-service/src/main/java/com/diagbot/service/PresetInfoService.java
  23. 20 0
      ltkg-service/src/main/java/com/diagbot/service/impl/PresetInfoServiceImpl.java
  24. 2 2
      ltkg-service/src/main/java/com/diagbot/vo/KgTreeVO.java
  25. 3 1
      ltkg-service/src/main/java/com/diagbot/web/KgController.java
  26. 39 0
      ltkg-service/src/main/java/com/diagbot/web/PresetInfoController.java
  27. 19 0
      ltkg-service/src/main/resources/mapper/PresetInfoMapper.xml
  28. 83 83
      ltkg-service/src/test/java/com/diagbot/CodeGeneration.java
  29. 146 0
      tran-service/src/main/java/com/diagbot/entity/OperationConfig.java
  30. 57 0
      tran-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java
  31. 16 0
      tran-service/src/main/java/com/diagbot/mapper/OperationConfigMapper.java
  32. 16 0
      tran-service/src/main/java/com/diagbot/service/OperationConfigService.java
  33. 20 0
      tran-service/src/main/java/com/diagbot/service/impl/OperationConfigServiceImpl.java
  34. 18 0
      tran-service/src/main/java/com/diagbot/vo/OperationConfigVO.java
  35. 44 0
      tran-service/src/main/java/com/diagbot/web/OperationConfigController.java
  36. 18 0
      tran-service/src/main/resources/mapper/OperationConfigMapper.xml

+ 36 - 9
aipt-service/src/main/java/com/diagbot/aggregate/SearchItemAggregate.java

@@ -4,8 +4,8 @@ import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.biz.push.vo.SearchVO;
-import com.diagbot.config.CryptConfiguer;
 import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.SysTypeEnum;
 import com.diagbot.facade.TransferFacade;
 import com.diagbot.util.ListUtil;
 import com.google.common.collect.Lists;
@@ -78,7 +78,10 @@ public class SearchItemAggregate {
     @DataProvider("setLis")
     public List<Lis> setLis(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Lis> lis = searchVO.getLis();
-        lis = transferFacade.addLisUniqueName(lis, searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            lis = transferFacade.addLisUniqueName(lis, searchVO.getHosCode());
+        }
         return lis;
     }
 
@@ -91,7 +94,10 @@ public class SearchItemAggregate {
     @DataProvider("setPacs")
     public List<Pacs> setPacs(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Pacs> pacs = searchVO.getPacs();
-        pacs = transferFacade.addPacsUniqueName(pacs, searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            pacs = transferFacade.addPacsUniqueName(pacs, searchVO.getHosCode());
+        }
         return pacs;
     }
 
@@ -104,7 +110,10 @@ public class SearchItemAggregate {
     @DataProvider("setDiag")
     public List<Item> setDiag(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Item> diag = searchVO.getDiag();
-        diag = transferFacade.addItemUniqueName(diag, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            diag = transferFacade.addItemUniqueName(diag, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        }
         return diag;
     }
 
@@ -130,7 +139,10 @@ public class SearchItemAggregate {
     @DataProvider("setLisOrder")
     public List<Lis> setLisOrder(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Lis> lisOrder = searchVO.getLisOrder();
-        lisOrder = transferFacade.addLisUniqueName(lisOrder, searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            lisOrder = transferFacade.addLisUniqueName(lisOrder, searchVO.getHosCode());
+        }
         return lisOrder;
     }
 
@@ -143,7 +155,10 @@ public class SearchItemAggregate {
     @DataProvider("setPacsOrder")
     public List<Pacs> setPacsOrder(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Pacs> pacsOrder = searchVO.getPacsOrder();
-        pacsOrder = transferFacade.addPacsUniqueName(pacsOrder, searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            pacsOrder = transferFacade.addPacsUniqueName(pacsOrder, searchVO.getHosCode());
+        }
         return pacsOrder;
     }
 
@@ -156,7 +171,11 @@ public class SearchItemAggregate {
     @DataProvider("setDiagOrder")
     public List<Item> setDiagOrder(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Item> diagOrder = searchVO.getDiagOrder();
-        diagOrder = transferFacade.addItemUniqueName(diagOrder, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            diagOrder
+                    = transferFacade.addItemUniqueName(diagOrder, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        }
         return diagOrder;
     }
 
@@ -182,7 +201,12 @@ public class SearchItemAggregate {
     @DataProvider("setOperationOrder")
     public List<Item> setOperationOrder(@InvokeParameter("searchVO") SearchVO searchVO) {
         List<Item> operationOrder = searchVO.getOperationOrder();
-        operationOrder = transferFacade.addItemUniqueName(operationOrder, ConceptTypeEnum.OPERATION.getKey(), searchVO.getHosCode());
+        //数据引擎模式和页面推送模式对手术开单项入参做公表映射
+        if (searchVO.getSysType().intValue() == SysTypeEnum.DATA_SERVICE.getKey()
+                || searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            operationOrder
+                    = transferFacade.addItemUniqueName(operationOrder, ConceptTypeEnum.OPERATION.getKey(), searchVO.getHosCode());
+        }
         return operationOrder;
     }
 
@@ -211,7 +235,10 @@ public class SearchItemAggregate {
         }
         List<Item> diseaseItem = Lists.newLinkedList();
         diseaseItem.add(searchVO.getDiseaseName());
-        diseaseItem = transferFacade.addItemUniqueName(diseaseItem, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        //数据引擎模式映射数据
+        if (searchVO.getSysType().intValue() == SysTypeEnum.LTAPI_SERVICE.getKey()) {
+            diseaseItem = transferFacade.addItemUniqueName(diseaseItem, ConceptTypeEnum.Disease.getKey(), searchVO.getHosCode());
+        }
         if (ListUtil.isNotEmpty(diseaseItem)) {
             return diseaseItem.get(0);
         } else {

+ 10 - 0
aipt-service/src/main/java/com/diagbot/client/TranServiceClient.java

@@ -18,6 +18,7 @@ import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.IndexDataSaveVO;
 import com.diagbot.vo.IndexDataiIds;
 import com.diagbot.vo.LisConfigVO;
+import com.diagbot.vo.OperationConfigVO;
 import com.diagbot.vo.PacsConfigVO;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -97,6 +98,15 @@ public interface TranServiceClient {
     @PostMapping("/pacsConfig/getPacsConfig")
     RespDTO<Map<String, List<String>>> getPacsConfig(@RequestBody PacsConfigVO pacsConfigVO);
 
+    /**
+     * 获取手术映射关系
+     *
+     * @param operationConfigVO
+     * @return
+     */
+    @PostMapping("/operationConfig/getOperationConfig")
+    RespDTO<Map<String, List<String>>> getOperationConfig(@RequestBody OperationConfigVO operationConfigVO);
+
     /**
      * 根据医院编码获取提示信息标题映射关系
      *

+ 13 - 1
aipt-service/src/main/java/com/diagbot/client/hystrix/TranServiceHystrix.java

@@ -18,10 +18,10 @@ import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.IndexDataSaveVO;
 import com.diagbot.vo.IndexDataiIds;
 import com.diagbot.vo.LisConfigVO;
+import com.diagbot.vo.OperationConfigVO;
 import com.diagbot.vo.PacsConfigVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 
 import javax.validation.Valid;
@@ -96,6 +96,18 @@ public class TranServiceHystrix implements TranServiceClient {
         return null;
     }
 
+    /**
+     * 获取手术映射关系
+     *
+     * @param operationConfigVO
+     * @return
+     */
+    @Override
+    public RespDTO<Map<String, List<String>>> getOperationConfig(@RequestBody OperationConfigVO operationConfigVO) {
+        log.error("【hystrix】调用{}异常", "getOperationConfig");
+        return null;
+    }
+
     /**
      * 根据医院编码获取提示信息标题映射关系
      *

+ 2 - 2
aipt-service/src/main/java/com/diagbot/facade/PushFacade.java

@@ -166,8 +166,8 @@ public class PushFacade {
      * @return
      */
     public SearchVO precSearchData(SearchVO searchVO, Boolean isConnect) {
-        //未对接或非数据引擎模式,不做映射
-        if (!isConnect || (!searchVO.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey()))) {
+        //未对接不做映射,细分参数是否对接单独处理,由sysType决定
+        if (!isConnect) {
             return searchVO;
         }
         try {

+ 34 - 3
aipt-service/src/main/java/com/diagbot/facade/TransferFacade.java

@@ -19,6 +19,7 @@ import com.diagbot.util.StringUtil;
 import com.diagbot.vo.DiseaseIcdVO;
 import com.diagbot.vo.HospitalSetVO;
 import com.diagbot.vo.LisConfigVO;
+import com.diagbot.vo.OperationConfigVO;
 import com.diagbot.vo.PacsConfigVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -226,7 +227,9 @@ public class TransferFacade {
                 if (StringUtil.isBlank(disease.getName())) {
                     continue;
                 } else {
-                    disease.setUniqueName(disMap.get(disease.getName()));
+                    if (StringUtil.isNotBlank(disMap.get(disease.getName()))) {
+                        disease.setUniqueName(disMap.get(disease.getName()));
+                    }
                 }
             }
             convertItems = BeanUtil.listCopyTo(items, Item.class);
@@ -234,8 +237,36 @@ public class TransferFacade {
             //暂无映射关系
             convertItems.addAll(items);
         } else if (type.equals(ConceptTypeEnum.OPERATION.getKey())) {
-            //暂无映射关系
-            convertItems.addAll(items);
+            OperationConfigVO operationConfigVO = new OperationConfigVO();
+            operationConfigVO.setHosCode(hosCode);
+            operationConfigVO.setNameList(items
+                    .stream()
+                    .map(operation -> operation.getName())
+                    .distinct()
+                    .collect(Collectors.toList()));
+            Map<String, List<String>> operationMap = new LinkedHashMap<>();
+            RespDTO<Map<String, List<String>>> respDTO = tranServiceClient.getOperationConfig(operationConfigVO);
+            if (RespDTOUtil.respIsOK(respDTO)) {
+                operationMap = respDTO.data;
+            }
+            for (Item item : items) {
+                if (StringUtil.isBlank(item.getName())) {
+                    convertItems.add(item);
+                    continue;
+                } else {
+                    if (ListUtil.isNotEmpty(operationMap.get(item.getName()))) {
+                        //外部一个项目对应到内部多个项目的数据,都保留
+                        for (String uniqueName : operationMap.get(item.getName())) {
+                            Item convertItem = new Item();
+                            BeanUtil.copyProperties(item, convertItem);
+                            convertItem.setUniqueName(uniqueName);
+                            convertItems.add(convertItem);
+                        }
+                    } else {
+                        convertItems.add(item);
+                    }
+                }
+            }
         }
         return convertItems;
     }

+ 19 - 0
aipt-service/src/main/java/com/diagbot/vo/OperationConfigVO.java

@@ -0,0 +1,19 @@
+package com.diagbot.vo;
+
+import com.diagbot.client.bean.HosCodeVO;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/3/27 15:45
+ */
+@Getter
+@Setter
+public class OperationConfigVO extends HosCodeVO {
+    private List<String> nameList;
+    private List<String> uniqueNameList;
+}

+ 55 - 14
config-server/src/main/resources/shared/ltkg-service-dev.yml

@@ -6,20 +6,32 @@ spring:
   profiles:
     active: local
   datasource:
-    driver-class-name: org.neo4j.jdbc.Driver
-    url: jdbc:neo4j:http://192.168.3.150:7474
-    username: neo4j
-    password: 12345678
-    #定义初始连接数
-    initialSize: 0
-    #定义最大连接数
-    maxActive: 20
-    #定义最大空闲
-    maxIdle: 20
-    #定义最小空闲
-    minIdle: 1
-    #定义最长等待时间
-    maxWait: 60000
+    dynamic:
+      primary: neo4j
+      # 数据库配置
+      datasource:
+        neo4j:
+          driver-class-name: org.neo4j.jdbc.Driver
+          url: jdbc:neo4j:http://192.168.2.190:7474
+          username: root
+          password: zjlantone
+          #定义初始连接数
+          initialSize: 0
+          #定义最大连接数
+          maxActive: 20
+          #定义最大空闲
+          maxIdle: 20
+          #定义最小空闲
+          minIdle: 1
+          #定义最长等待时间
+          maxWait: 60000
+        mysql:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.236:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+
 
   cloud:
     stream:
@@ -48,6 +60,35 @@ mybatis:
   type-aliases-package: com.diagbot.entity
   mapper-locations: classpath:mapper/**/*.xml
 
+#mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:/mapper/*Mapper.xml
+  #实体扫描,多个package用逗号或者分号分隔
+  typeAliasesPackage: com.diagbot.entity
+  global-config:
+    #刷新mapper 调试神器
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      id-type: id_worker
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      field-strategy: not_empty
+      #驼峰下划线转换
+      column-underline: true
+      #数据库大写下划线转换
+      #capital-mode: true
+      #刷新mapper 调试神器
+      refresh-mapper: true
+      #逻辑删除配置
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      #自定义填充策略接口实现
+      #meta-object-handler: com.baomidou.springboot.xxx
+      #自定义SQL注入器
+      #sql-injector: com.baomidou.springboot.xxx
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+
 nlprel:
   server:
     address: http://192.168.3.150:3456

+ 55 - 14
config-server/src/main/resources/shared/ltkg-service-local.yml

@@ -6,20 +6,32 @@ spring:
   profiles:
     active: local
   datasource:
-    driver-class-name: org.neo4j.jdbc.Driver
-    url: jdbc:neo4j:http://192.168.3.150:7474
-    username: neo4j
-    password: 12345678
-    #定义初始连接数
-    initialSize: 0
-    #定义最大连接数
-    maxActive: 20
-    #定义最大空闲
-    maxIdle: 20
-    #定义最小空闲
-    minIdle: 1
-    #定义最长等待时间
-    maxWait: 60000
+    dynamic:
+      primary: neo4j
+      # 数据库配置
+      datasource:
+        neo4j:
+          driver-class-name: org.neo4j.jdbc.Driver
+          url: jdbc:neo4j:http://192.168.2.190:7474
+          username: root
+          password: zjlantone
+          #定义初始连接数
+          initialSize: 0
+          #定义最大连接数
+          maxActive: 20
+          #定义最大空闲
+          maxIdle: 20
+          #定义最小空闲
+          minIdle: 1
+          #定义最长等待时间
+          maxWait: 60000
+        mysql:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.236:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+
 
   cloud:
     stream:
@@ -48,6 +60,35 @@ mybatis:
   type-aliases-package: com.diagbot.entity
   mapper-locations: classpath:mapper/**/*.xml
 
+#mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:/mapper/*Mapper.xml
+  #实体扫描,多个package用逗号或者分号分隔
+  typeAliasesPackage: com.diagbot.entity
+  global-config:
+    #刷新mapper 调试神器
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      id-type: id_worker
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      field-strategy: not_empty
+      #驼峰下划线转换
+      column-underline: true
+      #数据库大写下划线转换
+      #capital-mode: true
+      #刷新mapper 调试神器
+      refresh-mapper: true
+      #逻辑删除配置
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      #自定义填充策略接口实现
+      #meta-object-handler: com.baomidou.springboot.xxx
+      #自定义SQL注入器
+      #sql-injector: com.baomidou.springboot.xxx
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+
 nlprel:
   server:
     address: http://192.168.3.150:3456

+ 55 - 14
config-server/src/main/resources/shared/ltkg-service-pre.yml

@@ -6,20 +6,32 @@ spring:
   profiles:
     active: local
   datasource:
-    driver-class-name: org.neo4j.jdbc.Driver
-    url: jdbc:neo4j:http://192.168.3.150:7474
-    username: neo4j
-    password: 12345678
-    #定义初始连接数
-    initialSize: 0
-    #定义最大连接数
-    maxActive: 20
-    #定义最大空闲
-    maxIdle: 20
-    #定义最小空闲
-    minIdle: 1
-    #定义最长等待时间
-    maxWait: 60000
+    dynamic:
+      primary: neo4j
+      # 数据库配置
+      datasource:
+        neo4j:
+          driver-class-name: org.neo4j.jdbc.Driver
+          url: jdbc:neo4j:http://192.168.3.150:7474
+          username: neo4j
+          password: 12345678
+          #定义初始连接数
+          initialSize: 0
+          #定义最大连接数
+          maxActive: 20
+          #定义最大空闲
+          maxIdle: 20
+          #定义最小空闲
+          minIdle: 1
+          #定义最长等待时间
+          maxWait: 60000
+        mysql:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.121:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: teamback
+          password: goTulmLeon
+
 
   cloud:
     stream:
@@ -48,6 +60,35 @@ mybatis:
   type-aliases-package: com.diagbot.entity
   mapper-locations: classpath:mapper/**/*.xml
 
+#mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:/mapper/*Mapper.xml
+  #实体扫描,多个package用逗号或者分号分隔
+  typeAliasesPackage: com.diagbot.entity
+  global-config:
+    #刷新mapper 调试神器
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      id-type: id_worker
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      field-strategy: not_empty
+      #驼峰下划线转换
+      column-underline: true
+      #数据库大写下划线转换
+      #capital-mode: true
+      #刷新mapper 调试神器
+      refresh-mapper: true
+      #逻辑删除配置
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      #自定义填充策略接口实现
+      #meta-object-handler: com.baomidou.springboot.xxx
+      #自定义SQL注入器
+      #sql-injector: com.baomidou.springboot.xxx
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+
 nlprel:
   server:
     address: http://192.168.3.150:3456

+ 55 - 14
config-server/src/main/resources/shared/ltkg-service-pro.yml

@@ -6,20 +6,32 @@ spring:
   profiles:
     active: local
   datasource:
-    driver-class-name: org.neo4j.jdbc.Driver
-    url: jdbc:neo4j:http://192.168.3.150:7474
-    username: neo4j
-    password: 12345678
-    #定义初始连接数
-    initialSize: 0
-    #定义最大连接数
-    maxActive: 20
-    #定义最大空闲
-    maxIdle: 20
-    #定义最小空闲
-    minIdle: 1
-    #定义最长等待时间
-    maxWait: 60000
+    dynamic:
+      primary: neo4j
+      # 数据库配置
+      datasource:
+        neo4j:
+          driver-class-name: org.neo4j.jdbc.Driver
+          url: jdbc:neo4j:http://192.168.3.150:7474
+          username: neo4j
+          password: 12345678
+          #定义初始连接数
+          initialSize: 0
+          #定义最大连接数
+          maxActive: 20
+          #定义最大空闲
+          maxIdle: 20
+          #定义最小空闲
+          minIdle: 1
+          #定义最长等待时间
+          maxWait: 60000
+        mysql:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.122:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+
 
   cloud:
     stream:
@@ -48,6 +60,35 @@ mybatis:
   type-aliases-package: com.diagbot.entity
   mapper-locations: classpath:mapper/**/*.xml
 
+#mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:/mapper/*Mapper.xml
+  #实体扫描,多个package用逗号或者分号分隔
+  typeAliasesPackage: com.diagbot.entity
+  global-config:
+    #刷新mapper 调试神器
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      id-type: id_worker
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      field-strategy: not_empty
+      #驼峰下划线转换
+      column-underline: true
+      #数据库大写下划线转换
+      #capital-mode: true
+      #刷新mapper 调试神器
+      refresh-mapper: true
+      #逻辑删除配置
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      #自定义填充策略接口实现
+      #meta-object-handler: com.baomidou.springboot.xxx
+      #自定义SQL注入器
+      #sql-injector: com.baomidou.springboot.xxx
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+
 nlprel:
   server:
     address: http://192.168.3.150:3456

+ 55 - 14
config-server/src/main/resources/shared/ltkg-service-test.yml

@@ -6,20 +6,32 @@ spring:
   profiles:
     active: local
   datasource:
-    driver-class-name: org.neo4j.jdbc.Driver
-    url: jdbc:neo4j:http://192.168.3.150:7474
-    username: neo4j
-    password: 12345678
-    #定义初始连接数
-    initialSize: 0
-    #定义最大连接数
-    maxActive: 20
-    #定义最大空闲
-    maxIdle: 20
-    #定义最小空闲
-    minIdle: 1
-    #定义最长等待时间
-    maxWait: 60000
+    dynamic:
+      primary: neo4j
+      # 数据库配置
+      datasource:
+        neo4j:
+          driver-class-name: org.neo4j.jdbc.Driver
+          url: jdbc:neo4j:http://192.168.2.190:7474
+          username: root
+          password: zjlantone
+          #定义初始连接数
+          initialSize: 0
+          #定义最大连接数
+          maxActive: 20
+          #定义最大空闲
+          maxIdle: 20
+          #定义最小空闲
+          minIdle: 1
+          #定义最长等待时间
+          maxWait: 60000
+        mysql:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          platform: mysql
+          url: jdbc:mysql://192.168.2.241:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&useSSL=false
+          username: root
+          password: lantone
+
 
   cloud:
     stream:
@@ -48,6 +60,35 @@ mybatis:
   type-aliases-package: com.diagbot.entity
   mapper-locations: classpath:mapper/**/*.xml
 
+#mybatis-plus
+mybatis-plus:
+  mapper-locations: classpath:/mapper/*Mapper.xml
+  #实体扫描,多个package用逗号或者分号分隔
+  typeAliasesPackage: com.diagbot.entity
+  global-config:
+    #刷新mapper 调试神器
+    db-config:
+      #主键类型  0:"数据库ID自增", 1:"用户输入ID",2:"全局唯一ID (数字类型唯一ID)", 3:"全局唯一ID UUID";
+      id-type: id_worker
+      #字段策略 0:"忽略判断",1:"非 NULL 判断"),2:"非空判断"
+      field-strategy: not_empty
+      #驼峰下划线转换
+      column-underline: true
+      #数据库大写下划线转换
+      #capital-mode: true
+      #刷新mapper 调试神器
+      refresh-mapper: true
+      #逻辑删除配置
+      logic-delete-value: 0
+      logic-not-delete-value: 1
+      #自定义填充策略接口实现
+      #meta-object-handler: com.baomidou.springboot.xxx
+      #自定义SQL注入器
+      #sql-injector: com.baomidou.springboot.xxx
+  configuration:
+    map-underscore-to-camel-case: true
+    cache-enabled: false
+
 nlprel:
   server:
     address: http://192.168.3.150:3456

+ 15 - 0
docs/033.20200330手术开单合理项映射脚本/init_tran.sql

@@ -0,0 +1,15 @@
+use `sys-tran`;
+
+DROP TABLE IF EXISTS `tran_operation_config`;
+CREATE TABLE `tran_operation_config` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `hospital_code` varchar(60) DEFAULT NULL COMMENT '医院编码',
+  `name` varchar(100) DEFAULT NULL COMMENT '外部名称',
+  `unique_name` varchar(100) DEFAULT NULL COMMENT '内部名称',
+  PRIMARY KEY (`id`)
+) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

Файловите разлики са ограничени, защото са твърде много
+ 48 - 0
docs/034.20200330官网知识平台二期/init_ltkg.sql


+ 40 - 0
ltkg-service/pom.xml

@@ -145,6 +145,46 @@
             <artifactId>caffeine</artifactId>
         </dependency>
 
+        <!-- mybatis-plus begin -->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-boot-starter</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-generator</artifactId>
+        </dependency>
+        <!-- mybatis-plus end -->
+
+        <!--&lt;!&ndash; 阿里巴巴druid数据库连接池 &ndash;&gt;-->
+        <!--<dependency>-->
+            <!--<groupId>com.alibaba</groupId>-->
+            <!--<artifactId>druid-spring-boot-starter</artifactId>-->
+        <!--</dependency>-->
+
+        <!-- springboot整合mybatis(核心就这一个) -->
+        <!-- 注意顺序,这个一定要放在最下面 -->
+        <dependency>
+            <groupId>org.mybatis.spring.boot</groupId>
+            <artifactId>mybatis-spring-boot-starter</artifactId>
+            <version>${mybatis-spring-boot.version}</version>
+        </dependency>
+
+        <!--多数据源-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>dynamic-datasource-spring-boot-starter</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+
+        <!--mysql-database-->
+        <dependency>
+            <groupId>mysql</groupId>
+            <artifactId>mysql-connector-java</artifactId>
+            <scope>runtime</scope>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 1 - 1
ltkg-service/src/main/java/com/diagbot/LtkgServiceApplication.java

@@ -20,7 +20,7 @@ import org.springframework.cloud.openfeign.EnableFeignClients;
  * @author: gaodm
  * @time: 2018/8/7 9:26
  */
-@SpringBootApplication(exclude = { HibernateJpaAutoConfiguration.class,
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
         JmxAutoConfiguration.class, ThymeleafAutoConfiguration.class })
 @EnableEurekaClient
 @EnableFeignClients({ "com.diagbot.client" })

+ 33 - 0
ltkg-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java

@@ -0,0 +1,33 @@
+package com.diagbot.config;
+
+import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.transaction.annotation.EnableTransactionManagement;
+
+/**
+ * @Description: MybatisPlus配置类
+ * @author: gaodm
+ * @time: 2018/8/2 13:39
+ */
+@EnableTransactionManagement
+@Configuration
+@MapperScan("com.diagbot.mapper*")//这个注解,作用相当于下面的@Bean MapperScannerConfigurer,2者配置1份即可
+public class MybatisPlusConfigurer {
+
+    /**
+     * mybatis-plus分页插件<br>
+     * 文档:http://mp.baomidou.com<br>
+     */
+    @Bean
+    public PaginationInterceptor paginationInterceptor() {
+        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
+        // 设置请求的页面大于最大页后操作,true调回到首页,false继续请求,默认false
+        //paginationInterceptor.setOverflow(false);
+        // 设置最大单页限制数量,默认500条,-1不受限制
+        paginationInterceptor.setLimit(500L);
+        return paginationInterceptor;
+    }
+
+}

+ 23 - 0
ltkg-service/src/main/java/com/diagbot/dto/MrInfoDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/30 17:13
+ */
+@Getter
+@Setter
+public class MrInfoDTO {
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+}

+ 159 - 0
ltkg-service/src/main/java/com/diagbot/entity/PresetInfo.java

@@ -0,0 +1,159 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 知识平台预设信息
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-03-31
+ */
+@TableName("ltkg_preset_info")
+public class PresetInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 类型 (0:默认,1:病历,20:疾病ICD10)
+     */
+    private Integer type;
+
+    /**
+     * 标题
+     */
+    private String title;
+
+    /**
+     * 内容
+     */
+    private String content;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    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 LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "PresetInfo{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", type=" + type +
+            ", title=" + title +
+            ", content=" + content +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 31 - 16
ltkg-service/src/main/java/com/diagbot/facade/KgFacade.java

@@ -1,6 +1,6 @@
 package com.diagbot.facade;
 
-import com.diagbot.dto.BaseNodeDTO;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.BaseNodeRSDTO;
 import com.diagbot.dto.CategorieDTO;
 import com.diagbot.dto.Categories;
@@ -16,6 +16,8 @@ import com.diagbot.dto.Tree;
 import com.diagbot.dto.TreeDTO;
 import com.diagbot.dto.TreeNodeDTO;
 import com.diagbot.dto.Tu;
+import com.diagbot.entity.PresetInfo;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.KgServiceImpl;
@@ -25,6 +27,7 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.vo.KgQueryVO;
 import com.diagbot.vo.KgTreeVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
@@ -40,6 +43,8 @@ import java.util.Map;
  */
 @Component
 public class KgFacade extends KgServiceImpl {
+    @Autowired
+    private PresetInfoFacade presetInfoFacade;
 
     public GraphLabelDTO getGraphFac(KgQueryVO kgQueryVO) {
         GraphLabelDTO graphLabelDTO = new GraphLabelDTO();
@@ -78,7 +83,7 @@ public class KgFacade extends KgServiceImpl {
                     if (ListUtil.isNotEmpty(baseNodeRSDTO.getENodeDTOS())) {
                         for (NextNodeDTO baseNodeDTO : baseNodeRSDTO.getENodeDTOS()) {
                             String symbol = "diamond";
-                            if (baseNodeDTO.getPCount() > 0){
+                            if (baseNodeDTO.getPCount() > 0) {
                                 symbol = "circle";
                             }
                             GNodeDTO eNodeDTO
@@ -99,23 +104,33 @@ public class KgFacade extends KgServiceImpl {
         return graphLabelDTO;
     }
 
-//    private String random() {
-//        //先随机产生一个下标再获取元素
-//        String random = "";
-//        String[] doc = { "circle", "diamond" };
-//        int index = (int) (Math.random() * doc.length);
-//        random = doc[index];
-//        return random;
-//    }
+    //    private String random() {
+    //        //先随机产生一个下标再获取元素
+    //        String random = "";
+    //        String[] doc = { "circle", "diamond" };
+    //        int index = (int) (Math.random() * doc.length);
+    //        random = doc[index];
+    //        return random;
+    //    }
 
     public TreeDTO getTreeFac(KgTreeVO kgTreeVO) {
         TreeDTO treeDTO = new TreeDTO();
-        if (kgTreeVO.getType() == 1
-                && kgTreeVO.getSubType() == 1) {
-            KgQueryVO kgQueryVO = new KgQueryVO();
-            kgQueryVO.setLabelName("诊断依据");
-            kgQueryVO.setInputStr("诊断依据");
-            String tree = this.getTree(kgQueryVO);
+        if ((kgTreeVO.getType() == 1
+                && (kgTreeVO.getSubType() == 1 || kgTreeVO.getSubType() == 2 || kgTreeVO.getSubType() == 3))
+                || (kgTreeVO.getType() == 2 && (kgTreeVO.getSubType() == 0))
+                || (kgTreeVO.getType() == 3 && (kgTreeVO.getSubType() == 0))
+                || (kgTreeVO.getType() == 4 && (kgTreeVO.getSubType() == 0))) {
+            // KgQueryVO kgQueryVO = new KgQueryVO();
+            // kgQueryVO.setLabelName("诊断依据");
+            // kgQueryVO.setInputStr("诊断依据");
+            // String tree = this.getTree(kgQueryVO);
+            PresetInfo presetInfo = presetInfoFacade.getOne(new QueryWrapper<PresetInfo>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("type", (kgTreeVO.getType() * 10 + kgTreeVO.getSubType())), false);
+            String tree = "";
+            if (null != presetInfo){
+                tree = presetInfo.getContent();
+            }
             if (StringUtil.isBlank(tree)) {
                 throw new CommonException(CommonErrorCode.NOT_EXISTS);
             } else {

+ 29 - 0
ltkg-service/src/main/java/com/diagbot/facade/PresetInfoFacade.java

@@ -0,0 +1,29 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.MrInfoDTO;
+import com.diagbot.entity.PresetInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.PresetInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/3/31 9:16
+ */
+@Component
+public class PresetInfoFacade extends PresetInfoServiceImpl {
+    public List<MrInfoDTO> getMrInfo() {
+        List<MrInfoDTO> mrInfoDTOList = new ArrayList<>();
+        List<PresetInfo> mrInfoList = this.list(new QueryWrapper<PresetInfo>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("type", 1));
+        mrInfoDTOList = BeanUtil.listCopyTo(mrInfoList, MrInfoDTO.class);
+        return mrInfoDTOList;
+    }
+}

+ 16 - 0
ltkg-service/src/main/java/com/diagbot/mapper/PresetInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.PresetInfo;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 知识平台预设信息 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-03-31
+ */
+public interface PresetInfoMapper extends BaseMapper<PresetInfo> {
+
+}

+ 18 - 0
ltkg-service/src/main/java/com/diagbot/service/PresetInfoService.java

@@ -0,0 +1,18 @@
+package com.diagbot.service;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.diagbot.entity.PresetInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 知识平台预设信息 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-03-31
+ */
+@DS("mysql")
+public interface PresetInfoService extends IService<PresetInfo> {
+
+}

+ 20 - 0
ltkg-service/src/main/java/com/diagbot/service/impl/PresetInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.PresetInfo;
+import com.diagbot.mapper.PresetInfoMapper;
+import com.diagbot.service.PresetInfoService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 知识平台预设信息 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-03-31
+ */
+@Service
+public class PresetInfoServiceImpl extends ServiceImpl<PresetInfoMapper, PresetInfo> implements PresetInfoService {
+
+}

+ 2 - 2
ltkg-service/src/main/java/com/diagbot/vo/KgTreeVO.java

@@ -14,10 +14,10 @@ import javax.validation.constraints.NotNull;
 @Getter
 @Setter
 public class KgTreeVO {
-    @ApiModelProperty(value = "类型 疾病:1")
+    @ApiModelProperty(value = "类型")
     @NotNull(message = "类型不能为空")
     private Integer type;
-    @ApiModelProperty(value = "子类型 默认:0 ICD10:1")
+    @ApiModelProperty(value = "子类型 默认:0")
     @NotNull(message = "子类型不能为空")
     private Integer subType;
 }

+ 3 - 1
ltkg-service/src/main/java/com/diagbot/web/KgController.java

@@ -56,7 +56,9 @@ public class KgController {
         return RespDTO.onSuc(kgFacade.getGraphFac(kgQueryVO));
     }
 
-    @ApiOperation(value = "获取树形分类", notes = "获取树形分类")
+    @ApiOperation(value = "获取树形分类",
+            notes = "获取树形分类(疾病ICD10:t:1,st:1)" +
+                    "(疾病科室:t:1,st:2)")
     @PostMapping("/getTree")
     @SysLogger("getTree")
     @Cacheable(value = KGTREECACHE, key = "'kgtree:t_' + #kgTreeVO.type + '_st_' + #kgTreeVO.subType")

+ 39 - 0
ltkg-service/src/main/java/com/diagbot/web/PresetInfoController.java

@@ -0,0 +1,39 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.MrInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.PresetInfoFacade;
+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;
+
+/**
+ * <p>
+ * 知识平台预设信息 前端控制器
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-03-31
+ */
+@RestController
+@RequestMapping("/presetInfo")
+@Api(value = "知识平台预设信息API", tags = { "知识平台预设信息API" })
+@SuppressWarnings("unchecked")
+public class PresetInfoController {
+    @Autowired
+    private PresetInfoFacade presetInfoFacade;
+
+    @ApiOperation(value = "获取所有预设病历", notes = "获取所有预设病历")
+    @PostMapping("/getMrInfo")
+    @SysLogger("getMrInfo")
+    public RespDTO<List<MrInfoDTO>> getMrInfo() {
+        return RespDTO.onSuc(presetInfoFacade.getMrInfo());
+    }
+}

+ 19 - 0
ltkg-service/src/main/resources/mapper/PresetInfoMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.PresetInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.PresetInfo">
+        <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="type" property="type" />
+        <result column="title" property="title" />
+        <result column="content" property="content" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 83 - 83
ltkg-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -1,83 +1,83 @@
-//package com.diagbot;
-//
-//import com.baomidou.mybatisplus.annotation.DbType;
-//import com.baomidou.mybatisplus.generator.AutoGenerator;
-//import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-//import com.baomidou.mybatisplus.generator.config.GlobalConfig;
-//import com.baomidou.mybatisplus.generator.config.PackageConfig;
-//import com.baomidou.mybatisplus.generator.config.StrategyConfig;
-//import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
-//import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
-//
-///**
-// * @Description: 代码生成器
-// * @author: gaodm
-// * @time: 2018/8/2 10:15
-// */
-//public class CodeGeneration {
-//
-//    /**
-//     *
-//     * @Title: main
-//     * @Description: 生成
-//     * @param args
-//     */
-//    public static void main(String[] args) {
-//        AutoGenerator mpg = new AutoGenerator();
-//
-//        // 全局配置
-//        GlobalConfig gc = new GlobalConfig();
-//        gc.setOutputDir("E://code//feedbackservice");
-//        gc.setFileOverride(true);
-//        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
-//        gc.setEnableCache(false);// XML 二级缓存
-//        gc.setBaseResultMap(true);// XML ResultMap
-//        gc.setBaseColumnList(false);// XML columList
-//        gc.setAuthor("gaodm");// 作者
-//
-//        // 自定义文件命名,注意 %s 会自动填充表实体属性!
-//        gc.setControllerName("%sController");
-//        gc.setServiceName("%sService");
-//        gc.setServiceImplName("%sServiceImpl");
-//        gc.setMapperName("%sMapper");
-//        gc.setXmlName("%sMapper");
-//        mpg.setGlobalConfig(gc);
-//
-//        // 数据源配置
-//        DataSourceConfig dsc = new DataSourceConfig();
-//        dsc.setDbType(DbType.MYSQL);
-//        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
-//        dsc.setUsername("root");
-//        dsc.setPassword("root");
-//        dsc.setUrl("jdbc:mysql://127.0.0.1:3306/sys-log?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
-//        mpg.setDataSource(dsc);
-//
-//        // 策略配置
-//        StrategyConfig strategy = new StrategyConfig();
-////        strategy.setTablePrefix(new String[] { "sys_" });// 此处可以修改为您的表前缀
-//        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-//        strategy.setInclude(new String[] { "sys_log" }); // 需要生成的表
-//
-//        strategy.setSuperServiceClass(null);
-//        strategy.setSuperServiceImplClass(null);
-//        strategy.setSuperMapperClass(null);
-//
-//        mpg.setStrategy(strategy);
-//
-//        // 包配置
-//        PackageConfig pc = new PackageConfig();
-//        pc.setParent("com.diagbot");
-//        pc.setController("web");
-//        pc.setService("service");
-//        pc.setServiceImpl("service.impl");
-//        pc.setMapper("mapper");
-//        pc.setEntity("entity");
-//        pc.setXml("resources.mapper");
-//        mpg.setPackageInfo(pc);
-//
-//        // 执行生成
-//        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
-//        mpg.execute();
-//
-//    }
-//}
+package com.diagbot;
+
+import com.baomidou.mybatisplus.annotation.DbType;
+import com.baomidou.mybatisplus.generator.AutoGenerator;
+import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
+import com.baomidou.mybatisplus.generator.config.GlobalConfig;
+import com.baomidou.mybatisplus.generator.config.PackageConfig;
+import com.baomidou.mybatisplus.generator.config.StrategyConfig;
+import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
+import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
+
+/**
+ * @Description: 代码生成器
+ * @author: gaodm
+ * @time: 2018/8/2 10:15
+ */
+public class CodeGeneration {
+
+    /**
+     *
+     * @Title: main
+     * @Description: 生成
+     * @param args
+     */
+    public static void main(String[] args) {
+        AutoGenerator mpg = new AutoGenerator();
+
+        // 全局配置
+        GlobalConfig gc = new GlobalConfig();
+        gc.setOutputDir("E://code//ltkgservice");
+        gc.setFileOverride(true);
+        gc.setActiveRecord(false);// 不需要ActiveRecord特性的请改为false
+        gc.setEnableCache(false);// XML 二级缓存
+        gc.setBaseResultMap(true);// XML ResultMap
+        gc.setBaseColumnList(false);// XML columList
+        gc.setAuthor("gaodm");// 作者
+
+        // 自定义文件命名,注意 %s 会自动填充表实体属性!
+        gc.setControllerName("%sController");
+        gc.setServiceName("%sService");
+        gc.setServiceImplName("%sServiceImpl");
+        gc.setMapperName("%sMapper");
+        gc.setXmlName("%sMapper");
+        mpg.setGlobalConfig(gc);
+
+        // 数据源配置
+        DataSourceConfig dsc = new DataSourceConfig();
+        dsc.setDbType(DbType.MYSQL);
+        dsc.setDriverName("com.mysql.cj.jdbc.Driver");
+        dsc.setUsername("root");
+        dsc.setPassword("lantone");
+        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/sys-ltkg?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8");
+        mpg.setDataSource(dsc);
+
+        // 策略配置
+        StrategyConfig strategy = new StrategyConfig();
+        strategy.setTablePrefix(new String[] { "ltkg_" });// 此处可以修改为您的表前缀
+        strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
+        strategy.setInclude(new String[] { "ltkg_preset_info" }); // 需要生成的表
+
+        strategy.setSuperServiceClass(null);
+        strategy.setSuperServiceImplClass(null);
+        strategy.setSuperMapperClass(null);
+
+        mpg.setStrategy(strategy);
+
+        // 包配置
+        PackageConfig pc = new PackageConfig();
+        pc.setParent("com.diagbot");
+        pc.setController("web");
+        pc.setService("service");
+        pc.setServiceImpl("service.impl");
+        pc.setMapper("mapper");
+        pc.setEntity("entity");
+        pc.setXml("resources.mapper");
+        mpg.setPackageInfo(pc);
+
+        // 执行生成
+        mpg.setTemplateEngine(new FreemarkerTemplateEngine());
+        mpg.execute();
+
+    }
+}

+ 146 - 0
tran-service/src/main/java/com/diagbot/entity/OperationConfig.java

@@ -0,0 +1,146 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-03-27
+ */
+@TableName("tran_operation_config")
+public class OperationConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private LocalDateTime gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private LocalDateTime gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 医院编码
+     */
+    private String hospitalCode;
+
+    /**
+     * 外部名称
+     */
+    private String name;
+
+    /**
+     * 内部名称
+     */
+    private String uniqueName;
+
+    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 LocalDateTime getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(LocalDateTime gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public LocalDateTime getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(LocalDateTime 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 String getHospitalCode() {
+        return hospitalCode;
+    }
+
+    public void setHospitalCode(String hospitalCode) {
+        this.hospitalCode = hospitalCode;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getUniqueName() {
+        return uniqueName;
+    }
+
+    public void setUniqueName(String uniqueName) {
+        this.uniqueName = uniqueName;
+    }
+
+    @Override
+    public String toString() {
+        return "OperationConfig{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", hospitalCode=" + hospitalCode +
+            ", name=" + name +
+            ", uniqueName=" + uniqueName +
+        "}";
+    }
+}

+ 57 - 0
tran-service/src/main/java/com/diagbot/facade/OperationConfigFacade.java

@@ -0,0 +1,57 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.OperationConfig;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.OperationConfigServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.OperationConfigVO;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/3/27 15:41
+ */
+@Component
+public class OperationConfigFacade extends OperationConfigServiceImpl {
+
+    /**
+     * 获取辅检映射关系
+     *
+     * @param operationConfigVO
+     * @return
+     */
+    public Map<String, List<String>> getOperationConfig(OperationConfigVO operationConfigVO) {
+        Map<String, List<String>> map = new HashMap<>();
+        Map<String, List<OperationConfig>> operationMap = new LinkedHashMap<>();
+        QueryWrapper<OperationConfig> operationConfigQueryWrapper = new QueryWrapper<>();
+        operationConfigQueryWrapper
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_code", operationConfigVO.getHosCode());
+        if (ListUtil.isNotEmpty(operationConfigVO.getNameList())) {
+            operationConfigQueryWrapper.in("name", operationConfigVO.getNameList());
+            List<OperationConfig> operationConfigList = this.list(operationConfigQueryWrapper);
+            operationMap = EntityUtil.makeEntityListMap(operationConfigList, "name");
+        } else if (ListUtil.isNotEmpty(operationConfigVO.getUniqueNameList())) {
+            operationConfigQueryWrapper.in("unique_name", operationConfigVO.getUniqueNameList());
+            List<OperationConfig> operationConfigList = this.list(operationConfigQueryWrapper);
+            operationMap = EntityUtil.makeEntityListMap(operationConfigList, "uniqueName");
+        }
+        for (Map.Entry<String, List<OperationConfig>> entry : operationMap.entrySet()) {
+            map.put(entry.getKey(), entry.getValue()
+                    .stream()
+                    .map(operationConfig -> operationConfig.getUniqueName())
+                    .distinct()
+                    .collect(Collectors.toList()));
+        }
+        return map;
+    }
+}

+ 16 - 0
tran-service/src/main/java/com/diagbot/mapper/OperationConfigMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.OperationConfig;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-03-27
+ */
+public interface OperationConfigMapper extends BaseMapper<OperationConfig> {
+
+}

+ 16 - 0
tran-service/src/main/java/com/diagbot/service/OperationConfigService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.OperationConfig;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-03-27
+ */
+public interface OperationConfigService extends IService<OperationConfig> {
+
+}

+ 20 - 0
tran-service/src/main/java/com/diagbot/service/impl/OperationConfigServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.OperationConfig;
+import com.diagbot.mapper.OperationConfigMapper;
+import com.diagbot.service.OperationConfigService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-03-27
+ */
+@Service
+public class OperationConfigServiceImpl extends ServiceImpl<OperationConfigMapper, OperationConfig> implements OperationConfigService {
+
+}

+ 18 - 0
tran-service/src/main/java/com/diagbot/vo/OperationConfigVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/3/27 15:45
+ */
+@Getter
+@Setter
+public class OperationConfigVO extends HosCodeVO {
+    private List<String> nameList;
+    private List<String> uniqueNameList;
+}

+ 44 - 0
tran-service/src/main/java/com/diagbot/web/OperationConfigController.java

@@ -0,0 +1,44 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.OperationConfigFacade;
+import com.diagbot.vo.OperationConfigVO;
+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;
+import java.util.Map;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-03-27
+ */
+@RestController
+@RequestMapping("/operationConfig")
+@Api(value = "手术公表映射配置相关API", tags = { "手术公表映射配置相关API" })
+public class OperationConfigController {
+
+    @Autowired
+    private OperationConfigFacade operationConfigFacade;
+
+    @ApiOperation(value = "获取手术项目映射关系:[by:zhaops]",
+            notes = "hosCode:医院编码,必填<br>" +
+                    "nameList:手术项目外部名称列表<br>" +
+                    "uniqueNameList:手术项目内部名称列表<br>")
+    @PostMapping("/getOperationConfig")
+    @SysLogger("getOperationConfig")
+    public RespDTO<Map<String, List<String>>> getOperationConfig(@RequestBody OperationConfigVO operationConfigVO) {
+        return RespDTO.onSuc(operationConfigFacade.getOperationConfig(operationConfigVO));
+    }
+}

+ 18 - 0
tran-service/src/main/resources/mapper/OperationConfigMapper.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.OperationConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.OperationConfig">
+        <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="hospital_code" property="hospitalCode" />
+        <result column="name" property="name" />
+        <result column="unique_name" property="uniqueName" />
+    </resultMap>
+
+</mapper>