diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/target/classes/org/well/well/util/PushList.class b/target/classes/org/well/well/util/PushList.class
deleted file mode 100644
index ec3d365..0000000
--- a/target/classes/org/well/well/util/PushList.class
+++ /dev/null
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/target/classes/org/well/well/util/PushList.class b/target/classes/org/well/well/util/PushList.class
deleted file mode 100644
index ec3d365..0000000
--- a/target/classes/org/well/well/util/PushList.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/org/well/well/util/SnowFlakeUtil.class b/target/classes/org/well/well/util/SnowFlakeUtil.class
index e26cf69..2e0ce4a 100644
--- a/target/classes/org/well/well/util/SnowFlakeUtil.class
+++ b/target/classes/org/well/well/util/SnowFlakeUtil.class
Binary files differ
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/target/classes/org/well/well/util/PushList.class b/target/classes/org/well/well/util/PushList.class
deleted file mode 100644
index ec3d365..0000000
--- a/target/classes/org/well/well/util/PushList.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/org/well/well/util/SnowFlakeUtil.class b/target/classes/org/well/well/util/SnowFlakeUtil.class
index e26cf69..2e0ce4a 100644
--- a/target/classes/org/well/well/util/SnowFlakeUtil.class
+++ b/target/classes/org/well/well/util/SnowFlakeUtil.class
Binary files differ
diff --git a/target/classes/wellSensor/application.properties b/target/classes/wellSensor/application.properties
index f6145cf..9305d74 100644
--- a/target/classes/wellSensor/application.properties
+++ b/target/classes/wellSensor/application.properties
@@ -152,7 +152,9 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-#cron.time=0 37 15 * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
+checked.day=7
# ============================================================================
# ���ͼ��
@@ -187,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/target/classes/org/well/well/util/PushList.class b/target/classes/org/well/well/util/PushList.class
deleted file mode 100644
index ec3d365..0000000
--- a/target/classes/org/well/well/util/PushList.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/org/well/well/util/SnowFlakeUtil.class b/target/classes/org/well/well/util/SnowFlakeUtil.class
index e26cf69..2e0ce4a 100644
--- a/target/classes/org/well/well/util/SnowFlakeUtil.class
+++ b/target/classes/org/well/well/util/SnowFlakeUtil.class
Binary files differ
diff --git a/target/classes/wellSensor/application.properties b/target/classes/wellSensor/application.properties
index f6145cf..9305d74 100644
--- a/target/classes/wellSensor/application.properties
+++ b/target/classes/wellSensor/application.properties
@@ -152,7 +152,9 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-#cron.time=0 37 15 * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
+checked.day=7
# ============================================================================
# ���ͼ��
@@ -187,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/target/classes/wellSensor/applicationContex-ActiveMQ.xml b/target/classes/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/target/classes/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/.idea/artifacts/wellSensor_jar.xml b/.idea/artifacts/wellSensor_jar.xml
index 324bd80..3432abc 100644
--- a/.idea/artifacts/wellSensor_jar.xml
+++ b/.idea/artifacts/wellSensor_jar.xml
@@ -4,120 +4,114 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
-
+
+
+
+
+
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 9a6a8d7..072a861 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -32,6 +32,11 @@
+
+
+
+
+
diff --git a/META-INF/MANIFEST.MF b/META-INF/MANIFEST.MF
index 172042e..6208a89 100644
--- a/META-INF/MANIFEST.MF
+++ b/META-INF/MANIFEST.MF
@@ -1,3 +1,43 @@
Manifest-Version: 1.0
Main-Class: org.well.mysql.sink.WellSink
+Class-Path: velocity-1.7.jar gson-2.2.2.jar geronimo-jms_1.1_spec-1.1.1.
+ jar spring-jdbc-4.0.6.RELEASE.jar jboss-logging-annotations-1.2.0.Beta1
+ .jar mina-core-2.0.4.jar log4j-1.2.16.jar commons-codec-1.9.jar java-si
+ zeof-0.0.4.jar commons-lang-2.5.jar jackson-module-jaxb-annotations-2.4
+ .2.jar jackson-databind-2.4.2.jar commons-pool2-2.4.2.jar guava-10.0.1.
+ jar expiringmap-0.5.8.jar paranamer-2.3.jar gexin-rp-fastjson-1.0.0.1.j
+ ar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-r
+ p-sdk-template-4.0.0.22.jar protobuf-java-2.5.0.jar jackson-jaxrs-json-
+ provider-2.4.2.jar httpclient-4.2.1.jar spring-orm-4.0.6.RELEASE.jar co
+ mmons-dbcp-1.4.jar spring-jms-3.2.8.RELEASE.jar jansi-1.11.jar avro-ipc
+ -1.7.3.jar flume-ng-core-1.4.0.jar aopalliance-1.0.jar httpcore-4.2.1.j
+ ar flume-ng-sdk-1.4.0.jar activemq-pool-5.14.5.jar postgresql-42.3.6.ja
+ r hibernate-jpa-2.1-api-1.0.0.Final.jar libthrift-0.7.0.jar jackson-cor
+ e-asl-1.9.3.jar activemq-client-5.14.5.jar commons-httpclient-3.1.jar n
+ etty-3.4.0.Final.jar commons-lang3-3.3.2.jar avro-1.7.3.jar log4jdbc-re
+ mix-0.2.7.jar commons-pool-1.5.4.jar activemq-jms-pool-5.14.5.jar json-
+ lib-2.4-jdk15.jar jul-to-slf4j-1.7.7.jar spring-expression-4.0.6.RELEAS
+ E.jar xml-apis-1.0.b2.jar logback-core-1.1.2.jar spring-beans-4.0.6.REL
+ EASE.jar commons-fileupload-1.3.1.jar commons-beanutils-1.9.2.jar hiber
+ nate-validator-5.1.2.Final.jar jetty-6.1.26.jar spring-core-4.0.6.RELEA
+ SE.jar ezmorph-1.0.6.jar activemq-openwire-legacy-5.14.5.jar jackson-co
+ re-2.4.2.jar ojdbc6-11.1.0.7.0.jar activemq-spring-5.14.5.jar logback-c
+ lassic-1.1.2.jar checker-qual-3.5.0.jar jsr305-1.3.9.jar jboss-transact
+ ion-api_1.2_spec-1.0.0.Final.jar fastjson-1.1.15.jar servlet-api-2.5-20
+ 110124.jar hawtbuf-1.11.jar joda-time-2.1.jar javassist-3.18.1-GA.jar s
+ lf4j-api-1.7.7.jar slf4j-log4j12-1.6.1.jar commons-compiler-2.7.6.jar c
+ lassmate-1.0.0.jar commons-cli-1.2.jar orika-core-1.4.5.jar jandex-1.1.
+ 0.Final.jar dom4j-1.6.1.jar hibernate-commons-annotations-4.0.5.Final.j
+ ar antlr-2.7.7.jar hibernate-core-4.3.6.Final.jar concurrentlinkedhashm
+ ap-lru-1.2_jdk5.jar mysql-connector-java-5.1.25.jar jackson-annotations
+ -2.4.0.jar spring-aop-4.0.6.RELEASE.jar spring-tx-4.0.6.RELEASE.jar sno
+ wflake-1.0.0.jar spring-web-4.0.6.RELEASE.jar commons-io-2.4.jar jackso
+ n-jaxrs-base-2.4.2.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar vali
+ dation-api-1.1.0.Final.jar jstl-1.2.jar jetty-util-6.1.26.jar snappy-ja
+ va-1.0.4.1.jar spring-context-4.0.6.RELEASE.jar commons-logging-1.1.1.j
+ ar jboss-logging-3.1.3.GA.jar commons-collections-3.2.1.jar activemq-br
+ oker-5.14.5.jar geronimo-jta_1.0.1B_spec-1.0.1.jar xbean-spring-4.2.jar
+ janino-2.7.6.jar spring-context-support-4.0.6.RELEASE.jar spring-webmv
+ c-4.0.6.RELEASE.jar jackson-mapper-asl-1.9.3.jar flume-ng-configuration
+ -1.4.0.jar jcl-over-slf4j-1.7.7.jar
diff --git a/pom.xml b/pom.xml
index ac8e701..62e2b0f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -273,6 +273,12 @@
spring-jms
3.2.8.RELEASE
+
+
+ net.jodah
+ expiringmap
+ 0.5.8
+
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 94b2998..7d0f364 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -278,6 +278,11 @@
//temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030904\",
// \"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20221028170840\",\"bType\":\"WellEvent\"},
// \"ts\":1666948120626}\n";
+
+ temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}";
+
+ temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412022030508\",\"mBody\":{\"eventType\":[\"WellOpenAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}";
+
AbstractResponse resp = ResponseResolver.makeResponse(temp);
resp.setAc(ac);
// for(String dd:arr){
diff --git a/src/main/java/org/well/well/core/util/DateUtils.java b/src/main/java/org/well/well/core/util/DateUtils.java
index 47b94be..343e4c6 100644
--- a/src/main/java/org/well/well/core/util/DateUtils.java
+++ b/src/main/java/org/well/well/core/util/DateUtils.java
@@ -11,6 +11,7 @@
public class DateUtils {
public static SimpleDateFormat sdf_day = new SimpleDateFormat("yyyy-MM-dd");
public static SimpleDateFormat sdf_day_time = new SimpleDateFormat("yyyyMMddhhmmss");
+ public static SimpleDateFormat sdf_day_1 = new SimpleDateFormat("yyyyMMddHHmmss");
public static final SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static final SimpleDateFormat sdf5 = new SimpleDateFormat("HH:mm:ss");
public static final SimpleDateFormat sdf6 = new SimpleDateFormat("yyyyMMdd");
diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java
index 7b7470c..789fba7 100644
--- a/src/main/java/org/well/well/core/util/ThreadUtil.java
+++ b/src/main/java/org/well/well/core/util/ThreadUtil.java
@@ -22,7 +22,7 @@
String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId
+ "&msg="+alarmMsg , "");
Thread.sleep(500);
- System.out.println("--------工单和告警推送至web后台成功 " + msg + ",工单id:" + jobId);
+ System.out.println("--------工单和告警推送至web后台成功 " + alarmMsg + ",工单id:" + jobId);
} catch (InterruptedException e) {
e.printStackTrace();
System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId);
diff --git a/src/main/java/org/well/well/manager/AlarmRecordManager.java b/src/main/java/org/well/well/manager/AlarmRecordManager.java
index 3a9815d..d152c70 100644
--- a/src/main/java/org/well/well/manager/AlarmRecordManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRecordManager.java
@@ -1,6 +1,7 @@
package org.well.well.manager;
import org.hibernate.Criteria;
+import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
@@ -95,6 +96,7 @@
criteria.add(Restrictions.eq("deviceCode", devCode));
criteria.add(Restrictions.eq("alarmType", alarmTypeArr[0]));
criteria.add(Restrictions.eq("status", alarmStatusArr[1]));
+ criteria.addOrder(Order.desc("alarmTime"));
List alarmRecordList = criteria.list();
return alarmRecordList != null && alarmRecordList.size() > 0 ?
alarmRecordList.get(0) : null;
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index cbcf18e..b71f962 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -94,62 +94,62 @@
String sql = "";
if (devTypeName.equals(DeviceTypeEnum.Liquid.toString())) {
sql = "select * from data_liquid " +
- "where date_part('day',now()-uptime) <:day and" +
- "DEVCODE=:devCode";
+ " where date_part('day',now()-uptime) <:day and " +
+ " DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Well.toString())) {
sql = "select * from data_wellcover " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.WasteGas.toString())) {
sql = "select * from data_harmful_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.Methane.toString())) {
sql = "select * from data_gas " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
} else if (devTypeName.equals(DeviceTypeEnum.TempHumi.toString())) {
sql = "select * from data_temp_hum " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.Meter.toString())){
sql = "select * from data_meter " +
- " where date_part('day',now()-uptime) < :day and" +
+ " where date_part('day',now()-uptime) < :day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.FLOWGAUGE.toString())){
sql = "select * from data_flowmeter " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.RAINGAUGE.toString())){
sql = "select * from data_hyetometer " +
- " where date_part('day',now()-logtime) <:day and" +
+ " where date_part('day',now()-logtime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if (devTypeName.equals(DeviceTypeEnum.LG.toString())) {
sql = "select * from data_gasliquid_gas " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}else if(devTypeName.equals(DeviceTypeEnum.COMBUSTIBLE_GAS.toString())){
sql = "select * from data_gas_dector " +
- " where date_part('day',now()-uptime) <:day and" +
+ " where date_part('day',now()-uptime) <:day and " +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
}
diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java
index 815dc09..8702527 100644
--- a/src/main/java/org/well/well/manager/WellManager.java
+++ b/src/main/java/org/well/well/manager/WellManager.java
@@ -9,12 +9,16 @@
import org.well.well.AlarmEnumDTO.WellAlarmEnum;
import org.well.well.base.DeviceTypeEnum;
import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.DateUtils;
import org.well.well.core.util.ThreadUtil;
import org.well.well.domain.*;
+import org.well.well.util.CacheUtils;
+import org.well.well.util.Configure;
import org.well.well.util.SnowFlakeUtil;
import javax.annotation.Resource;
import java.io.IOException;
+import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -51,16 +55,27 @@
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
- String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
- String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
+// String level = ((JSONObject) jsonArray.get(i)).get("value").toString();//"00"
+// String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString();
//1.清离线
deviceManager.clearOffline(devCode);
//2.清除设备告警
alarmRecordManager.clearAlarmByNormalData(devCode, "2");
- //3.存数据
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellData(devCode);
+
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+ //存采集数据
this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
WellAlarmEnum.NORMAL.toString(),
- String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据
+ String.valueOf(WellAlarmEnum.NORMAL.getIndex()));
+ //存缓存数据
+ CacheUtils.WELL_DATA_MAP.put(devCode,new Date());
} catch (Exception e) {
e.printStackTrace();
logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------");
@@ -70,16 +85,17 @@
public void processAlarmData(JSONObject jsonObject, String devCode) {
JSONArray jsonArray = (JSONArray) jsonObject.get("eventType");
- String logTime = (jsonObject.get("logTime")).toString();
+// String logTime = (jsonObject.get("logTime")).toString();
+ String logTime = DateUtils.sdf_day_1.format(new Date());
BusWell busWell = busWellManager.getWellByDevCode(devCode);
for (int i = 0; i < jsonArray.size(); i++) {
try {
//1.清离线
deviceManager.clearOffline(devCode);
//2.存入数据表
- this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
- WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
- String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+// this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+// WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+// String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警)
//3.1井盖开盖报警处理
@@ -88,39 +104,63 @@
if (null != busWell && "1".equals(busWell.getBfzt())) {//布防状态
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
if (alarmRecord != null) {
- //清除报警信息
- alarmRecordManager.clearAlarm(devCode, "1",
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()));
- //写入新的报警
- alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
- WellAlarmEnum.WellOpenAlarm.getName(),
- String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()),
- alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime,
- WellAlarmEnum.WellOpenAlarm.getName());
+ //3分钟(可配置)之内过滤心跳表重复告警
+ if (alarmRecord.getAlarmTime() != null ) {
+ //3.存数据(3分钟(可配置)之内有重复数据则过滤)
+ Date dataTime = CacheUtils.getWellAlarmData(devCode);
+ if (null != dataTime) {
+ if ((new Date().getTime() - dataTime.getTime()) / 60000 <
+ Long.valueOf(Configure.getProperty("filter_time"))) {
+ continue;
+ }
+ }
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
+ }
} else {
Device device = deviceManager.getDeviceByDevCode(devCode);
if (device == null) return; //没注册舍弃
//生成新的工单
- Long jobId= SnowFlakeUtil.getId();
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ Long jobId = SnowFlakeUtil.getId();
+ //保存工单信息
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "1");
+ //保存报警信息
alarmRecordManager.saveData(jobId, "1", null,
WellAlarmEnum.WellOpenAlarm.getName(),
String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device,
- devCode, busWell!=null?busWell.getWellCode():"", logTime,
+ devCode, busWell != null ? busWell.getWellCode() : "", logTime,
WellAlarmEnum.WellOpenAlarm.getName());
+
+
+ //保存报警数据至数据表
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
+
+ //存缓存数据
+ CacheUtils.WELL_ALARM_MAP.put(devCode,new Date());
//toDo:向app推送报警消息
// List cids = userManager.getClients(busWell);
// if (cids.size() > 0)
// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理");
- ThreadUtil.excuteMsg(jobId,WellAlarmEnum.WellOpenAlarm.getName());
+ ThreadUtil.excuteMsg(jobId, WellAlarmEnum.WellOpenAlarm.getName());
}
}
}
//3.2低电量和设备故障报警处理
else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) ||
WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) {
+
+ this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(),
+ WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
+ String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
//清除报警信息
alarmRecordManager.clearAlarm(devCode, "2",
String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()));
@@ -128,9 +168,9 @@
Device device = deviceManager.getDeviceByDevCode(devCode);
if (null == device) return;
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0");
- Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId();
+ Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId();
if (null == alarmJob) {
- alarmJobManager.saveData(jobId,devCode, busWell.getWellCode(),
+ alarmJobManager.saveData(jobId, devCode, busWell.getWellCode(),
DeviceTypeEnum.Well.toString(), "0");
}
alarmRecordManager.saveData(jobId, "2", null,
diff --git a/src/main/java/org/well/well/util/CacheUtils.java b/src/main/java/org/well/well/util/CacheUtils.java
new file mode 100644
index 0000000..0e6fa03
--- /dev/null
+++ b/src/main/java/org/well/well/util/CacheUtils.java
@@ -0,0 +1,62 @@
+package org.well.well.util;
+
+
+import net.jodah.expiringmap.ExpirationPolicy;
+import net.jodah.expiringmap.ExpiringMap;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class CacheUtils {
+
+
+ /**
+ * 缓存井盖数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_DATA_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * 缓存井盖报警数据信息(默认有效期一小时)
+ */
+ public static final ExpiringMap WELL_ALARM_MAP = ExpiringMap.builder()
+ .maxSize(30000)
+ .expiration(60, TimeUnit.MINUTES)
+ .variableExpiration()
+ .expirationPolicy(ExpirationPolicy.ACCESSED)
+ .build();
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_DATA_MAP.size() >= 1) {
+ dataTime = WELL_DATA_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+
+ /**
+ * devCode根据设备编号
+ * 获取井盖报警数据
+ *
+ * @return
+ */
+ public synchronized static Date getWellAlarmData(String devCode) {
+ Date dataTime = null;
+ if (CacheUtils.WELL_ALARM_MAP.size() >= 1) {
+ dataTime = WELL_ALARM_MAP.get(devCode);
+ }
+ return dataTime;
+ }
+}
\ No newline at end of file
diff --git a/src/main/resources/META-INF/MANIFEST.MF b/src/main/resources/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/src/main/resources/META-INF/MANIFEST.MF
+++ b/src/main/resources/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index 5363539..9305d74 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -152,7 +152,8 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-cron.time=1 * * * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
checked.day=7
# ============================================================================
@@ -188,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/target/classes/META-INF/MANIFEST.MF b/target/classes/META-INF/MANIFEST.MF
index 8c3cb68..172042e 100644
--- a/target/classes/META-INF/MANIFEST.MF
+++ b/target/classes/META-INF/MANIFEST.MF
@@ -1,46 +1,3 @@
Manifest-Version: 1.0
-Class-Path: hibernate-validator-5.1.2.Final.jar java-sizeof-0.0.4.jar
- activemq-jms-pool-5.14.5.jar javassist-3.18.1-GA.jar dom4j-1.6.1.jar
- lz4-1.3.0.jar commons-pool2-2.4.2.jar hutool-core-4.6.0.jar commons-c
- ollections-3.2.1.jar jul-to-slf4j-1.7.7.jar log4j-1.2.16.jar httpcore
- -4.2.1.jar spring-web-4.0.6.RELEASE.jar logback-classic-1.1.2.jar jac
- kson-core-asl-1.9.3.jar activemq-openwire-legacy-5.14.5.jar jboss-log
- ging-annotations-1.2.0.Beta1.jar kafka-clients-0.11.0.1.jar jetty-6.1
- .26.jar fastjson-1.1.15.jar json-lib-2.4-jdk15.jar commons-codec-1.9.
- jar geronimo-jta_1.0.1B_spec-1.0.1.jar commons-pool-1.5.4.jar activem
- q-spring-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar servlet-api
- -2.5-20110124.jar spring-webmvc-4.0.6.RELEASE.jar commons-httpclient-
- 3.1.jar antlr-2.7.7.jar jsr305-1.3.9.jar jackson-jaxrs-json-provider-
- 2.4.2.jar flume-ng-sdk-1.4.0.jar jackson-jaxrs-base-2.4.2.jar jackson
- -module-jaxb-annotations-2.4.2.jar jackson-databind-2.4.2.jar commons
- -cli-1.2.jar log4jdbc-remix-0.2.7.jar paranamer-2.3.jar aopalliance-1
- .0.jar spring-aop-4.0.6.RELEASE.jar commons-dbcp-1.4.jar hibernate-co
- re-4.3.6.Final.jar classmate-1.0.0.jar mina-core-2.0.4.jar slf4j-api-
- 1.7.7.jar orika-core-1.4.5.jar joda-time-2.1.jar spring-tx-4.0.6.RELE
- ASE.jar activemq-client-5.14.5.jar validation-api-1.1.0.Final.jar jcl
- -over-slf4j-1.7.7.jar ojdbc6-11.1.0.7.0.jar spring-jms-3.2.8.RELEASE.
- jar janino-2.7.6.jar velocity-1.7.jar commons-logging-1.1.1.jar guava
- -10.0.1.jar xml-apis-1.0.b2.jar gson-2.2.2.jar activemq-broker-5.14.5
- .jar mysql-connector-java-5.1.25.jar hutool-captcha-4.6.0.jar spring-
- context-support-4.0.6.RELEASE.jar jackson-annotations-2.4.0.jar ezmor
- ph-1.0.6.jar spring-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar
- jetty-util-6.1.26.jar xbean-spring-4.2.jar concurrentlinkedhashmap-l
- ru-1.2_jdk5.jar slf4j-log4j12-1.6.1.jar libthrift-0.7.0.jar avro-1.7.
- 3.jar jandex-1.1.0.Final.jar jboss-transaction-api_1.2_spec-1.0.0.Fin
- al.jar jboss-logging-3.1.3.GA.jar jstl-1.2.jar commons-beanutils-1.9.
- 2.jar spring-kafka-1.1.1.RELEASE.jar spring-retry-1.1.3.RELEASE.jar c
- ommons-lang3-3.3.2.jar spring-context-4.0.6.RELEASE.jar commons-fileu
- pload-1.3.1.jar flume-ng-core-1.4.0.jar geronimo-jms_1.1_spec-1.1.1.j
- ar flume-ng-configuration-1.4.0.jar jansi-1.11.jar hibernate-commons-
- annotations-4.0.5.Final.jar jackson-core-2.4.2.jar httpclient-4.2.1.j
- ar snappy-java-1.1.2.6.jar geronimo-j2ee-management_1.1_spec-1.0.1.ja
- r avro-ipc-1.7.3.jar spring-beans-4.0.6.RELEASE.jar spring-messaging-
- 4.3.3.RELEASE.jar gexin-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0
- .0.28.jar gexin-rp-sdk-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.2
- 2.jar protobuf-java-2.5.0.jar spring-orm-4.0.6.RELEASE.jar jackson-ma
- pper-asl-1.9.3.jar activemq-pool-5.14.5.jar hawtbuf-1.11.jar commons-
- io-2.4.jar commons-lang-2.5.jar spring-expression-4.0.6.RELEASE.jar l
- ogback-core-1.1.2.jar netty-3.4.0.Final.jar spring-jdbc-4.0.6.RELEASE
- .jar
Main-Class: org.well.mysql.sink.WellSink
diff --git a/target/classes/org/well/mysql/sink/WellSink.class b/target/classes/org/well/mysql/sink/WellSink.class
index 6aa42ad..d7d9efb 100644
--- a/target/classes/org/well/mysql/sink/WellSink.class
+++ b/target/classes/org/well/mysql/sink/WellSink.class
Binary files differ
diff --git a/target/classes/org/well/well/base/DeviceTypeEnum.class b/target/classes/org/well/well/base/DeviceTypeEnum.class
index 9c61a21..1c7c160 100644
--- a/target/classes/org/well/well/base/DeviceTypeEnum.class
+++ b/target/classes/org/well/well/base/DeviceTypeEnum.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/DateUtils.class b/target/classes/org/well/well/core/util/DateUtils.class
index 0a6cade..d2a0ba9 100644
--- a/target/classes/org/well/well/core/util/DateUtils.class
+++ b/target/classes/org/well/well/core/util/DateUtils.class
Binary files differ
diff --git a/target/classes/org/well/well/core/util/ThreadUtil$1.class b/target/classes/org/well/well/core/util/ThreadUtil$1.class
index 01a4789..a40d502 100644
--- a/target/classes/org/well/well/core/util/ThreadUtil$1.class
+++ b/target/classes/org/well/well/core/util/ThreadUtil$1.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/AlarmRecord.class b/target/classes/org/well/well/domain/AlarmRecord.class
index 794a2ed..50265f5 100644
--- a/target/classes/org/well/well/domain/AlarmRecord.class
+++ b/target/classes/org/well/well/domain/AlarmRecord.class
Binary files differ
diff --git a/target/classes/org/well/well/domain/Device.class b/target/classes/org/well/well/domain/Device.class
index d29fead..8875526 100644
--- a/target/classes/org/well/well/domain/Device.class
+++ b/target/classes/org/well/well/domain/Device.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/AlarmRecordManager.class b/target/classes/org/well/well/manager/AlarmRecordManager.class
index 834b851..00bb3f9 100644
--- a/target/classes/org/well/well/manager/AlarmRecordManager.class
+++ b/target/classes/org/well/well/manager/AlarmRecordManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/DeviceManager.class b/target/classes/org/well/well/manager/DeviceManager.class
index e67d5cb..276b104 100644
--- a/target/classes/org/well/well/manager/DeviceManager.class
+++ b/target/classes/org/well/well/manager/DeviceManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/LGGasManager.class b/target/classes/org/well/well/manager/LGGasManager.class
index 4d0aec3..0eb8b94 100644
--- a/target/classes/org/well/well/manager/LGGasManager.class
+++ b/target/classes/org/well/well/manager/LGGasManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/MethaneManager.class b/target/classes/org/well/well/manager/MethaneManager.class
index 0ce626c..67a79ac 100644
--- a/target/classes/org/well/well/manager/MethaneManager.class
+++ b/target/classes/org/well/well/manager/MethaneManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/TubeManager.class b/target/classes/org/well/well/manager/TubeManager.class
index b3a8024..ae2b56f 100644
--- a/target/classes/org/well/well/manager/TubeManager.class
+++ b/target/classes/org/well/well/manager/TubeManager.class
Binary files differ
diff --git a/target/classes/org/well/well/manager/WellManager.class b/target/classes/org/well/well/manager/WellManager.class
index 4a950de..6174473 100644
--- a/target/classes/org/well/well/manager/WellManager.class
+++ b/target/classes/org/well/well/manager/WellManager.class
Binary files differ
diff --git a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
index 23eeb0c..c4ef746 100644
--- a/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
+++ b/target/classes/org/well/well/scheduler/DeviceCheckingJob.class
Binary files differ
diff --git a/target/classes/org/well/well/util/PushList.class b/target/classes/org/well/well/util/PushList.class
deleted file mode 100644
index ec3d365..0000000
--- a/target/classes/org/well/well/util/PushList.class
+++ /dev/null
Binary files differ
diff --git a/target/classes/org/well/well/util/SnowFlakeUtil.class b/target/classes/org/well/well/util/SnowFlakeUtil.class
index e26cf69..2e0ce4a 100644
--- a/target/classes/org/well/well/util/SnowFlakeUtil.class
+++ b/target/classes/org/well/well/util/SnowFlakeUtil.class
Binary files differ
diff --git a/target/classes/wellSensor/application.properties b/target/classes/wellSensor/application.properties
index f6145cf..9305d74 100644
--- a/target/classes/wellSensor/application.properties
+++ b/target/classes/wellSensor/application.properties
@@ -152,7 +152,9 @@
scheduler.enabled=true
scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true
deviceChecking.enabled=true
-#cron.time=0 37 15 * * ?
+#cron.time=1 * * * * ?
+cron.time=30 10 1 * * ?
+checked.day=7
# ============================================================================
# ���ͼ��
@@ -187,4 +189,9 @@
Appkey = 937cd1ce7e4f44545b3a1841ab6794b0
Press =
+# ============================================================================
+# ??????????�(????)
+# ============================================================================
+filter_time = 3
+
diff --git a/target/classes/wellSensor/applicationContex-ActiveMQ.xml b/target/classes/wellSensor/applicationContex-ActiveMQ.xml
deleted file mode 100644
index b5e0991..0000000
--- a/target/classes/wellSensor/applicationContex-ActiveMQ.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- hjt.msg.queue
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/wellSensor.iml b/wellSensor.iml
index 9f6af8a..b0ef9b8 100644
--- a/wellSensor.iml
+++ b/wellSensor.iml
@@ -18,6 +18,7 @@
+
@@ -134,6 +135,7 @@
+