Parcourir la source

Merge branch 'dev/mix20191225_security' into dev/icss20200109_template

gaodm il y a 5 ans
Parent
commit
4989aeb872
100 fichiers modifiés avec 6310 ajouts et 3 suppressions
  1. 2 1
      common/src/main/java/com/diagbot/enums/SysTypeEnum.java
  2. 6 0
      config-server/src/main/resources/shared/gateway-service-dev.yml
  3. 6 0
      config-server/src/main/resources/shared/gateway-service-local.yml
  4. 6 0
      config-server/src/main/resources/shared/gateway-service-pre.yml
  5. 6 0
      config-server/src/main/resources/shared/gateway-service-pro.yml
  6. 6 0
      config-server/src/main/resources/shared/gateway-service-test.yml
  7. 96 0
      config-server/src/main/resources/shared/mrman-service-dev.yml
  8. 96 0
      config-server/src/main/resources/shared/mrman-service-local.yml
  9. 96 0
      config-server/src/main/resources/shared/mrman-service-pre.yml
  10. 96 0
      config-server/src/main/resources/shared/mrman-service-pro.yml
  11. 96 0
      config-server/src/main/resources/shared/mrman-service-test.yml
  12. 1055 0
      docs/029.20200130浙江医院质控整改/init_user.sql
  13. 69 0
      knowledgeman-service/src/main/java/com/diagbot/dto/RuleAppDTO.java
  14. 56 0
      knowledgeman-service/src/main/java/com/diagbot/dto/RulePubDTO.java
  15. 155 0
      knowledgeman-service/src/main/java/com/diagbot/entity/RuleApp.java
  16. 183 0
      knowledgeman-service/src/main/java/com/diagbot/entity/RulePub.java
  17. 55 0
      knowledgeman-service/src/main/java/com/diagbot/enums/RuleAppTypeEnum.java
  18. 109 0
      knowledgeman-service/src/main/java/com/diagbot/facade/RuleAppFacade.java
  19. 71 0
      knowledgeman-service/src/main/java/com/diagbot/facade/RulePubFacade.java
  20. 16 0
      knowledgeman-service/src/main/java/com/diagbot/mapper/RuleAppMapper.java
  21. 16 0
      knowledgeman-service/src/main/java/com/diagbot/mapper/RulePubMapper.java
  22. 16 0
      knowledgeman-service/src/main/java/com/diagbot/service/RuleAppService.java
  23. 16 0
      knowledgeman-service/src/main/java/com/diagbot/service/RulePubService.java
  24. 4 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java
  25. 20 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/RuleAppServiceImpl.java
  26. 20 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/RulePubServiceImpl.java
  27. 2 0
      knowledgeman-service/src/main/java/com/diagbot/vo/ConceptIndexVO.java
  28. 3 0
      knowledgeman-service/src/main/java/com/diagbot/vo/GetConceptDetailListVO.java
  29. 18 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppIdVO.java
  30. 28 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppPageVO.java
  31. 60 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppSaveVO.java
  32. 19 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RulePubIdVO.java
  33. 21 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RulePubPageVO.java
  34. 53 0
      knowledgeman-service/src/main/java/com/diagbot/vo/RulePubSaveVO.java
  35. 70 0
      knowledgeman-service/src/main/java/com/diagbot/web/RuleAppController.java
  36. 69 0
      knowledgeman-service/src/main/java/com/diagbot/web/RulePubController.java
  37. 12 2
      knowledgeman-service/src/main/resources/mapper/ConceptDetailMapper.xml
  38. 18 0
      knowledgeman-service/src/main/resources/mapper/RuleAppMapper.xml
  39. 23 0
      knowledgeman-service/src/main/resources/mapper/RulePubMapper.xml
  40. 25 0
      mrman-service/.gitignore
  41. 189 0
      mrman-service/pom.xml
  42. 36 0
      mrman-service/src/main/java/com/diagbot/MrmanServiceApplication.java
  43. 41 0
      mrman-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java
  44. 30 0
      mrman-service/src/main/java/com/diagbot/client/UserServiceClient.java
  45. 35 0
      mrman-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java
  46. 19 0
      mrman-service/src/main/java/com/diagbot/config/CustomAccessTokenConverter.java
  47. 15 0
      mrman-service/src/main/java/com/diagbot/config/GlobalMethodSecurityConfigurer.java
  48. 48 0
      mrman-service/src/main/java/com/diagbot/config/JwtConfigurer.java
  49. 33 0
      mrman-service/src/main/java/com/diagbot/config/MybatisPlusConfigurer.java
  50. 42 0
      mrman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  51. 70 0
      mrman-service/src/main/java/com/diagbot/config/SwaggerConfigurer.java
  52. 105 0
      mrman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  53. 29 0
      mrman-service/src/main/java/com/diagbot/config/security/UrlConfigAttribute.java
  54. 79 0
      mrman-service/src/main/java/com/diagbot/config/security/UrlFilterSecurityInterceptor.java
  55. 40 0
      mrman-service/src/main/java/com/diagbot/config/security/UrlMetadataSourceService.java
  56. 28 0
      mrman-service/src/main/java/com/diagbot/dto/BABLDTO.java
  57. 69 0
      mrman-service/src/main/java/com/diagbot/dto/BABLDetailDTO.java
  58. 26 0
      mrman-service/src/main/java/com/diagbot/dto/BLJLDetailDTO.java
  59. 553 0
      mrman-service/src/main/java/com/diagbot/entity/ArRechome.java
  60. 181 0
      mrman-service/src/main/java/com/diagbot/entity/BrRecdiagnose.java
  61. 313 0
      mrman-service/src/main/java/com/diagbot/entity/BrRecinhos.java
  62. 208 0
      mrman-service/src/main/java/com/diagbot/entity/MrMedicalrecords.java
  63. 49 0
      mrman-service/src/main/java/com/diagbot/entity/MrMrcontent.java
  64. 21 0
      mrman-service/src/main/java/com/diagbot/entity/Token.java
  65. 51 0
      mrman-service/src/main/java/com/diagbot/enums/BloodTypeEnum.java
  66. 49 0
      mrman-service/src/main/java/com/diagbot/enums/RHTypeEnum.java
  67. 49 0
      mrman-service/src/main/java/com/diagbot/enums/SexEnum.java
  68. 49 0
      mrman-service/src/main/java/com/diagbot/enums/ZCZDPBEnum.java
  69. 49 0
      mrman-service/src/main/java/com/diagbot/enums/ZDLBDMEnum.java
  70. 51 0
      mrman-service/src/main/java/com/diagbot/enums/ZDLXEnum.java
  71. 81 0
      mrman-service/src/main/java/com/diagbot/exception/CommonExceptionHandler.java
  72. 39 0
      mrman-service/src/main/java/com/diagbot/exception/ServiceErrorCode.java
  73. 153 0
      mrman-service/src/main/java/com/diagbot/facade/ArRechomeFacade.java
  74. 70 0
      mrman-service/src/main/java/com/diagbot/facade/BrRecdiagnoseFacade.java
  75. 29 0
      mrman-service/src/main/java/com/diagbot/facade/EnumsDataFacade.java
  76. 13 0
      mrman-service/src/main/java/com/diagbot/facade/MrMedicalrecordsFacade.java
  77. 13 0
      mrman-service/src/main/java/com/diagbot/facade/MrMrcontentFacade.java
  78. 34 0
      mrman-service/src/main/java/com/diagbot/mapper/ArRechomeMapper.java
  79. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/BrRecdiagnoseMapper.java
  80. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/BrRecinhosMapper.java
  81. 27 0
      mrman-service/src/main/java/com/diagbot/mapper/MrMedicalrecordsMapper.java
  82. 16 0
      mrman-service/src/main/java/com/diagbot/mapper/MrMrcontentMapper.java
  83. 23 0
      mrman-service/src/main/java/com/diagbot/rabbit/MyProcessor.java
  84. 27 0
      mrman-service/src/main/java/com/diagbot/rabbit/MySender.java
  85. 34 0
      mrman-service/src/main/java/com/diagbot/service/ArRechomeService.java
  86. 16 0
      mrman-service/src/main/java/com/diagbot/service/BrRecdiagnoseService.java
  87. 16 0
      mrman-service/src/main/java/com/diagbot/service/BrRecinhosService.java
  88. 20 0
      mrman-service/src/main/java/com/diagbot/service/EnumsDataService.java
  89. 26 0
      mrman-service/src/main/java/com/diagbot/service/MrMedicalrecordsService.java
  90. 16 0
      mrman-service/src/main/java/com/diagbot/service/MrMrcontentService.java
  91. 42 0
      mrman-service/src/main/java/com/diagbot/service/impl/ArRechomeServiceImpl.java
  92. 20 0
      mrman-service/src/main/java/com/diagbot/service/impl/BrRecdiagnoseServiceImpl.java
  93. 20 0
      mrman-service/src/main/java/com/diagbot/service/impl/BrRecinhosServiceImpl.java
  94. 35 0
      mrman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java
  95. 32 0
      mrman-service/src/main/java/com/diagbot/service/impl/MrMedicalrecordsServiceImpl.java
  96. 20 0
      mrman-service/src/main/java/com/diagbot/service/impl/MrMrcontentServiceImpl.java
  97. 62 0
      mrman-service/src/main/java/com/diagbot/vo/BABLDetailVO.java
  98. 22 0
      mrman-service/src/main/java/com/diagbot/vo/BABLVO.java
  99. 21 0
      mrman-service/src/main/java/com/diagbot/vo/SysLogVo.java
  100. 0 0
      mrman-service/src/main/java/com/diagbot/web/ArRechomeController.java

+ 2 - 1
common/src/main/java/com/diagbot/enums/SysTypeEnum.java

@@ -29,7 +29,8 @@ public enum SysTypeEnum implements KeyedNamed {
     DATA_SERVICE(16, "data-service"),
     PREC_SERVICE(17, "prec-service"),
     PRECMAN_SERVICE(18, "precman-service"),
-    MRQCMAN_SERVICE(19, "mrqcman-service");
+    MRQCMAN_SERVICE(19, "mrqcman-service"),
+    MRMAN_SERVICE(20, "mrman-service");
 
     @Setter
     private int key;

+ 6 - 0
config-server/src/main/resources/shared/gateway-service-dev.yml

@@ -166,6 +166,12 @@ spring:
         filters:
         #        - SwaggerHeaderFilter
         - StripPrefix=2
+      - id: mrman-service
+        uri: lb://mrman-service
+        predicates:
+        - Path=/api/mrman/**
+        filters:
+        - StripPrefix=2
 
 server:
   port: 5050

+ 6 - 0
config-server/src/main/resources/shared/gateway-service-local.yml

@@ -166,6 +166,12 @@ spring:
         filters:
         #        - SwaggerHeaderFilter
         - StripPrefix=2
+      - id: mrman-service
+        uri: lb://mrman-service
+        predicates:
+        - Path=/api/mrman/**
+        filters:
+        - StripPrefix=2
 
 server:
   port: 5050

+ 6 - 0
config-server/src/main/resources/shared/gateway-service-pre.yml

@@ -175,6 +175,12 @@ spring:
         - Path=/api/mrqcman/**
         filters:
         - StripPrefix=2
+      - id: mrman-service
+        uri: lb://mrman-service
+        predicates:
+        - Path=/api/mrman/**
+        filters:
+        - StripPrefix=2
 
 server:
   port: 5050

+ 6 - 0
config-server/src/main/resources/shared/gateway-service-pro.yml

@@ -166,6 +166,12 @@ spring:
         filters:
         #        - SwaggerHeaderFilter
         - StripPrefix=2
+      - id: mrman-service
+        uri: lb://mrman-service
+        predicates:
+        - Path=/api/mrman/**
+        filters:
+        - StripPrefix=2
 
 server:
   port: 5050

+ 6 - 0
config-server/src/main/resources/shared/gateway-service-test.yml

@@ -166,6 +166,12 @@ spring:
         filters:
         #        - SwaggerHeaderFilter
         - StripPrefix=2
+      - id: mrman-service
+        uri: lb://mrman-service
+        predicates:
+        - Path=/api/mrman/**
+        filters:
+        - StripPrefix=2
 
 server:
   port: 5050

+ 96 - 0
config-server/src/main/resources/shared/mrman-service-dev.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8833
+
+# 驱动配置信息
+spring:
+  datasource:
+    druid:
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      platform: oracle
+      url: jdbc:oracle:thin:@192.168.2.246:1521:orcl
+      username: ETRACKMRQC
+      password: ETRACKMRQC
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  cloud:
+    stream:
+      bindings:
+        outputLog:
+          destination: myLog
+  #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+
+  #mq
+  rabbitmq:
+    host: 192.168.2.236
+    port: 5672
+    username: lantone
+    password: lantone
+    publisher-confirms: true
+    virtual-host: /
+
+#mybatis
+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

+ 96 - 0
config-server/src/main/resources/shared/mrman-service-local.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8833
+
+# 驱动配置信息
+spring:
+  datasource:
+    druid:
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      platform: oracle
+      url: jdbc:oracle:thin:@192.168.2.246:1521:orcl
+      username: ETRACKMRQC
+      password: ETRACKMRQC
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  cloud:
+    stream:
+      bindings:
+        outputLog:
+          destination: myLog
+  #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+
+  #mq
+  rabbitmq:
+    host: localhost
+    port: 5672
+    username: guest
+    password: guest
+    publisher-confirms: true
+    virtual-host: /
+
+#mybatis
+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

+ 96 - 0
config-server/src/main/resources/shared/mrman-service-pre.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8833
+
+# 驱动配置信息
+spring:
+  datasource:
+    druid:
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      platform: oracle
+      url: jdbc:oracle:thin:@192.168.2.246:1521:orcl
+      username: ETRACKMRQC
+      password: ETRACKMRQC
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  cloud:
+    stream:
+      bindings:
+        outputLog:
+          destination: myLog
+  #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+
+  #mq
+  rabbitmq:
+    host: 192.168.2.121
+    port: 5672
+    username: lantone
+    password: lantone
+    publisher-confirms: true
+    virtual-host: /
+
+#mybatis
+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

+ 96 - 0
config-server/src/main/resources/shared/mrman-service-pro.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8833
+
+# 驱动配置信息
+spring:
+  datasource:
+    druid:
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      platform: oracle
+      url: jdbc:oracle:thin:@192.168.2.246:1521:orcl
+      username: ETRACKMRQC
+      password: ETRACKMRQC
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  cloud:
+    stream:
+      bindings:
+        outputLog:
+          destination: myLog
+  #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+
+  #mq
+  rabbitmq:
+    host: 192.168.2.122
+    port: 5672
+    username: lantone
+    password: lantone
+    publisher-confirms: true
+    virtual-host: /
+
+#mybatis
+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

+ 96 - 0
config-server/src/main/resources/shared/mrman-service-test.yml

@@ -0,0 +1,96 @@
+server:
+  port: 8833
+
+# 驱动配置信息
+spring:
+  datasource:
+    druid:
+      driver-class-name: oracle.jdbc.driver.OracleDriver
+      platform: oracle
+      url: jdbc:oracle:thin:@192.168.2.246:1521:orcl
+      username: ETRACKMRQC
+      password: ETRACKMRQC
+      # 连接池的配置信息
+      # 初始化大小,最小,最大
+      initialSize: 5
+      minIdle: 5
+      maxActive: 20
+      # 配置获取连接等待超时的时间
+      maxWait: 60000
+      # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+      timeBetweenEvictionRunsMillis: 60000
+      # 配置一个连接在池中最小生存的时间,单位是毫秒
+      minEvictableIdleTimeMillis: 300000
+      validationQuery: SELECT 1 FROM DUAL
+      testWhileIdle: true
+      testOnBorrow: false
+      testOnReturn: false
+      # 打开PSCache,并且指定每个连接上PSCache的大小
+      poolPreparedStatements: true
+      maxPoolPreparedStatementPerConnectionSize: 20
+      # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+      filters.commons-log.connection-logger-name: wall,log4j
+      filter:
+        stat:
+          enabled: true
+          mergeSql: true
+          log-slow-sql: true
+          slow-sql-millis: 2000
+      #监控配置
+      web-stat-filter:
+        enabled: true
+        url-pattern: /*
+        exclusions: '*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*'
+
+      # StatViewServlet配置,说明请参考Druid Wiki,配置_StatViewServlet配置
+      stat-view-servlet:
+        enabled: true
+        url-pattern: /druid/*
+        reset-enable: false
+        login-username: root
+        login-password: root
+
+  cloud:
+    stream:
+      bindings:
+        outputLog:
+          destination: myLog
+  #          contentType: text/plain      # 实体 json string 在传递的类型装换 查看 http://docs.spring
+
+  #mq
+  rabbitmq:
+    host: 192.168.2.241
+    port: 5672
+    username: lantone
+    password: lantone
+    publisher-confirms: true
+    virtual-host: /
+
+#mybatis
+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

Fichier diff supprimé car celui-ci est trop grand
+ 1055 - 0
docs/029.20200130浙江医院质控整改/init_user.sql


+ 69 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/RuleAppDTO.java

@@ -0,0 +1,69 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 15:46
+ */
+@Getter
+@Setter
+public class RuleAppDTO {
+    /**
+     * 索引号
+     */
+    private Integer id;
+
+    //    /**
+    //     * 是否删除,N:未删除,Y:删除
+    //     */
+    //    private String isDeleted;
+    //
+    //    /**
+    //     * 记录创建时间
+    //     */
+    //    private Date gmtCreate;
+    //
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+    //
+    //    /**
+    //     * 创建人,0表示无创建人值
+    //     */
+    //    private String creator;
+    //
+    //    /**
+    //     * 修改人,如果为0则表示纪录未修改
+    //     */
+    //    private String modifier;
+
+    /**
+     * 操作人
+     */
+    private String operName;
+
+    /**
+     * 指标名称
+     */
+    private String ruleId;
+
+    /**
+     * 1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+     */
+    private String typeId;
+
+    /**
+     * 套餐名称是否必须参与匹配
+     */
+    private String remind;
+    /**
+     * 1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+     */
+    private String typeIdName;
+}

+ 56 - 0
knowledgeman-service/src/main/java/com/diagbot/dto/RulePubDTO.java

@@ -0,0 +1,56 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 16:43
+ */
+@Getter
+@Setter
+public class RulePubDTO {
+    /**
+     * 索引号
+     */
+    private Integer id;
+
+    private String pubName;
+
+    private String ruleType;
+
+    /**
+     * 比较符
+     */
+    private String minOperator;
+
+    /**
+     * 索引值
+     */
+    private String minValue;
+
+    private String minUnit;
+
+    private String maxOperator;
+
+    private String maxValue;
+
+    /**
+     * 数值单位
+     */
+    private String maxUnit;
+
+    private String eqOperator;
+
+    private String eqValue;
+
+    private String eqUnit;
+
+    /**
+     * 推送的量表名称
+     */
+    private String remind;
+
+    private String suffixInfo;
+}

+ 155 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/RuleApp.java

@@ -0,0 +1,155 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+@TableName("kl_rule_app")
+public class RuleApp implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 索引号
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 指标名称
+     */
+    private String ruleId;
+
+    /**
+     * 1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+     */
+    private String typeId;
+
+    /**
+     * 套餐名称是否必须参与匹配
+     */
+    private String remind;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer 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 String getRuleId() {
+        return ruleId;
+    }
+
+    public void setRuleId(String ruleId) {
+        this.ruleId = ruleId;
+    }
+
+    public String getTypeId() {
+        return typeId;
+    }
+
+    public void setTypeId(String typeId) {
+        this.typeId = typeId;
+    }
+
+    public String getRemind() {
+        return remind;
+    }
+
+    public void setRemind(String remind) {
+        this.remind = remind;
+    }
+
+    @Override
+    public String toString() {
+        return "RuleApp{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", ruleId=" + ruleId +
+                ", typeId=" + typeId +
+                ", remind=" + remind +
+                "}";
+    }
+}

+ 183 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/RulePub.java

@@ -0,0 +1,183 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+@TableName("kl_rule_pub")
+public class RulePub implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 索引号
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    private String pubName;
+
+    private String ruleType;
+
+    /**
+     * 比较符
+     */
+    private String minOperator;
+
+    /**
+     * 索引值
+     */
+    private String minValue;
+
+    private String minUnit;
+
+    private String maxOperator;
+
+    private String maxValue;
+
+    /**
+     * 数值单位
+     */
+    private String maxUnit;
+
+    private String eqOperator;
+
+    private String eqValue;
+
+    private String eqUnit;
+
+    /**
+     * 推送的量表名称
+     */
+    private String remind;
+
+    private String suffixInfo;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+    public String getPubName() {
+        return pubName;
+    }
+
+    public void setPubName(String pubName) {
+        this.pubName = pubName;
+    }
+    public String getRuleType() {
+        return ruleType;
+    }
+
+    public void setRuleType(String ruleType) {
+        this.ruleType = ruleType;
+    }
+    public String getMinOperator() {
+        return minOperator;
+    }
+
+    public void setMinOperator(String minOperator) {
+        this.minOperator = minOperator;
+    }
+    public String getMinValue() {
+        return minValue;
+    }
+
+    public void setMinValue(String minValue) {
+        this.minValue = minValue;
+    }
+    public String getMinUnit() {
+        return minUnit;
+    }
+
+    public void setMinUnit(String minUnit) {
+        this.minUnit = minUnit;
+    }
+    public String getMaxOperator() {
+        return maxOperator;
+    }
+
+    public void setMaxOperator(String maxOperator) {
+        this.maxOperator = maxOperator;
+    }
+    public String getMaxValue() {
+        return maxValue;
+    }
+
+    public void setMaxValue(String maxValue) {
+        this.maxValue = maxValue;
+    }
+    public String getMaxUnit() {
+        return maxUnit;
+    }
+
+    public void setMaxUnit(String maxUnit) {
+        this.maxUnit = maxUnit;
+    }
+    public String getEqOperator() {
+        return eqOperator;
+    }
+
+    public void setEqOperator(String eqOperator) {
+        this.eqOperator = eqOperator;
+    }
+    public String getEqValue() {
+        return eqValue;
+    }
+
+    public void setEqValue(String eqValue) {
+        this.eqValue = eqValue;
+    }
+    public String getEqUnit() {
+        return eqUnit;
+    }
+
+    public void setEqUnit(String eqUnit) {
+        this.eqUnit = eqUnit;
+    }
+    public String getRemind() {
+        return remind;
+    }
+
+    public void setRemind(String remind) {
+        this.remind = remind;
+    }
+    public String getSuffixInfo() {
+        return suffixInfo;
+    }
+
+    public void setSuffixInfo(String suffixInfo) {
+        this.suffixInfo = suffixInfo;
+    }
+
+    @Override
+    public String toString() {
+        return "RulePub{" +
+            "id=" + id +
+            ", pubName=" + pubName +
+            ", ruleType=" + ruleType +
+            ", minOperator=" + minOperator +
+            ", minValue=" + minValue +
+            ", minUnit=" + minUnit +
+            ", maxOperator=" + maxOperator +
+            ", maxValue=" + maxValue +
+            ", maxUnit=" + maxUnit +
+            ", eqOperator=" + eqOperator +
+            ", eqValue=" + eqValue +
+            ", eqUnit=" + eqUnit +
+            ", remind=" + remind +
+            ", suffixInfo=" + suffixInfo +
+        "}";
+    }
+}

+ 55 - 0
knowledgeman-service/src/main/java/com/diagbot/enums/RuleAppTypeEnum.java

@@ -0,0 +1,55 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum RuleAppTypeEnum implements KeyedNamed {
+    WJZTX(1, "危急值提醒"),
+    KDHLX(2, "开单合理性"),
+    GLPG(3, "管理评估"),
+    BLFY(4, "不良反应"),
+    YWTJ(5, "药物推荐"),
+    BQTS(6, "病情提示");
+
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    RuleAppTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static RuleAppTypeEnum getEnum(int key) {
+        for (RuleAppTypeEnum item : RuleAppTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        RuleAppTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 109 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/RuleAppFacade.java

@@ -0,0 +1,109 @@
+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.UserServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RuleAppDTO;
+import com.diagbot.entity.RuleApp;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.RuleAppTypeEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.RuleAppServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.IntegerUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.RuleAppIdVO;
+import com.diagbot.vo.RuleAppPageVO;
+import com.diagbot.vo.RuleAppSaveVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 15:44
+ */
+@Component
+public class RuleAppFacade extends RuleAppServiceImpl {
+    @Autowired
+    private UserServiceClient userServiceClient;
+
+    public IPage<RuleAppDTO> pageRuleApp(RuleAppPageVO ruleAppPageVO) {
+        IPage<RuleAppDTO> res = new Page<>(ruleAppPageVO.getCurrent(), ruleAppPageVO.getSize());
+        QueryWrapper<RuleApp> ruleAppQueryWrapper = new QueryWrapper<>();
+        ruleAppQueryWrapper.like(StringUtil.isNotBlank(ruleAppPageVO.getRuleId()), "rule_id", ruleAppPageVO.getRuleId())
+                .like(StringUtil.isNotBlank(ruleAppPageVO.getRemind()), "remind", ruleAppPageVO.getRemind())
+                .eq(StringUtil.isNotBlank(ruleAppPageVO.getTypeId()), "type_id", ruleAppPageVO.getTypeId())
+                .orderByDesc("gmt_modified", "id");
+        IPage<RuleApp> page = this.page(ruleAppPageVO, ruleAppQueryWrapper);
+        BeanUtil.copyProperties(page, res);
+        if (ListUtil.isNotEmpty(page.getRecords())) {
+            List<String> userIds = page.getRecords().stream()
+                    .map(i -> i.getModifier()).distinct().collect(Collectors.toList());
+            RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
+            RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
+            List<RuleAppDTO> ruleAppDTOList = ListUtil.newArrayList();
+            for (RuleApp ruleApp : page.getRecords()) {
+                RuleAppDTO ruleAppDTO = new RuleAppDTO();
+                BeanUtil.copyProperties(ruleApp, ruleAppDTO);
+                ruleAppDTO.setOperName(respDTO.data.get(ruleApp.getModifier()));
+                ruleAppDTO.setTypeIdName(RuleAppTypeEnum.getName(Integer.valueOf(ruleApp.getTypeId())));
+                ruleAppDTOList.add(ruleAppDTO);
+            }
+            res.setRecords(ruleAppDTOList);
+        }
+        return res;
+    }
+
+    public Boolean removeRuleApp(RuleAppIdVO ruleAppIdVO) {
+        return this.removeById(ruleAppIdVO.getId());
+    }
+
+    public RuleAppDTO getRuleApp(RuleAppIdVO ruleAppIdVO) {
+        RuleApp ruleApp = this.getById(ruleAppIdVO.getId());
+        RuleAppDTO ruleAppDTO = new RuleAppDTO();
+        BeanUtil.copyProperties(ruleApp, ruleAppDTO);
+        return ruleAppDTO;
+    }
+
+    public Boolean saveRuleApp(@Valid @RequestBody RuleAppSaveVO ruleAppSaveVO) {
+        if (null == ruleAppSaveVO) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL);
+        }
+        RuleApp ruleApp = new RuleApp();
+        BeanUtil.copyProperties(ruleAppSaveVO, ruleApp);
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date date = DateUtil.now();
+        ruleApp.setModifier(userId);
+        ruleApp.setGmtModified(date);
+        //查询id 是否存在
+        if (!IntegerUtil.isNull(ruleAppSaveVO.getId())) {
+            QueryWrapper<RuleApp> ruleAppQueryWrapper = new QueryWrapper<>();
+            ruleAppQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("id", ruleAppSaveVO.getId());
+            if (this.count(ruleAppQueryWrapper) < 1) {
+                ruleApp.setCreator(userId);
+                ruleApp.setGmtCreate(date);
+            }
+        } else {
+            ruleApp.setCreator(userId);
+            ruleApp.setGmtCreate(date);
+        }
+
+        return this.saveOrUpdate(ruleApp);
+    }
+}

+ 71 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/RulePubFacade.java

@@ -0,0 +1,71 @@
+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.dto.RulePubDTO;
+import com.diagbot.entity.RulePub;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.RulePubServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.IntegerUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.RulePubIdVO;
+import com.diagbot.vo.RulePubPageVO;
+import com.diagbot.vo.RulePubSaveVO;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 15:44
+ */
+@Component
+public class RulePubFacade extends RulePubServiceImpl {
+
+    public IPage<RulePubDTO> pageRulePub(RulePubPageVO rulePubPageVO) {
+        IPage<RulePubDTO> res = new Page<>(rulePubPageVO.getCurrent(), rulePubPageVO.getSize());
+        QueryWrapper<RulePub> rulePubQueryWrapper = new QueryWrapper<>();
+        rulePubQueryWrapper.eq(!IntegerUtil.isNull(rulePubPageVO.getId()), "id", rulePubPageVO.getId())
+                .like(StringUtil.isNotBlank(rulePubPageVO.getPubName()), "pub_name", rulePubPageVO.getPubName())
+                .orderByDesc("id");
+        IPage<RulePub> page = this.page(rulePubPageVO, rulePubQueryWrapper);
+        BeanUtil.copyProperties(page, res);
+        if (ListUtil.isNotEmpty(page.getRecords())) {
+            List<RulePubDTO> rulePubDTOList = ListUtil.newArrayList();
+            for (RulePub rulePub : page.getRecords()) {
+                RulePubDTO rulePubDTO = new RulePubDTO();
+                BeanUtil.copyProperties(rulePub, rulePubDTO);
+                rulePubDTOList.add(rulePubDTO);
+            }
+            res.setRecords(rulePubDTOList);
+        }
+        return res;
+    }
+
+    public Boolean removeRulePub(RulePubIdVO rulePubIdVO) {
+        return this.removeById(rulePubIdVO.getId());
+    }
+
+    public RulePubDTO getRulePub(RulePubIdVO rulePubIdVO) {
+        RulePub rulePub = this.getById(rulePubIdVO.getId());
+        RulePubDTO rulePubDTO = new RulePubDTO();
+        BeanUtil.copyProperties(rulePub, rulePubDTO);
+        return rulePubDTO;
+    }
+
+    public Boolean saveRulePub(@Valid @RequestBody RulePubSaveVO rulePubSaveVO) {
+        if (null == rulePubSaveVO) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL);
+        }
+        RulePub rulePub = new RulePub();
+        BeanUtil.copyProperties(rulePubSaveVO, rulePub);
+        return this.saveOrUpdate(rulePub);
+    }
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/RuleAppMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.RuleApp;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+public interface RuleAppMapper extends BaseMapper<RuleApp> {
+
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/mapper/RulePubMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.RulePub;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+public interface RulePubMapper extends BaseMapper<RulePub> {
+
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/service/RuleAppService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.RuleApp;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+public interface RuleAppService extends IService<RuleApp> {
+
+}

+ 16 - 0
knowledgeman-service/src/main/java/com/diagbot/service/RulePubService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.RulePub;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+public interface RulePubService extends IService<RulePub> {
+
+}

+ 4 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java

@@ -10,6 +10,7 @@ import com.diagbot.enums.LexiconTypeEnum;
 import com.diagbot.enums.PositionTypeEnum;
 import com.diagbot.enums.ProductTypeEnum;
 import com.diagbot.enums.RelationModelTypeEnum;
+import com.diagbot.enums.RuleAppTypeEnum;
 import com.diagbot.service.EnumsDataService;
 import com.diagbot.util.EnumEntriesBuilder;
 import org.springframework.stereotype.Service;
@@ -55,11 +56,14 @@ public class EnumsDataServiceImpl implements EnumsDataService {
                         LexiconTypeEnum.PACS_ITEMS, LexiconTypeEnum.DRUGS,
                         LexiconTypeEnum.SIDE_EFFECTS, LexiconTypeEnum.SYMPTOM,
                         LexiconTypeEnum.OPERATION)
+                .addEnums("conceptDetailLisPacsOnlyEnum",
+                        LexiconTypeEnum.LIS_TABLES, LexiconTypeEnum.PACS_ITEMS)
                 .addEnums("relationModelTypeEnum", RelationModelTypeEnum.values())
                 .addEnums("diagnoseFeatureTypeEnum", DiagnoseFeatureTypeEnum.values())
                 .addEnums("diagnoseFieldEnum", DiagnoseFieldEnum.values())
                 .addEnums("diagnoseTypeEnum", DiagnoseTypeEnum.values())
                 .addEnums("hasQuestionEnum", HasQuestionEnum.values())
+                .addEnums("ruleAppTypeEnum", RuleAppTypeEnum.values())
                 .build();
         return enumMap;
     }

+ 20 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/RuleAppServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.RuleApp;
+import com.diagbot.mapper.RuleAppMapper;
+import com.diagbot.service.RuleAppService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+@Service
+public class RuleAppServiceImpl extends ServiceImpl<RuleAppMapper, RuleApp> implements RuleAppService {
+
+}

+ 20 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/RulePubServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.RulePub;
+import com.diagbot.mapper.RulePubMapper;
+import com.diagbot.service.RulePubService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-01-30
+ */
+@Service
+public class RulePubServiceImpl extends ServiceImpl<RulePubMapper, RulePub> implements RulePubService {
+
+}

+ 2 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/ConceptIndexVO.java

@@ -19,5 +19,7 @@ public class ConceptIndexVO {
     @ApiModelProperty(value = "检索名称",required=true)
     @NotBlank(message="名称不能为空")
     private String name;
+    @ApiModelProperty(hidden = true)
+    private Integer lisPacsOnly = 0;
 
 }

+ 3 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/GetConceptDetailListVO.java

@@ -33,6 +33,9 @@ public class GetConceptDetailListVO extends Page {
 
 	@ApiModelProperty(value = "状态值,已删除=Y,启用中=N")
 	private String status;
+
+    @ApiModelProperty(hidden = true)
+	private Integer lisPacsOnly = 0;
 	
 
 }

+ 18 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppIdVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RuleAppIdVO {
+    @NotNull(message="规则应用id必传")
+    private Integer id;
+}

+ 28 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppPageVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RuleAppPageVO extends Page {
+    /**
+     * 指标名称
+     */
+    private String ruleId;
+    /**
+     * 1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+     */
+    private String typeId;
+
+    /**
+     * 套餐名称是否必须参与匹配
+     */
+    private String remind;
+}

+ 60 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RuleAppSaveVO.java

@@ -0,0 +1,60 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RuleAppSaveVO {
+    /**
+     * 索引号
+     */
+    private Integer id;
+
+//    /**
+//     * 是否删除,N:未删除,Y:删除
+//     */
+//    private String isDeleted;
+//
+//    /**
+//     * 记录创建时间
+//     */
+//    private Date gmtCreate;
+//
+//    /**
+//     * 记录修改时间,如果时间是1970年则表示纪录未修改
+//     */
+//    private Date gmtModified;
+//
+//    /**
+//     * 创建人,0表示无创建人值
+//     */
+//    private String creator;
+//
+//    /**
+//     * 修改人,如果为0则表示纪录未修改
+//     */
+//    private String modifier;
+
+    /**
+     * 指标名称
+     */
+    private String ruleId;
+
+    /**
+     * 1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+     */
+    private String typeId;
+
+    /**
+     * 套餐名称是否必须参与匹配
+     */
+    private String remind;
+}

+ 19 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RulePubIdVO.java

@@ -0,0 +1,19 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RulePubIdVO {
+
+    @NotNull(message="规则维护id必传")
+    private Integer id;
+}

+ 21 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RulePubPageVO.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RulePubPageVO extends Page {
+    /**
+     * 索引号
+     */
+    private Integer id;
+
+    private String pubName;
+}

+ 53 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/RulePubSaveVO.java

@@ -0,0 +1,53 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/30 17:04
+ */
+@Getter
+@Setter
+public class RulePubSaveVO {
+    private Integer id;
+
+    private String pubName;
+
+//    private String ruleType;
+
+    /**
+     * 比较符
+     */
+    private String minOperator;
+
+    /**
+     * 索引值
+     */
+    private String minValue;
+
+    private String minUnit;
+
+    private String maxOperator;
+
+    private String maxValue;
+
+    /**
+     * 数值单位
+     */
+    private String maxUnit;
+
+    private String eqOperator;
+
+    private String eqValue;
+
+    private String eqUnit;
+
+    /**
+     * 推送的量表名称
+     */
+    private String remind;
+
+    private String suffixInfo;
+}

+ 70 - 0
knowledgeman-service/src/main/java/com/diagbot/web/RuleAppController.java

@@ -0,0 +1,70 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RuleAppDTO;
+import com.diagbot.facade.RuleAppFacade;
+import com.diagbot.vo.RuleAppIdVO;
+import com.diagbot.vo.RuleAppPageVO;
+import com.diagbot.vo.RuleAppSaveVO;
+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.stereotype.Controller;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-30
+ */
+@RestController
+@Api(value = "规则应用ruleApp API", tags = { "规则应用ruleApp API" })
+@SuppressWarnings("unchecked")
+@RequestMapping("/ruleApp")
+public class RuleAppController {
+    @Autowired
+    private RuleAppFacade ruleAppFacade;
+
+    @ApiOperation(value = "规则应用ruleApp列表[by:gaodm]")
+    @PostMapping("/pageRuleApp")
+    @SysLogger("pageRuleApp")
+    public RespDTO<IPage<RuleAppDTO>> pageRuleApp(@RequestBody RuleAppPageVO ruleAppPageVO) {
+        return RespDTO.onSuc(ruleAppFacade.pageRuleApp(ruleAppPageVO));
+    }
+
+    @ApiOperation(value = "删除规则应用ruleApp[by:rengb]")
+    @PostMapping("/removeRuleApp")
+    @SysLogger("removeRuleApp")
+    @Transactional
+    public RespDTO<Boolean> removeRuleApp(@Valid @RequestBody RuleAppIdVO ruleAppIdVO) {
+        return RespDTO.onSuc(ruleAppFacade.removeRuleApp(ruleAppIdVO));
+    }
+
+    @ApiOperation(value = "获取规则应用ruleApp详情[by:gaodm]")
+    @PostMapping("/getRuleApp")
+    @SysLogger("geteRuleApp")
+    public RespDTO<RuleAppDTO> getRuleApp(@Valid @RequestBody RuleAppIdVO ruleAppIdVO) {
+        return RespDTO.onSuc(ruleAppFacade.getRuleApp(ruleAppIdVO));
+    }
+
+    @ApiOperation(value = "规则应用ruleApp添加或者编辑[by:gaodm]")
+    @PostMapping("/saveRuleApp")
+    @SysLogger("saveRuleApp")
+    @Transactional
+    public RespDTO<Boolean> saveRuleApp(@RequestBody RuleAppSaveVO ruleAppSaveVO) {
+        return RespDTO.onSuc(ruleAppFacade.saveRuleApp(ruleAppSaveVO));
+    }
+}

+ 69 - 0
knowledgeman-service/src/main/java/com/diagbot/web/RulePubController.java

@@ -0,0 +1,69 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RulePubDTO;
+import com.diagbot.facade.RulePubFacade;
+import com.diagbot.vo.RulePubIdVO;
+import com.diagbot.vo.RulePubPageVO;
+import com.diagbot.vo.RulePubSaveVO;
+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 zhoutg
+ * @since 2020-01-30
+ */
+@RestController
+@Api(value = "规则维护rulePub API", tags = { "规则维护rulePub API" })
+@SuppressWarnings("unchecked")
+@RequestMapping("/rulePub")
+public class RulePubController {
+    @Autowired
+    private RulePubFacade rulePubFacade;
+
+    @ApiOperation(value = "规则维护rulePub列表[by:gaodm]")
+    @PostMapping("/pageRulePub")
+    @SysLogger("pageRulePub")
+    public RespDTO<IPage<RulePubDTO>> pageRulePub(@RequestBody RulePubPageVO rulePubPageVO) {
+        return RespDTO.onSuc(rulePubFacade.pageRulePub(rulePubPageVO));
+    }
+
+    @ApiOperation(value = "删除规则维护rulePub[by:rengb]")
+    @PostMapping("/removeRulePub")
+    @SysLogger("removeRulePub")
+    @Transactional
+    public RespDTO<Boolean> removeRulePub(@Valid @RequestBody RulePubIdVO rulePubIdVO) {
+        return RespDTO.onSuc(rulePubFacade.removeRulePub(rulePubIdVO));
+    }
+
+    @ApiOperation(value = "获取规则维护rulePub详情[by:gaodm]")
+    @PostMapping("/getRulePub")
+    @SysLogger("geteRulePub")
+    public RespDTO<RulePubDTO> getRulePub(@Valid @RequestBody RulePubIdVO rulePubIdVO) {
+        return RespDTO.onSuc(rulePubFacade.getRulePub(rulePubIdVO));
+    }
+
+    @ApiOperation(value = "规则维护rulePub添加或者编辑[by:gaodm]")
+    @PostMapping("/saveRulePub")
+    @SysLogger("saveRulePub")
+    @Transactional
+    public RespDTO<Boolean> saveRulePub(@RequestBody RulePubSaveVO rulePubSaveVO) {
+        return RespDTO.onSuc(rulePubFacade.saveRulePub(rulePubSaveVO));
+    }
+
+}

+ 12 - 2
knowledgeman-service/src/main/resources/mapper/ConceptDetailMapper.xml

@@ -32,6 +32,9 @@
 		<if test="libType!=null">
 			and b.lib_type=#{libType}
 		</if>
+        <if test="lisPacsOnly != null and lisPacsOnly == 1">
+            AND b.lib_type in (16,46)
+        </if>
         group by a.concept_id
         ORDER BY a.is_deleted ASC, a.gmt_modified DESC
    	</select>
@@ -47,7 +50,7 @@
 
     <select id="index" resultType="com.diagbot.dto.ConceptIndexDTO">
         SELECT
-			DISTINCT 
+			DISTINCT
 			a.id AS conceptId,
 			a.lib_name AS name,
 			a.lib_type AS typeId
@@ -57,7 +60,14 @@
 		<if test="name != null and name != ''">
             AND UPPER(a.lib_name) like concat('%',UPPER(TRIM(#{name})) ,'%' )
         </if>
-        AND a.lib_type not in(12,13,14)
+        <choose>
+            <when test="lisPacsOnly != null and lisPacsOnly == 1">
+                AND a.lib_type in (16,46)
+            </when>
+            <otherwise>
+                AND a.lib_type not in(12,13,14)
+            </otherwise>
+        </choose>
 		ORDER BY a.gmt_modified DESC
     </select>
 

+ 18 - 0
knowledgeman-service/src/main/resources/mapper/RuleAppMapper.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.RuleAppMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.RuleApp">
+        <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="rule_id" property="ruleId" />
+        <result column="type_id" property="typeId" />
+        <result column="remind" property="remind" />
+    </resultMap>
+
+</mapper>

+ 23 - 0
knowledgeman-service/src/main/resources/mapper/RulePubMapper.xml

@@ -0,0 +1,23 @@
+<?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.RulePubMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.RulePub">
+        <id column="id" property="id" />
+        <result column="pub_name" property="pubName" />
+        <result column="rule_type" property="ruleType" />
+        <result column="min_operator" property="minOperator" />
+        <result column="min_value" property="minValue" />
+        <result column="min_unit" property="minUnit" />
+        <result column="max_operator" property="maxOperator" />
+        <result column="max_value" property="maxValue" />
+        <result column="max_unit" property="maxUnit" />
+        <result column="eq_operator" property="eqOperator" />
+        <result column="eq_value" property="eqValue" />
+        <result column="eq_unit" property="eqUnit" />
+        <result column="remind" property="remind" />
+        <result column="suffix_info" property="suffixInfo" />
+    </resultMap>
+
+</mapper>

+ 25 - 0
mrman-service/.gitignore

@@ -0,0 +1,25 @@
+/target/
+!.mvn/wrapper/maven-wrapper.jar
+
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### IntelliJ IDEA ###
+.idea
+*.iws
+*.iml
+*.ipr
+
+### NetBeans ###
+/nbproject/private/
+/build/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/

+ 189 - 0
mrman-service/pom.xml

@@ -0,0 +1,189 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>com.diagbot</groupId>
+    <artifactId>mrman-service</artifactId>
+    <version>0.0.1-SNAPSHOT</version>
+    <packaging>jar</packaging>
+
+    <name>mrman-service</name>
+    <description>mrman service for Spring Boot</description>
+
+    <parent>
+        <groupId>com.diagbot</groupId>
+        <artifactId>diagbotcloud</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.diagbot</groupId>
+            <artifactId>common</artifactId>
+            <version>0.0.1-SNAPSHOT</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+
+        <!-- 配置-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-config</artifactId>
+        </dependency>
+
+        <!-- 开启web-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-undertow</artifactId>
+        </dependency>
+
+        <!-- 开启feign-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-openfeign</artifactId>
+        </dependency>
+
+        <!-- dashboard -->
+        <!-- actuator-->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
+        <!--hystrix-dashboard-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
+        </dependency>
+        <!--hystrix -->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
+        </dependency>
+
+        <!-- zipkin-->
+        <!--<dependency>-->
+            <!--<groupId>org.springframework.cloud</groupId>-->
+            <!--<artifactId>spring-cloud-starter-zipkin</artifactId>-->
+        <!--</dependency>-->
+
+        <!--swagger-->
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger2</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+        </dependency>
+        <!--database-->
+        <dependency>
+            <groupId>com.oracle</groupId>
+            <artifactId>ojdbc6</artifactId>
+            <version>11.2.0.3</version>
+        </dependency>
+        <!--security-->
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-oauth2</artifactId>
+        </dependency>
+
+        <!-- mq -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-amqp</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>net.logstash.logback</groupId>
+            <artifactId>logstash-logback-encoder</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-bus-amqp</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 -->
+
+        <!-- 阿里巴巴druid数据库连接池 -->
+        <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>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-stream-rabbit</artifactId>
+        </dependency>
+
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+            <!-- 添加docker-maven插件 -->
+            <plugin>
+                <groupId>com.spotify</groupId>
+                <artifactId>docker-maven-plugin</artifactId>
+                <configuration>
+                    <imageName>${docker.image.prefix}/${project.artifactId}:${project.version}</imageName>
+                    <forceTags>true</forceTags>
+                    <!--镜像的FROM,使用压缩的小镜像-->
+                    <baseImage>frolvlad/alpine-oraclejre8:slim</baseImage>
+                    <entryPoint>["java", "-jar", "-Xms256m", "-Xmx512m", "-Duser.timezone=GMT+8", "/${project.build.finalName}.jar"]</entryPoint>
+                    <resources>
+                        <resource>
+                            <targetPath>/</targetPath>
+                            <directory>${project.build.directory}</directory>
+                            <include>${project.build.finalName}.jar</include>
+                        </resource>
+                    </resources>
+                    <serverId>docker-registry</serverId>
+                    <registryUrl>${registryUrl}</registryUrl>
+                </configuration>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>

+ 36 - 0
mrman-service/src/main/java/com/diagbot/MrmanServiceApplication.java

@@ -0,0 +1,36 @@
+package com.diagbot;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
+import org.springframework.boot.autoconfigure.jmx.JmxAutoConfiguration;
+import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
+import org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration;
+import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
+import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
+import org.springframework.cloud.context.config.annotation.RefreshScope;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.netflix.hystrix.EnableHystrix;
+import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+/**
+ * @Description: 互动反馈启动文件
+ * @author: gaodm
+ * @time: 2018/8/7 9:26
+ */
+@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class, HibernateJpaAutoConfiguration.class,
+        JmxAutoConfiguration.class, ThymeleafAutoConfiguration.class })
+@EnableEurekaClient
+@EnableFeignClients({ "com.diagbot.client" })
+@EnableHystrixDashboard
+@EnableHystrix
+@EnableCircuitBreaker
+@RefreshScope
+@ConfigurationPropertiesScan
+public class MrmanServiceApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(MrmanServiceApplication.class, args);
+    }
+}

+ 41 - 0
mrman-service/src/main/java/com/diagbot/aop/SysLoggerAspect.java

@@ -0,0 +1,41 @@
+package com.diagbot.aop;
+
+import com.diagbot.biz.log.entity.SysLog;
+import com.diagbot.enums.SysTypeEnum;
+import com.diagbot.rabbit.MySender;
+import com.diagbot.util.AopUtil;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Before;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 日志拦截切面
+ * @author: gaodm
+ * @time: 2018/8/2 13:36
+ */
+@Aspect
+@Component
+@ConditionalOnProperty(prefix = "syslog", value = { "enable" }, havingValue = "true")
+public class SysLoggerAspect {
+    @Autowired
+    private MySender mySender;
+
+    @Pointcut("@annotation(com.diagbot.annotation.SysLogger)")
+    public void loggerPointCut() {
+
+    }
+
+    @Before("loggerPointCut()")
+    public void saveSysLog(JoinPoint joinPoint) {
+        //入参设置
+        SysLog sysLog = AopUtil.sysLoggerAspect(joinPoint, SysTypeEnum.MRMAN_SERVICE.getKey());
+        //保存系统日志
+        mySender.outputLogSend(sysLog);
+    }
+
+}
+

+ 30 - 0
mrman-service/src/main/java/com/diagbot/client/UserServiceClient.java

@@ -0,0 +1,30 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.UserServiceHystrix;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Token;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description: 调用用户服务
+ * @author: gaodm
+ * @time: 2018/8/6 9:52
+ */
+@FeignClient(value = "user-service", fallback = UserServiceHystrix.class)
+public interface UserServiceClient {
+
+    @PostMapping(value = "/user/getUserInfoByIds")
+    RespDTO<Map<String, String>> getUserInfoByIds(@RequestBody List<String> ids);
+
+    @PostMapping("/user/verifyToken")
+    RespDTO<Boolean> verifyToken(@RequestBody Token token);
+}
+
+
+

+ 35 - 0
mrman-service/src/main/java/com/diagbot/client/hystrix/UserServiceHystrix.java

@@ -0,0 +1,35 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Token;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description: 调用用户服务
+ * @author: gaodm
+ * @time: 2018/8/6 9:52
+ */
+@Component
+@Slf4j
+public class UserServiceHystrix implements UserServiceClient {
+
+    @Override
+    public RespDTO<Map<String, String>> getUserInfoByIds(@RequestBody List<String> ids) {
+        log.error("【hystrix】调用{}异常", "getUserInfoByIds");
+        return null;
+    }
+
+    @Override
+    public RespDTO<Boolean> verifyToken(Token token) {
+        log.error("【hystrix】调用{}异常", "verifyToken");
+        return null;
+    }
+
+}

+ 19 - 0
mrman-service/src/main/java/com/diagbot/config/CustomAccessTokenConverter.java

@@ -0,0 +1,19 @@
+package com.diagbot.config;
+
+import org.springframework.security.oauth2.provider.OAuth2Authentication;
+import org.springframework.security.oauth2.provider.token.DefaultAccessTokenConverter;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+
+@Component
+public class CustomAccessTokenConverter extends DefaultAccessTokenConverter {
+
+    @Override
+    public OAuth2Authentication extractAuthentication(Map<String, ?> claims) {
+        OAuth2Authentication authentication = super.extractAuthentication(claims);
+        authentication.setDetails(claims);
+        return authentication;
+    }
+
+}

+ 15 - 0
mrman-service/src/main/java/com/diagbot/config/GlobalMethodSecurityConfigurer.java

@@ -0,0 +1,15 @@
+package com.diagbot.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
+
+/**
+ * @Description: 安全配置类
+ * @author: gaodm
+ * @time: 2018/8/2 13:38
+ */
+@Configuration
+@EnableGlobalMethodSecurity(prePostEnabled = true)
+public class GlobalMethodSecurityConfigurer {
+
+}

+ 48 - 0
mrman-service/src/main/java/com/diagbot/config/JwtConfigurer.java

@@ -0,0 +1,48 @@
+package com.diagbot.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.core.io.Resource;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
+import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;
+import org.springframework.util.FileCopyUtils;
+
+import java.io.IOException;
+
+/**
+ * @Description: JWT配置类
+ * @author: gaodm
+ * @time: 2018/8/2 13:38
+ */
+@Configuration
+public class JwtConfigurer {
+    @Autowired
+    private CustomAccessTokenConverter customAccessTokenConverter;
+
+    @Bean
+    @Qualifier("tokenStore")
+    public TokenStore tokenStore() {
+
+        System.out.println("Created JwtTokenStore");
+        return new JwtTokenStore(jwtTokenEnhancer());
+    }
+
+    @Bean
+    protected JwtAccessTokenConverter jwtTokenEnhancer() {
+        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
+        Resource resource = new ClassPathResource("public.cert");
+        String publicKey;
+        try {
+            publicKey = new String(FileCopyUtils.copyToByteArray(resource.getInputStream()));
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+        converter.setVerifierKey(publicKey);
+        converter.setAccessTokenConverter(customAccessTokenConverter);
+        return converter;
+    }
+}

+ 33 - 0
mrman-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;
+    }
+
+}

+ 42 - 0
mrman-service/src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -0,0 +1,42 @@
+package com.diagbot.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;
+import org.springframework.security.oauth2.config.annotation.web.configuration.ResourceServerConfigurerAdapter;
+import org.springframework.security.oauth2.config.annotation.web.configurers.ResourceServerSecurityConfigurer;
+import org.springframework.security.oauth2.provider.token.TokenStore;
+
+/**
+ * @Description: 权限资源配置类
+ * @author: gaodm
+ * @time: 2018/8/2 14:21
+ */
+@Configuration
+@EnableResourceServer
+public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
+    Logger log = LoggerFactory.getLogger(ResourceServerConfigurer.class);
+
+    @Override
+    public void configure(HttpSecurity http) throws Exception {
+        http
+                .csrf().disable()
+                .authorizeRequests()
+                .regexMatchers(".*swagger.*", ".*v2.*", ".*webjars.*", "/druid.*", "/actuator.*", "/hystrix.*").permitAll()
+//                .antMatchers("/**").authenticated();
+                .antMatchers("/**").permitAll();
+    }
+
+
+    @Override
+    public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
+        log.info("Configuring ResourceServerSecurityConfigurer ");
+        resources.resourceId("user-service").tokenStore(tokenStore);
+    }
+
+    @Autowired
+    TokenStore tokenStore;
+}

+ 70 - 0
mrman-service/src/main/java/com/diagbot/config/SwaggerConfigurer.java

@@ -0,0 +1,70 @@
+package com.diagbot.config;
+
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.ParameterBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.schema.ModelRef;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.service.Parameter;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+import java.util.ArrayList;
+import java.util.List;
+
+
+/**
+ * @Description: Swagger配置类
+ * @author: gaodm
+ * @time: 2018/8/2 14:21
+ */
+@Configuration
+@ConditionalOnProperty(prefix = "swagger", value = { "enable" }, havingValue = "true")
+@EnableSwagger2
+public class SwaggerConfigurer {
+    /**
+     * 全局参数
+     *
+     * @return
+     */
+    private List<Parameter> parameter() {
+        List<Parameter> params = new ArrayList<>();
+        params.add(new ParameterBuilder().name("Authorization")
+                .description("Authorization Bearer token")
+                .modelRef(new ModelRef("string"))
+                .parameterType("header")
+                .required(false).build());
+        return params;
+    }
+
+
+    @Bean
+    public Docket sysApi() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                .apis(RequestHandlerSelectors.basePackage("com.diagbot.web"))
+                .paths(PathSelectors.any())
+                .build().globalOperationParameters(parameter());
+        //.securitySchemes(newArrayList(oauth()))
+        // .securityContexts(newArrayList(securityContext()));
+    }
+
+    private ApiInfo apiInfo() {
+        return new ApiInfoBuilder()
+                .title(" mrman-service api ")
+                .description("病历管理 微服务")
+                .termsOfServiceUrl("")
+                .contact(new Contact("diagbot","",""))
+                .version("1.0")
+                .build();
+    }
+
+}

+ 105 - 0
mrman-service/src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -0,0 +1,105 @@
+package com.diagbot.config.security;
+
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.Token;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.util.HttpUtils;
+import com.diagbot.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.AccessDecisionManager;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.security.access.ConfigAttribute;
+import org.springframework.security.authentication.AccountExpiredException;
+import org.springframework.security.authentication.InsufficientAuthenticationException;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.web.FilterInvocation;
+import org.springframework.security.web.util.matcher.AntPathRequestMatcher;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Collection;
+
+/**
+ * @Description: 自定义权限拦截
+ * @author: gaodm
+ * @time: 2018/8/23 13:46
+ */
+@Service
+public class UrlAccessDecisionManager implements AccessDecisionManager {
+    @Autowired
+    private UserServiceClient userServiceClient;
+
+    @Override
+    public void decide(Authentication authentication, Object object, Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
+//        HttpServletRequest request = ((FilterInvocation) object).getHttpRequest();
+//        String url, method;
+//        if (matchPermitAllUrl(request)) {
+//            return;
+//        }
+//        if ("anonymousUser".equals(authentication.getPrincipal())) {
+//            throw new AccessDeniedException("no right");
+//        } else {
+//            //验证token有效性
+//            String tokenStr = HttpUtils.getHeaders(request).get("Authorization");
+//            if (StringUtil.isNotEmpty(tokenStr)) {
+//                Token token = new Token();
+//                tokenStr = tokenStr.replaceFirst("Bearer ", "");
+//                token.setToken(tokenStr);
+//                RespDTO<Boolean> res = userServiceClient.verifyToken(token);
+//                if (res == null || !CommonErrorCode.OK.getCode().equals(res.code)) {
+//                    throw new AccountExpiredException("token expire");
+//                }
+//                if (!res.data) {
+//                    throw new AccountExpiredException("token expire");
+//                }
+//            }
+//            for (GrantedAuthority ga : authentication.getAuthorities()) {
+//                String[] authority = ga.getAuthority().split(";");
+//                url = authority[0];
+//                method = authority[1];
+//                if (matchers(url, request)) {
+//                    if (method.equals(request.getMethod()) || "ALL".equals(method)) {
+//                        return;
+//                    }
+//                }
+//            }
+//        }
+//        throw new AccessDeniedException("no right");
+    }
+
+
+    @Override
+    public boolean supports(ConfigAttribute attribute) {
+        return true;
+    }
+
+    @Override
+    public boolean supports(Class<?> clazz) {
+        return true;
+    }
+
+    private Boolean matchPermitAllUrl(HttpServletRequest request) {
+        if (matchers("/swagger/**", request)
+                || matchers("/v2/**", request)
+                || matchers("/swagger-ui.html/**", request)
+                || matchers("/swagger-resources/**", request)
+                || matchers("/webjars/**", request)
+                || matchers("/druid/**", request)
+                || matchers("/actuator/**", request)
+                || matchers("/hystrix/**", request)
+                || matchers("/", request)) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean matchers(String url, HttpServletRequest request) {
+        AntPathRequestMatcher matcher = new AntPathRequestMatcher(url);
+        if (matcher.matches(request)) {
+            return true;
+        }
+        return false;
+    }
+}

+ 29 - 0
mrman-service/src/main/java/com/diagbot/config/security/UrlConfigAttribute.java

@@ -0,0 +1,29 @@
+package com.diagbot.config.security;
+
+import org.springframework.security.access.ConfigAttribute;
+
+import javax.servlet.http.HttpServletRequest;
+
+/**
+ * @Description: 自定义权限拦截
+ * @author: gaodm
+ * @time: 2018/8/23 13:47
+ */
+public class UrlConfigAttribute implements ConfigAttribute {
+
+    private final HttpServletRequest httpServletRequest;
+
+    public UrlConfigAttribute(HttpServletRequest httpServletRequest) {
+        this.httpServletRequest = httpServletRequest;
+    }
+
+
+    @Override
+    public String getAttribute() {
+        return null;
+    }
+
+    public HttpServletRequest getHttpServletRequest() {
+        return httpServletRequest;
+    }
+}

+ 79 - 0
mrman-service/src/main/java/com/diagbot/config/security/UrlFilterSecurityInterceptor.java

@@ -0,0 +1,79 @@
+package com.diagbot.config.security;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.SecurityMetadataSource;
+import org.springframework.security.access.intercept.AbstractSecurityInterceptor;
+import org.springframework.security.access.intercept.InterceptorStatusToken;
+import org.springframework.security.web.FilterInvocation;
+import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import java.io.IOException;
+
+/**
+ * @Description: 自定义权限拦截
+ * @author: gaodm
+ * @time: 2018/8/23 13:47
+ */
+@Service
+public class UrlFilterSecurityInterceptor extends AbstractSecurityInterceptor implements Filter {
+
+
+    @Autowired
+    private FilterInvocationSecurityMetadataSource securityMetadataSource;
+
+    @Autowired
+    public void setUrlAccessDecisionManager(UrlAccessDecisionManager urlAccessDecisionManager) {
+        super.setAccessDecisionManager(urlAccessDecisionManager);
+    }
+
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+
+        FilterInvocation fi = new FilterInvocation(request, response, chain);
+        invoke(fi);
+    }
+
+
+    public void invoke(FilterInvocation fi) throws IOException, ServletException {
+        //fi里面有一个被拦截的url
+        //里面调用UrlMetadataSource的getAttributes(Object object)这个方法获取fi对应的所有权限
+        //再调用UrlAccessDecisionManager的decide方法来校验用户的权限是否足够
+        InterceptorStatusToken token = super.beforeInvocation(fi);
+        try {
+            //执行下一个拦截器
+            fi.getChain().doFilter(fi.getRequest(), fi.getResponse());
+        } finally {
+            super.afterInvocation(token, null);
+        }
+    }
+
+
+    @Override
+    public void destroy() {
+
+    }
+
+    @Override
+    public Class<?> getSecureObjectClass() {
+        return FilterInvocation.class;
+
+    }
+
+    @Override
+    public SecurityMetadataSource obtainSecurityMetadataSource() {
+        return this.securityMetadataSource;
+    }
+}

+ 40 - 0
mrman-service/src/main/java/com/diagbot/config/security/UrlMetadataSourceService.java

@@ -0,0 +1,40 @@
+package com.diagbot.config.security;
+
+import org.springframework.security.access.ConfigAttribute;
+import org.springframework.security.web.FilterInvocation;
+import org.springframework.security.web.access.intercept.FilterInvocationSecurityMetadataSource;
+import org.springframework.stereotype.Service;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @Description: 自定义权限拦截
+ * @author: gaodm
+ * @time: 2018/8/23 13:47
+ */
+@Service
+public class UrlMetadataSourceService implements
+        FilterInvocationSecurityMetadataSource {
+
+    @Override
+    public Collection<ConfigAttribute> getAttributes(Object object) throws IllegalArgumentException {
+        final HttpServletRequest request = ((FilterInvocation) object).getRequest();
+        Set<ConfigAttribute> allAttributes = new HashSet<>();
+        ConfigAttribute configAttribute = new UrlConfigAttribute(request);
+        allAttributes.add(configAttribute);
+        return allAttributes;
+    }
+
+    @Override
+    public Collection<ConfigAttribute> getAllConfigAttributes() {
+        return null;
+    }
+
+    @Override
+    public boolean supports(Class<?> clazz) {
+        return true;
+    }
+}

+ 28 - 0
mrman-service/src/main/java/com/diagbot/dto/BABLDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:病历详情
+ * @Author:zhaops
+ * @time: 2020/1/17 17:03
+ */
+@Getter
+@Setter
+public class BABLDTO {
+    /**
+     * 病案首页编号BASYID
+     */
+    private Long basyid;
+    /**
+     * 病人病案姓名BRBAXM
+     */
+    private String brbaxm;
+    /**
+     * 病人住院序号BRZYID
+     */
+    private String brzyid;
+
+
+}

+ 69 - 0
mrman-service/src/main/java/com/diagbot/dto/BABLDetailDTO.java

@@ -0,0 +1,69 @@
+package com.diagbot.dto;
+
+import com.diagbot.entity.BrRecdiagnose;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 10:20
+ */
+@Getter
+@Setter
+public class BABLDetailDTO {
+    /**
+     * 病人病案性别BRBAXB
+     */
+    private String brbaxb;
+    /**
+     * 病人病案血型BRBAXX
+     */
+    private String brbaxx;
+    /**
+     * 病人病案RH型BRBARH
+     */
+    private String brbarh;
+
+    /**
+     * 门急诊主要诊断名称
+     */
+    private String mjzzyzdmc;
+    /**
+     * 门急诊主要诊断列表
+     */
+    private List<BrRecdiagnose> mjzzyzdList;
+    /**
+     * 门急诊其他诊断名称
+     */
+    private String mjzqtzdmc;
+    /**
+     * 门急诊其他诊断列表
+     */
+    private List<BrRecdiagnose> mjzqtzdList;
+    /**
+     * 住院主要诊断名称
+     */
+    private String zyzyzdmc;
+
+    /**
+     * 住院主要诊断列表
+     */
+    private List<BrRecdiagnose> zyzyzdList;
+
+    /**
+     * 住院其他诊断名称
+     */
+    private String zyqtzdmc;
+    /**
+     * 住院其他诊断列表
+     */
+    private List<BrRecdiagnose> zyqtzdList;
+
+    /**
+     * 住院病历记录列表
+     */
+    private List<BLJLDetailDTO> zybljlList;
+}

+ 26 - 0
mrman-service/src/main/java/com/diagbot/dto/BLJLDetailDTO.java

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 14:23
+ */
+@Getter
+@Setter
+public class BLJLDetailDTO {
+    /**
+     * 病历记录id
+     */
+    private String bljlid;
+    /**
+     * 病历记录名称
+     */
+    private String bljlmc;
+    /**
+     * 病历记录内容
+     */
+    private String bljlnr;
+}

+ 553 - 0
mrman-service/src/main/java/com/diagbot/entity/ArRechome.java

@@ -0,0 +1,553 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病案首页信息Ar_RecHome
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@TableName("AR_RECHOME")
+public class ArRechome implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病案首页编号BASYID
+     */
+    @TableId("BASYID")
+    private Long basyid;
+
+    /**
+     * 病人病案编号BRBABH
+     */
+    @TableField("BRBABH")
+    private String brbabh;
+
+    /**
+     * 医疗付款类别YLFKLB
+     */
+    @TableField("YLFKLB")
+    private String ylfklb;
+
+    /**
+     * 病人病案姓名BRBAXM
+     */
+    @TableField("BRBAXM")
+    private String brbaxm;
+
+    /**
+     * 病人病案性别BRBAXB
+     */
+    @TableField("BRBAXB")
+    private String brbaxb;
+
+    /**
+     * 病人出生日期BRCSRQ
+     */
+    @TableField("BRCSRQ")
+    private Date brcsrq;
+
+    /**
+     * 病人出生地址BRCSDZ
+     */
+    @TableField("BRCSDZ")
+    private String brcsdz;
+
+    /**
+     * 病人就诊年龄BRDQNL
+     */
+    @TableField("BRDQNL")
+    private Integer brdqnl;
+
+    /**
+     * 病人年龄单位BRNLDW
+     */
+    @TableField("BRNLDW")
+    private String brnldw;
+
+    /**
+     * 病人病案血型BRBAXX
+     */
+    @TableField("BRBAXX")
+    private String brbaxx;
+
+    /**
+     * 病人病案RH型BRBARH
+     */
+    @TableField("BRBARH")
+    private String brbarh;
+
+    /**
+     * 病人病案籍贯BRBAJG
+     */
+    @TableField("BRBAJG")
+    private String brbajg;
+
+    /**
+     * 病人病案民族BRBAMZ
+     */
+    @TableField("BRBAMZ")
+    private String brbamz;
+
+    /**
+     * 病人婚姻状况BRHYZK
+     */
+    @TableField("BRHYZK")
+    private String brhyzk;
+
+    /**
+     * 病人病案身份BRBASF
+     */
+    @TableField("BRBASF")
+    private String brbasf;
+
+    /**
+     * 病人身份证号BRSFZH
+     */
+    @TableField("BRSFZH")
+    private String brsfzh;
+
+    /**
+     * 病人病案国籍BRBAGJ
+     */
+    @TableField("BRBAGJ")
+    private String brbagj;
+
+    /**
+     * 户口地址区划HKDZQH
+     */
+    @TableField("HKDZQH")
+    private String hkdzqh;
+
+    /**
+     * 病人户口地址BRHKDZ
+     */
+    @TableField("BRHKDZ")
+    private String brhkdz;
+
+    /**
+     * 户口地址邮编HKDZYB
+     */
+    @TableField("HKDZYB")
+    private String hkdzyb;
+
+    /**
+     * 工作单位名称GZDWMC
+     */
+    @TableField("GZDWMC")
+    private String gzdwmc;
+
+    /**
+     * 工作单位电话GZDWDH
+     */
+    @TableField("GZDWDH")
+    private String gzdwdh;
+
+    /**
+     * 工作单位邮编GZDWYB
+     */
+    @TableField("GZDWYB")
+    private String gzdwyb;
+
+    /**
+     * 联系地址区划LXDZQH
+     */
+    @TableField("LXDZQH")
+    private String lxdzqh;
+
+    /**
+     * 病人联系地址BRLXDZ
+     */
+    @TableField("BRLXDZ")
+    private String brlxdz;
+
+    /**
+     * 病人联系电话BRLXDH
+     */
+    @TableField("BRLXDH")
+    private String brlxdh;
+
+    /**
+     * 联系地址邮编LXDZYB
+     */
+    @TableField("LXDZYB")
+    private String lxdzyb;
+
+    /**
+     * 是否作废判别SFZFPB
+     */
+    @TableField("SFZFPB")
+    private Integer sfzfpb;
+
+    /**
+     * 病案状态判别BAZTPB
+     */
+    @TableField("BAZTPB")
+    private Integer baztpb;
+
+    /**
+     * 病案录入日期BALRRQ
+     */
+    @TableField("BALRRQ")
+    private Date balrrq;
+
+    /**
+     * 录入人员编码LRRYID
+     */
+    @TableField("LRRYID")
+    private String lrryid;
+
+    /**
+     * 修改用户代码XGYHDM
+     */
+    @TableField("XGYHDM")
+    private String xgyhdm;
+
+    /**
+     * 修改操作时间XGCZSJ
+     */
+    @TableField("XGCZSJ")
+    private Date xgczsj;
+
+    /**
+     * 病人健康卡号BRJKKH
+     */
+    @TableField("BRJKKH")
+    private String brjkkh;
+
+    /**
+     * 病人病案职业BRBAZY
+     */
+    @TableField("BRBAZY")
+    private String brbazy;
+
+    public Long getBasyid() {
+        return basyid;
+    }
+
+    public void setBasyid(Long basyid) {
+        this.basyid = basyid;
+    }
+
+    public String getBrbabh() {
+        return brbabh;
+    }
+
+    public void setBrbabh(String brbabh) {
+        this.brbabh = brbabh;
+    }
+
+    public String getYlfklb() {
+        return ylfklb;
+    }
+
+    public void setYlfklb(String ylfklb) {
+        this.ylfklb = ylfklb;
+    }
+
+    public String getBrbaxm() {
+        return brbaxm;
+    }
+
+    public void setBrbaxm(String brbaxm) {
+        this.brbaxm = brbaxm;
+    }
+
+    public String getBrbaxb() {
+        return brbaxb;
+    }
+
+    public void setBrbaxb(String brbaxb) {
+        this.brbaxb = brbaxb;
+    }
+
+    public Date getBrcsrq() {
+        return brcsrq;
+    }
+
+    public void setBrcsrq(Date brcsrq) {
+        this.brcsrq = brcsrq;
+    }
+
+    public String getBrcsdz() {
+        return brcsdz;
+    }
+
+    public void setBrcsdz(String brcsdz) {
+        this.brcsdz = brcsdz;
+    }
+
+    public Integer getBrdqnl() {
+        return brdqnl;
+    }
+
+    public void setBrdqnl(Integer brdqnl) {
+        this.brdqnl = brdqnl;
+    }
+
+    public String getBrnldw() {
+        return brnldw;
+    }
+
+    public void setBrnldw(String brnldw) {
+        this.brnldw = brnldw;
+    }
+
+    public String getBrbaxx() {
+        return brbaxx;
+    }
+
+    public void setBrbaxx(String brbaxx) {
+        this.brbaxx = brbaxx;
+    }
+
+    public String getBrbarh() {
+        return brbarh;
+    }
+
+    public void setBrbarh(String brbarh) {
+        this.brbarh = brbarh;
+    }
+
+    public String getBrbajg() {
+        return brbajg;
+    }
+
+    public void setBrbajg(String brbajg) {
+        this.brbajg = brbajg;
+    }
+
+    public String getBrbamz() {
+        return brbamz;
+    }
+
+    public void setBrbamz(String brbamz) {
+        this.brbamz = brbamz;
+    }
+
+    public String getBrhyzk() {
+        return brhyzk;
+    }
+
+    public void setBrhyzk(String brhyzk) {
+        this.brhyzk = brhyzk;
+    }
+
+    public String getBrbasf() {
+        return brbasf;
+    }
+
+    public void setBrbasf(String brbasf) {
+        this.brbasf = brbasf;
+    }
+
+    public String getBrsfzh() {
+        return brsfzh;
+    }
+
+    public void setBrsfzh(String brsfzh) {
+        this.brsfzh = brsfzh;
+    }
+
+    public String getBrbagj() {
+        return brbagj;
+    }
+
+    public void setBrbagj(String brbagj) {
+        this.brbagj = brbagj;
+    }
+
+    public String getHkdzqh() {
+        return hkdzqh;
+    }
+
+    public void setHkdzqh(String hkdzqh) {
+        this.hkdzqh = hkdzqh;
+    }
+
+    public String getBrhkdz() {
+        return brhkdz;
+    }
+
+    public void setBrhkdz(String brhkdz) {
+        this.brhkdz = brhkdz;
+    }
+
+    public String getHkdzyb() {
+        return hkdzyb;
+    }
+
+    public void setHkdzyb(String hkdzyb) {
+        this.hkdzyb = hkdzyb;
+    }
+
+    public String getGzdwmc() {
+        return gzdwmc;
+    }
+
+    public void setGzdwmc(String gzdwmc) {
+        this.gzdwmc = gzdwmc;
+    }
+
+    public String getGzdwdh() {
+        return gzdwdh;
+    }
+
+    public void setGzdwdh(String gzdwdh) {
+        this.gzdwdh = gzdwdh;
+    }
+
+    public String getGzdwyb() {
+        return gzdwyb;
+    }
+
+    public void setGzdwyb(String gzdwyb) {
+        this.gzdwyb = gzdwyb;
+    }
+
+    public String getLxdzqh() {
+        return lxdzqh;
+    }
+
+    public void setLxdzqh(String lxdzqh) {
+        this.lxdzqh = lxdzqh;
+    }
+
+    public String getBrlxdz() {
+        return brlxdz;
+    }
+
+    public void setBrlxdz(String brlxdz) {
+        this.brlxdz = brlxdz;
+    }
+
+    public String getBrlxdh() {
+        return brlxdh;
+    }
+
+    public void setBrlxdh(String brlxdh) {
+        this.brlxdh = brlxdh;
+    }
+
+    public String getLxdzyb() {
+        return lxdzyb;
+    }
+
+    public void setLxdzyb(String lxdzyb) {
+        this.lxdzyb = lxdzyb;
+    }
+
+    public Integer getSfzfpb() {
+        return sfzfpb;
+    }
+
+    public void setSfzfpb(Integer sfzfpb) {
+        this.sfzfpb = sfzfpb;
+    }
+
+    public Integer getBaztpb() {
+        return baztpb;
+    }
+
+    public void setBaztpb(Integer baztpb) {
+        this.baztpb = baztpb;
+    }
+
+    public Date getBalrrq() {
+        return balrrq;
+    }
+
+    public void setBalrrq(Date balrrq) {
+        this.balrrq = balrrq;
+    }
+
+    public String getLrryid() {
+        return lrryid;
+    }
+
+    public void setLrryid(String lrryid) {
+        this.lrryid = lrryid;
+    }
+
+    public String getXgyhdm() {
+        return xgyhdm;
+    }
+
+    public void setXgyhdm(String xgyhdm) {
+        this.xgyhdm = xgyhdm;
+    }
+
+    public Date getXgczsj() {
+        return xgczsj;
+    }
+
+    public void setXgczsj(Date xgczsj) {
+        this.xgczsj = xgczsj;
+    }
+
+    public String getBrjkkh() {
+        return brjkkh;
+    }
+
+    public void setBrjkkh(String brjkkh) {
+        this.brjkkh = brjkkh;
+    }
+
+    public String getBrbazy() {
+        return brbazy;
+    }
+
+    public void setBrbazy(String brbazy) {
+        this.brbazy = brbazy;
+    }
+
+    @Override
+    public String toString() {
+        return "ArRechome{" +
+                "basyid=" + basyid +
+                ", brbabh=" + brbabh +
+                ", ylfklb=" + ylfklb +
+                ", brbaxm=" + brbaxm +
+                ", brbaxb=" + brbaxb +
+                ", brcsrq=" + brcsrq +
+                ", brcsdz=" + brcsdz +
+                ", brdqnl=" + brdqnl +
+                ", brnldw=" + brnldw +
+                ", brbaxx=" + brbaxx +
+                ", brbarh=" + brbarh +
+                ", brbajg=" + brbajg +
+                ", brbamz=" + brbamz +
+                ", brhyzk=" + brhyzk +
+                ", brbasf=" + brbasf +
+                ", brsfzh=" + brsfzh +
+                ", brbagj=" + brbagj +
+                ", hkdzqh=" + hkdzqh +
+                ", brhkdz=" + brhkdz +
+                ", hkdzyb=" + hkdzyb +
+                ", gzdwmc=" + gzdwmc +
+                ", gzdwdh=" + gzdwdh +
+                ", gzdwyb=" + gzdwyb +
+                ", lxdzqh=" + lxdzqh +
+                ", brlxdz=" + brlxdz +
+                ", brlxdh=" + brlxdh +
+                ", lxdzyb=" + lxdzyb +
+                ", sfzfpb=" + sfzfpb +
+                ", baztpb=" + baztpb +
+                ", balrrq=" + balrrq +
+                ", lrryid=" + lrryid +
+                ", xgyhdm=" + xgyhdm +
+                ", xgczsj=" + xgczsj +
+                ", brjkkh=" + brjkkh +
+                ", brbazy=" + brbazy +
+                "}";
+    }
+}

+ 181 - 0
mrman-service/src/main/java/com/diagbot/entity/BrRecdiagnose.java

@@ -0,0 +1,181 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 病案诊断信息
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@TableName("BR_RECDIAGNOSE")
+public class BrRecdiagnose implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病案首页编号BASYID
+     */
+    @TableId("BASYID")
+    private Long basyid;
+
+    /**
+     * 病案诊断序号BAZDXH
+     */
+    @TableField("BAZDXH")
+    private Integer bazdxh;
+
+    /**
+     * 诊断类别编码ZDLBDM(诊断类别  1门急诊诊断 2出院诊断 3损伤中毒外部原因 4病理诊断)
+     */
+    @TableField("ZDLBDM")
+    private String zdlbdm;
+
+    /**
+     * 主次诊断判别ZCZDPB
+     */
+    @TableField("ZCZDPB")
+    private Integer zczdpb;
+
+    /**
+     * 疾病代码序号JBDMID
+     */
+    @TableField("JBDMID")
+    private String jbdmid;
+
+    /**
+     * 诊断疾病名称ZDJBMC
+     */
+    @TableField("ZDJBMC")
+    private String zdjbmc;
+
+    /**
+     * 转归情况编码ZGQKDM
+     */
+    @TableField("ZGQKDM")
+    private String zgqkdm;
+
+    /**
+     * 入院情况编码RYQKBM
+     */
+    @TableField("RYQKBM")
+    private String ryqkbm;
+
+    /**
+     * 病理诊断编号BLZDBH
+     */
+    @TableField("BLZDBH")
+    private String blzdbh;
+
+    /**
+     * 诊断符合判别ZDFHPB
+     */
+    @TableField("ZDFHPB")
+    private Integer zdfhpb;
+
+    /**
+     * 诊断组号序号
+     */
+    @TableField("ZDZHXH")
+    private Integer zdzhxh;
+
+    public Long getBasyid() {
+        return basyid;
+    }
+
+    public void setBasyid(Long basyid) {
+        this.basyid = basyid;
+    }
+    public Integer getBazdxh() {
+        return bazdxh;
+    }
+
+    public void setBazdxh(Integer bazdxh) {
+        this.bazdxh = bazdxh;
+    }
+    public String getZdlbdm() {
+        return zdlbdm;
+    }
+
+    public void setZdlbdm(String zdlbdm) {
+        this.zdlbdm = zdlbdm;
+    }
+    public Integer getZczdpb() {
+        return zczdpb;
+    }
+
+    public void setZczdpb(Integer zczdpb) {
+        this.zczdpb = zczdpb;
+    }
+    public String getJbdmid() {
+        return jbdmid;
+    }
+
+    public void setJbdmid(String jbdmid) {
+        this.jbdmid = jbdmid;
+    }
+    public String getZdjbmc() {
+        return zdjbmc;
+    }
+
+    public void setZdjbmc(String zdjbmc) {
+        this.zdjbmc = zdjbmc;
+    }
+    public String getZgqkdm() {
+        return zgqkdm;
+    }
+
+    public void setZgqkdm(String zgqkdm) {
+        this.zgqkdm = zgqkdm;
+    }
+    public String getRyqkbm() {
+        return ryqkbm;
+    }
+
+    public void setRyqkbm(String ryqkbm) {
+        this.ryqkbm = ryqkbm;
+    }
+    public String getBlzdbh() {
+        return blzdbh;
+    }
+
+    public void setBlzdbh(String blzdbh) {
+        this.blzdbh = blzdbh;
+    }
+    public Integer getZdfhpb() {
+        return zdfhpb;
+    }
+
+    public void setZdfhpb(Integer zdfhpb) {
+        this.zdfhpb = zdfhpb;
+    }
+    public Integer getZdzhxh() {
+        return zdzhxh;
+    }
+
+    public void setZdzhxh(Integer zdzhxh) {
+        this.zdzhxh = zdzhxh;
+    }
+
+    @Override
+    public String toString() {
+        return "BrRecdiagnose{" +
+            "basyid=" + basyid +
+            ", bazdxh=" + bazdxh +
+            ", zdlbdm=" + zdlbdm +
+            ", zczdpb=" + zczdpb +
+            ", jbdmid=" + jbdmid +
+            ", zdjbmc=" + zdjbmc +
+            ", zgqkdm=" + zgqkdm +
+            ", ryqkbm=" + ryqkbm +
+            ", blzdbh=" + blzdbh +
+            ", zdfhpb=" + zdfhpb +
+            ", zdzhxh=" + zdzhxh +
+        "}";
+    }
+}

+ 313 - 0
mrman-service/src/main/java/com/diagbot/entity/BrRecinhos.java

@@ -0,0 +1,313 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 病案住院信息
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@TableName("BR_RECINHOS")
+public class BrRecinhos implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 病案首页编号BASYID
+     */
+    @TableId("BASYID")
+    private Long basyid;
+
+    /**
+     * 病人住院序号BRZYID
+     */
+    @TableField("BRZYID")
+    private String brzyid;
+
+    /**
+     * 组织机构代码ZZJGDM
+     */
+    @TableField("ZZJGDM")
+    private String zzjgdm;
+
+    /**
+     * 病人住院次数BRZYCS
+     */
+    @TableField("BRZYCS")
+    private Integer brzycs;
+
+    /**
+     * 入院情况编码RYQKDM
+     */
+    @TableField("RYQKDM")
+    private String ryqkdm;
+
+    /**
+     * 入院来源编码RYLYDM
+     */
+    @TableField("RYLYDM")
+    private String rylydm;
+
+    /**
+     * 入院科室编码RYKSID
+     */
+    @TableField("RYKSID")
+    private String ryksid;
+
+    /**
+     * 入院病区编码RYBQID
+     */
+    @TableField("RYBQID")
+    private String rybqid;
+
+    /**
+     * 入院床位序号RYCWID
+     */
+    @TableField("RYCWID")
+    private String rycwid;
+
+    /**
+     * 入院床位号码RYCWHM
+     */
+    @TableField("RYCWHM")
+    private String rycwhm;
+
+    /**
+     * 病人入院日期BRRYRQ
+     */
+    @TableField("BRRYRQ")
+    private Date brryrq;
+
+    /**
+     * 出院科室编码CYKSID
+     */
+    @TableField("CYKSID")
+    private String cyksid;
+
+    /**
+     * 出院病区编码CYBQID
+     */
+    @TableField("CYBQID")
+    private String cybqid;
+
+    /**
+     * 出院床位序号CYCWID
+     */
+    @TableField("CYCWID")
+    private String cycwid;
+
+    /**
+     * 出院床位号码CYCWHM
+     */
+    @TableField("CYCWHM")
+    private String cycwhm;
+
+    /**
+     * 病人出院日期BRCYRQ
+     */
+    @TableField("BRCYRQ")
+    private Date brcyrq;
+
+    /**
+     * 自动出院判别ZDCYPB
+     */
+    @TableField("ZDCYPB")
+    private Integer zdcypb;
+
+    /**
+     * 实际住院天数SJZYTS
+     */
+    @TableField("SJZYTS")
+    private Integer sjzyts;
+
+    /**
+     * 出院情况编码CYQKBM
+     */
+    @TableField("CYQKDM")
+    private String cyqkdm;
+
+    public Long getBasyid() {
+        return basyid;
+    }
+
+    public void setBasyid(Long basyid) {
+        this.basyid = basyid;
+    }
+
+    public String getBrzyid() {
+        return brzyid;
+    }
+
+    public void setBrzyid(String brzyid) {
+        this.brzyid = brzyid;
+    }
+
+    public String getZzjgdm() {
+        return zzjgdm;
+    }
+
+    public void setZzjgdm(String zzjgdm) {
+        this.zzjgdm = zzjgdm;
+    }
+
+    public Integer getBrzycs() {
+        return brzycs;
+    }
+
+    public void setBrzycs(Integer brzycs) {
+        this.brzycs = brzycs;
+    }
+
+    public String getRyqkdm() {
+        return ryqkdm;
+    }
+
+    public void setRyqkdm(String ryqkdm) {
+        this.ryqkdm = ryqkdm;
+    }
+
+    public String getRylydm() {
+        return rylydm;
+    }
+
+    public void setRylydm(String rylydm) {
+        this.rylydm = rylydm;
+    }
+
+    public String getRyksid() {
+        return ryksid;
+    }
+
+    public void setRyksid(String ryksid) {
+        this.ryksid = ryksid;
+    }
+
+    public String getRybqid() {
+        return rybqid;
+    }
+
+    public void setRybqid(String rybqid) {
+        this.rybqid = rybqid;
+    }
+
+    public String getRycwid() {
+        return rycwid;
+    }
+
+    public void setRycwid(String rycwid) {
+        this.rycwid = rycwid;
+    }
+
+    public String getRycwhm() {
+        return rycwhm;
+    }
+
+    public void setRycwhm(String rycwhm) {
+        this.rycwhm = rycwhm;
+    }
+
+    public Date getBrryrq() {
+        return brryrq;
+    }
+
+    public void setBrryrq(Date brryrq) {
+        this.brryrq = brryrq;
+    }
+
+    public String getCyksid() {
+        return cyksid;
+    }
+
+    public void setCyksid(String cyksid) {
+        this.cyksid = cyksid;
+    }
+
+    public String getCybqid() {
+        return cybqid;
+    }
+
+    public void setCybqid(String cybqid) {
+        this.cybqid = cybqid;
+    }
+
+    public String getCycwid() {
+        return cycwid;
+    }
+
+    public void setCycwid(String cycwid) {
+        this.cycwid = cycwid;
+    }
+
+    public String getCycwhm() {
+        return cycwhm;
+    }
+
+    public void setCycwhm(String cycwhm) {
+        this.cycwhm = cycwhm;
+    }
+
+    public Date getBrcyrq() {
+        return brcyrq;
+    }
+
+    public void setBrcyrq(Date brcyrq) {
+        this.brcyrq = brcyrq;
+    }
+
+    public Integer getZdcypb() {
+        return zdcypb;
+    }
+
+    public void setZdcypb(Integer zdcypb) {
+        this.zdcypb = zdcypb;
+    }
+
+    public Integer getSjzyts() {
+        return sjzyts;
+    }
+
+    public void setSjzyts(Integer sjzyts) {
+        this.sjzyts = sjzyts;
+    }
+
+    public String getCyqkdm() {
+        return cyqkdm;
+    }
+
+    public void setCyqkdm(String cyqkdm) {
+        this.cyqkdm = cyqkdm;
+    }
+
+    @Override
+    public String toString() {
+        return "BrRecinhos{" +
+                "basyid=" + basyid +
+                ", brzyid=" + brzyid +
+                ", zzjgdm=" + zzjgdm +
+                ", brzycs=" + brzycs +
+                ", ryqkdm=" + ryqkdm +
+                ", rylydm=" + rylydm +
+                ", ryksid=" + ryksid +
+                ", rybqid=" + rybqid +
+                ", rycwid=" + rycwid +
+                ", rycwhm=" + rycwhm +
+                ", brryrq=" + brryrq +
+                ", cyksid=" + cyksid +
+                ", cybqid=" + cybqid +
+                ", cycwid=" + cycwid +
+                ", cycwhm=" + cycwhm +
+                ", brcyrq=" + brcyrq +
+                ", zdcypb=" + zdcypb +
+                ", sjzyts=" + sjzyts +
+                ", cyqkdm=" + cyqkdm +
+                "}";
+    }
+}

+ 208 - 0
mrman-service/src/main/java/com/diagbot/entity/MrMedicalrecords.java

@@ -0,0 +1,208 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@TableName("MR_MEDICALRECORDS")
+public class MrMedicalrecords implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("BLJLID")
+    private String bljlid;
+
+    @TableField("BLCJID")
+    private String blcjid;
+
+    @TableField("ZZJGDM")
+    private String zzjgdm;
+
+    @TableField("BRZYID")
+    private String brzyid;
+
+    @TableField("MQZYID")
+    private String mqzyid;
+
+    @TableField("BLLBID")
+    private String bllbid;
+
+    @TableField("BLMBID")
+    private String blmbid;
+
+    @TableField("BCJLSJ")
+    private String bcjlsj;
+
+    @TableField("BLJLMC")
+    private String bljlmc;
+
+    @TableField("SFZFPB")
+    private Integer sfzfpb;
+
+    @TableField("CJYHDM")
+    private String cjyhdm;
+
+    @TableField("CJCZSJ")
+    private Date cjczsj;
+
+    @TableField("XGYHDM")
+    private String xgyhdm;
+
+    @TableField("XGCZSJ")
+    private Date xgczsj;
+
+    @TableField("BLZCBZ")
+    private Integer blzcbz;
+
+    public String getBljlid() {
+        return bljlid;
+    }
+
+    public void setBljlid(String bljlid) {
+        this.bljlid = bljlid;
+    }
+
+    public String getBlcjid() {
+        return blcjid;
+    }
+
+    public void setBlcjid(String blcjid) {
+        this.blcjid = blcjid;
+    }
+
+    public String getZzjgdm() {
+        return zzjgdm;
+    }
+
+    public void setZzjgdm(String zzjgdm) {
+        this.zzjgdm = zzjgdm;
+    }
+
+    public String getBrzyid() {
+        return brzyid;
+    }
+
+    public void setBrzyid(String brzyid) {
+        this.brzyid = brzyid;
+    }
+
+    public String getMqzyid() {
+        return mqzyid;
+    }
+
+    public void setMqzyid(String mqzyid) {
+        this.mqzyid = mqzyid;
+    }
+
+    public String getBllbid() {
+        return bllbid;
+    }
+
+    public void setBllbid(String bllbid) {
+        this.bllbid = bllbid;
+    }
+
+    public String getBlmbid() {
+        return blmbid;
+    }
+
+    public void setBlmbid(String blmbid) {
+        this.blmbid = blmbid;
+    }
+
+    public String getBcjlsj() {
+        return bcjlsj;
+    }
+
+    public void setBcjlsj(String bcjlsj) {
+        this.bcjlsj = bcjlsj;
+    }
+
+    public String getBljlmc() {
+        return bljlmc;
+    }
+
+    public void setBljlmc(String bljlmc) {
+        this.bljlmc = bljlmc;
+    }
+
+    public Integer getSfzfpb() {
+        return sfzfpb;
+    }
+
+    public void setSfzfpb(Integer sfzfpb) {
+        this.sfzfpb = sfzfpb;
+    }
+
+    public String getCjyhdm() {
+        return cjyhdm;
+    }
+
+    public void setCjyhdm(String cjyhdm) {
+        this.cjyhdm = cjyhdm;
+    }
+
+    public Date getCjczsj() {
+        return cjczsj;
+    }
+
+    public void setCjczsj(Date cjczsj) {
+        this.cjczsj = cjczsj;
+    }
+
+    public String getXgyhdm() {
+        return xgyhdm;
+    }
+
+    public void setXgyhdm(String xgyhdm) {
+        this.xgyhdm = xgyhdm;
+    }
+
+    public Date getXgczsj() {
+        return xgczsj;
+    }
+
+    public void setXgczsj(Date xgczsj) {
+        this.xgczsj = xgczsj;
+    }
+
+    public Integer getBlzcbz() {
+        return blzcbz;
+    }
+
+    public void setBlzcbz(Integer blzcbz) {
+        this.blzcbz = blzcbz;
+    }
+
+    @Override
+    public String toString() {
+        return "MrMedicalrecords{" +
+                "bljlid=" + bljlid +
+                ", blcjid=" + blcjid +
+                ", zzjgdm=" + zzjgdm +
+                ", brzyid=" + brzyid +
+                ", mqzyid=" + mqzyid +
+                ", bllbid=" + bllbid +
+                ", blmbid=" + blmbid +
+                ", bcjlsj=" + bcjlsj +
+                ", bljlmc=" + bljlmc +
+                ", sfzfpb=" + sfzfpb +
+                ", cjyhdm=" + cjyhdm +
+                ", cjczsj=" + cjczsj +
+                ", xgyhdm=" + xgyhdm +
+                ", xgczsj=" + xgczsj +
+                ", blzcbz=" + blzcbz +
+                "}";
+    }
+}

+ 49 - 0
mrman-service/src/main/java/com/diagbot/entity/MrMrcontent.java

@@ -0,0 +1,49 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@TableName("MR_MRCONTENT")
+public class MrMrcontent implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId("BLJLID")
+    private String bljlid;
+
+    @TableField("BLJLNR")
+    private String bljlnr;
+
+    public String getBljlid() {
+        return bljlid;
+    }
+
+    public void setBljlid(String bljlid) {
+        this.bljlid = bljlid;
+    }
+    public String getBljlnr() {
+        return bljlnr;
+    }
+
+    public void setBljlnr(String bljlnr) {
+        this.bljlnr = bljlnr;
+    }
+
+    @Override
+    public String toString() {
+        return "MrMrcontent{" +
+            "bljlid=" + bljlid +
+            ", bljlnr=" + bljlnr +
+        "}";
+    }
+}

+ 21 - 0
mrman-service/src/main/java/com/diagbot/entity/Token.java

@@ -0,0 +1,21 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * @Description: token
+ * @Author: ztg
+ * @Date: 2018/9/19 13:14
+ */
+@Getter
+@Setter
+public class Token implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    private String token;
+
+}

+ 51 - 0
mrman-service/src/main/java/com/diagbot/enums/BloodTypeEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:血型
+ * @Author:zhaops
+ * @time: 2020/1/19 15:56
+ */
+public enum BloodTypeEnum implements KeyedNamed {
+    A(1, "A型"),
+    B(2, "B型"),
+    O(3, "O型"),
+    AB(4, "AB型");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    BloodTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static BloodTypeEnum getEnum(int key) {
+        for (BloodTypeEnum item : BloodTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        BloodTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 49 - 0
mrman-service/src/main/java/com/diagbot/enums/RHTypeEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:RH类型
+ * @Author:zhaops
+ * @time: 2020/1/19 15:47
+ */
+public enum RHTypeEnum implements KeyedNamed {
+    Negative(1, "阴性"),
+    Positive(2, "阳性");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    RHTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static RHTypeEnum getEnum(int key) {
+        for (RHTypeEnum item : RHTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        RHTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 49 - 0
mrman-service/src/main/java/com/diagbot/enums/SexEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description: 性别
+ * @Author:zhaops
+ * @time: 2020/1/19 15:42
+ */
+public enum SexEnum implements KeyedNamed {
+    Male(1, "男"),
+    FeMale(2, "女");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    SexEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static SexEnum getEnum(int key) {
+        for (SexEnum item : SexEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        SexEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 49 - 0
mrman-service/src/main/java/com/diagbot/enums/ZCZDPBEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:主次诊断
+ * @Author:zhaops
+ * @time: 2020/1/20 10:35
+ */
+public enum ZCZDPBEnum implements KeyedNamed {
+    ZY(1, "主要诊断"),
+    QT(2, "其他诊断");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    ZCZDPBEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ZCZDPBEnum getEnum(int key) {
+        for (ZCZDPBEnum item : ZCZDPBEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        ZCZDPBEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 49 - 0
mrman-service/src/main/java/com/diagbot/enums/ZDLBDMEnum.java

@@ -0,0 +1,49 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:门诊住院诊断类型
+ * @Author:zhaops
+ * @time: 2020/1/20 10:32
+ */
+public enum ZDLBDMEnum implements KeyedNamed {
+    MJZ(1, "门急诊诊断"),
+    ZY(2, "住院诊断");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    ZDLBDMEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ZDLBDMEnum getEnum(int key) {
+        for (ZDLBDMEnum item : ZDLBDMEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        ZDLBDMEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 51 - 0
mrman-service/src/main/java/com/diagbot/enums/ZDLXEnum.java

@@ -0,0 +1,51 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:诊断类型
+ * @Author:zhaops
+ * @time: 2020/1/20 13:47
+ */
+public enum ZDLXEnum implements KeyedNamed {
+    MJZZYZD(1, "门急诊主要诊断"),
+    MJZQTZD(2, "门急诊其他诊断"),
+    ZYZYZD(3, "住院主要诊断"),
+    ZYQTZD(4, "住院其他诊断");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    ZDLXEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ZDLXEnum getEnum(int key) {
+        for (ZDLXEnum item : ZDLXEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        ZDLXEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 81 - 0
mrman-service/src/main/java/com/diagbot/exception/CommonExceptionHandler.java

@@ -0,0 +1,81 @@
+package com.diagbot.exception;
+
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.GsonUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.validation.BindException;
+import org.springframework.validation.FieldError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.MissingServletRequestParameterException;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
+import java.util.Map;
+
+
+/**
+ * @Description: 错误通用处理
+ * @author: gaodm
+ * @time: 2018/8/2 14:22
+ */
+@ControllerAdvice
+@ResponseBody
+@Slf4j
+public class CommonExceptionHandler {
+
+    @ExceptionHandler(Exception.class)
+    public ResponseEntity<RespDTO> handleException(Exception e) {
+        RespDTO resp = new RespDTO();
+        if (e instanceof BindException) {
+            BindException ex = (BindException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
+                stringMap.put(fieldError.getField(), fieldError.getDefaultMessage());
+            }
+            String msg = GsonUtil.toJson(stringMap);
+            log.warn("【参数异常】:{}", msg);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return new ResponseEntity(resp, HttpStatus.OK);
+        }
+        if (e instanceof MethodArgumentNotValidException) {
+            MethodArgumentNotValidException ex = (MethodArgumentNotValidException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            for (FieldError fieldError : ex.getBindingResult().getFieldErrors()) {
+                stringMap.put(fieldError.getField(), fieldError.getDefaultMessage());
+            }
+            String msg = GsonUtil.toJson(stringMap);
+            log.warn("【参数异常】:{}", msg);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return new ResponseEntity(resp, HttpStatus.OK);
+        }
+        if (e instanceof MissingServletRequestParameterException) {
+            MissingServletRequestParameterException ex = (MissingServletRequestParameterException) e;
+            Map<String, String> stringMap = new HashMap<>();
+            stringMap.put(ex.getParameterName(), "不能为null");
+            String msg = GsonUtil.toJson(stringMap);
+            log.warn("【参数异常】:{}", msg);
+            resp.code = CommonErrorCode.PARAM_ERROR.getCode();
+            resp.msg = msg;
+            return new ResponseEntity(resp, HttpStatus.OK);
+        }
+        if (e instanceof CommonException) {
+            CommonException taiChiException = (CommonException) e;
+            resp.code = taiChiException.getCode();
+            resp.msg = e.getMessage();
+            log.error("【业务异常】:{}", e.getMessage());
+            return new ResponseEntity(resp, HttpStatus.OK);
+        }
+        resp.code = CommonErrorCode.FAIL.getCode();
+        resp.msg = e.getMessage();
+        log.error("【系统异常】:{}", e.getMessage());
+        e.printStackTrace();
+        return new ResponseEntity(resp, HttpStatus.OK);
+    }
+
+}

+ 39 - 0
mrman-service/src/main/java/com/diagbot/exception/ServiceErrorCode.java

@@ -0,0 +1,39 @@
+package com.diagbot.exception;
+
+/**
+ * @Description: 本服务错误码
+ * 系统码(3位) + 等级码(1位) + 4位顺序号
+ * 系统码 通用码 000;用户中心 100; 管理中心 200;
+ * @author: gaodm
+ * @time: 2018/9/10 11:11
+ */
+public enum ServiceErrorCode implements ErrorCode {
+    LOG_IS_NOT_EXIST("90020001", "该日志不存在");
+
+    private String code;
+    private String msg;
+
+
+    ServiceErrorCode(String code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+
+    public String getCode() {
+        return code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public static ServiceErrorCode codeOf(String code) {
+        for (ServiceErrorCode state : values()) {
+            if (state.getCode() == code) {
+                return state;
+            }
+        }
+        return null;
+    }
+}

+ 153 - 0
mrman-service/src/main/java/com/diagbot/facade/ArRechomeFacade.java

@@ -0,0 +1,153 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.BABLDTO;
+import com.diagbot.dto.BABLDetailDTO;
+import com.diagbot.dto.BLJLDetailDTO;
+import com.diagbot.entity.ArRechome;
+import com.diagbot.entity.BrRecdiagnose;
+import com.diagbot.entity.MrMrcontent;
+import com.diagbot.enums.ZCZDPBEnum;
+import com.diagbot.enums.ZDLBDMEnum;
+import com.diagbot.enums.ZDLXEnum;
+import com.diagbot.service.BrRecdiagnoseService;
+import com.diagbot.service.MrMrcontentService;
+import com.diagbot.service.impl.ArRechomeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.BABLDetailVO;
+import com.diagbot.vo.BABLVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/17 13:17
+ */
+@Component
+public class ArRechomeFacade extends ArRechomeServiceImpl {
+    @Autowired
+    private MrMedicalrecordsFacade mrMedicalrecordsFacade;
+    @Autowired
+    private BrRecdiagnoseFacade brRecdiagnoseFacade;
+    @Autowired
+    @Qualifier("brRecdiagnoseServiceImpl")
+    private BrRecdiagnoseService brRecdiagnoseService;
+    @Autowired
+    @Qualifier("mrMrcontentServiceImpl")
+    private MrMrcontentService mrMrcontentService;
+
+    /**
+     * 获取病案记录列表
+     *
+     * @return
+     */
+    public List<BABLDTO> getAllList() {
+        return super.getBAZYList();
+    }
+
+    /**
+     * 获取病案详情
+     *
+     * @param bablvo
+     * @return
+     */
+    public BABLDetailDTO getBABLContent(BABLVO bablvo) {
+        //获取基础信息
+        BABLDetailDTO bablDetailDTO = super.getBABLDetail(bablvo);
+        //获取诊断列表
+        Map<String, List<BrRecdiagnose>> diagMap = brRecdiagnoseFacade.getListByParam(bablvo.getBasyid());
+        if (diagMap != null) {
+            bablDetailDTO.setMjzzyzdList(diagMap.get(ZDLXEnum.MJZZYZD.getName()));
+            bablDetailDTO.setMjzqtzdList(diagMap.get(ZDLXEnum.MJZQTZD.getName()));
+            bablDetailDTO.setZyzyzdList(diagMap.get(ZDLXEnum.ZYZYZD.getName()));
+            bablDetailDTO.setZyqtzdList(diagMap.get(ZDLXEnum.ZYQTZD.getName()));
+        }
+        //获取病历记录
+        List<BLJLDetailDTO> bljlDetailDTOList = mrMedicalrecordsFacade.getBLJLList(bablvo);
+        if (bablDetailDTO != null) {
+            bablDetailDTO.setZybljlList(bljlDetailDTOList);
+        }
+        return bablDetailDTO;
+    }
+
+    /**
+     * 病历详情新增修改
+     *
+     * @param bablDetailVO
+     * @return
+     */
+    public Boolean saveBABLDetail(BABLDetailVO bablDetailVO) {
+        if (bablDetailVO.getBasyid() == null) {
+            //新增 预留功能
+            return false;
+        } else {
+            //病案首页基础信息保存
+            ArRechome arRechome = new ArRechome();
+            arRechome.setBasyid(bablDetailVO.getBasyid());
+            arRechome.setBrbaxb(bablDetailVO.getBrbaxb());
+            arRechome.setBrbaxx(bablDetailVO.getBrbaxx());
+            arRechome.setBrbarh(bablDetailVO.getBrbarh());
+            this.updateById(arRechome);
+            //诊断信息保存
+            List<BrRecdiagnose> brRecdiagnoses = Lists.newLinkedList();
+            //门急诊主要诊断
+            if (ListUtil.isNotEmpty(bablDetailVO.getMjzzyzdList())) {
+                for (BrRecdiagnose brRecdiagnose : bablDetailVO.getMjzzyzdList()) {
+                    brRecdiagnose.setBasyid(bablDetailVO.getBasyid());
+                    brRecdiagnose.setZdlbdm(String.valueOf(ZDLBDMEnum.MJZ.getKey()));
+                    brRecdiagnose.setZczdpb(ZCZDPBEnum.ZY.getKey());
+                }
+                brRecdiagnoses.addAll(bablDetailVO.getMjzzyzdList());
+            }
+            //门急诊其他诊断
+            if (ListUtil.isNotEmpty(bablDetailVO.getMjzqtzdList())) {
+                for (BrRecdiagnose brRecdiagnose : bablDetailVO.getMjzqtzdList()) {
+                    brRecdiagnose.setBasyid(bablDetailVO.getBasyid());
+                    brRecdiagnose.setZdlbdm(String.valueOf(ZDLBDMEnum.MJZ.getKey()));
+                    brRecdiagnose.setZczdpb(ZCZDPBEnum.QT.getKey());
+                }
+                brRecdiagnoses.addAll(bablDetailVO.getMjzqtzdList());
+            }
+            //住院主要诊断
+            if (ListUtil.isNotEmpty(bablDetailVO.getZyzyzdList())) {
+                for (BrRecdiagnose brRecdiagnose : bablDetailVO.getZyzyzdList()) {
+                    brRecdiagnose.setBasyid(bablDetailVO.getBasyid());
+                    brRecdiagnose.setZdlbdm(String.valueOf(ZDLBDMEnum.ZY.getKey()));
+                    brRecdiagnose.setZczdpb(ZCZDPBEnum.ZY.getKey());
+                }
+                brRecdiagnoses.addAll(bablDetailVO.getZyzyzdList());
+            }
+            //住院其他诊断
+            if (ListUtil.isNotEmpty(bablDetailVO.getZyqtzdList())) {
+                for (BrRecdiagnose brRecdiagnose : bablDetailVO.getZyqtzdList()) {
+                    brRecdiagnose.setBasyid(bablDetailVO.getBasyid());
+                    brRecdiagnose.setZdlbdm(String.valueOf(ZDLBDMEnum.ZY.getKey()));
+                    brRecdiagnose.setZczdpb(ZCZDPBEnum.QT.getKey());
+                }
+                brRecdiagnoses.addAll(bablDetailVO.getZyqtzdList());
+            }
+            //删除就的诊断列表
+            UpdateWrapper<BrRecdiagnose> brRecdiagnoseUpdateWrapper = new UpdateWrapper<>();
+            brRecdiagnoseUpdateWrapper.eq("BASYID", bablDetailVO.getBasyid());
+            brRecdiagnoseService.remove(brRecdiagnoseUpdateWrapper);
+            //插入新的诊断列表
+            brRecdiagnoseService.saveBatch(brRecdiagnoses);
+
+            //修改病历记录内容
+            List<MrMrcontent> mrMrcontents = Lists.newLinkedList();
+            if (ListUtil.isNotEmpty(bablDetailVO.getZybljlList())) {
+                mrMrcontents = BeanUtil.listCopyTo(bablDetailVO.getZybljlList(), MrMrcontent.class);
+                mrMrcontentService.updateBatchById(mrMrcontents);
+            }
+            return true;
+        }
+    }
+}

+ 70 - 0
mrman-service/src/main/java/com/diagbot/facade/BrRecdiagnoseFacade.java

@@ -0,0 +1,70 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.BrRecdiagnose;
+import com.diagbot.enums.ZCZDPBEnum;
+import com.diagbot.enums.ZDLBDMEnum;
+import com.diagbot.enums.ZDLXEnum;
+import com.diagbot.service.impl.BrRecdiagnoseServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 16:29
+ */
+@Component
+public class BrRecdiagnoseFacade extends BrRecdiagnoseServiceImpl {
+
+    /**
+     * 按类型获取诊断列表
+     *
+     * @param basyid
+     * @return
+     */
+    public Map<String, List<BrRecdiagnose>> getListByParam(Long basyid) {
+        Map<String, List<BrRecdiagnose>> retMap = new HashMap<>();
+        QueryWrapper<BrRecdiagnose> brRecdiagnoseQueryWrapper = new QueryWrapper<>();
+        brRecdiagnoseQueryWrapper.eq("BASYID", basyid);
+        List<BrRecdiagnose> brRecdiagnoses = this.list(brRecdiagnoseQueryWrapper);
+        brRecdiagnoses = brRecdiagnoses.stream().filter(i -> StringUtil.isNotBlank(i.getZdlbdm())).collect(Collectors.toList());
+        if (ListUtil.isEmpty(brRecdiagnoses)) {
+            return null;
+        }
+        Map<String, List<BrRecdiagnose>> map = EntityUtil.makeEntityListMap(brRecdiagnoses, "zdlbdm");
+        for (Map.Entry<String, List<BrRecdiagnose>> entry : map.entrySet()) {
+            if (entry.getKey().equals(String.valueOf(ZDLBDMEnum.MJZ.getKey()))) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    List<BrRecdiagnose> subBrRecdiagnoses = entry.getValue().stream().filter(i -> i.getZczdpb() != null).collect(Collectors.toList());
+                    Map<Integer, List<BrRecdiagnose>> subMap = EntityUtil.makeEntityListMap(subBrRecdiagnoses, "zczdpb");
+                    if (subMap.containsKey(ZCZDPBEnum.ZY.getKey())) {
+                        retMap.put(ZDLXEnum.MJZZYZD.getName(), subMap.get(ZCZDPBEnum.ZY.getKey()));
+                    }
+                    if (subMap.containsKey(ZCZDPBEnum.QT.getKey())) {
+                        retMap.put(ZDLXEnum.MJZQTZD.getName(), subMap.get(ZCZDPBEnum.QT.getKey()));
+                    }
+                }
+            } else if (entry.getKey().equals(String.valueOf(ZDLBDMEnum.ZY.getKey()))) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    List<BrRecdiagnose> subBrRecdiagnoses = entry.getValue().stream().filter(i -> i.getZczdpb() != null).collect(Collectors.toList());
+                    Map<Integer, List<BrRecdiagnose>> subMap = EntityUtil.makeEntityListMap(subBrRecdiagnoses, "zczdpb");
+                    if (subMap.containsKey(ZCZDPBEnum.ZY.getKey())) {
+                        retMap.put(ZDLXEnum.ZYZYZD.getName(), subMap.get(ZCZDPBEnum.ZY.getKey()));
+                    }
+                    if (subMap.containsKey(ZCZDPBEnum.QT.getKey())) {
+                        retMap.put(ZDLXEnum.ZYQTZD.getName(), subMap.get(ZCZDPBEnum.QT.getKey()));
+                    }
+                }
+            }
+        }
+        return retMap;
+    }
+}

+ 29 - 0
mrman-service/src/main/java/com/diagbot/facade/EnumsDataFacade.java

@@ -0,0 +1,29 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据装饰类
+ * @author: zhaops
+ * @time: 2020/1/19
+ */
+@Component
+public class EnumsDataFacade {
+    @Autowired
+    private EnumsDataService enumsDataService;
+
+    /**
+     * 用户枚举数据获取
+     *
+     * @return 用户枚举类map
+     */
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData() {
+        return enumsDataService.getEnumsData();
+    }
+}

+ 13 - 0
mrman-service/src/main/java/com/diagbot/facade/MrMedicalrecordsFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.MrMedicalrecordsServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 15:02
+ */
+@Component
+public class MrMedicalrecordsFacade extends MrMedicalrecordsServiceImpl {
+}

+ 13 - 0
mrman-service/src/main/java/com/diagbot/facade/MrMrcontentFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.MrMrcontentServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2020/1/17 15:38
+ */
+@Component
+public class MrMrcontentFacade extends MrMrcontentServiceImpl {
+}

+ 34 - 0
mrman-service/src/main/java/com/diagbot/mapper/ArRechomeMapper.java

@@ -0,0 +1,34 @@
+package com.diagbot.mapper;
+
+import com.diagbot.dto.BABLDTO;
+import com.diagbot.dto.BABLDetailDTO;
+import com.diagbot.entity.ArRechome;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.BABLVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 病案首页信息Ar_RecHome Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface ArRechomeMapper extends BaseMapper<ArRechome> {
+    /**
+     * 获取病案病历记录列表
+     *
+     * @return
+     */
+    List<BABLDTO> getBAZYList();
+
+    /**
+     * 获取病历详情
+     *
+     * @param bablvo
+     * @return
+     */
+    BABLDetailDTO getBABLDetail(BABLVO bablvo);
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/BrRecdiagnoseMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.BrRecdiagnose;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病案诊断信息 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface BrRecdiagnoseMapper extends BaseMapper<BrRecdiagnose> {
+
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/BrRecinhosMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.BrRecinhos;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 病案住院信息 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface BrRecinhosMapper extends BaseMapper<BrRecinhos> {
+
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/mapper/MrMedicalrecordsMapper.java

@@ -0,0 +1,27 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.BLJLDetailDTO;
+import com.diagbot.entity.MrMedicalrecords;
+import com.diagbot.vo.BABLVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface MrMedicalrecordsMapper extends BaseMapper<MrMedicalrecords> {
+
+    /**
+     * 获取病历记录列表
+     *
+     * @param bablvo
+     * @return
+     */
+    List<BLJLDetailDTO> getBLJLList(BABLVO bablvo);
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/mapper/MrMrcontentMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MrMrcontent;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface MrMrcontentMapper extends BaseMapper<MrMrcontent> {
+
+}

+ 23 - 0
mrman-service/src/main/java/com/diagbot/rabbit/MyProcessor.java

@@ -0,0 +1,23 @@
+package com.diagbot.rabbit;
+
+import org.springframework.cloud.stream.annotation.Input;
+import org.springframework.cloud.stream.annotation.Output;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.messaging.SubscribableChannel;
+
+/**
+ * @Description: 自定义Stream发布和消费对象
+ * @author: gaodm
+ * @time: 2018/8/29 13:39
+ */
+public interface MyProcessor {
+
+    String INPUT_LOG = "inputLog";
+    String OUTPUT_LOG = "outputLog";
+
+    @Input(INPUT_LOG)
+    SubscribableChannel inputLog();
+
+    @Output(OUTPUT_LOG)
+    MessageChannel outputLog();
+}

+ 27 - 0
mrman-service/src/main/java/com/diagbot/rabbit/MySender.java

@@ -0,0 +1,27 @@
+package com.diagbot.rabbit;
+
+import com.diagbot.biz.log.entity.SysLog;
+import com.diagbot.util.GsonUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.cloud.stream.annotation.EnableBinding;
+import org.springframework.integration.support.MessageBuilder;
+import org.springframework.messaging.MessageChannel;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description: 发布者
+ * @author: gaodm
+ * @time: 2018/8/29 13:41
+ */
+@Component
+@EnableBinding({ MyProcessor.class })
+public class MySender {
+    @Autowired
+    @Qualifier("outputLog")
+    MessageChannel outputLog;
+
+    public void outputLogSend(SysLog sysLog) {
+        outputLog.send(MessageBuilder.withPayload(GsonUtil.toJson(sysLog)).build());
+    }
+}

+ 34 - 0
mrman-service/src/main/java/com/diagbot/service/ArRechomeService.java

@@ -0,0 +1,34 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.BABLDTO;
+import com.diagbot.dto.BABLDetailDTO;
+import com.diagbot.entity.ArRechome;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.BABLVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 病案首页信息Ar_RecHome 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface ArRechomeService extends IService<ArRechome> {
+    /**
+     * 获取病案病历记录列表
+     *
+     * @return
+     */
+    List<BABLDTO> getBAZYList();
+
+    /**
+     * 获取病历详情
+     *
+     * @param bablvo
+     * @return
+     */
+    BABLDetailDTO getBABLDetail(BABLVO bablvo);
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/service/BrRecdiagnoseService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.BrRecdiagnose;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 病案诊断信息 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface BrRecdiagnoseService extends IService<BrRecdiagnose> {
+
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/service/BrRecinhosService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.BrRecinhos;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 病案住院信息 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface BrRecinhosService extends IService<BrRecinhos> {
+
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/EnumsDataService.java

@@ -0,0 +1,20 @@
+package com.diagbot.service;
+
+import com.diagbot.util.EnumEntriesBuilder;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口类
+ * @author: zhaops
+ * @time: 2020/1/19
+ */
+public interface EnumsDataService {
+    /**
+     * 用户枚举数据获取
+     *
+     * @return 用户枚举类map
+     */
+    Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData();
+}

+ 26 - 0
mrman-service/src/main/java/com/diagbot/service/MrMedicalrecordsService.java

@@ -0,0 +1,26 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.BLJLDetailDTO;
+import com.diagbot.entity.MrMedicalrecords;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.BABLVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface MrMedicalrecordsService extends IService<MrMedicalrecords> {
+    /**
+     * 获取病历记录列表
+     *
+     * @param bablvo
+     * @return
+     */
+    List<BLJLDetailDTO> getBLJLList(BABLVO bablvo);
+}

+ 16 - 0
mrman-service/src/main/java/com/diagbot/service/MrMrcontentService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MrMrcontent;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+public interface MrMrcontentService extends IService<MrMrcontent> {
+
+}

+ 42 - 0
mrman-service/src/main/java/com/diagbot/service/impl/ArRechomeServiceImpl.java

@@ -0,0 +1,42 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.BABLDTO;
+import com.diagbot.dto.BABLDetailDTO;
+import com.diagbot.entity.ArRechome;
+import com.diagbot.mapper.ArRechomeMapper;
+import com.diagbot.service.ArRechomeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.BABLVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 病案首页信息Ar_RecHome 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@Service
+public class ArRechomeServiceImpl extends ServiceImpl<ArRechomeMapper, ArRechome> implements ArRechomeService {
+    /**
+     * 获取病案病历记录列表
+     *
+     * @return
+     */
+    public List<BABLDTO> getBAZYList() {
+        return this.baseMapper.getBAZYList();
+    }
+
+    /**
+     * 获取病历详情
+     *
+     * @param bablvo
+     * @return
+     */
+    public BABLDetailDTO getBABLDetail(BABLVO bablvo) {
+        return this.baseMapper.getBABLDetail(bablvo);
+    }
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/impl/BrRecdiagnoseServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.BrRecdiagnose;
+import com.diagbot.mapper.BrRecdiagnoseMapper;
+import com.diagbot.service.BrRecdiagnoseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 病案诊断信息 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@Service
+public class BrRecdiagnoseServiceImpl extends ServiceImpl<BrRecdiagnoseMapper, BrRecdiagnose> implements BrRecdiagnoseService {
+
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/impl/BrRecinhosServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.BrRecinhos;
+import com.diagbot.mapper.BrRecinhosMapper;
+import com.diagbot.service.BrRecinhosService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 病案住院信息 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@Service
+public class BrRecinhosServiceImpl extends ServiceImpl<BrRecinhosMapper, BrRecinhos> implements BrRecinhosService {
+
+}

+ 35 - 0
mrman-service/src/main/java/com/diagbot/service/impl/EnumsDataServiceImpl.java

@@ -0,0 +1,35 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.enums.BloodTypeEnum;
+import com.diagbot.enums.RHTypeEnum;
+import com.diagbot.enums.SexEnum;
+import com.diagbot.service.EnumsDataService;
+import com.diagbot.util.EnumEntriesBuilder;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description: 枚举数据接口是实现类
+ * @author: zhaops
+ * @time: 2020/1/19
+ */
+@Service
+public class EnumsDataServiceImpl implements EnumsDataService {
+
+    /**
+     * 用户枚举数据获取
+     *
+     * @return 用户枚举类map
+     */
+    @Override
+    public Map<String, List<EnumEntriesBuilder.Entry>> getEnumsData() {
+        Map<String, List<EnumEntriesBuilder.Entry>> enumMap = new EnumEntriesBuilder()
+                .addEnums("sexEnum", SexEnum.values())
+                .addEnums("bloodTypeEnum", BloodTypeEnum.values())
+                .addEnums("rhTypeEnum", RHTypeEnum.values())
+                .build();
+        return enumMap;
+    }
+}

+ 32 - 0
mrman-service/src/main/java/com/diagbot/service/impl/MrMedicalrecordsServiceImpl.java

@@ -0,0 +1,32 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.dto.BLJLDetailDTO;
+import com.diagbot.entity.MrMedicalrecords;
+import com.diagbot.mapper.MrMedicalrecordsMapper;
+import com.diagbot.service.MrMedicalrecordsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.BABLVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@Service
+public class MrMedicalrecordsServiceImpl extends ServiceImpl<MrMedicalrecordsMapper, MrMedicalrecords> implements MrMedicalrecordsService {
+    /**
+     * 获取病历记录列表
+     *
+     * @param bablvo
+     * @return
+     */
+    public List<BLJLDetailDTO> getBLJLList(BABLVO bablvo) {
+        return this.baseMapper.getBLJLList(bablvo);
+    }
+}

+ 20 - 0
mrman-service/src/main/java/com/diagbot/service/impl/MrMrcontentServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MrMrcontent;
+import com.diagbot.mapper.MrMrcontentMapper;
+import com.diagbot.service.MrMrcontentService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-01-17
+ */
+@Service
+public class MrMrcontentServiceImpl extends ServiceImpl<MrMrcontentMapper, MrMrcontent> implements MrMrcontentService {
+
+}

+ 62 - 0
mrman-service/src/main/java/com/diagbot/vo/BABLDetailVO.java

@@ -0,0 +1,62 @@
+package com.diagbot.vo;
+
+import com.diagbot.dto.BLJLDetailDTO;
+import com.diagbot.entity.BrRecdiagnose;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 17:04
+ */
+@Getter
+@Setter
+public class BABLDetailVO {
+    /**
+     * 病案首页id
+     */
+    private Long basyid;
+    /**
+     * 病人住院id
+     */
+    private Long brzyid;
+    /**
+     * 病人病案性别BRBAXB
+     */
+    private String brbaxb;
+    /**
+     * 病人病案血型BRBAXX
+     */
+    private String brbaxx;
+    /**
+     * 病人病案RH型BRBARH
+     */
+    private String brbarh;
+
+    /**
+     * 门急诊主要诊断列表
+     */
+    private List<BrRecdiagnose> mjzzyzdList;
+    /**
+     * 门急诊其他诊断列表
+     */
+    private List<BrRecdiagnose> mjzqtzdList;
+
+    /**
+     * 住院主要诊断列表
+     */
+    private List<BrRecdiagnose> zyzyzdList;
+
+    /**
+     * 住院其他诊断列表
+     */
+    private List<BrRecdiagnose> zyqtzdList;
+
+    /**
+     * 住院病历记录列表
+     */
+    private List<BLJLDetailDTO> zybljlList;
+}

+ 22 - 0
mrman-service/src/main/java/com/diagbot/vo/BABLVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/1/19 14:38
+ */
+@Getter
+@Setter
+public class BABLVO {
+    /**
+     * 病案首页编号BASYID
+     */
+    private Long basyid;
+    /**
+     * 病人住院序号BRZYID
+     */
+    private String brzyid;
+}

+ 21 - 0
mrman-service/src/main/java/com/diagbot/vo/SysLogVo.java

@@ -0,0 +1,21 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2018/8/6 10:16
+ */
+@Getter
+@Setter
+public class SysLogVo {
+    private Date createDate;
+    private String ip;
+    private String method;
+    private String operation;
+    private String params;
+}

+ 0 - 0
mrman-service/src/main/java/com/diagbot/web/ArRechomeController.java


Certains fichiers n'ont pas été affichés car il y a eu trop de fichiers modifiés dans ce diff