diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/org/well/well/domain/Kad.java b/src/main/java/org/well/well/domain/Kad.java new file mode 100644 index 0000000..b64545f --- /dev/null +++ b/src/main/java/org/well/well/domain/Kad.java @@ -0,0 +1,156 @@ +package org.well.well.domain; + +import org.well.well.util.SnowFlakeUtil; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.sql.Timestamp; + +/** + * 压力监测终端 + * + * @author cz + * @date 2023-11-10 + */ +@Entity +@Table(name = "data_kad") +public class Kad { + + /** + * + */ + private static final long serialVersionUID = 566089135526318712L; + + private Long dbId; + private String devCode; //设备编号 + private String wellCode; //井编号 + private String dataValue; //浓度 + private String cell; //电池电量 + private String descn; //状态描述 + private Timestamp uptime; //采集时间 + private Timestamp logtime; //记录时间 + private String pci; + private String rsrp; + private String snr; + + @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + public Long getDbId() { + return dbId; + } + + public void setDbId(Long dbId) { + this.dbId = dbId; + } + + @Column(name = "DATA_VALUE") + public String getDataValue() { + return dataValue; + } + + public void setDataValue(String dataValue) { + this.dataValue = dataValue; + } + + @Column(name = "DEVCODE") + public String getDevCode() { + return devCode; + } + + public void setDevCode(String devCode) { + this.devCode = devCode; + } + + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + @Column(name = "DESCN") + public String getDescn() { + return descn; + } + + public void setDescn(String descn) { + this.descn = descn; + } + + @Column(name = "CELL") + public String getCell() { + return cell; + } + + public void setCell(String cell) { + this.cell = cell; + } + + @Column(name = "UPTIME") + public Timestamp getUptime() { + return uptime; + } + + public void setUptime(Timestamp uptime) { + this.uptime = uptime; + } + + @Column(name = "LOGTIME") + public Timestamp getLogtime() { + return logtime; + } + + public void setLogtime(Timestamp logtime) { + this.logtime = logtime; + } + + @Column(name = "PCI") + public String getPci() { + return pci; + } + + public void setPci(String pci) { + this.pci = pci; + } + + @Column(name = "RSRP") + public String getRsrp() { + return rsrp; + } + + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } + + @Column(name = "SNR") + public String getSnr() { + return snr; + } + + public void setSnr(String snr) { + this.snr = snr; + } + + public Kad() { + } + + public Kad(String devCode, String wellCode, String dataValue, String cell, Timestamp uptime, Timestamp logtime, String snr, String pci, String rsrp) { + this.dbId = SnowFlakeUtil.getId(); + this.devCode = devCode; + this.wellCode = wellCode; + this.dataValue = dataValue; + this.cell = cell; + this.uptime = uptime; + this.logtime = logtime; + this.pci=pci; + this.rsrp=rsrp; + this.snr=snr; + } + + +} diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/org/well/well/domain/Kad.java b/src/main/java/org/well/well/domain/Kad.java new file mode 100644 index 0000000..b64545f --- /dev/null +++ b/src/main/java/org/well/well/domain/Kad.java @@ -0,0 +1,156 @@ +package org.well.well.domain; + +import org.well.well.util.SnowFlakeUtil; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.sql.Timestamp; + +/** + * 压力监测终端 + * + * @author cz + * @date 2023-11-10 + */ +@Entity +@Table(name = "data_kad") +public class Kad { + + /** + * + */ + private static final long serialVersionUID = 566089135526318712L; + + private Long dbId; + private String devCode; //设备编号 + private String wellCode; //井编号 + private String dataValue; //浓度 + private String cell; //电池电量 + private String descn; //状态描述 + private Timestamp uptime; //采集时间 + private Timestamp logtime; //记录时间 + private String pci; + private String rsrp; + private String snr; + + @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + public Long getDbId() { + return dbId; + } + + public void setDbId(Long dbId) { + this.dbId = dbId; + } + + @Column(name = "DATA_VALUE") + public String getDataValue() { + return dataValue; + } + + public void setDataValue(String dataValue) { + this.dataValue = dataValue; + } + + @Column(name = "DEVCODE") + public String getDevCode() { + return devCode; + } + + public void setDevCode(String devCode) { + this.devCode = devCode; + } + + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + @Column(name = "DESCN") + public String getDescn() { + return descn; + } + + public void setDescn(String descn) { + this.descn = descn; + } + + @Column(name = "CELL") + public String getCell() { + return cell; + } + + public void setCell(String cell) { + this.cell = cell; + } + + @Column(name = "UPTIME") + public Timestamp getUptime() { + return uptime; + } + + public void setUptime(Timestamp uptime) { + this.uptime = uptime; + } + + @Column(name = "LOGTIME") + public Timestamp getLogtime() { + return logtime; + } + + public void setLogtime(Timestamp logtime) { + this.logtime = logtime; + } + + @Column(name = "PCI") + public String getPci() { + return pci; + } + + public void setPci(String pci) { + this.pci = pci; + } + + @Column(name = "RSRP") + public String getRsrp() { + return rsrp; + } + + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } + + @Column(name = "SNR") + public String getSnr() { + return snr; + } + + public void setSnr(String snr) { + this.snr = snr; + } + + public Kad() { + } + + public Kad(String devCode, String wellCode, String dataValue, String cell, Timestamp uptime, Timestamp logtime, String snr, String pci, String rsrp) { + this.dbId = SnowFlakeUtil.getId(); + this.devCode = devCode; + this.wellCode = wellCode; + this.dataValue = dataValue; + this.cell = cell; + this.uptime = uptime; + this.logtime = logtime; + this.pci=pci; + this.rsrp=rsrp; + this.snr=snr; + } + + +} diff --git a/src/main/java/org/well/well/manager/CommercialGasManager.java b/src/main/java/org/well/well/manager/CommercialGasManager.java new file mode 100644 index 0000000..732fb08 --- /dev/null +++ b/src/main/java/org/well/well/manager/CommercialGasManager.java @@ -0,0 +1,173 @@ +package org.well.well.manager; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.well.well.AlarmEnumDTO.KadAlarmEnum; +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.SnowFlakeUtil; + +import javax.annotation.Resource; +import java.io.IOException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 接入商务燃气设备 + * + * @author cz + * @date 2023-11-10 + */ +@Service +public class CommercialGasManager extends HibernateEntityDao { + + @Resource + private AlarmRecordManager alarmRecordManager; + @Resource + private AlarmRuleManager alarmRuleManager; + @Resource + private DeviceManager deviceManager; + @Resource + private BusWellManager busWellManager; + @Resource + private AlarmJobManager alarmJobManager; + + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + public Map saveData(String devcode, String wellCode, + String dataValue, String cell, String uptime, String snr, String pci, String rsrp) { + + Map resultMap = new HashMap(); + String timeFormat = StringUtils.isEmpty(uptime) ? "" : DateUtils.DateFormat(uptime); + try { + SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Kad pressure = new Kad(devcode, wellCode, dataValue, cell, + new Timestamp(StringUtils.isNotBlank(timeFormat) ? sdf4.parse(timeFormat).getTime() : null), + new Timestamp((new Date()).getTime()), snr, pci, rsrp); + save(pressure); + } catch (Exception e) { + e.printStackTrace(); + logger.error("----uptime时间转换失败-----:" + uptime); + } + return resultMap; + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = "100"; + if (jsonObject.containsKey("cell")) { + cell = jsonObject.getString("cell"); + } + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + BusWell busWell = busWellManager.getWellByDevCode(devCode); + System.out.println(jsonObject.toString()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + String dataValue = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + String snr = ((JSONObject) jsonArray.get(i)).getString("snr"); + String pci = ((JSONObject) jsonArray.get(i)).getString("pci"); + String rsrp = ((JSONObject) jsonArray.get(i)).getString("rsrp"); + + dataValue = String.format("%.4f", Double.valueOf(dataValue)); + //1.存数据 + saveData(devCode, busWell == null ? "" : busWell.getWellCode(), dataValue, cell, upTime, snr, pci, rsrp);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) { + continue; + } + //4.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + //单个设备设置的报警规则 + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0 && ruleRankList.get(0)[0] != null) { + 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(dataValue) >= rankThresh) {//浓度超限 + Device device = deviceManager.getDeviceByDevCode(devCode); + //获取报警等级 + String alarmContent = KadAlarmEnum.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(dataValue) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + + if (device == null) { + return;//未注册设备舍弃 + } + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); + if (alarmJob == null) { + alarmJobManager.saveData(jobId, devCode, busWell != null ? + busWell.getWellCode() : "", DeviceTypeEnum.Pressure.toString(), "1"); + } + //1.写入新的告警 + alarmRecordManager.saveData(jobId, "1", alarmLevel, + alarmContent, dataValue, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + + } else { + alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + } + //3.清离线 + deviceManager.clearOffline(devCode); + + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + + + public void processAlarmData(JSONObject jsonObject, String devCode) { + JSONArray jsonArray = jsonObject.getJSONArray("eventType"); + String logtime = jsonObject.getString("logTime"); + for (int i = 0; i < jsonArray.size(); i++) { + try { + //1.清除同类型的报警信息 + alarmRecordManager.clearAlarm(devCode, "2", + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //2.写入新的报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (null == device) return;//没注册设备舍弃 + BusWell busWell = busWellManager.getWellByDevCode(devCode); + alarmRecordManager.saveData(null, "2", null, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), + device, devCode, null != busWell ? busWell.getWellCode() : "", logtime, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储报警数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + +} diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/org/well/well/domain/Kad.java b/src/main/java/org/well/well/domain/Kad.java new file mode 100644 index 0000000..b64545f --- /dev/null +++ b/src/main/java/org/well/well/domain/Kad.java @@ -0,0 +1,156 @@ +package org.well.well.domain; + +import org.well.well.util.SnowFlakeUtil; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.sql.Timestamp; + +/** + * 压力监测终端 + * + * @author cz + * @date 2023-11-10 + */ +@Entity +@Table(name = "data_kad") +public class Kad { + + /** + * + */ + private static final long serialVersionUID = 566089135526318712L; + + private Long dbId; + private String devCode; //设备编号 + private String wellCode; //井编号 + private String dataValue; //浓度 + private String cell; //电池电量 + private String descn; //状态描述 + private Timestamp uptime; //采集时间 + private Timestamp logtime; //记录时间 + private String pci; + private String rsrp; + private String snr; + + @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + public Long getDbId() { + return dbId; + } + + public void setDbId(Long dbId) { + this.dbId = dbId; + } + + @Column(name = "DATA_VALUE") + public String getDataValue() { + return dataValue; + } + + public void setDataValue(String dataValue) { + this.dataValue = dataValue; + } + + @Column(name = "DEVCODE") + public String getDevCode() { + return devCode; + } + + public void setDevCode(String devCode) { + this.devCode = devCode; + } + + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + @Column(name = "DESCN") + public String getDescn() { + return descn; + } + + public void setDescn(String descn) { + this.descn = descn; + } + + @Column(name = "CELL") + public String getCell() { + return cell; + } + + public void setCell(String cell) { + this.cell = cell; + } + + @Column(name = "UPTIME") + public Timestamp getUptime() { + return uptime; + } + + public void setUptime(Timestamp uptime) { + this.uptime = uptime; + } + + @Column(name = "LOGTIME") + public Timestamp getLogtime() { + return logtime; + } + + public void setLogtime(Timestamp logtime) { + this.logtime = logtime; + } + + @Column(name = "PCI") + public String getPci() { + return pci; + } + + public void setPci(String pci) { + this.pci = pci; + } + + @Column(name = "RSRP") + public String getRsrp() { + return rsrp; + } + + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } + + @Column(name = "SNR") + public String getSnr() { + return snr; + } + + public void setSnr(String snr) { + this.snr = snr; + } + + public Kad() { + } + + public Kad(String devCode, String wellCode, String dataValue, String cell, Timestamp uptime, Timestamp logtime, String snr, String pci, String rsrp) { + this.dbId = SnowFlakeUtil.getId(); + this.devCode = devCode; + this.wellCode = wellCode; + this.dataValue = dataValue; + this.cell = cell; + this.uptime = uptime; + this.logtime = logtime; + this.pci=pci; + this.rsrp=rsrp; + this.snr=snr; + } + + +} diff --git a/src/main/java/org/well/well/manager/CommercialGasManager.java b/src/main/java/org/well/well/manager/CommercialGasManager.java new file mode 100644 index 0000000..732fb08 --- /dev/null +++ b/src/main/java/org/well/well/manager/CommercialGasManager.java @@ -0,0 +1,173 @@ +package org.well.well.manager; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.well.well.AlarmEnumDTO.KadAlarmEnum; +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.SnowFlakeUtil; + +import javax.annotation.Resource; +import java.io.IOException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 接入商务燃气设备 + * + * @author cz + * @date 2023-11-10 + */ +@Service +public class CommercialGasManager extends HibernateEntityDao { + + @Resource + private AlarmRecordManager alarmRecordManager; + @Resource + private AlarmRuleManager alarmRuleManager; + @Resource + private DeviceManager deviceManager; + @Resource + private BusWellManager busWellManager; + @Resource + private AlarmJobManager alarmJobManager; + + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + public Map saveData(String devcode, String wellCode, + String dataValue, String cell, String uptime, String snr, String pci, String rsrp) { + + Map resultMap = new HashMap(); + String timeFormat = StringUtils.isEmpty(uptime) ? "" : DateUtils.DateFormat(uptime); + try { + SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Kad pressure = new Kad(devcode, wellCode, dataValue, cell, + new Timestamp(StringUtils.isNotBlank(timeFormat) ? sdf4.parse(timeFormat).getTime() : null), + new Timestamp((new Date()).getTime()), snr, pci, rsrp); + save(pressure); + } catch (Exception e) { + e.printStackTrace(); + logger.error("----uptime时间转换失败-----:" + uptime); + } + return resultMap; + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = "100"; + if (jsonObject.containsKey("cell")) { + cell = jsonObject.getString("cell"); + } + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + BusWell busWell = busWellManager.getWellByDevCode(devCode); + System.out.println(jsonObject.toString()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + String dataValue = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + String snr = ((JSONObject) jsonArray.get(i)).getString("snr"); + String pci = ((JSONObject) jsonArray.get(i)).getString("pci"); + String rsrp = ((JSONObject) jsonArray.get(i)).getString("rsrp"); + + dataValue = String.format("%.4f", Double.valueOf(dataValue)); + //1.存数据 + saveData(devCode, busWell == null ? "" : busWell.getWellCode(), dataValue, cell, upTime, snr, pci, rsrp);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) { + continue; + } + //4.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + //单个设备设置的报警规则 + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0 && ruleRankList.get(0)[0] != null) { + 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(dataValue) >= rankThresh) {//浓度超限 + Device device = deviceManager.getDeviceByDevCode(devCode); + //获取报警等级 + String alarmContent = KadAlarmEnum.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(dataValue) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + + if (device == null) { + return;//未注册设备舍弃 + } + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); + if (alarmJob == null) { + alarmJobManager.saveData(jobId, devCode, busWell != null ? + busWell.getWellCode() : "", DeviceTypeEnum.Pressure.toString(), "1"); + } + //1.写入新的告警 + alarmRecordManager.saveData(jobId, "1", alarmLevel, + alarmContent, dataValue, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + + } else { + alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + } + //3.清离线 + deviceManager.clearOffline(devCode); + + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + + + public void processAlarmData(JSONObject jsonObject, String devCode) { + JSONArray jsonArray = jsonObject.getJSONArray("eventType"); + String logtime = jsonObject.getString("logTime"); + for (int i = 0; i < jsonArray.size(); i++) { + try { + //1.清除同类型的报警信息 + alarmRecordManager.clearAlarm(devCode, "2", + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //2.写入新的报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (null == device) return;//没注册设备舍弃 + BusWell busWell = busWellManager.getWellByDevCode(devCode); + alarmRecordManager.saveData(null, "2", null, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), + device, devCode, null != busWell ? busWell.getWellCode() : "", logtime, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储报警数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + +} diff --git a/src/main/java/org/well/well/resp/CommercialGasResponse.java b/src/main/java/org/well/well/resp/CommercialGasResponse.java new file mode 100644 index 0000000..bda095f --- /dev/null +++ b/src/main/java/org/well/well/resp/CommercialGasResponse.java @@ -0,0 +1,57 @@ +package org.well.well.resp; + +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.well.well.base.AbstractResponse; +import org.well.well.base.DeviceTypeEnum; +import org.well.well.manager.CommercialGasManager; +import org.well.well.manager.DeviceConfigManager; +import org.well.well.manager.ImeiManager; +import org.well.well.manager.PressureManager; + +/** + * 商务燃气接受处理响应 + */ +public class CommercialGasResponse extends AbstractResponse { + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + @Override + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); + CommercialGasManager gasManager = ac.getBean(CommercialGasManager.class); + DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); + ImeiManager imeiManager = ac.getBean(ImeiManager.class); + JSONObject json = JSONObject.fromObject(this.getContent()); + String devCode = json.getString("devCode"); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + gasManager.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 + gasManager.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + //下发配置回填数据 + if (DeviceTypeEnum.Pressure.name().equals(json.get("devType"))) { + if ("GasConfigSuccess".equals(jsonObject.get("bType"))) { + deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); + imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } +} diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/org/well/well/domain/Kad.java b/src/main/java/org/well/well/domain/Kad.java new file mode 100644 index 0000000..b64545f --- /dev/null +++ b/src/main/java/org/well/well/domain/Kad.java @@ -0,0 +1,156 @@ +package org.well.well.domain; + +import org.well.well.util.SnowFlakeUtil; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.sql.Timestamp; + +/** + * 压力监测终端 + * + * @author cz + * @date 2023-11-10 + */ +@Entity +@Table(name = "data_kad") +public class Kad { + + /** + * + */ + private static final long serialVersionUID = 566089135526318712L; + + private Long dbId; + private String devCode; //设备编号 + private String wellCode; //井编号 + private String dataValue; //浓度 + private String cell; //电池电量 + private String descn; //状态描述 + private Timestamp uptime; //采集时间 + private Timestamp logtime; //记录时间 + private String pci; + private String rsrp; + private String snr; + + @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + public Long getDbId() { + return dbId; + } + + public void setDbId(Long dbId) { + this.dbId = dbId; + } + + @Column(name = "DATA_VALUE") + public String getDataValue() { + return dataValue; + } + + public void setDataValue(String dataValue) { + this.dataValue = dataValue; + } + + @Column(name = "DEVCODE") + public String getDevCode() { + return devCode; + } + + public void setDevCode(String devCode) { + this.devCode = devCode; + } + + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + @Column(name = "DESCN") + public String getDescn() { + return descn; + } + + public void setDescn(String descn) { + this.descn = descn; + } + + @Column(name = "CELL") + public String getCell() { + return cell; + } + + public void setCell(String cell) { + this.cell = cell; + } + + @Column(name = "UPTIME") + public Timestamp getUptime() { + return uptime; + } + + public void setUptime(Timestamp uptime) { + this.uptime = uptime; + } + + @Column(name = "LOGTIME") + public Timestamp getLogtime() { + return logtime; + } + + public void setLogtime(Timestamp logtime) { + this.logtime = logtime; + } + + @Column(name = "PCI") + public String getPci() { + return pci; + } + + public void setPci(String pci) { + this.pci = pci; + } + + @Column(name = "RSRP") + public String getRsrp() { + return rsrp; + } + + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } + + @Column(name = "SNR") + public String getSnr() { + return snr; + } + + public void setSnr(String snr) { + this.snr = snr; + } + + public Kad() { + } + + public Kad(String devCode, String wellCode, String dataValue, String cell, Timestamp uptime, Timestamp logtime, String snr, String pci, String rsrp) { + this.dbId = SnowFlakeUtil.getId(); + this.devCode = devCode; + this.wellCode = wellCode; + this.dataValue = dataValue; + this.cell = cell; + this.uptime = uptime; + this.logtime = logtime; + this.pci=pci; + this.rsrp=rsrp; + this.snr=snr; + } + + +} diff --git a/src/main/java/org/well/well/manager/CommercialGasManager.java b/src/main/java/org/well/well/manager/CommercialGasManager.java new file mode 100644 index 0000000..732fb08 --- /dev/null +++ b/src/main/java/org/well/well/manager/CommercialGasManager.java @@ -0,0 +1,173 @@ +package org.well.well.manager; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.well.well.AlarmEnumDTO.KadAlarmEnum; +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.SnowFlakeUtil; + +import javax.annotation.Resource; +import java.io.IOException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 接入商务燃气设备 + * + * @author cz + * @date 2023-11-10 + */ +@Service +public class CommercialGasManager extends HibernateEntityDao { + + @Resource + private AlarmRecordManager alarmRecordManager; + @Resource + private AlarmRuleManager alarmRuleManager; + @Resource + private DeviceManager deviceManager; + @Resource + private BusWellManager busWellManager; + @Resource + private AlarmJobManager alarmJobManager; + + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + public Map saveData(String devcode, String wellCode, + String dataValue, String cell, String uptime, String snr, String pci, String rsrp) { + + Map resultMap = new HashMap(); + String timeFormat = StringUtils.isEmpty(uptime) ? "" : DateUtils.DateFormat(uptime); + try { + SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Kad pressure = new Kad(devcode, wellCode, dataValue, cell, + new Timestamp(StringUtils.isNotBlank(timeFormat) ? sdf4.parse(timeFormat).getTime() : null), + new Timestamp((new Date()).getTime()), snr, pci, rsrp); + save(pressure); + } catch (Exception e) { + e.printStackTrace(); + logger.error("----uptime时间转换失败-----:" + uptime); + } + return resultMap; + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = "100"; + if (jsonObject.containsKey("cell")) { + cell = jsonObject.getString("cell"); + } + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + BusWell busWell = busWellManager.getWellByDevCode(devCode); + System.out.println(jsonObject.toString()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + String dataValue = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + String snr = ((JSONObject) jsonArray.get(i)).getString("snr"); + String pci = ((JSONObject) jsonArray.get(i)).getString("pci"); + String rsrp = ((JSONObject) jsonArray.get(i)).getString("rsrp"); + + dataValue = String.format("%.4f", Double.valueOf(dataValue)); + //1.存数据 + saveData(devCode, busWell == null ? "" : busWell.getWellCode(), dataValue, cell, upTime, snr, pci, rsrp);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) { + continue; + } + //4.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + //单个设备设置的报警规则 + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0 && ruleRankList.get(0)[0] != null) { + 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(dataValue) >= rankThresh) {//浓度超限 + Device device = deviceManager.getDeviceByDevCode(devCode); + //获取报警等级 + String alarmContent = KadAlarmEnum.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(dataValue) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + + if (device == null) { + return;//未注册设备舍弃 + } + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); + if (alarmJob == null) { + alarmJobManager.saveData(jobId, devCode, busWell != null ? + busWell.getWellCode() : "", DeviceTypeEnum.Pressure.toString(), "1"); + } + //1.写入新的告警 + alarmRecordManager.saveData(jobId, "1", alarmLevel, + alarmContent, dataValue, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + + } else { + alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + } + //3.清离线 + deviceManager.clearOffline(devCode); + + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + + + public void processAlarmData(JSONObject jsonObject, String devCode) { + JSONArray jsonArray = jsonObject.getJSONArray("eventType"); + String logtime = jsonObject.getString("logTime"); + for (int i = 0; i < jsonArray.size(); i++) { + try { + //1.清除同类型的报警信息 + alarmRecordManager.clearAlarm(devCode, "2", + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //2.写入新的报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (null == device) return;//没注册设备舍弃 + BusWell busWell = busWellManager.getWellByDevCode(devCode); + alarmRecordManager.saveData(null, "2", null, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), + device, devCode, null != busWell ? busWell.getWellCode() : "", logtime, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储报警数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + +} diff --git a/src/main/java/org/well/well/resp/CommercialGasResponse.java b/src/main/java/org/well/well/resp/CommercialGasResponse.java new file mode 100644 index 0000000..bda095f --- /dev/null +++ b/src/main/java/org/well/well/resp/CommercialGasResponse.java @@ -0,0 +1,57 @@ +package org.well.well.resp; + +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.well.well.base.AbstractResponse; +import org.well.well.base.DeviceTypeEnum; +import org.well.well.manager.CommercialGasManager; +import org.well.well.manager.DeviceConfigManager; +import org.well.well.manager.ImeiManager; +import org.well.well.manager.PressureManager; + +/** + * 商务燃气接受处理响应 + */ +public class CommercialGasResponse extends AbstractResponse { + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + @Override + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); + CommercialGasManager gasManager = ac.getBean(CommercialGasManager.class); + DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); + ImeiManager imeiManager = ac.getBean(ImeiManager.class); + JSONObject json = JSONObject.fromObject(this.getContent()); + String devCode = json.getString("devCode"); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + gasManager.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 + gasManager.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + //下发配置回填数据 + if (DeviceTypeEnum.Pressure.name().equals(json.get("devType"))) { + if ("GasConfigSuccess".equals(jsonObject.get("bType"))) { + deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); + imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } +} diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java index 9541f50..7b5f4f3 100644 --- a/src/main/java/org/well/well/util/ResponseResolver.java +++ b/src/main/java/org/well/well/util/ResponseResolver.java @@ -31,7 +31,7 @@ abstractResponseHashMap.put(DeviceTypeEnum.Tube.name(), new TubeResponse()); abstractResponseHashMap.put(DeviceTypeEnum.WellPlus.name(), new WellPlusResponse()); abstractResponseHashMap.put(DeviceTypeEnum.HydrogenSulfide.name(), new H2SResponse()); - abstractResponseHashMap.put(DeviceTypeEnum.GasDetector.name(), new H2SResponse()); + abstractResponseHashMap.put(DeviceTypeEnum.GasDetector.name(), new CommercialGasResponse()); abstractResponseHashMap.put(DeviceTypeEnum.Pressure.name(), new PressureResponse()); } diff --git a/src/main/java/META-INF/MANIFEST.MF b/src/main/java/META-INF/MANIFEST.MF new file mode 100644 index 0000000..689734b --- /dev/null +++ b/src/main/java/META-INF/MANIFEST.MF @@ -0,0 +1,44 @@ +Manifest-Version: 1.0 +Class-Path: jul-to-slf4j-1.7.7.jar flume-ng-core-1.4.0.jar hibernate-c + ommons-annotations-4.0.5.Final.jar snappy-java-1.1.2.6.jar hibernate- + validator-5.1.2.Final.jar spring-context-support-4.0.6.RELEASE.jar co + mmons-collections-3.2.1.jar hibernate-core-4.3.6.Final.jar spring-con + text-4.0.6.RELEASE.jar activemq-openwire-legacy-5.14.5.jar java-sizeo + f-0.0.4.jar jackson-jaxrs-base-2.4.2.jar libthrift-0.7.0.jar hutool-c + ore-4.6.0.jar commons-io-2.4.jar hibernate-jpa-2.1-api-1.0.0.Final.ja + r spring-tx-4.0.6.RELEASE.jar commons-cli-1.2.jar jackson-annotations + -2.4.0.jar spring-orm-4.0.6.RELEASE.jar slf4j-log4j12-1.6.1.jar activ + emq-spring-5.14.5.jar jetty-util-6.1.26.jar spring-messaging-4.3.3.RE + LEASE.jar commons-dbcp-1.4.jar gson-2.2.2.jar activemq-jms-pool-5.14. + 5.jar jackson-mapper-asl-1.9.3.jar spring-retry-1.1.3.RELEASE.jar vel + ocity-1.7.jar spring-webmvc-4.0.6.RELEASE.jar commons-fileupload-1.3. + 1.jar activemq-pool-5.14.5.jar spring-jdbc-4.0.6.RELEASE.jar mina-cor + e-2.0.4.jar commons-lang3-3.3.2.jar commons-httpclient-3.1.jar active + mq-broker-5.14.5.jar hawtbuf-1.11.jar validation-api-1.1.0.Final.jar + protobuf-java-2.4.1.jar ojdbc6-11.1.0.7.0.jar jansi-1.11.jar fastjson + -1.1.15.jar commons-codec-1.9.jar paranamer-2.3.jar avro-1.7.3.jar av + ro-ipc-1.7.3.jar classmate-1.0.0.jar jcl-over-slf4j-1.7.7.jar spring- + expression-4.0.6.RELEASE.jar commons-pool2-2.4.2.jar aopalliance-1.0. + jar commons-lang-2.5.jar json-lib-2.4-jdk15.jar kafka-clients-0.11.0. + 1.jar slf4j-api-1.7.7.jar jackson-core-asl-1.9.3.jar geronimo-jms_1.1 + _spec-1.1.1.jar geronimo-j2ee-management_1.1_spec-1.0.1.jar janino-2. + 7.6.jar jackson-module-jaxb-annotations-2.4.2.jar servlet-api-2.5-201 + 10124.jar orika-core-1.4.5.jar netty-3.4.0.Final.jar geronimo-jta_1.0 + .1B_spec-1.0.1.jar mysql-connector-java-8.0.27.jar spring-aop-4.0.6.R + ELEASE.jar jackson-databind-2.4.2.jar antlr-2.7.7.jar jsr305-1.3.9.ja + r jetty-6.1.26.jar ezmorph-1.0.6.jar log4j-1.2.16.jar guava-10.0.1.ja + r jackson-jaxrs-json-provider-2.4.2.jar concurrentlinkedhashmap-lru-1 + .2_jdk5.jar spring-web-4.0.6.RELEASE.jar log4jdbc-remix-0.2.7.jar spr + ing-core-4.0.6.RELEASE.jar commons-compiler-2.7.6.jar flume-ng-config + uration-1.4.0.jar logback-core-1.1.2.jar spring-kafka-1.1.1.RELEASE.j + ar joda-time-2.1.jar jstl-1.2.jar flume-ng-sdk-1.4.0.jar jboss-transa + ction-api_1.2_spec-1.0.0.Final.jar logback-classic-1.1.2.jar commons- + logging-1.1.1.jar httpcore-4.2.1.jar javassist-3.18.1-GA.jar jackson- + core-2.4.2.jar jboss-logging-annotations-1.2.0.Beta1.jar xbean-spring + -4.2.jar commons-beanutils-1.9.2.jar jboss-logging-3.1.3.GA.jar sprin + g-jms-3.2.8.RELEASE.jar hutool-captcha-4.6.0.jar activemq-client-5.14 + .5.jar httpclient-4.2.1.jar spring-beans-4.0.6.RELEASE.jar xml-apis-1 + .0.b2.jar commons-pool-1.5.4.jar jandex-1.1.0.Final.jar dom4j-1.6.1.j + ar lz4-1.3.0.jar +Main-Class: org.well.mysql.sink.WellSink + diff --git a/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java new file mode 100644 index 0000000..060ce3f --- /dev/null +++ b/src/main/java/org/well/well/AlarmEnumDTO/KadAlarmEnum.java @@ -0,0 +1,56 @@ +package org.well.well.AlarmEnumDTO; + +public enum KadAlarmEnum { + NO_DATA("设备异常", -1), + + NORMAL("正常", 0), + + OVER_THRESH("燃气超限", 1), + + GCommunicationFailure("可燃气体探测仪通讯失败", 2), + + KadError("可燃气体探测仪传感器异常", 3), + + KadUnknown("可燃气体探测仪未知异常", 4), + + OVER_THRESH1("一级燃气超限", 5), + + OVER_THRESH2("二级燃气超限", 6); + + // 成员变量 + private String name; + private int index; + + // 构造方法 + private KadAlarmEnum(String name, int index) { + this.name = name; + this.index = index; + } + + public int getIndex() { + return this.index; + } + + public String getName() { + return this.name; + } + + public static KadAlarmEnum getByIndex(String index) { + try { + for (KadAlarmEnum temp : values()) { + if (temp.index == Integer.parseInt(index)) { + return temp; + } + } + } catch (Exception e) { + } + return null; + } + + //覆盖方法 + @Override + public String toString() { + return this.name; + } + +} 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 4198af6..43c4bc9 100644 --- a/src/main/java/org/well/well/core/util/DateUtils.java +++ b/src/main/java/org/well/well/core/util/DateUtils.java @@ -1,5 +1,7 @@ package org.well.well.core.util; +import org.springframework.scheduling.annotation.Async; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; diff --git a/src/main/java/org/well/well/domain/Kad.java b/src/main/java/org/well/well/domain/Kad.java new file mode 100644 index 0000000..b64545f --- /dev/null +++ b/src/main/java/org/well/well/domain/Kad.java @@ -0,0 +1,156 @@ +package org.well.well.domain; + +import org.well.well.util.SnowFlakeUtil; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; +import java.sql.Timestamp; + +/** + * 压力监测终端 + * + * @author cz + * @date 2023-11-10 + */ +@Entity +@Table(name = "data_kad") +public class Kad { + + /** + * + */ + private static final long serialVersionUID = 566089135526318712L; + + private Long dbId; + private String devCode; //设备编号 + private String wellCode; //井编号 + private String dataValue; //浓度 + private String cell; //电池电量 + private String descn; //状态描述 + private Timestamp uptime; //采集时间 + private Timestamp logtime; //记录时间 + private String pci; + private String rsrp; + private String snr; + + @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + public Long getDbId() { + return dbId; + } + + public void setDbId(Long dbId) { + this.dbId = dbId; + } + + @Column(name = "DATA_VALUE") + public String getDataValue() { + return dataValue; + } + + public void setDataValue(String dataValue) { + this.dataValue = dataValue; + } + + @Column(name = "DEVCODE") + public String getDevCode() { + return devCode; + } + + public void setDevCode(String devCode) { + this.devCode = devCode; + } + + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } + + @Column(name = "DESCN") + public String getDescn() { + return descn; + } + + public void setDescn(String descn) { + this.descn = descn; + } + + @Column(name = "CELL") + public String getCell() { + return cell; + } + + public void setCell(String cell) { + this.cell = cell; + } + + @Column(name = "UPTIME") + public Timestamp getUptime() { + return uptime; + } + + public void setUptime(Timestamp uptime) { + this.uptime = uptime; + } + + @Column(name = "LOGTIME") + public Timestamp getLogtime() { + return logtime; + } + + public void setLogtime(Timestamp logtime) { + this.logtime = logtime; + } + + @Column(name = "PCI") + public String getPci() { + return pci; + } + + public void setPci(String pci) { + this.pci = pci; + } + + @Column(name = "RSRP") + public String getRsrp() { + return rsrp; + } + + public void setRsrp(String rsrp) { + this.rsrp = rsrp; + } + + @Column(name = "SNR") + public String getSnr() { + return snr; + } + + public void setSnr(String snr) { + this.snr = snr; + } + + public Kad() { + } + + public Kad(String devCode, String wellCode, String dataValue, String cell, Timestamp uptime, Timestamp logtime, String snr, String pci, String rsrp) { + this.dbId = SnowFlakeUtil.getId(); + this.devCode = devCode; + this.wellCode = wellCode; + this.dataValue = dataValue; + this.cell = cell; + this.uptime = uptime; + this.logtime = logtime; + this.pci=pci; + this.rsrp=rsrp; + this.snr=snr; + } + + +} diff --git a/src/main/java/org/well/well/manager/CommercialGasManager.java b/src/main/java/org/well/well/manager/CommercialGasManager.java new file mode 100644 index 0000000..732fb08 --- /dev/null +++ b/src/main/java/org/well/well/manager/CommercialGasManager.java @@ -0,0 +1,173 @@ +package org.well.well.manager; + +import net.sf.json.JSONArray; +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.well.well.AlarmEnumDTO.KadAlarmEnum; +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.SnowFlakeUtil; + +import javax.annotation.Resource; +import java.io.IOException; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 接入商务燃气设备 + * + * @author cz + * @date 2023-11-10 + */ +@Service +public class CommercialGasManager extends HibernateEntityDao { + + @Resource + private AlarmRecordManager alarmRecordManager; + @Resource + private AlarmRuleManager alarmRuleManager; + @Resource + private DeviceManager deviceManager; + @Resource + private BusWellManager busWellManager; + @Resource + private AlarmJobManager alarmJobManager; + + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + + public Map saveData(String devcode, String wellCode, + String dataValue, String cell, String uptime, String snr, String pci, String rsrp) { + + Map resultMap = new HashMap(); + String timeFormat = StringUtils.isEmpty(uptime) ? "" : DateUtils.DateFormat(uptime); + try { + SimpleDateFormat sdf4 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Kad pressure = new Kad(devcode, wellCode, dataValue, cell, + new Timestamp(StringUtils.isNotBlank(timeFormat) ? sdf4.parse(timeFormat).getTime() : null), + new Timestamp((new Date()).getTime()), snr, pci, rsrp); + save(pressure); + } catch (Exception e) { + e.printStackTrace(); + logger.error("----uptime时间转换失败-----:" + uptime); + } + return resultMap; + } + + + @Transactional + public void processNormalData(JSONObject jsonObject, String devCode) { + String cell = "100"; + if (jsonObject.containsKey("cell")) { + cell = jsonObject.getString("cell"); + } + JSONArray jsonArray = jsonObject.getJSONArray("datas"); + BusWell busWell = busWellManager.getWellByDevCode(devCode); + System.out.println(jsonObject.toString()); + for (int i = 0; i < jsonArray.size(); i++) { + try { + String dataValue = ((JSONObject) jsonArray.get(i)).getString("dataValue"); + String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); + String snr = ((JSONObject) jsonArray.get(i)).getString("snr"); + String pci = ((JSONObject) jsonArray.get(i)).getString("pci"); + String rsrp = ((JSONObject) jsonArray.get(i)).getString("rsrp"); + + dataValue = String.format("%.4f", Double.valueOf(dataValue)); + //1.存数据 + saveData(devCode, busWell == null ? "" : busWell.getWellCode(), dataValue, cell, upTime, snr, pci, rsrp);//存储采集数据 + //2.有无超限处理流程(判断最后一条数据) + if (i < jsonArray.size() - 1) { + continue; + } + //4.清除设备告警 + alarmRecordManager.clearAlarmByNormalData(devCode, ""); + //单个设备设置的报警规则 + List ruleRankList = alarmRuleManager.getRuleRank(devCode); + float rankThresh = 0; + String isAlarm = "1"; + if (ruleRankList.size() > 0 && ruleRankList.get(0)[0] != null) { + 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(dataValue) >= rankThresh) {//浓度超限 + Device device = deviceManager.getDeviceByDevCode(devCode); + //获取报警等级 + String alarmContent = KadAlarmEnum.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(dataValue) >= Float.valueOf(rankValue.toString())) { + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; + } + } + } + + if (device == null) { + return;//未注册设备舍弃 + } + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); + if (alarmJob == null) { + alarmJobManager.saveData(jobId, devCode, busWell != null ? + busWell.getWellCode() : "", DeviceTypeEnum.Pressure.toString(), "1"); + } + //1.写入新的告警 + alarmRecordManager.saveData(jobId, "1", alarmLevel, + alarmContent, dataValue, device, + devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); + //2.toDo:向app推送报警消息 + ThreadUtil.excuteMsg(null, alarmContent, busWell == null ? "" : busWell.getWellCode()); + + } else { + alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); + } + //3.清离线 + deviceManager.clearOffline(devCode); + + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + + + public void processAlarmData(JSONObject jsonObject, String devCode) { + JSONArray jsonArray = jsonObject.getJSONArray("eventType"); + String logtime = jsonObject.getString("logTime"); + for (int i = 0; i < jsonArray.size(); i++) { + try { + //1.清除同类型的报警信息 + alarmRecordManager.clearAlarm(devCode, "2", + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); + //2.写入新的报警 + Device device = deviceManager.getDeviceByDevCode(devCode); + if (null == device) return;//没注册设备舍弃 + BusWell busWell = busWellManager.getWellByDevCode(devCode); + alarmRecordManager.saveData(null, "2", null, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), + String.valueOf(KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), + device, devCode, null != busWell ? busWell.getWellCode() : "", logtime, + KadAlarmEnum.valueOf(jsonArray.get(i).toString()).getName()); + } catch (IOException e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",存储报警数据:" + jsonArray.get(i).toString() + "失败-------"); + } + } + } + +} diff --git a/src/main/java/org/well/well/resp/CommercialGasResponse.java b/src/main/java/org/well/well/resp/CommercialGasResponse.java new file mode 100644 index 0000000..bda095f --- /dev/null +++ b/src/main/java/org/well/well/resp/CommercialGasResponse.java @@ -0,0 +1,57 @@ +package org.well.well.resp; + +import net.sf.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.context.support.ClassPathXmlApplicationContext; +import org.well.well.base.AbstractResponse; +import org.well.well.base.DeviceTypeEnum; +import org.well.well.manager.CommercialGasManager; +import org.well.well.manager.DeviceConfigManager; +import org.well.well.manager.ImeiManager; +import org.well.well.manager.PressureManager; + +/** + * 商务燃气接受处理响应 + */ +public class CommercialGasResponse extends AbstractResponse { + private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); + private static final String[] mType = {"Data", "Event", "SetResponse", "GetResponse", "StartupRequest"}; + + @Override + public void run() { + ClassPathXmlApplicationContext ac = this.getAc(); + CommercialGasManager gasManager = ac.getBean(CommercialGasManager.class); + DeviceConfigManager deviceConfigManager = ac.getBean(DeviceConfigManager.class); + ImeiManager imeiManager = ac.getBean(ImeiManager.class); + JSONObject json = JSONObject.fromObject(this.getContent()); + String devCode = json.getString("devCode"); + JSONObject jsonObject = json.getJSONObject("mBody"); + if (mType[0].equals(json.get("mType")) || mType[3].equals(json.get("mType"))) {//存储上报数据 + gasManager.processNormalData(jsonObject, devCode); + } else if (mType[1].equals(json.get("mType"))) {//存储报警事件 + gasManager.processAlarmData(jsonObject, devCode); + } else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态 + try { + //下发配置回填数据 + if (DeviceTypeEnum.Pressure.name().equals(json.get("devType"))) { + if ("GasConfigSuccess".equals(jsonObject.get("bType"))) { + deviceConfigManager.updateStatus(devCode); + } + } + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } else if (mType[4].equals(json.get("mType"))) {//三码存储 + try { + String imei = jsonObject.get("imei").toString(); + String iccid = jsonObject.get("iccid").toString(); + imeiManager.saveData(devCode, imei, iccid); + } catch (Exception e) { + e.printStackTrace(); + logger.error("--------ERROR:设备编号:" + devCode + ",更新参数下发状态失败-------"); + } + } + } +} diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java index 9541f50..7b5f4f3 100644 --- a/src/main/java/org/well/well/util/ResponseResolver.java +++ b/src/main/java/org/well/well/util/ResponseResolver.java @@ -31,7 +31,7 @@ abstractResponseHashMap.put(DeviceTypeEnum.Tube.name(), new TubeResponse()); abstractResponseHashMap.put(DeviceTypeEnum.WellPlus.name(), new WellPlusResponse()); abstractResponseHashMap.put(DeviceTypeEnum.HydrogenSulfide.name(), new H2SResponse()); - abstractResponseHashMap.put(DeviceTypeEnum.GasDetector.name(), new H2SResponse()); + abstractResponseHashMap.put(DeviceTypeEnum.GasDetector.name(), new CommercialGasResponse()); abstractResponseHashMap.put(DeviceTypeEnum.Pressure.name(), new PressureResponse()); } diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 24f5b11..6acc0e8 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -172,7 +172,7 @@ bootstrap.servers = 111.198.10.15:12502 kafka.topic = pressure -bootstrap.groupid = 2 +bootstrap.groupid = 0 # ============================================================================ # 告警、工单推送地址