Browse Source

提交

recovery
wang0018 4 years ago
parent
commit
234270b2e6
  1. 4
      beneficiation/src/main/resources/application.yml
  2. 2
      cloudutil/src/main/resources/application-util-prod.yml
  3. 2
      cloudutil/src/main/resources/application-util-test.yml
  4. 2
      game/src/main/resources/application-prod.yml
  5. 2
      game/src/main/resources/application-prodsd.yml
  6. 2
      game/src/main/resources/application.yml
  7. 2
      ht/src/main/resources/application-prod.yml
  8. 2
      mt/src/main/resources/application-dev.yml
  9. 4
      mt/src/main/resources/application.yml
  10. 35
      ocr/pom.xml
  11. 24
      ocr/src/main/java/com/ccsens/orc/OcrApplication.java
  12. 28
      ocr/src/main/resources/application-common.yml
  13. 41
      ocr/src/main/resources/application-dev.yml
  14. 39
      ocr/src/main/resources/application-greenvalley.yml
  15. 48
      ocr/src/main/resources/application-prod.yml
  16. 44
      ocr/src/main/resources/application-prodapi.yml
  17. 44
      ocr/src/main/resources/application-prodsd.yml
  18. 51
      ocr/src/main/resources/application-test.yml
  19. 5
      ocr/src/main/resources/application.yml
  20. 21
      ocr/src/main/resources/banner.txt
  21. 196
      ocr/src/main/resources/logback-spring.xml
  22. 61
      ocr/src/test/java/com/ccsens/orc/test/OrcTest.java
  23. 7
      pom.xml
  24. 2
      tall/src/main/resources/application-prodsd.yml
  25. 2
      tall/src/main/resources/application-test.yml
  26. 1
      tall/src/main/resources/application.yml
  27. 1
      util/src/main/java/com/ccsens/util/PoiUtil.java
  28. 5
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/RecordDto.java
  29. 5
      wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/RecordVo.java
  30. 11
      wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarRecordDao.java
  31. 64
      wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java
  32. 2
      wisdomcar/src/main/resources/application-test.yml
  33. 27
      wisdomcar/src/main/resources/mapper_dao/WisdomCarRecordDao.xml

4
beneficiation/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: test
include: common, util-test
active: prod
include: common, util-prod

2
cloudutil/src/main/resources/application-util-prod.yml

@ -22,7 +22,7 @@ eureka:
#defaultZone: http://admin:admin@peer1:8761/eureka/,http://admin:admin@peer2:8762/eureka/
# defaultZone: http://admin:admin@81.70.54.64:7010/eureka/
defaultZone: http://admin:admin@192.144.182.42:7010/eureka/
defaultZone: http://admin:admin@121.36.3.207:7010/eureka/
instance:
# 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server

2
cloudutil/src/main/resources/application-util-test.yml

@ -83,7 +83,7 @@ eureka:
# 指定eureka server通信地址,注意/eureka/小尾巴不能少
#defaultZone: http://admin:admin@peer1:8761/eureka/,http://admin:admin@peer2:8762/eureka/
# defaultZone: http://admin:admin@49.232.6.143:7010/eureka/
defaultZone: http://admin:admin@192.168.0.99:7010/eureka/
defaultZone: http://admin:admin@192.168.31.13:7010/eureka/
# defaultZone: http://admin:admin@test.tall.wiki:7010/eureka/
instance:
# 是否注册IP到eureka server,如不指定或设为false,那就回注册主机名到eureka server

2
game/src/main/resources/application-prod.yml

@ -32,7 +32,7 @@ swagger:
enable: true
eureka:
instance:
ip-address: 192.144.182.42
ip-address: 121.36.3.207
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/

2
game/src/main/resources/application-prodsd.yml

@ -31,7 +31,7 @@ swagger:
enable: true
eureka:
instance:
ip-address: 81.70.54.64
ip-address: 121.36.3.207
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/

2
game/src/main/resources/application.yml

@ -1,4 +1,4 @@
spring:
profiles:
active: prodapi
active: prod
include: common, util-prod

2
ht/src/main/resources/application-prod.yml

@ -39,5 +39,5 @@ ht:
name: 认知功能评测云平台系统
eureka:
instance:
ip-address: 81.70.54.64
ip-address: 121.36.3.207

2
mt/src/main/resources/application-dev.yml

@ -8,7 +8,7 @@ spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 81.70.54.64
host: 121.36.3.207
password: 111111
port: 5672
username: admin

4
mt/src/main/resources/application.yml

@ -1,6 +1,6 @@
spring:
profiles:
active: dev
include: common, util-dev
active: prod
include: common, util-prod

35
ocr/pom.xml

@ -0,0 +1,35 @@
<?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">
<parent>
<artifactId>ccsenscloud</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ocr</artifactId>
<dependencies>
<!--cloud 工具类-->
<dependency>
<artifactId>cloudutil</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--util 工具类-->
<dependency>
<artifactId>util</artifactId>
<groupId>com.ccsens</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--ocr-->
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>opencv</artifactId>
<version>4.0.1-1.4.4</version>
</dependency>
</dependencies>
</project>

24
ocr/src/main/java/com/ccsens/orc/OcrApplication.java

@ -0,0 +1,24 @@
package com.ccsens.orc;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.scheduling.annotation.EnableAsync;
/**
* @description:
* @author: whj
* @time: 2021/3/17 15:41
*/
@MapperScan(basePackages = {"com.ccsens.ocr.persist.*"})
@ServletComponentScan
@EnableAsync
//开启断路器功能
@EnableCircuitBreaker
@EnableFeignClients(basePackages = "com.ccsens.cloudutil.feign")
@SpringBootApplication(scanBasePackages = "com.ccsens")
public class OcrApplication {
}

28
ocr/src/main/resources/application-common.yml

@ -0,0 +1,28 @@
logging:
level:
com:
favorites: DEBUG
org:
hibernate: ERROR
springframework:
web: DEBUG
mybatis:
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath*:mapper_*/*.xml
type-aliases-package: com.ccsens.ht.bean
server:
tomcat:
uri-encoding: UTF-8
spring:
http:
encoding:
charset: UTF-8
enabled: true
force: true
log-request-details: true
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB

41
ocr/src/main/resources/application-dev.yml

@ -0,0 +1,41 @@
server:
port: 7030
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 1
workerId: 1
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 192.168.0.99
password: guest
port: 5672
username: guest
redis:
database: 0
host: 127.0.0.1
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
password: ''
port: 6379
timeout: 1000ms
swagger:
enable: true
gatewayUrl: https://test.tall.wiki/gateway/
notGatewayUrl: /home/staticrec/logo.png
smsCode: 0
wx:
prefixUrl: https://test.tall.wiki/wxconfigurer-api/
file:
path: /home/cloud/tall/uploads/
domain: http://localhost:7030/v1.0/
imgDomain: http://localhost:7030/v1.0/uploads

39
ocr/src/main/resources/application-greenvalley.yml

@ -0,0 +1,39 @@
server:
port: 7030
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 1
workerId: 1
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 127.0.0.1
password: admin
port: 5672
username: 111111
redis:
database: 0
host: 127.0.0.1
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
password: ''
port: 6379
timeout: 1000ms
swagger:
enable: true
eureka:
instance:
ip-address: 82.156.116.247
gatewayUrl: http://82.156.116.247 /gateway/
notGatewayUrl: http://82.156.116.247 /
file:
domain: http://82.156.116.247 /gateway/tall/v1.0/
imgDomain: http://82.156.116.247 /gateway/tall/v1.0/uploads

48
ocr/src/main/resources/application-prod.yml

@ -0,0 +1,48 @@
server:
port: 7030
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 1
workerId: 1
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 127.0.0.1
password: 111111
port: 5672
username: admin
redis:
database: 0
host: 127.0.0.1
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
# password: ''
password: 'areowqr!@43ef'
port: 6379
timeout: 1000ms
swagger:
enable: false
eureka:
instance:
# www.tall.wiki
# ip-address: 140.143.228.3
# ip-address: 81.70.54.64
ip-address: 192.144.182.42
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/
smsCode: 1
wx:
prefixUrl: https://www.tall.wiki/wxconfigurer-api/
file:
path: /home/cloud/tall/uploads/
domain: https://www.tall.wiki/gateway/tall/v1.0/
imgDomain: https://www.tall.wiki/gateway/tall/v1.0/uploads

44
ocr/src/main/resources/application-prodapi.yml

@ -0,0 +1,44 @@
server:
port: 7031
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 3
workerId: 3
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: www.tall.wiki
password: 111111
port: 5672
username: admin
redis:
database: 0
host: www.tall.wiki
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
password: 'areowqr!@43ef'
port: 6379
timeout: 1000ms
swagger:
enable: false
eureka:
instance:
ip-address: 129.28.149.79
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/
smsCode: 1
wx:
prefixUrl: https://www.tall.wiki/wxconfigurer-api/
file:
path: /home/cloud/tall/uploads/
domain: https://www.tall.wiki/gateway/tall/v1.0/
imgDomain: https://www.tall.wiki/gateway/tall/v1.0/uploads

44
ocr/src/main/resources/application-prodsd.yml

@ -0,0 +1,44 @@
server:
port: 7031
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 2
workerId: 2
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: www.tall.wiki
password: 111111
port: 5672
username: admin
redis:
database: 0
host: www.tall.wiki
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
password: 'areowqr!@43ef'
port: 6379
timeout: 1000ms
swagger:
enable: false
eureka:
instance:
ip-address: 121.36.3.207
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/
smsCode: 1
wx:
prefixUrl: https://www.tall.wiki/wxconfigurer-api/
file:
path: /home/cloud/tall/uploads/
domain: https://www.tall.wiki/gateway/tall/v1.0/
imgDomain: https://www.tall.wiki/gateway/tall/v1.0/uploads

51
ocr/src/main/resources/application-test.yml

@ -0,0 +1,51 @@
server:
port: 7030
servlet:
context-path: /v1.0
spring:
snowflake:
datacenterId: 1
workerId: 1
application:
name: tall
datasource:
type: com.alibaba.druid.pool.DruidDataSource
rabbitmq:
host: 127.0.0.1
# host: api.ccsens.com
password: 111111
port: 5672
username: admin
redis:
database: 0
host: 127.0.0.1
jedis:
pool:
max-active: 200
max-idle: 10
max-wait: -1ms
min-idle: 0
password: ''
port: 6379
timeout: 1000ms
swagger:
enable: true
eureka:
instance:
ip-address: 192.168.0.99
# ip-address: 49.233.89.188
#gatewayUrl: http://192.168.0.99/gateway/
#notGatewayUrl: http://192.168.0.99/
gatewayUrl: https://test.tall.wiki/gateway/
notGatewayUrl: https://test.tall.wiki/
smsCode: 0
wx:
prefixUrl: https://www.tall.wiki/wxconfigurer-api/
file:
path: /home/cloud/tall/uploads/
domain: https://test.tall.wiki/gateway/tall/v1.0/
imgDomain: https://test.tall.wiki/gateway/tall/v1.0/uploads
#file:
# domain: http://192.168.0.99/gateway/tall/v1.0/
# imgDomain: http://192.168.0.99/gateway/tall/v1.0/uploads

5
ocr/src/main/resources/application.yml

@ -0,0 +1,5 @@
spring:
profiles:
active: dev
include: util-dev,common

21
ocr/src/main/resources/banner.txt

@ -0,0 +1,21 @@
// _ooOoo_
// o8888888o
// 88" . "88
// (| -_- |)
// O\ = /O
// ____/`---'\____
// . ' \\| |// `.
// / \\||| : |||// \
// / _||||| -:- |||||- \
// | | \\\ - /// | |
// | \_| ''\---/'' | |
// \ .-\__ `-` ___/-. /
// ___`. .' /--.--\ `. . __
// ."" '< `.___\_<|>_/___.' >'"".
// | | : `- \`.;`\ _ /`;.`/ - ` : | |
// \ \ `-. \_ __\ /__ _/ .-` / /
// ======`-.____`-.___\_____/___.-`____.-'======
// `=---='
//
// .............................................
// 佛祖保佑 永无BUG

196
ocr/src/main/resources/logback-spring.xml

@ -0,0 +1,196 @@
<?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="/home/cloud/ocr/game/log/" />
<!-- 彩色日志 -->
<!-- 彩色日志依赖的渲染类 -->
<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="com.ccsens.ptpro.persist.*" level="debug"/>
</springProfile>
<root level="info">
<appender-ref ref="CONSOLE" />
<appender-ref ref="DEBUG_FILE" />
<appender-ref ref="INFO_FILE" />
<appender-ref ref="WARN_FILE" />
<appender-ref ref="ERROR_FILE" />
</root>
<!--生产环境:输出到文件-->
<!--<springProfile name="pro">-->
<!--<root level="info">-->
<!--<appender-ref ref="CONSOLE" />-->
<!--<appender-ref ref="DEBUG_FILE" />-->
<!--<appender-ref ref="INFO_FILE" />-->
<!--<appender-ref ref="ERROR_FILE" />-->
<!--<appender-ref ref="WARN_FILE" />-->
<!--</root>-->
<!--</springProfile>-->
</configuration>

61
ocr/src/test/java/com/ccsens/orc/test/OrcTest.java

@ -0,0 +1,61 @@
package com.ccsens.orc.test;
import org.junit.Test;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
/**
* @description:
* @author: whj
* @time: 2021/3/17 17:45
*/
public class OrcTest {
@Test
public void test01(){
// 加载资源
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//创建3px*3px的8UC1(8个位的无符号(8U)单通道(C1)整数)
// Mat hello = Mat.eye(3,3, CvType.CV_8UC1);
// System.out.println(hello.dump());
//加载图片
Mat mat = Imgcodecs.imread("D:\\img\\0df7f58ea9d3a61019596094eb35003.png");
// 加载图片并灰度图像
// Mat mat = Imgcodecs.imread("D:\\img\\0df7f58ea9d3a61019596094eb35003.png", Imgcodecs.IMREAD_GRAYSCALE);
// System.out.println(mat.width() + "*" + mat.height() + "," + mat.type());
// System.out.println(mat);
// 输出图片
// Imgcodecs.imwrite("D:\\img\\1.png", mat);
// 截取图像
// Mat submat = mat.submat(50, 300, 60, 250);
// Imgcodecs.imwrite("D:\\img\\1.png", submat);
// 模糊图片 模糊子图片后,父模块也跟着模糊了
// Imgproc.blur(submat, submat, new Size(25.0,25.0));
// System.out.println(submat);
// Imgcodecs.imwrite("D:\\img\\blur.png", mat);
// 黑白化
Imgproc.cvtColor(mat, mat, Imgproc.COLOR_RGB2GRAY);
/*
高亮显示轮廓
源矩阵
目标矩阵
低阈值使用150.0
高阈值通常是低阈值的2倍或3倍
光圈37之间的一个奇数我们使用3光圈值越大被检测到的轮廓越多
L2梯度暂时设置为true
*/
Imgproc.Canny(mat, mat, 150,300,5, true);
// 反色操作
Core.bitwise_not(mat, mat);
// 将反色结果作为掩膜
Mat bg = Imgcodecs.imread("D:\\img\\e2669de7219943b8ac37f79dd8fef2f8.png");
Imgproc.resize(bg, bg, mat.size());
bg.copyTo(mat,mat);
Imgcodecs.imwrite("D:\\img\\1.png", mat);
}
}

7
pom.xml

@ -9,9 +9,9 @@
<module>cloudutil</module>
<module>util</module>
<module>tall</module>
<!-- <module>ht</module>-->
<!-- <module>game</module>-->
<!-- <module>mt</module>-->
<module>ht</module>
<module>game</module>
<module>mt</module>
<module>wisdomcar</module>
<module>beneficiation</module>
<!-- <module>form</module>-->
@ -20,6 +20,7 @@
<!-- <module>health</module>-->
<!-- <module>ct</module>-->
<module>tcm</module>
<module>ocr</module>
</modules>

2
tall/src/main/resources/application-prodsd.yml

@ -31,7 +31,7 @@ swagger:
enable: false
eureka:
instance:
ip-address: 81.70.54.64
ip-address: 121.36.3.207
gatewayUrl: https://www.tall.wiki/gateway/
notGatewayUrl: https://www.tall.wiki/

2
tall/src/main/resources/application-test.yml

@ -32,7 +32,7 @@ swagger:
enable: true
eureka:
instance:
ip-address: 192.168.0.99
ip-address: 127.0.0.1
# ip-address: 49.233.89.188
#gatewayUrl: http://192.168.0.99/gateway/
#notGatewayUrl: http://192.168.0.99/

1
tall/src/main/resources/application.yml

@ -3,3 +3,4 @@ spring:
active: test
include: util-test,common

1
util/src/main/java/com/ccsens/util/PoiUtil.java

@ -186,7 +186,6 @@ public class PoiUtil {
if(ObjectUtil.isNull(cell.value)) {
log.info("单元格内容为空:{}", cell.value);
}else {
log.info("单元格内容:{}", cell.value);
if (cell.value.length() <= 14 && cell.value.matches("\\d+")) {
newCell.setCellValue(Long.parseLong(cell.value));
} else {

5
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/dto/RecordDto.java

@ -26,6 +26,9 @@ public class RecordDto {
private Long startTime;
@ApiModelProperty("结束时间, 默认当前时间")
private Long endTime;
@ApiModelProperty("数据类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8剂量")
private byte[] types = {1,2};
// @ApiModelProperty("当前页,默认1")
// private int pageNum=1;
// @ApiModelProperty("每页数量,默认100")
@ -55,6 +58,8 @@ public class RecordDto {
private Long startTime;
@ApiModelProperty("结束时间, 默认当前时间")
private Long endTime;
@ApiModelProperty("数据类型 0开始 1体重 2rfid, 3称重一 4称重二 5称重三 6称重四 7震动 8剂量")
private byte[] types = {1,2};
{
endTime = System.currentTimeMillis();

5
wisdomcar/src/main/java/com/ccsens/wisdomcar/bean/vo/RecordVo.java

@ -1,12 +1,9 @@
package com.ccsens.wisdomcar.bean.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.Date;
/**
* @description: 数据记录
* @author: whj
@ -21,7 +18,7 @@ public class RecordVo {
@ApiModelProperty("时间")
private Long time;
@ApiModelProperty("类型:1体重 2rfid")
private Byte type;
private byte type;
private String value;
private String name;
}

11
wisdomcar/src/main/java/com/ccsens/wisdomcar/persist/dao/WisdomCarRecordDao.java

@ -20,4 +20,15 @@ public interface WisdomCarRecordDao extends WisdomCarRecordMapper {
* @return 称重和rfid记录
*/
List<RecordVo.WeightAndRfid> queryWeightAndRfid(@Param("carId") Long carId, @Param("startTime") Long startTime, @Param("endTime") Long endTime);
/**
* 根据类型查询平车记录
* @param carId 平车ID
* @param startTime 开始时间
* @param endTime 结束时间
* @param type 数据类型
* @return 记录
*/
List<RecordVo.WeightAndRfid> queryRecords(@Param("carId") Long carId, @Param("startTime") Long startTime, @Param("endTime") Long endTime, @Param("type") byte type);
}

64
wisdomcar/src/main/java/com/ccsens/wisdomcar/service/RecordService.java

@ -151,9 +151,56 @@ public class RecordService implements IRecordService{
@Override
public List<RecordVo.WeightAndRfid> queryWeightAndRfid(RecordDto.WeightAndRfid param, Long userId) {
List<RecordVo.WeightAndRfid> list = queryWeightAndRfid(param.getCarId(), param.getStartTime(), param.getEndTime());
List<RecordVo.WeightAndRfid> list = queryRecord(param.getCarId(), param.getStartTime(), param.getEndTime(), param.getTypes());
return list;
}
private List<RecordVo.WeightAndRfid> queryRecord(Long carId, Long startTime, Long endTime, byte[] types) {
List<RecordVo.WeightAndRfid> records = new ArrayList<>();
if (types == null || types.length == 0) {
log.info("没有输入查询记录类型,直接返回");
return records;
}
for (byte type : types) {
List<RecordVo.WeightAndRfid> list = wisdomCarRecordDao.queryRecords(carId, startTime, endTime, type);
RecordVo.WeightAndRfid prev = null;
for (int i = 0; i < list.size(); i++) {
RecordVo.WeightAndRfid cur = list.get(i);
if (i == 0) {
records.add(cur);
prev = cur;
continue;
}
// i > 0 && cur.type == prev.type
//称重
if (cur.getType() == Constant.CAR_RECORD_WEIGHT) {
// 重量差大于10KG或时间间隔大于10分钟,保留
if (Math.abs(Integer.parseInt(cur.getValue()) - Integer.parseInt(prev.getValue())) > weightMinus
|| Math.abs(cur.getTime() - prev.getTime()) > timeMinus) {
records.add(cur);
prev = cur;
}
continue;
}
// 非称重 值不重复 或 非称重 值重复 最后一条数据
if(!cur.getValue().equals(prev.getValue()) || i == list.size() -1){
records.add(cur);
} else if (!cur.getValue().equals(list.get(i+1).getValue()) ) {
// 非称重 值重复 非最后一条数据
// 判断与下一个是否一致,一致,则不保留第一个和最后一个
records.add(cur);
}
prev = cur;
}
}
if (types.length > 1) {
log.info("重新排序");
Collections.sort(records, (o1, o2) -> (int) (o1.getTime() - o2.getTime()));
}
return records;
}
/**
* 查询数据
@ -218,7 +265,7 @@ public class RecordService implements IRecordService{
@Override
public Workbook exportWeightAndRfid(RecordDto.WeightAndRfidExport param) {
log.info("数据导出:{}", param);
List<RecordVo.WeightAndRfid> list = queryWeightAndRfid(param.getCarId(), param.getStartTime(), param.getEndTime());
List<RecordVo.WeightAndRfid> list = queryRecord(param.getCarId(), param.getStartTime(), param.getEndTime(), param.getTypes());
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 参数封装
List<List<PoiUtil.PoiUtilCell>> rows = new ArrayList<>();
@ -246,7 +293,18 @@ public class RecordService implements IRecordService{
Date time = new Date();
time.setTime(record.getTime());
row.add(new PoiUtil.PoiUtilCell(sdf.format(time)));
row.add(new PoiUtil.PoiUtilCell(record.getType() == Constant.CAR_RECORD_WEIGHT ? "称重" : "rfid"));
String type = "称重";
switch (record.getType()) {
case Constant.CAR_RECORD_WEIGHT: type = "称重";break;
case Constant.CAR_RECORD_RFID: type = "rfid";break;
case Constant.WEIGHT_SENSOR_1: type = "称重1";break;
case Constant.WEIGHT_SENSOR_2: type = "称重2";break;
case Constant.WEIGHT_SENSOR_3: type = "称重3";break;
case Constant.WEIGHT_SENSOR_4: type = "称重4";break;
case Constant.SHAKE_SENSOR: type = "震动";break;
case Constant.THROMBOLYTIC: type = "剂量";break;
}
row.add(new PoiUtil.PoiUtilCell(type));
row.add(new PoiUtil.PoiUtilCell(record.getType() == Constant.CAR_RECORD_WEIGHT ? new BigDecimal(record.getValue()).divide(new BigDecimal(1000), 3).toString() + "Kg" : record.getName()));
rows.add(row);
}

2
wisdomcar/src/main/resources/application-test.yml

@ -28,7 +28,7 @@ swagger:
enable: true
eureka:
instance:
ip-address: 192.168.0.99
ip-address: 127.0.0.1
file:
path: /home/cloud/wisdomcar/uploads/
signUpUrl: https://test.tall.wiki/compete/

27
wisdomcar/src/main/resources/mapper_dao/WisdomCarRecordDao.xml

@ -11,4 +11,31 @@
) t
order by time
</select>
<select id="queryRecords" resultType="com.ccsens.wisdomcar.bean.vo.RecordVo$WeightAndRfid">
<choose>
<!--rfid-->
<when test="type == 2">
select r.time, r.type, if(length(HEX(CAST(value as SIGNED))) = 1, concat('0',HEX(CAST(value as SIGNED))), HEX(CAST(value as SIGNED))) as value,
IFNULL(rfid.name,if(length(HEX(CAST(value as SIGNED))) = 1, concat('0',HEX(CAST(value as SIGNED))), HEX(CAST(value as SIGNED)))) as name
from t_wisdom_car_record r left join t_rfid rfid on r.value = rfid.rfid and rfid.rec_status = 0
where r.car_id = #{carId} and r.type = 2 and r.time &gt;= #{startTime} and r.time &lt; #{endTime} and r.value != '0' and r.rec_status = 0
order by r.time
</when>
<otherwise>
select r.time, r.type, r.value,
case
when type = 1 then '称重'
when type = 3 then '称重一'
when type = 4 then '称重二'
when type = 5 then '称重三'
when type = 6 then '称重四'
when type = 7 then '震动'
when type = 8 then '剂量'
end as name
from t_wisdom_car_record r
where r.car_id = #{carId} and r.type = #{type} and r.time &gt;= #{startTime} and r.time &lt; #{endTime} and r.rec_status = 0
order by r.time
</otherwise>
</choose>
</select>
</mapper>
Loading…
Cancel
Save