Browse Source

Merge remote-tracking branch 'origin/dev/ez' into dev/ez

chengyao 4 years ago
parent
commit
5bd147a7d6
30 changed files with 471 additions and 117 deletions
  1. 1 0
      .gitignore
  2. 0 1
      common/pom.xml
  3. 18 17
      common/src/main/java/com/lantone/common/util/StringUtil.java
  4. 0 5
      config-center/pom.xml
  5. 18 9
      config-center/src/main/resources/bootstrap.yml
  6. 1 1
      config-center/src/main/resources/logback-spring.xml
  7. 0 4
      config-center/src/main/resources/shared/structureCenter-debug.yml
  8. 0 4
      config-center/src/main/resources/shared/structureCenter-dev.yml
  9. 0 4
      config-center/src/main/resources/shared/structureCenter-local.yml
  10. 0 4
      config-center/src/main/resources/shared/structureCenter-master.yml
  11. 14 0
      config-center/src/main/resources/shared/structure-center-test.yml
  12. 0 18
      config-center/src/main/resources/shared/structureCenter-test.yml
  13. 1 4
      gateway-service/pom.xml
  14. 16 15
      gateway-service/src/main/resources/bootstrap.yml
  15. 1 1
      gateway-service/src/main/resources/logback-spring.xml
  16. 33 0
      monitor-service/.gitignore
  17. 37 0
      monitor-service/pom.xml
  18. 17 0
      monitor-service/src/main/java/com/lantone/monitor/MonitorServiceApplication.java
  19. 47 0
      monitor-service/src/main/java/com/lantone/monitor/config/SecuritySecureConfig.java
  20. 22 0
      monitor-service/src/main/resources/application.yml
  21. 182 0
      monitor-service/src/main/resources/logback-spring.xml
  22. 5 0
      pom.xml
  23. 4 3
      register-center/pom.xml
  24. 21 2
      register-center/src/main/resources/bootstrap.yml
  25. 1 1
      register-center/src/main/resources/logback-spring.xml
  26. 1 0
      structure-center/pom.xml
  27. 1 1
      structure-center/src/main/java/com/lantone/structure/facade/tran/LeaveHospitalTran.java
  28. 9 13
      structure-center/src/main/java/com/lantone/structure/facade/tran/OperationRecordDocTran.java
  29. 20 9
      structure-center/src/main/resources/bootstrap.yml
  30. 1 1
      structure-center/src/main/resources/logback-spring.xml

+ 1 - 0
.gitignore

@@ -1,5 +1,6 @@
 HELP.md
 target/
+logs/
 !.mvn/wrapper/maven-wrapper.jar
 !**/src/main/**/target/
 !**/src/test/**/target/

+ 0 - 1
common/pom.xml

@@ -19,7 +19,6 @@
         <gson.version>2.8.5</gson.version>
     </properties>
 
-
     <dependencies>
         <dependency>
             <groupId>com.google.guava</groupId>

+ 18 - 17
common/src/main/java/com/lantone/common/util/StringUtil.java

@@ -86,23 +86,23 @@ public class StringUtil {
     /**
      * 比较两个列表的内容
      */
-    public static List<String> compareList(List<String> A, List<String> B) {
-        List<String> res = new ArrayList<>();
-
-        for (String i : A) {
-            if (!B.contains(i)) {
-                res.add(i);
-            }
-        }
-
-        for (String j : B) {
-            if (!A.contains(j)) {
-                res.add(j);
-            }
-        }
-
-        return res;
-    }
+//    public static List<String> compareList(List<String> A, List<String> B) {
+//        List<String> res = new ArrayList<>();
+//
+//        for (String i : A) {
+//            if (!B.contains(i)) {
+//                res.add(i);
+//            }
+//        }
+//
+//        for (String j : B) {
+//            if (!A.contains(j)) {
+//                res.add(j);
+//            }
+//        }
+//
+//        return res;
+//    }
 
     /**
      * 列表A是否包含列表B
@@ -337,6 +337,7 @@ public class StringUtil {
             "yyyy-M-dH:mm",
             "yyyy-M-dH:m",
             "yyyy-MM-dd",
+            "yyyy年MM月dd日",
             "yyyy年MM月dd日H时",
             "yyyy/MM/ddHH:mm:ss",
             "yyyy/MM/ddHH:mm",

+ 0 - 5
config-center/pom.xml

@@ -23,11 +23,6 @@
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
 </project>

+ 18 - 9
config-center/src/main/resources/bootstrap.yml

@@ -1,7 +1,9 @@
+server:
+  port: 7751
+
 spring:
   application:
-    name: configCenter
-
+    name: config-center
   cloud:
     config:
       server:
@@ -10,13 +12,20 @@ spring:
   profiles:
     active: native #表明配置中心使用本地文件,而非从git获取
 
-logging:
-  config: classpath:logback-spring.xml
-
-server:
-  port: 7751
-
 eureka:
   client:
     service-url:
-      defaultZone: http://localhost:6751/eureka/
+      defaultZone: http://localhost:6751/eureka/
+
+logging:
+  config: classpath:logback-spring.xml
+  file: logs/config-center/log_info.log
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always

+ 1 - 1
config-center/src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
 
     <contextName>logback</contextName>
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/home/logs/config-center" />
+    <property name="log.path" value="logs/config-center" />
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->

+ 0 - 4
config-center/src/main/resources/shared/structureCenter-debug.yml

@@ -1,7 +1,3 @@
-swagger.title: 数据后结构化服务
-swagger.des: 数据后结构化服务
-swagger.version: 0.0.1-SNAPSHOT
-
 CRF:
   url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
 

+ 0 - 4
config-center/src/main/resources/shared/structureCenter-dev.yml

@@ -1,7 +1,3 @@
-swagger.title: 数据后结构化服务
-swagger.des: 数据后结构化服务
-swagger.version: 0.0.1-SNAPSHOT
-
 CRF:
   url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
 

+ 0 - 4
config-center/src/main/resources/shared/structureCenter-local.yml

@@ -1,7 +1,3 @@
-swagger.title: 数据后结构化服务
-swagger.des: 数据后结构化服务
-swagger.version: 0.0.1-SNAPSHOT
-
 CRF:
   url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
 

+ 0 - 4
config-center/src/main/resources/shared/structureCenter-master.yml

@@ -1,7 +1,3 @@
-swagger.title: 数据后结构化服务
-swagger.des: 数据后结构化服务
-swagger.version: 0.0.1-SNAPSHOT
-
 CRF:
   url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
 

+ 14 - 0
config-center/src/main/resources/shared/structure-center-test.yml

@@ -0,0 +1,14 @@
+CRF:
+  url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
+
+Similarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
+
+NewSimilarity:
+  url: http://192.168.2.234:23232/api/similarity
+
+NewBatchSimilarity:
+  url: http://192.168.2.234:23232/api/similarity_batch
+
+ChiefPresentSimilarity:
+  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 0 - 18
config-center/src/main/resources/shared/structureCenter-test.yml

@@ -1,18 +0,0 @@
-swagger.title: 数据后结构化服务
-swagger.des: 数据后结构化服务
-swagger.version: 0.0.1-SNAPSHOT
-
-CRF:
-  url: http://192.168.2.234:3457/api/mr_info_ex/entity_predict
-
-Similarity:
-  url: http://192.168.2.234:3456/api/mr_info_ex/similarity
-
-NewSimilarity:
-  url: http://192.168.2.234:23232/api/similarity
-
-NewBatchSimilarity:
-  url: http://192.168.2.234:23232/api/similarity_batch
-
-ChiefPresentSimilarity:
-  url: http://192.168.2.234:3456/api/mr_info_ex/chief_present_similarity

+ 1 - 4
gateway-service/pom.xml

@@ -18,10 +18,6 @@
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-gateway</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springframework.cloud</groupId>
-            <artifactId>spring-cloud-starter-config</artifactId>
-        </dependency>
         <dependency>
             <groupId>org.springframework.cloud</groupId>
             <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
@@ -35,6 +31,7 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+
     </dependencies>
 
 </project>

+ 16 - 15
gateway-service/src/main/resources/bootstrap.yml

@@ -3,34 +3,35 @@ server:
 
 spring:
   application:
-    name: gatewayService
-
+    name: gateway-service
   cloud:
-    config:
-      discovery:
-        enabled: true
-        service-id: configCenter
     gateway:
       discovery:
         locator:
           lower-case-service-id: true
       routes:
-        - id:  structureCenter
-          uri: lb://structureCenter
+        - id:  structure-center
+          uri: lb://structure-center
           predicates:
             - Path=/sc/**
           filters:
             - SwaggerHeaderFilter
             - StripPrefix=1
 
-
-  profiles:
-    active: local
+eureka:
+  client:
+    service-url:
+      defaultZone: http://localhost:6751/eureka/
 
 logging:
   config: classpath:logback-spring.xml
+  file: logs/gateway-service/log_info.log
 
-eureka:
-  client:
-    service-url:
-      defaultZone: http://localhost:6751/eureka/
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always

+ 1 - 1
gateway-service/src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
 
     <contextName>logback</contextName>
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/home/logs/gateway-service" />
+    <property name="log.path" value="logs/gateway-service" />
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->

+ 33 - 0
monitor-service/.gitignore

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

+ 37 - 0
monitor-service/pom.xml

@@ -0,0 +1,37 @@
+<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>com.lantone</groupId>
+        <artifactId>emrais</artifactId>
+        <version>0.0.1-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>monitor-service</artifactId>
+    <name>monitor-service</name>
+    <packaging>jar</packaging>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>de.codecentric</groupId>
+            <artifactId>spring-boot-admin-starter-server</artifactId>
+            <version>2.1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.cloud</groupId>
+            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-security</artifactId>
+        </dependency>
+
+    </dependencies>
+
+</project>

+ 17 - 0
monitor-service/src/main/java/com/lantone/monitor/MonitorServiceApplication.java

@@ -0,0 +1,17 @@
+package com.lantone.monitor;
+
+import de.codecentric.boot.admin.server.config.EnableAdminServer;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+
+@EnableEurekaClient
+@EnableAdminServer
+@SpringBootApplication
+public class MonitorServiceApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(MonitorServiceApplication.class, args);
+    }
+
+}

+ 47 - 0
monitor-service/src/main/java/com/lantone/monitor/config/SecuritySecureConfig.java

@@ -0,0 +1,47 @@
+package com.lantone.monitor.config;
+
+import de.codecentric.boot.admin.server.config.AdminServerProperties;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.security.config.annotation.web.builders.HttpSecurity;
+import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
+import org.springframework.security.web.authentication.SavedRequestAwareAuthenticationSuccessHandler;
+import org.springframework.security.web.csrf.CookieCsrfTokenRepository;
+
+/**
+ * Created by macro on 2019/9/30.
+ */
+@Configuration
+public class SecuritySecureConfig extends WebSecurityConfigurerAdapter {
+    private final String adminContextPath;
+
+    public SecuritySecureConfig(AdminServerProperties adminServerProperties) {
+        this.adminContextPath = adminServerProperties.getContextPath();
+    }
+
+    @Override
+    protected void configure(HttpSecurity http) throws Exception {
+        SavedRequestAwareAuthenticationSuccessHandler successHandler = new SavedRequestAwareAuthenticationSuccessHandler();
+        successHandler.setTargetUrlParameter("redirectTo");
+        successHandler.setDefaultTargetUrl(adminContextPath + "/");
+
+        http.authorizeRequests()
+                //1.配置所有静态资源和登录页可以公开访问
+                .antMatchers(adminContextPath + "/assets/**").permitAll()
+                .antMatchers(adminContextPath + "/login").permitAll()
+                .anyRequest().authenticated()
+                .and()
+                //2.配置登录和登出路径
+                .formLogin().loginPage(adminContextPath + "/login").successHandler(successHandler).and()
+                .logout().logoutUrl(adminContextPath + "/logout").and()
+                //3.开启http basic支持,admin-client注册时需要使用
+                .httpBasic().and()
+                .csrf()
+                //4.开启基于cookie的csrf保护
+                .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
+                //5.忽略这些路径的csrf保护以便admin-client注册
+                .ignoringAntMatchers(
+                        adminContextPath + "/instances",
+                        adminContextPath + "/actuator/**"
+                );
+    }
+}

+ 22 - 0
monitor-service/src/main/resources/application.yml

@@ -0,0 +1,22 @@
+server:
+  port: 9985
+
+spring:
+  application:
+    name: monitor-service
+  security:
+    user:
+      name: admin
+      password: lantone
+  boot: # 不显示monitor-service的监控信息
+    admin:
+      discovery:
+        ignored-services: ${spring.application.name} # 必须是全小写 例如:${spring.application.name}的值,如果是monitorservice则有效,monitorService则无效。
+
+eureka:
+  client:
+    service-url:
+      defaultZone: http://localhost:6751/eureka/
+
+logging:
+  config: classpath:logback-spring.xml

+ 182 - 0
monitor-service/src/main/resources/logback-spring.xml

@@ -0,0 +1,182 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- 日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出 -->
+<!-- scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true -->
+<!-- scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 -->
+<!-- debug:当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->
+<configuration  scan="true" scanPeriod="10 seconds">
+
+    <!--<include resource="org/springframework/boot/logging/logback/base.xml" />-->
+
+    <contextName>logback</contextName>
+    <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
+    <property name="log.path" value="logs/monitor-service" />
+
+    <!-- 彩色日志 -->
+    <!-- 彩色日志依赖的渲染类 -->
+    <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter" />
+    <conversionRule conversionWord="wex" converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
+    <conversionRule conversionWord="wEx" converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
+    <!-- 彩色日志格式 -->
+    <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
+
+
+    <!--输出到控制台-->
+    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
+        <!--此日志appender是为开发使用,只配置最底级别,控制台输出的日志级别是大于或等于此级别的日志信息-->
+        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
+            <level>info</level>
+        </filter>
+        <encoder>
+            <Pattern>${CONSOLE_LOG_PATTERN}</Pattern>
+            <!-- 设置字符集 -->
+            <charset>UTF-8</charset>
+        </encoder>
+    </appender>
+
+
+    <!--输出到文件-->
+
+    <!-- 时间滚动输出 level为 DEBUG 日志 -->
+    <appender name="DEBUG_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/log_debug.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 日志归档 -->
+            <fileNamePattern>${log.path}/debug/log-debug-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录debug级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>debug</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 时间滚动输出 level为 INFO 日志 -->
+    <appender name="INFO_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/log_info.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset>
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <!-- 每天日志归档路径以及格式 -->
+            <fileNamePattern>${log.path}/info/log-info-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录info级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>info</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!-- 时间滚动输出 level为 WARN 日志 -->
+    <appender name="WARN_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/log_warn.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/warn/log-warn-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录warn级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>warn</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+
+    <!-- 时间滚动输出 level为 ERROR 日志 -->
+    <appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
+        <!-- 正在记录的日志文件的路径及文件名 -->
+        <file>${log.path}/log_error.log</file>
+        <!--日志文件输出格式-->
+        <encoder>
+            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
+            <charset>UTF-8</charset> <!-- 此处设置字符集 -->
+        </encoder>
+        <!-- 日志记录器的滚动策略,按日期,按大小记录 -->
+        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
+            <fileNamePattern>${log.path}/error/log-error-%d{yyyy-MM-dd}.%i.log</fileNamePattern>
+            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
+                <maxFileSize>100MB</maxFileSize>
+            </timeBasedFileNamingAndTriggeringPolicy>
+            <!--日志文件保留天数-->
+            <maxHistory>15</maxHistory>
+        </rollingPolicy>
+        <!-- 此日志文件只记录ERROR级别的 -->
+        <filter class="ch.qos.logback.classic.filter.LevelFilter">
+            <level>ERROR</level>
+            <onMatch>ACCEPT</onMatch>
+            <onMismatch>DENY</onMismatch>
+        </filter>
+    </appender>
+
+    <!--
+        <logger>用来设置某一个包或者具体的某一个类的日志打印级别、
+        以及指定<appender>。<logger>仅有一个name属性,
+        一个可选的level和一个可选的addtivity属性。
+        name:用来指定受此logger约束的某一个包或者具体的某一个类。
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+              还有一个特俗值INHERITED或者同义词NULL,代表强制执行上级的级别。
+              如果未设置此属性,那么当前logger将会继承上级的级别。
+        addtivity:是否向上级logger传递打印信息。默认是true。
+    -->
+    <!--<logger name="org.springframework.web" level="info"/>-->
+    <!--<logger name="org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor" level="INFO"/>-->
+    <!--
+        使用mybatis的时候,sql语句是debug下才会打印,而这里我们只配置了info,所以想要查看sql语句的话,有以下两种操作:
+        第一种把<root level="info">改成<root level="DEBUG">这样就会打印sql,不过这样日志那边会出现很多其他消息
+        第二种就是单独给dao下目录配置debug模式,代码如下,这样配置sql语句会打印,其他还是正常info级别:
+     -->
+
+
+    <!--
+        root节点是必选节点,用来指定最基础的日志输出级别,只有一个level属性
+        level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF,
+        不能设置为INHERITED或者同义词NULL。默认是DEBUG
+        可以包含零个或多个元素,标识这个appender将会添加到这个logger。
+    -->
+
+    <!--开发环境:打印控制台-->
+    <springProfile name="dev">
+        <logger name="org.lantone.qc" level="debug"/>
+    </springProfile>
+
+    <root level="info">
+        <appender-ref ref="CONSOLE"/>
+        <appender-ref ref="INFO_FILE" />
+        <appender-ref ref="ERROR_FILE" />
+    </root>
+</configuration>

+ 5 - 0
pom.xml

@@ -23,6 +23,7 @@
         <module>common</module>
         <module>structure-center</module>
         <module>gateway-service</module>
+        <module>monitor-service</module>
     </modules>
 
     <properties>
@@ -134,6 +135,10 @@
             <artifactId>guava</artifactId>
             <version>${guava.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-actuator</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

+ 4 - 3
register-center/pom.xml

@@ -20,10 +20,11 @@
         </dependency>
 
         <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-test</artifactId>
-            <scope>test</scope>
+            <groupId>de.codecentric</groupId>
+            <artifactId>spring-boot-admin-starter-client</artifactId>
+            <version>2.1.6</version>
         </dependency>
+
     </dependencies>
 
 </project>

+ 21 - 2
register-center/src/main/resources/bootstrap.yml

@@ -1,10 +1,19 @@
 server:
   port: 6751
 
+spring:
+  application:
+    name: register-center
+  boot:
+    admin:
+      client: # 用户名密码需要配置,否则到监控中心报名
+        url: http://localhost:9985 # 配置监控服务端的地址
+        username: admin
+        password: lantone
 
 eureka:
   instance:
-    hostname: registerCenter
+    hostname: register-center
   client:
     register-with-eureka: false
     fetch-registry: false
@@ -12,4 +21,14 @@ eureka:
       defaultZone: http://localhost:${server.port}/eureka/
 
 logging:
-  config: classpath:logback-spring.xml
+  config: classpath:logback-spring.xml
+  file: logs/register-center/log_info.log
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always

+ 1 - 1
register-center/src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
 
     <contextName>logback</contextName>
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/home/logs/register-center" />
+    <property name="log.path" value="logs/register-center" />
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->

+ 1 - 0
structure-center/pom.xml

@@ -41,6 +41,7 @@
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>
         </dependency>
+
     </dependencies>
 
 </project>

+ 1 - 1
structure-center/src/main/java/com/lantone/structure/facade/tran/LeaveHospitalTran.java

@@ -161,7 +161,7 @@ public class LeaveHospitalTran extends TargetTran {
             }
 
             if (StringUtil.isNotEmpty(retMap.get("填写日期"))) {
-                String fileDate = retMap.get("填写日期");
+                String fileDate = retMap.get("填写日期").replace(" ","").trim();
                 String sginTime= lastTime(fileDate);
                 retMap.put("填写日期",sginTime);
             }

+ 9 - 13
structure-center/src/main/java/com/lantone/structure/facade/tran/OperationRecordDocTran.java

@@ -125,9 +125,6 @@ public class OperationRecordDocTran extends TargetTran {
                     }
                     retMap.put("引流材料名称", drainageMaterialsNameString.toString());
                 }
-//                if (operationRecordLabel.getDrainageMaterialsName() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsName().getName())) {
-//                    retMap.put("引流材料名称", operationRecordLabel.getDrainageMaterialsName().getName());
-//                }
                 //放置部位
                 if (ListUtil.isNotEmpty(operationRecordLabel.getPlacePositions())) {
                     for (PlacePosition PlacePositions : operationRecordLabel.getPlacePositions()) {
@@ -141,9 +138,6 @@ public class OperationRecordDocTran extends TargetTran {
                     }
                     retMap.put("放置部位", placePositionString.toString());
                 }
-//                if (operationRecordLabel.getPlacePosition() != null && StringUtils.isNotEmpty(operationRecordLabel.getPlacePosition().getName())) {
-//                    retMap.put("放置部位", operationRecordLabel.getPlacePosition().getName());
-//                }
 
                 //引流材料数目
                 if (ListUtil.isNotEmpty(operationRecordLabel.getDrainageMaterialsAmounts())) {
@@ -161,9 +155,6 @@ public class OperationRecordDocTran extends TargetTran {
                         retMap.put("引流材料数目",integer+"根");
                     }
                 }
-//                if (operationRecordLabel.getDrainageMaterialsAmount() != null && StringUtils.isNotEmpty(operationRecordLabel.getDrainageMaterialsAmount().getName())) {
-//                    retMap.put("引流材料数目", operationRecordLabel.getDrainageMaterialsAmount().getName());
-//                }
 
 
             }
@@ -205,10 +196,15 @@ public class OperationRecordDocTran extends TargetTran {
 
     private Map<String, String> cutWord(String text) {
         Map<String, String> sourceMap = Maps.newHashMap();
-        text = text.replace("年  月  日  时  分", "").replace("第1次手术", "")
-                .replace("(包括体位、切口处理经过,病理标本肉眼所见)", "");
+        if (text.contains("问题错误")) {
+            text = text.substring(0, text.indexOf("问题错误"));
+        }
+        text = text.replace("年  月  日  时  分", "").replace("年 月 日 时 分","")
+                .replace("第1次手术", "")
+                .replace("(包括体位、切口处理经过,病理标本肉眼所见)", "")
+                .replace("\\r", "");
         List<String> titles = CommonAnalysisUtil.sortTitles(
-                Lists.newArrayList("手术开始时间", "手术结束时间", "术前诊断", "手术名称", "术中诊断", "手 术 者", "手术人员", "助手",
+                Lists.newArrayList("手术开始时间", "手术结束时间", "术前诊断", "手术名称", "术中诊断", "手 术 者", "手术人员", "助手", "护婴者",
                         "麻醉方法", "麻醉方式", "麻 醉 者", "麻醉医师", "手术标本", "手术切除标本", "术中并发症", "术中失血量", "术中输血量", "手术简要经过(包括“术中所见”)",
                         "手术经过", "术后情况及诊疗计划", "术后注意事项", "记录者", "主刀医生", "医生签名", "主刀医师签名", "记录时间", "患者或代理人签名", "与病人关系"),
                 text
@@ -241,7 +237,7 @@ public class OperationRecordDocTran extends TargetTran {
             }
 
             CommonAnalysisUtil.removeKey(sourceMap, "术前诊断", "术中诊断", "⒈患者基本情况", "⒉拟实施的输血方案", "手术标本", "手术切除标本", "术中并发症",
-                    "与病人关系", "术后情况及诊疗计划", "术后注意事项");
+                    "与病人关系", "术后情况及诊疗计划", "术后注意事项", "护婴者");
         }
         return sourceMap;
     }

+ 20 - 9
structure-center/src/main/resources/bootstrap.yml

@@ -3,26 +3,37 @@ server:
 
 spring:
   application:
-    name: structureCenter
-
+    name: structure-center
   cloud:
     config:
       discovery:
         enabled: true
-        service-id: configCenter
-
+        service-id: config-center
   profiles:
     active: local
-
   servlet:
     multipart:
       max-request-size: 1MB
       max-file-size: 1MB
 
-logging:
-  config: classpath:logback-spring.xml
-
 eureka:
   client:
     service-url:
-      defaultZone: http://localhost:6751/eureka/
+      defaultZone: http://localhost:6751/eureka/
+
+logging:
+  config: classpath:logback-spring.xml
+  file: logs/structure-center/log_info.log
+
+management:
+  endpoints:
+    web:
+      exposure:
+        include: '*'
+  endpoint:
+    health:
+      show-details: always
+
+swagger.title: 数据后结构化服务
+swagger.des: 数据后结构化服务
+swagger.version: 0.0.1-SNAPSHOT

+ 1 - 1
structure-center/src/main/resources/logback-spring.xml

@@ -9,7 +9,7 @@
 
     <contextName>logback</contextName>
     <!-- name的值是变量的名称,value的值时变量定义的值。通过定义的值会被插入到logger上下文中。定义变量后,可以使“${}”来使用变量。 -->
-    <property name="log.path" value="/home/logs/structure-center" />
+    <property name="log.path" value="logs/structure-center" />
 
     <!-- 彩色日志 -->
     <!-- 彩色日志依赖的渲染类 -->