diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WellResponse.java b/src/main/java/org/well/well/resp/WellResponse.java index 5a44562..8003f20 100644 --- a/src/main/java/org/well/well/resp/WellResponse.java +++ b/src/main/java/org/well/well/resp/WellResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WellManager wellManager = ac.getBean(WellManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WellResponse.java b/src/main/java/org/well/well/resp/WellResponse.java index 5a44562..8003f20 100644 --- a/src/main/java/org/well/well/resp/WellResponse.java +++ b/src/main/java/org/well/well/resp/WellResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WellManager wellManager = ac.getBean(WellManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/util/SnowFlakeUtil.java b/src/main/java/org/well/well/util/SnowFlakeUtil.java new file mode 100644 index 0000000..828217f --- /dev/null +++ b/src/main/java/org/well/well/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package org.well.well.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WellResponse.java b/src/main/java/org/well/well/resp/WellResponse.java index 5a44562..8003f20 100644 --- a/src/main/java/org/well/well/resp/WellResponse.java +++ b/src/main/java/org/well/well/resp/WellResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WellManager wellManager = ac.getBean(WellManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/util/SnowFlakeUtil.java b/src/main/java/org/well/well/util/SnowFlakeUtil.java new file mode 100644 index 0000000..828217f --- /dev/null +++ b/src/main/java/org/well/well/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package org.well.well.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 0135bc0..da67111 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -167,8 +167,8 @@ # ============================================================================ # kafka配置 # ============================================================================ -bootstrap.servers = 111.198.10.15:12502 -kafka.topic = test +bootstrap.servers = localhost:9092 +kafka.topic = sensor2 bootstrap.groupid = 0 # ============================================================================ diff --git a/pom.xml b/pom.xml index 82e3252..fa57954 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WellResponse.java b/src/main/java/org/well/well/resp/WellResponse.java index 5a44562..8003f20 100644 --- a/src/main/java/org/well/well/resp/WellResponse.java +++ b/src/main/java/org/well/well/resp/WellResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WellManager wellManager = ac.getBean(WellManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/util/SnowFlakeUtil.java b/src/main/java/org/well/well/util/SnowFlakeUtil.java new file mode 100644 index 0000000..828217f --- /dev/null +++ b/src/main/java/org/well/well/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package org.well.well.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 0135bc0..da67111 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -167,8 +167,8 @@ # ============================================================================ # kafka配置 # ============================================================================ -bootstrap.servers = 111.198.10.15:12502 -kafka.topic = test +bootstrap.servers = localhost:9092 +kafka.topic = sensor2 bootstrap.groupid = 0 # ============================================================================ diff --git a/src/main/resources/wellSensor/applicationContex-kafka.xml b/src/main/resources/wellSensor/applicationContex-kafka.xml index f3430e4..fa0adb4 100644 --- a/src/main/resources/wellSensor/applicationContex-kafka.xml +++ b/src/main/resources/wellSensor/applicationContex-kafka.xml @@ -14,8 +14,10 @@ - - + + + + 1.1.1.RELEASE + + cn.hutool + hutool-captcha + 4.6.0 + + \ No newline at end of file diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/META-INF/MANIFEST.MF +++ b/src/main/java/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF index 172042e..b4a7450 100644 --- a/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF +++ b/src/main/java/org/well/mysql/sink/META-INF/MANIFEST.MF @@ -1,3 +1,45 @@ Manifest-Version: 1.0 +Class-Path: commons-beanutils-1.9.2.jar httpcore-4.2.1.jar javassist-3 + .18.1-GA.jar velocity-1.7.jar concurrentlinkedhashmap-lru-1.2_jdk5.ja + r commons-compiler-2.7.6.jar jackson-jaxrs-json-provider-2.4.2.jar sp + ring-retry-1.1.3.RELEASE.jar json-lib-2.4-jdk15.jar commons-pool2-2.4 + .2.jar activemq-jms-pool-5.14.5.jar java-sizeof-0.0.4.jar fastjson-1. + 1.15.jar spring-beans-4.0.6.RELEASE.jar jul-to-slf4j-1.7.7.jar flume- + ng-sdk-1.4.0.jar xbean-spring-4.2.jar hibernate-core-4.3.6.Final.jar + kafka-clients-0.11.0.1.jar jsr305-1.3.9.jar gson-2.2.2.jar activemq-p + ool-5.14.5.jar hibernate-jpa-2.1-api-1.0.0.Final.jar commons-logging- + 1.1.1.jar xml-apis-1.0.b2.jar log4j-1.2.16.jar classmate-1.0.0.jar lo + gback-classic-1.1.2.jar jackson-databind-2.4.2.jar avro-1.7.3.jar com + mons-io-2.4.jar flume-ng-core-1.4.0.jar commons-fileupload-1.3.1.jar + logback-core-1.1.2.jar joda-time-2.1.jar activemq-client-5.14.5.jar o + rika-core-1.4.5.jar jackson-jaxrs-base-2.4.2.jar ezmorph-1.0.6.jar sp + ring-kafka-1.1.1.RELEASE.jar mina-core-2.0.4.jar spring-context-suppo + rt-4.0.6.RELEASE.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar comm + ons-httpclient-3.1.jar jackson-module-jaxb-annotations-2.4.2.jar libt + hrift-0.7.0.jar spring-tx-4.0.6.RELEASE.jar aopalliance-1.0.jar jboss + -transaction-api_1.2_spec-1.0.0.Final.jar jandex-1.1.0.Final.jar hawt + buf-1.11.jar guava-10.0.1.jar servlet-api-2.5-20110124.jar validation + -api-1.1.0.Final.jar netty-3.4.0.Final.jar commons-dbcp-1.4.jar sprin + g-jdbc-4.0.6.RELEASE.jar spring-aop-4.0.6.RELEASE.jar activemq-broker + -5.14.5.jar geronimo-jms_1.1_spec-1.1.1.jar mysql-connector-java-5.1. + 25.jar jcl-over-slf4j-1.7.7.jar spring-orm-4.0.6.RELEASE.jar flume-ng + -configuration-1.4.0.jar jansi-1.11.jar commons-lang3-3.3.2.jar dom4j + -1.6.1.jar spring-expression-4.0.6.RELEASE.jar spring-webmvc-4.0.6.RE + LEASE.jar lz4-1.3.0.jar spring-jms-3.2.8.RELEASE.jar commons-pool-1.5 + .4.jar jetty-6.1.26.jar jackson-core-asl-1.9.3.jar hibernate-commons- + annotations-4.0.5.Final.jar slf4j-log4j12-1.6.1.jar jackson-mapper-as + l-1.9.3.jar jboss-logging-annotations-1.2.0.Beta1.jar commons-codec-1 + .9.jar jackson-annotations-2.4.0.jar commons-cli-1.2.jar paranamer-2. + 3.jar avro-ipc-1.7.3.jar log4jdbc-remix-0.2.7.jar hibernate-validator + -5.1.2.Final.jar jetty-util-6.1.26.jar snappy-java-1.1.2.6.jar common + s-lang-2.5.jar spring-messaging-4.3.3.RELEASE.jar antlr-2.7.7.jar gex + in-rp-fastjson-1.0.0.1.jar gexin-rp-sdk-base-4.0.0.28.jar gexin-rp-sd + k-http-4.1.0.3.jar gexin-rp-sdk-template-4.0.0.22.jar protobuf-java-2 + .5.0.jar slf4j-api-1.7.7.jar httpclient-4.2.1.jar activemq-spring-5.1 + 4.5.jar spring-web-4.0.6.RELEASE.jar jackson-core-2.4.2.jar activemq- + openwire-legacy-5.14.5.jar spring-context-4.0.6.RELEASE.jar ojdbc6-11 + .1.0.7.0.jar spring-core-4.0.6.RELEASE.jar jstl-1.2.jar jboss-logging + -3.1.3.GA.jar geronimo-jta_1.0.1B_spec-1.0.1.jar janino-2.7.6.jar com + mons-collections-3.2.1.jar Main-Class: org.well.mysql.sink.WellSink diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 5eaec39..ffe1f64 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -114,13 +114,13 @@ ClassPathXmlApplicationContext ac = new ClassPathXmlApplicationContext( new String[]{"classpath:wellSensor/*.xml"}); ac.start(); - String temp = - "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; +// String temp = +// "{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018030001\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\": 90,\"datas\": [{\"uptime\":\"20180911222000\",\"level\":0.55}, {\"uptime\":\"20181111212001\",\"level\": 0.46}],\"logTime\":\"20190315010000\"},\"ts\":\"12345678901\"}"; // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; - temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"112018040040\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":6.1892,\"uptime\":\"20200925173400\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; // temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; @@ -153,7 +153,7 @@ // DeviceManager deviceManager = ac.getBean(DeviceManager.class); // deviceManager.updateDeviceStatus(); - System.out.println("已经起来了,可以处理数据了。。。。。"); + System.out.println("kafkaSink已启动,可以处理数据了。。。。。"); } } diff --git a/src/main/java/org/well/well/base/AbstractResponse.java b/src/main/java/org/well/well/base/AbstractResponse.java index 51132d6..fe320fc 100644 --- a/src/main/java/org/well/well/base/AbstractResponse.java +++ b/src/main/java/org/well/well/base/AbstractResponse.java @@ -5,9 +5,13 @@ /** * Created by lenovo on 2018/1/8. */ -public abstract class AbstractResponse implements IResponse { +public abstract class AbstractResponse implements IResponse , Runnable { private ClassPathXmlApplicationContext ac; + + private String content; + + public void process(String content){ } @@ -19,4 +23,12 @@ public void setAc(ClassPathXmlApplicationContext ac) { this.ac = ac; } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } } 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..4198af6 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -17,12 +17,15 @@ public static String DateFormat(String dataString) { - String strymd = dataString.substring(0, 8); - String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; - String strhms = dataString.substring(8); - String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); - dataString =str1+str2; - return dataString; +// String strymd = dataString.substring(0, 8); +// String str1 = strymd.substring(0, 4) + "-" + strymd.substring(4, 6) + "-" + strymd.substring(6, 8) + " "; +// String strhms = dataString.substring(8); +// String str2 =strhms.substring(0,2)+":"+strhms.substring(2,4)+":"+strhms.substring(4,6); +// dataString =str1+str2; +// return dataString; + + String reg = "(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})"; + return dataString.replaceAll(reg, "$1-$2-$3 $4:$5:$6"); } public static Date getSevenBeforeDate() throws ParseException { diff --git a/src/main/java/org/well/well/domain/AlarmRecord.java b/src/main/java/org/well/well/domain/AlarmRecord.java index 77c2cf1..7ffc8eb 100644 --- a/src/main/java/org/well/well/domain/AlarmRecord.java +++ b/src/main/java/org/well/well/domain/AlarmRecord.java @@ -2,6 +2,7 @@ import org.hibernate.annotations.NotFound; import org.hibernate.annotations.NotFoundAction; +import org.well.well.util.SnowFlakeUtil; import javax.persistence.*; import java.io.Serializable; @@ -44,6 +45,7 @@ public AlarmRecord(Long jobId, String alarmType,Integer alarmLevel, String alarmContent, String alarmValue, Device device, String deviceCode, String wellCode, Date alarmTime,String alarmMsg) { + this.id= SnowFlakeUtil.getId(); this.jobId = jobId; this.alarmType = alarmType; this.alarmLevel = alarmLevel; @@ -58,7 +60,7 @@ } @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id") public Long getId() { return id; diff --git a/src/main/java/org/well/well/domain/LGGas.java b/src/main/java/org/well/well/domain/LGGas.java index eb4d781..c186d21 100644 --- a/src/main/java/org/well/well/domain/LGGas.java +++ b/src/main/java/org/well/well/domain/LGGas.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -22,7 +24,7 @@ @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -99,6 +101,7 @@ } public LGGas(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/LGLiquid.java b/src/main/java/org/well/well/domain/LGLiquid.java index 67b1243..fb2ec82 100644 --- a/src/main/java/org/well/well/domain/LGLiquid.java +++ b/src/main/java/org/well/well/domain/LGLiquid.java @@ -20,7 +20,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 51ef826..0b651d9 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -23,7 +23,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; diff --git a/src/main/java/org/well/well/domain/Methane.java b/src/main/java/org/well/well/domain/Methane.java index e06e34c..ad90ba4 100644 --- a/src/main/java/org/well/well/domain/Methane.java +++ b/src/main/java/org/well/well/domain/Methane.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.sql.Timestamp; @@ -24,7 +26,7 @@ private String snr; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -128,6 +130,7 @@ } public Methane(String devCode, String wellCode, String strength, String cell, Timestamp uptime, Timestamp logtime) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode=wellCode; this.strength = strength; diff --git a/src/main/java/org/well/well/domain/Well.java b/src/main/java/org/well/well/domain/Well.java index 544a1f2..6a8daf2 100644 --- a/src/main/java/org/well/well/domain/Well.java +++ b/src/main/java/org/well/well/domain/Well.java @@ -1,5 +1,7 @@ package org.well.well.domain; +import org.well.well.util.SnowFlakeUtil; + import javax.persistence.*; import java.io.Serializable; import java.util.Date; @@ -17,7 +19,7 @@ private Date logtime; @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) +// @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "ID") public Long getDbId() { return dbId; @@ -72,6 +74,7 @@ } public Well(String devCode, String wellCode,String desc, String status) { + this.dbId= SnowFlakeUtil.getId(); this.devCode = devCode; this.wellCode = wellCode; this.desc = desc; diff --git a/src/main/java/org/well/well/kafka/KafkaConsumer.java b/src/main/java/org/well/well/kafka/KafkaConsumer.java index c2ad4bf..c0f154e 100644 --- a/src/main/java/org/well/well/kafka/KafkaConsumer.java +++ b/src/main/java/org/well/well/kafka/KafkaConsumer.java @@ -1,13 +1,58 @@ package org.well.well.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.apache.kafka.clients.consumer.ConsumerRecords; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.kafka.listener.MessageListener; +import org.well.well.base.AbstractResponse; +import org.well.well.util.ResponseResolver; + +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; public class KafkaConsumer implements MessageListener { + private static final Logger LOGGER = LoggerFactory.getLogger(TopicApiUseKafkaListener.class); + + private ClassPathXmlApplicationContext ac; + private static ExecutorService threadPool = Executors.newCachedThreadPool(); + + public void intContext() { + ClassPathXmlApplicationContext cac = new ClassPathXmlApplicationContext( + new String[]{"classpath:wellSensor/*.xml"}); + cac.start(); + ac = cac; + } + + int i = 0; @Override public void onMessage(ConsumerRecord record) { - String value = record.value(); - System.out.println(value); + + try { + String value = record.value(); + + LOGGER.info("######收到kafka消息:" + value); + + System.out.println("######收到kafka消息:" + value); + System.out.println("######消费数据条数:" + (++i)); + + + AbstractResponse resp = ResponseResolver.makeResponse(value); + if (resp == null) return; + if (ac == null) intContext(); + if (resp.getAc() == null) { + resp.setAc(ac); + } + resp.setContent(value); + threadPool.execute(resp); +// resp.process(value);//对应的消息处理 + + Thread.sleep(100); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index bf6849a..4e01795 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -52,9 +52,9 @@ if (DeviceTypeEnum.Liquid.toString().equals(devTypeName)) { // SensorType sensorType = sensorTypeManager.get("000034"); alarmRule = findRuleByDevAndSensor(devCode, null); - if (null != alarmRule) { - ruleStr = String.valueOf(alarmRule.getHighValue()); - } + + ruleStr =alarmRule!=null? String.valueOf(alarmRule.getHighValue()):"0.2"; + } else if (DeviceTypeEnum.Noise.toString().equals(devTypeName)) { SensorType sensorType = sensorTypeManager.get("000032"); alarmRule = findRuleByDevAndSensor(devCode, sensorType); @@ -106,19 +106,8 @@ return ruleStr; } -// public Long getTenantIdBydep(String depId) { -// try { -// String sql = "SELECT TENANT_ID FROM sys_dept_detail s WHERE s.id=" + depId; -// List tenantList = getSession().createSQLQuery(sql).list(); -// if (tenantList.size() > 0) -// return Long.valueOf(tenantList.get(0).toString()); -// } catch (Exception e) { -// e.printStackTrace(); -// } -// return null; -// } -// public List getIsAlarmAndJob(String devTypeName, String depId) { +// public List getRuleRank(String devCode, String depId) { // Long tenantId = null; // if (StringUtils.isNotBlank(depId)) { // SysDept sysDept = deptManager.get(Long.valueOf(depId)); @@ -131,37 +120,27 @@ // if (null == tenantId) return new ArrayList(); // try { // Map paraMap = new HashMap(); -// String sql = "SELECT open_alarm,open_job FROM alarm_level a " + -// "WHERE a.name=:devTypeName LIMIT 1" ; -// paraMap.put("devTypeName", devTypeName); +// String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + +// "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + +// " ORDER BY name,level"; +// paraMap.put("devcode", devCode); // paraMap.put("tenantId", tenantId); -// List alarmLevelList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); -// return alarmLevelList; +// List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); +// return ruleRankList; // } catch (Exception e) { // e.printStackTrace(); // } // return new ArrayList(); // } + public List getRuleRank(String devCode) { - public List getRuleRank(String devCode, String depId) { - Long tenantId = null; - if (StringUtils.isNotBlank(depId)) { - SysDept sysDept = deptManager.get(Long.valueOf(depId)); - if (null != sysDept) { - String tenantStr = sysDept.getTenantId(); - tenantId = StringUtils.isBlank(tenantStr) ? tenantId : Long.valueOf(tenantStr); - } - } - - if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); - String sql = "SELECT level,low_value,high_value,name, open_alarm,open_job FROM alarm_level_device_veiw a " + - "WHERE a.devcode=:devcode AND a.tenant_id=:tenantId" + - " ORDER BY name,level"; + String sql = "SELECT LEVEL,low_value,high_value,NAME, open_alarm,open_job FROM bus_device t0 LEFT JOIN alarm_level t1 ON t0.`DEVICE_TYPE`=t1.`DEVICE_TYPE` \n" + + "WHERE t0.`DEVCODE`= :devcode ORDER BY t1.`NAME`,t1.`LEVEL`"; paraMap.put("devcode", devCode); - paraMap.put("tenantId", tenantId); + List ruleRankList = getSession().createSQLQuery(sql).setProperties(paraMap).list(); return ruleRankList; } catch (Exception e) { @@ -169,4 +148,5 @@ } return new ArrayList(); } + } diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index df8b9a9..d00907f 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -84,49 +84,54 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString()); - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh =0; + String isAlarm="1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue!=null?Float.valueOf(rankValue.toString()):0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh>0&&"1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); + AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.GAS_OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + //已存在报警 if (null != alarmRecord) { //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 if (device == null) { return; } - //判断是否生成工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); - } - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, gas, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -141,8 +146,7 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); + //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -154,15 +158,8 @@ } BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "0"); - } - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(GasLiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -175,7 +172,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGGas.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -185,6 +182,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 9d8f36d..412e519 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -13,15 +13,21 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.LGLiquid; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; -import java.util.*; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; /** * Created by test203 on 2017/11/30. @@ -47,7 +53,9 @@ Map resultMap = new HashMap(); try { + Long id = SnowFlakeUtil.getId(); LGLiquid liquid = new LGLiquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -73,15 +81,11 @@ } String level = ((JSONObject) jsonArray.get(i)).get("liquid").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); - -// if(isExist(devCode,upTime)) continue;//去重 - Float wellDeep=busWell!=null?busWell.getDeep()==null?0:busWell.getDeep():0; - Float liquidHeight=StringUtils.isNotBlank(level)?Float.valueOf(level)/100:0; - level = String.format("%.2f",wellDeep+liquidHeight); - - + if (StringUtils.isBlank(level)) continue; + //todo:需要加安装高度 + Float levelFloat = new BigDecimal(level).floatValue() / 100; //1.存数据 - LiquidDTO liquidDTO = new LiquidDTO(level, cell, + LiquidDTO liquidDTO = new LiquidDTO(String.format("%.2f", Double.valueOf(levelFloat)), cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); //存采集数据 this.saveData(liquidDTO); @@ -95,78 +99,37 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //获取报警阈值 String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString()); - List ruleRankList = new ArrayList(); - float rankThresh = 0; - //是否开启报警(1为开启) - String isAlarm = "1"; - //是否开启工单(1为开启) - String isJob = "1"; - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + + //超限 - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) { + if (levelFloat >= Float.valueOf(thresh)) { Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = GasLiquidAlarmEnum.LIQUID_OVER_THRESH.getName(); - Integer alarmLevel = 0; - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.LG.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } - //不需要产生工单时 - else if ("0".equals(isJob)) { - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 //未注册设备舍弃 - if (device == null) {return;} - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); + if (device == null) { + return; } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob!=null?alarmJob.getId():null, alarmContent,busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -174,7 +137,8 @@ } } } - public boolean isExist(String devcode,String upTime){ + + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(LGLiquid.class); criteria.add(Restrictions.eq("devId", devcode)); @@ -184,6 +148,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a301fcb..714a156 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -7,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.LiquidAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -15,6 +16,7 @@ import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; +import org.well.well.util.SnowFlakeUtil; import javax.annotation.Resource; import java.io.IOException; @@ -49,7 +51,9 @@ Map resultMap = new HashMap(); try { + Long id=SnowFlakeUtil.getId(); Liquid liquid = new Liquid(); + liquid.setDbId(id); liquid.setDevId(liquidDTO.getDevCode()); liquid.setCell(liquidDTO.getCell()); liquid.setLiquidData(liquidDTO.getLiquidData()); @@ -64,6 +68,7 @@ return resultMap; } + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,8 +79,6 @@ String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); -// if(isExist(devCode,upTime)) continue;//去重 - //1.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, upTime, devCode, busWell == null ? "" : busWell.getWellCode()); @@ -87,76 +90,34 @@ //4.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); - float rankThresh = 0; - String isAlarm = "1";//是否开启报警(1为开启) - String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); - if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { - Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; - rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); - isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); - isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); - } - rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; - if ("1".equals(isAlarm) && rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 + + if (Float.valueOf(level) >= Float.valueOf(thresh)) {//超限 Device device = deviceManager.getDeviceByDevCode(devCode); AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel = 0; - -// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for (int j = 0; j < ruleRankList.size(); j++) { - Object rankValue = ((Object[]) ruleRankList.get(j))[2]; - if (null != rankValue) { - if (Float.valueOf(level) >= (new BigDecimal(rankValue.toString()).multiply(new BigDecimal(thresh))).floatValue() / 100) { - alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } - } - } - if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID - && device != null && "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.Liquid.toString(), "1"); - jobID = alarmJob.getId(); -// ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + alarmRecordManager.saveData(null, "1", null, alarmContent, level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.若开启告警,生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); - } //2.写入新的告警 - alarmRecordManager.saveData(alarmJob != null ? alarmJob.getId() : null, "1", alarmLevel, + alarmRecordManager.saveData( null, "1", null, alarmContent, level, device, devCode, busWell == null ? "" : busWell.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob != null ? alarmJob.getId() : null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + ThreadUtil.excuteMsg( null, alarmContent, busWell == null ? "" : busWell.getWellCode()); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); +// alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -172,7 +133,7 @@ for (int i = 0; i < jsonArray.size(); i++) { try { //1.清除离线 - deviceManager.clearOffline(devCode); +// deviceManager.clearOffline(devCode); //2.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); @@ -180,13 +141,7 @@ Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 3d2ede0..641e24c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -7,13 +7,16 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.MethaneAlarmEnum; -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.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; -import org.well.well.util.PushList; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.Methane; import javax.annotation.Resource; import java.io.IOException; @@ -48,8 +51,9 @@ Map resultMap = new HashMap(); try { + String timeFormat = DateUtils.DateFormat(uptime); Methane methane = new Methane(address, wellCode, strength, cell, - new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(uptime)).getTime())), + new Timestamp(StringUtils.isNotBlank(timeFormat) ? DateUtils.sdf4.parse(timeFormat).getTime() : null), new Timestamp((new Date()).getTime())); save(methane); } catch (Exception e) { @@ -59,6 +63,7 @@ } + @Transactional(rollbackFor = Exception.class) public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.get("cell").toString(); JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); @@ -74,50 +79,46 @@ saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据 //2.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; - //3.清离线 - deviceManager.clearOffline(devCode); + //4.清除设备告警 - alarmRecordManager.clearAlarmByNormalData(devCode, "2"); - String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Methane.toString());//获取报警阈值 - if (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1])) {//浓度超限 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = rankValue != null ? Float.valueOf(rankValue.toString()) : 0; + isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); + } + + if (rankThresh > 0 && "1".equals(isAlarm) && Float.valueOf(gas) >= rankThresh) {//浓度超限 Device device = deviceManager.getDeviceByDevCode(devCode); - AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent = MethaneAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel = 0; - alarmLevel = Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[0]) ? - 1 : (Float.valueOf(gas) >= Float.valueOf(thresh.split(",")[1]) ? - 2 : alarmLevel); - if (null != alarmRecord) {//已存在报警 - //1.清除上一条告警记录 - alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,工单号为上一条告警记录的工单号 - Long jobId = (device != null && "1".equals(device.getJobGenerationType())) ? alarmRecord.getJobId() : null; - alarmRecordManager.saveData(jobId, "1", alarmLevel, alarmContent, - gas, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); - } else {//不存在上一条报警时 - - if (device == null) return;//未注册设备舍弃 - //1.生成新的工单 - AlarmJob alarmJob = new AlarmJob(); - if ("1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "1"); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(gas) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } } - - //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, - alarmContent, gas, device, - devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); - //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent,busWell == null ? "" : busWell.getWellCode()); } - } else {//未超限 - //1.清除之前的报警 - alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + + if (device == null) return;//未注册设备舍弃 + + //1.写入新的告警 + alarmRecordManager.saveData(null, "1", alarmLevel, + alarmContent, gas, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + } + //3.清离线 + deviceManager.clearOffline(devCode); + } catch (IOException e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -131,22 +132,14 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(MethaneAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -159,16 +152,4 @@ } } - public boolean isExist(String devcode,String upTime){ - - Criteria criteria = getSession().createCriteria(Methane.class); - criteria.add(Restrictions.eq("devCode", devcode)); - try { - criteria.add(Restrictions.eq("uptime", new Timestamp((DateUtils.sdf4.parse(DateUtils.DateFormat(upTime)).getTime())))); - } catch (ParseException e) { - e.printStackTrace(); - } - List methaneList = criteria.list(); - return methaneList.size()>0?true:false; - } } diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index f59a910..a61fc08 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -14,12 +14,14 @@ import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; -import org.well.well.domain.*; +import org.well.well.domain.AlarmRecord; +import org.well.well.domain.BusWell; +import org.well.well.domain.Device; +import org.well.well.domain.NoiseDig; import javax.annotation.Resource; import java.io.IOException; import java.math.BigDecimal; -import java.sql.Timestamp; import java.text.ParseException; import java.util.ArrayList; import java.util.HashMap; @@ -79,11 +81,10 @@ //3.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值 - List ruleRankList = new ArrayList(); double rankThresh = 0; String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) - if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); @@ -118,44 +119,26 @@ if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); - //2.写入新的告警记录,更新工单号为上一条告警记录的工单号,若以前没开启工单,现在补提工单 - Long jobID = alarmRecord.getJobId(); - if ("1".equals(isJob) && null == jobID && null != device && - "1".equals(device.getJobGenerationType())) { - //生成新的工单 - AlarmJob alarmJob = alarmJobManager.saveData(devCode, alarmRecord.getWellCode(), - DeviceTypeEnum.NoiseDig.toString(), "1"); - jobID = alarmJob.getId(); - ThreadUtil.excuteMsg(jobID, "", busWell == null ? "" : busWell.getWellCode()); - } else if ("0".equals(isJob)) {//不需要产生工单时 - jobID = null; - } - alarmRecordManager.saveData(jobID, "1", alarmLevel, alarmContent, + //2.写入新的告警记录 + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 if (device == null) return;//未注册设备舍弃 - AlarmJob alarmJob = null; - if ("1".equals(isJob) && "1".equals(device.getJobGenerationType())) { - //1.生成新的工单 - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "1"); - } + //2.写入新的告警 - alarmRecordManager.saveData(alarmJob == null ? null : alarmJob.getId(), "1", alarmLevel, + alarmRecordManager.saveData(null, "1", alarmLevel, alarmContent, val, device, devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 - ThreadUtil.excuteMsg(alarmJob == null ? null : alarmJob.getId(), alarmContent,busWell != null ? busWell.getWellCode() : ""); + ThreadUtil.excuteMsg(null, alarmContent, busWell != null ? busWell.getWellCode() : ""); } } else {//未超限 //1.清除之前的报警 alarmRecordManager.clearAlarmByNormalData(devCode, "1"); - //2.结束之前的工单 - alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } } catch (IOException e) { e.printStackTrace(); @@ -170,22 +153,15 @@ String logTime = (jsonObject.get("logTime")).toString(); for (int i = 0; i < jsonArray.size(); i++) { try { - //1.清除离线 - deviceManager.clearOffline(devCode); - //2.清除同类型的报警信息 + //1.清除同类型的报警信息 alarmRecordManager.clearAlarm(devCode, "2", String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); - //3.写入新的报警 + //2.写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); - //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + + alarmRecordManager.saveData(null, "2", null, NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, @@ -198,7 +174,7 @@ } } - public boolean isExist(String devcode,String upTime){ + public boolean isExist(String devcode, String upTime) { Criteria criteria = getSession().createCriteria(NoiseDig.class); criteria.add(Restrictions.eq("devCode", devcode)); @@ -208,6 +184,6 @@ e.printStackTrace(); } List methaneList = criteria.list(); - return methaneList.size()>0?true:false; + return methaneList.size() > 0 ? true : false; } } diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index 99a28e9..ed44d6b 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -82,7 +82,7 @@ if (busWell != null) {//获取不到相关联的井,就无法获取告警规则,故不存库 String alarmContent = "", alarmValue = "",isAlarm="1",isJob="1"; Integer alarmLevel = 10; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 64c9be6..43837db 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -66,7 +66,7 @@ String isAlarm = "1";//是否开启报警(1为开启) String isJob = "1";//是否开启工单(1为开启) if (busWell == null) return alarmMap; - List ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + List ruleRankList = alarmRuleManager.getRuleRank(devCode); if (ruleRankList.size() > 0) { isAlarm = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[4].toString(); isJob = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[5].toString(); @@ -77,10 +77,6 @@ Object gasName = ((Object[]) ruleRankList.get(j))[3]; if (gasName != null && nameArr[0].equals(gasName.toString())) { if (rankHighValue != null && Float.parseFloat(CO) >= Float.valueOf(rankHighValue.toString())) { -// WasteGasAlarmEnum wasteGasAlarmEnum = WasteGasAlarmEnum.getByIndex( -// String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 8)); -// alarmContent += (wasteGasAlarmEnum == null ? WasteGasAlarmEnum.CO_OVER_THRESH.getName() : -// wasteGasAlarmEnum.getName()) + ","; alarmContent += WasteGasAlarmEnum.CO_OVER_THRESH.getName() + ","; alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); alarmValue += "一氧化碳:" + CO + "ppm,"; diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 37c62a0..9a12ddf 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -8,6 +8,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; @@ -57,14 +58,16 @@ try { 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.存数据 this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 + + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); + //2.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, "2"); } catch (Exception e) { e.printStackTrace(); logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); @@ -72,14 +75,14 @@ } } + @Transactional public void processAlarmData(JSONObject jsonObject, String devCode) { JSONArray jsonArray = (JSONArray) jsonObject.get("eventType"); String logTime = (jsonObject.get("logTime")).toString(); 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(), @@ -88,60 +91,56 @@ //3.1井盖开盖报警处理 if (WellAlarmEnum.WellOpenAlarm.name().equals(jsonArray.get(i).toString())) { - alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 + +// alarmRecordManager.clearAlarm(devCode, "2", "");//清除设备本身报警 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()); - } else { - Device device = deviceManager.getDeviceByDevCode(devCode); - if (device == null) return; //没注册舍弃 - //生成新的工单 - if ("1".equals(device.getJobGenerationType())) { - AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "1"); +// 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()); +// } else { +// Device device = deviceManager.getDeviceByDevCode(devCode); +// if (device == null) return; //没注册舍弃 +// alarmRecordManager.saveData(null, "1", null, +// WellAlarmEnum.WellOpenAlarm.getName(), +// String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, +// devCode, busWell != null ? busWell.getWellCode() : null, logTime, +// WellAlarmEnum.WellOpenAlarm.getName()); +// } - alarmRecordManager.saveData(alarmJob.getId(), "1", null, - WellAlarmEnum.WellOpenAlarm.getName(), - String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, - devCode, alarmJob.getWellCode(), logTime, - WellAlarmEnum.WellOpenAlarm.getName()); - //toDo:向app推送报警消息 - -// ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName(), -// busWell == null ? "" : busWell.getWellCode()); - } - } + alarmRecordManager.clearAlarm(devCode, "", "");//清除以前报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (device == null) return; //没注册舍弃 + alarmRecordManager.saveData(null, "1", null, + WellAlarmEnum.WellOpenAlarm.getName(), + String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, + devCode, busWell != null ? busWell.getWellCode() : null, logTime, + WellAlarmEnum.WellOpenAlarm.getName()); } } //3.2低电量和设备故障报警处理 else if (WellAlarmEnum.WellLowBatteryAlarm.name().equals(jsonArray.get(i).toString()) || WellAlarmEnum.WellDeviceBadAlarm.name().equals(jsonArray.get(i).toString())) { - //清除报警信息 - alarmRecordManager.clearAlarm(devCode, "2", - String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - if (null == alarmJob && "1".equals(device.getJobGenerationType())) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(), "0"); - } - alarmRecordManager.saveData(alarmJob.getId(), "2", null, + alarmRecordManager.saveData(null, "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); } + if (i < jsonArray.size() - 1) continue; + //1.清离线 + deviceManager.clearOffline(devCode); } catch (IOException e) { e.printStackTrace(); diff --git a/src/main/java/org/well/well/resp/ConcentratorResponse.java b/src/main/java/org/well/well/resp/ConcentratorResponse.java index 79e769c..903628c 100644 --- a/src/main/java/org/well/well/resp/ConcentratorResponse.java +++ b/src/main/java/org/well/well/resp/ConcentratorResponse.java @@ -18,11 +18,11 @@ public static final String[] bType = {"ConcentratorOnline", "ConcentratorOffline"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); ConcentratorManager concentratorManager = ac.getBean(ConcentratorManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); JSONObject jsonObject = (JSONObject) json.get("mBody"); if (mType[0].equals(json.get("mType"))) {//存储上报数据 diff --git a/src/main/java/org/well/well/resp/LGResponse.java b/src/main/java/org/well/well/resp/LGResponse.java index 93f3c23..6f7ae9d 100644 --- a/src/main/java/org/well/well/resp/LGResponse.java +++ b/src/main/java/org/well/well/resp/LGResponse.java @@ -19,13 +19,13 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LGLiquidManager lgLiquidManager = ac.getBean(LGLiquidManager.class); LGGasManager lgGasManager = ac.getBean(LGGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LiquidResponse.java b/src/main/java/org/well/well/resp/LiquidResponse.java index 5f58e29..6541017 100644 --- a/src/main/java/org/well/well/resp/LiquidResponse.java +++ b/src/main/java/org/well/well/resp/LiquidResponse.java @@ -19,12 +19,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); LiquidManager liquidManager = ac.getBean(LiquidManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/LocatorResponse.java b/src/main/java/org/well/well/resp/LocatorResponse.java index 584e42e..4f22ab8 100644 --- a/src/main/java/org/well/well/resp/LocatorResponse.java +++ b/src/main/java/org/well/well/resp/LocatorResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); LocatorManager locatorManager = ac.getBean(LocatorManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/MethaneResponse.java b/src/main/java/org/well/well/resp/MethaneResponse.java index 613c6d2..3d4ae4a 100644 --- a/src/main/java/org/well/well/resp/MethaneResponse.java +++ b/src/main/java/org/well/well/resp/MethaneResponse.java @@ -20,12 +20,12 @@ @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); MethaneManager methaneManager = ac.getBean(MethaneManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java index bbb0a03..1519a5e 100644 --- a/src/main/java/org/well/well/resp/NoiseDigResponse.java +++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java @@ -18,12 +18,12 @@ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); NoiseDigManager noiseDigManager = ac.getBean(NoiseDigManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/TempHumiResponse.java b/src/main/java/org/well/well/resp/TempHumiResponse.java index 68ae6b1..da5a499 100644 --- a/src/main/java/org/well/well/resp/TempHumiResponse.java +++ b/src/main/java/org/well/well/resp/TempHumiResponse.java @@ -20,13 +20,13 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); TempHumiManager tempHumiManager = ac.getBean(TempHumiManager.class); AlarmRecordManager alarmRecordManager = ac.getBean(AlarmRecordManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WasteGasResponse.java b/src/main/java/org/well/well/resp/WasteGasResponse.java index 4b3d350..199a6b0 100644 --- a/src/main/java/org/well/well/resp/WasteGasResponse.java +++ b/src/main/java/org/well/well/resp/WasteGasResponse.java @@ -19,12 +19,12 @@ private static final String[] mType = {"Data", "Event", "SetResponse", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WasteGasManager wasteGasManager = ac.getBean(WasteGasManager.class); DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/resp/WellResponse.java b/src/main/java/org/well/well/resp/WellResponse.java index 5a44562..8003f20 100644 --- a/src/main/java/org/well/well/resp/WellResponse.java +++ b/src/main/java/org/well/well/resp/WellResponse.java @@ -17,11 +17,11 @@ private static final String[] mType = {"Data", "Event", "StartupRequest"}; @Override - public void process(String content) { + public void run() { ClassPathXmlApplicationContext ac = this.getAc(); WellManager wellManager = ac.getBean(WellManager.class); ImeiManager imeiManager = ac.getBean(ImeiManager.class); - JSONObject json = JSONObject.fromObject(content); + JSONObject json = JSONObject.fromObject(this.getContent()); String devCode = json.get("devCode").toString(); logger.info("--------RECEIVE:设备编号:" + devCode + ",上传数据:" + json.toString() + "-------"); JSONObject jsonObject = (JSONObject) json.get("mBody"); diff --git a/src/main/java/org/well/well/util/SnowFlakeUtil.java b/src/main/java/org/well/well/util/SnowFlakeUtil.java new file mode 100644 index 0000000..828217f --- /dev/null +++ b/src/main/java/org/well/well/util/SnowFlakeUtil.java @@ -0,0 +1,51 @@ +package org.well.well.util; + +import cn.hutool.core.lang.Snowflake; +import cn.hutool.core.util.IdUtil; + +import javax.annotation.Resource; + +@Resource +public class SnowFlakeUtil { + private long machineId ; + private long dataCenterId ; + + + public SnowFlakeUtil(long machineId, long dataCenterId) { + this.machineId = machineId; + this.dataCenterId = dataCenterId; + } + + /** + * 成员类,SnowFlakeUtil的实例对象的保存域 + */ + private static class IdGenHolder { + private static final SnowFlakeUtil instance = new SnowFlakeUtil(); + } + + /** + * 外部调用获取SnowFlakeUtil的实例对象,确保不可变 + */ + public static SnowFlakeUtil get() { + return IdGenHolder.instance; + } + + /** + * 初始化构造,无参构造有参函数,默认节点都是0 + */ + public SnowFlakeUtil() { + this(0L, 0L); + } + + private Snowflake snowflake = IdUtil.createSnowflake(machineId,dataCenterId); + + public synchronized long id(){ + return snowflake.nextId(); + } + + public static Long getId() { + return SnowFlakeUtil.get().id(); + } +} + + diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 0135bc0..da67111 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -167,8 +167,8 @@ # ============================================================================ # kafka配置 # ============================================================================ -bootstrap.servers = 111.198.10.15:12502 -kafka.topic = test +bootstrap.servers = localhost:9092 +kafka.topic = sensor2 bootstrap.groupid = 0 # ============================================================================ diff --git a/src/main/resources/wellSensor/applicationContex-kafka.xml b/src/main/resources/wellSensor/applicationContex-kafka.xml index f3430e4..fa0adb4 100644 --- a/src/main/resources/wellSensor/applicationContex-kafka.xml +++ b/src/main/resources/wellSensor/applicationContex-kafka.xml @@ -14,8 +14,10 @@ - - + + + +