diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java
index db75b71..bbb0a03 100644
--- a/src/main/java/org/well/well/resp/NoiseDigResponse.java
+++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java
@@ -33,7 +33,7 @@
noiseDigManager.processAlarmData(jsonObject,devCode);
} else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
try {
- if (DeviceTypeEnum.Dig.name().equals(json.get("devType"))) {
+ if (DeviceTypeEnum.NoiseDig.name().equals(json.get("devType"))) {
if ("NoiseDigConfigSuccess".equals(jsonObject.get("bType"))) {
deviceConfigManager.updateStatus(devCode);
}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java
index db75b71..bbb0a03 100644
--- a/src/main/java/org/well/well/resp/NoiseDigResponse.java
+++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java
@@ -33,7 +33,7 @@
noiseDigManager.processAlarmData(jsonObject,devCode);
} else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
try {
- if (DeviceTypeEnum.Dig.name().equals(json.get("devType"))) {
+ if (DeviceTypeEnum.NoiseDig.name().equals(json.get("devType"))) {
if ("NoiseDigConfigSuccess".equals(jsonObject.get("bType"))) {
deviceConfigManager.updateStatus(devCode);
}
diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java
index b2863d0..7f7626d 100644
--- a/src/main/java/org/well/well/util/ResponseResolver.java
+++ b/src/main/java/org/well/well/util/ResponseResolver.java
@@ -25,7 +25,7 @@
abstractResponseHashMap.put(DeviceTypeEnum.WasteGas.name(), new WasteGasResponse());
abstractResponseHashMap.put(DeviceTypeEnum.TempHumi.name(), new TempHumiResponse());
// abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
- abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
+ abstractResponseHashMap.put(DeviceTypeEnum.NoiseDig.name(), new NoiseDigResponse());
abstractResponseHashMap.put(DeviceTypeEnum.Locator.name(), new LocatorResponse());
}
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java
index db75b71..bbb0a03 100644
--- a/src/main/java/org/well/well/resp/NoiseDigResponse.java
+++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java
@@ -33,7 +33,7 @@
noiseDigManager.processAlarmData(jsonObject,devCode);
} else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
try {
- if (DeviceTypeEnum.Dig.name().equals(json.get("devType"))) {
+ if (DeviceTypeEnum.NoiseDig.name().equals(json.get("devType"))) {
if ("NoiseDigConfigSuccess".equals(jsonObject.get("bType"))) {
deviceConfigManager.updateStatus(devCode);
}
diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java
index b2863d0..7f7626d 100644
--- a/src/main/java/org/well/well/util/ResponseResolver.java
+++ b/src/main/java/org/well/well/util/ResponseResolver.java
@@ -25,7 +25,7 @@
abstractResponseHashMap.put(DeviceTypeEnum.WasteGas.name(), new WasteGasResponse());
abstractResponseHashMap.put(DeviceTypeEnum.TempHumi.name(), new TempHumiResponse());
// abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
- abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
+ abstractResponseHashMap.put(DeviceTypeEnum.NoiseDig.name(), new NoiseDigResponse());
abstractResponseHashMap.put(DeviceTypeEnum.Locator.name(), new LocatorResponse());
}
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index cb489db..4d52e37 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -153,4 +153,13 @@
# ============================================================================
gt.appId = qQqFtTBrUa7SGLjntUlpT4
gt.appKey = GNjHLiqJkD6OoeZbtbdfi5
-gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
\ No newline at end of file
+gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
+
+# ============================================================================
+# ACTIVEMQ配置
+# ============================================================================
+activemq_url = tcp://192.168.0.203:61616
+activemq_username =
+activemq_password =
+
+
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java
index db75b71..bbb0a03 100644
--- a/src/main/java/org/well/well/resp/NoiseDigResponse.java
+++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java
@@ -33,7 +33,7 @@
noiseDigManager.processAlarmData(jsonObject,devCode);
} else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
try {
- if (DeviceTypeEnum.Dig.name().equals(json.get("devType"))) {
+ if (DeviceTypeEnum.NoiseDig.name().equals(json.get("devType"))) {
if ("NoiseDigConfigSuccess".equals(jsonObject.get("bType"))) {
deviceConfigManager.updateStatus(devCode);
}
diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java
index b2863d0..7f7626d 100644
--- a/src/main/java/org/well/well/util/ResponseResolver.java
+++ b/src/main/java/org/well/well/util/ResponseResolver.java
@@ -25,7 +25,7 @@
abstractResponseHashMap.put(DeviceTypeEnum.WasteGas.name(), new WasteGasResponse());
abstractResponseHashMap.put(DeviceTypeEnum.TempHumi.name(), new TempHumiResponse());
// abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
- abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
+ abstractResponseHashMap.put(DeviceTypeEnum.NoiseDig.name(), new NoiseDigResponse());
abstractResponseHashMap.put(DeviceTypeEnum.Locator.name(), new LocatorResponse());
}
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index cb489db..4d52e37 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -153,4 +153,13 @@
# ============================================================================
gt.appId = qQqFtTBrUa7SGLjntUlpT4
gt.appKey = GNjHLiqJkD6OoeZbtbdfi5
-gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
\ No newline at end of file
+gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
+
+# ============================================================================
+# ACTIVEMQ配置
+# ============================================================================
+activemq_url = tcp://192.168.0.203:61616
+activemq_username =
+activemq_password =
+
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
new file mode 100644
index 0000000..b5e0991
--- /dev/null
+++ b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hjt.msg.queue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pom.xml b/pom.xml
index 91475cb..a806efa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -49,14 +49,14 @@
-
-
+
+
-
-
-
+
+
+
@@ -242,6 +242,25 @@
2.7.6
-
+
+ org.apache.activemq
+ activemq-spring
+ 5.14.5
+
+
+ commons-httpclient
+ commons-httpclient
+ 3.1
+
+
+ com.alibaba
+ fastjson
+ 1.1.15
+
+
+ org.springframework
+ spring-jms
+ 3.2.8.RELEASE
+
\ No newline at end of file
diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java
index 371ab51..31461c9 100644
--- a/src/main/java/org/well/mysql/sink/WellSink.java
+++ b/src/main/java/org/well/mysql/sink/WellSink.java
@@ -129,7 +129,7 @@
// 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}";
-// temp="{\"mType\":\"Data\",\"devType\":\"Dig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
+ temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"61201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"noiseVal\":84.7926,\"noiseFreq\":1421,\"uptime\":\"20191017141000\"},{\"noiseVal\":48.1797,\"noiseFreq\":212,\"uptime\":\"20190822141300\"},{\"noiseVal\":33.1398,\"noiseFreq\":553,\"uptime\":\"20190822141600\"},{\"noiseVal\":31.533299999999997,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":2.99591,\"noiseFreq\":1545,\"uptime\":\"20191017142200\"}],\"logTime\":\"20190822141337\",\"bType\":\"NoiseDigData\"},\"ts\":1566454417130}";
// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"21201900001\",\"mBody\":{\"datas\":[{\"CO\":60,\"O2\":25,\"H2S\":15,\"CH4\":7,\"liquidSwitch\":true,\"uptime\":\"20191018163319\"}],\"logTime\":\"20191018151844\",\"bType\":\"WasteGasData\"},\"ts\":1571296724288}";
// temp="{\"mType\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":55.1,\"humidity\":26.7,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}";
// temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}";
diff --git a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
index 32a329c..3b50d4c 100644
--- a/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
+++ b/src/main/java/org/well/well/AlarmEnumDTO/DigAlarmEnum.java
@@ -1,48 +1,48 @@
-package org.well.well.AlarmEnumDTO;
-
-/**
- * Created by admin on 2017/4/6.
- */
-public enum DigAlarmEnum {
-
-
- DigAlarm("开挖设备报警", 1),
- DigLowBatteryAlarm("开挖低电量报警", 2);
- // 成员变量
- private String name;
- private int index;
-
- // 构造方法
- private DigAlarmEnum(String name, int index) {
- this.name = name;
- this.index = index;
- }
-
- public int getIndex() {
- return this.index;
- }
-
- public String getName() {
- return this.name;
- }
-
- public static DigAlarmEnum getByIndex(String index) {
- try {
- for (DigAlarmEnum temp : values()) {
- if (temp.index == Integer.parseInt(index)) {
- return temp;
- }
- }
- } catch (Exception e) {
- }
- return null;
- }
-
- //覆盖方法
- @Override
- public String toString() {
- return this.name;
- }
-
-
-}
+//package org.well.well.AlarmEnumDTO;
+//
+///**
+// * Created by admin on 2017/4/6.
+// */
+//public enum DigAlarmEnum {
+//
+//
+// DigAlarm("开挖设备报警", 1),
+// DigLowBatteryAlarm("开挖低电量报警", 2);
+// // 成员变量
+// private String name;
+// private int index;
+//
+// // 构造方法
+// private DigAlarmEnum(String name, int index) {
+// this.name = name;
+// this.index = index;
+// }
+//
+// public int getIndex() {
+// return this.index;
+// }
+//
+// public String getName() {
+// return this.name;
+// }
+//
+// public static DigAlarmEnum getByIndex(String index) {
+// try {
+// for (DigAlarmEnum 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/activemq/QueueMessageListener.java b/src/main/java/org/well/well/activemq/QueueMessageListener.java
new file mode 100644
index 0000000..8b77375
--- /dev/null
+++ b/src/main/java/org/well/well/activemq/QueueMessageListener.java
@@ -0,0 +1,34 @@
+package org.well.well.activemq;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.well.well.core.util.MeterDecoderUtil;
+import org.well.well.manager.MeterManager;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+import javax.jms.TextMessage;
+import java.util.Map;
+
+@Component
+public class QueueMessageListener implements MessageListener {
+ private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
+ @Autowired
+ private MeterManager meterManager;
+ public void onMessage(Message message) {
+ try {
+
+ TextMessage tm = (TextMessage)(message);
+ System.out.println(tm.getText());
+ logger.info("**********收到ACTIVEMQ消息:"+tm.getText());
+ Map meterMap= MeterDecoderUtil.decodeStr(tm.getText());
+ meterManager.processMeterData(meterMap);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.info("**********解析ACTIVEMQ消息出错");
+ }
+
+ }
+}
diff --git a/src/main/java/org/well/well/base/DeviceTypeEnum.java b/src/main/java/org/well/well/base/DeviceTypeEnum.java
index 29c5bad..f06802c 100644
--- a/src/main/java/org/well/well/base/DeviceTypeEnum.java
+++ b/src/main/java/org/well/well/base/DeviceTypeEnum.java
@@ -18,8 +18,10 @@
TempHumi("温湿度监测仪", 13),
Concentrator("数据集中器", 14),
Lamphouse("灯箱监测仪", 15),
- Dig("开挖监测仪", 16),
- Locator("井盖定位监测仪", 17);
+// Dig("开挖监测仪", 16),
+ NoiseDig("噪声开挖监测仪", 17),
+ Locator("井盖定位监测仪", 18),
+ Meter("水质监测仪", 19);
// 成员变量
diff --git a/src/main/java/org/well/well/core/util/MeterDecoderUtil.java b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
new file mode 100644
index 0000000..3c49080
--- /dev/null
+++ b/src/main/java/org/well/well/core/util/MeterDecoderUtil.java
@@ -0,0 +1,36 @@
+package org.well.well.core.util;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created by test203 on 2019/5/23.
+ */
+public class MeterDecoderUtil {
+
+
+ public static Map decodeStr(String str) {
+ Map meterMap = new HashMap();
+ meterMap.put("temp",subString(str,"w01010-Rtd=",",w01010-Flag="));
+ meterMap.put("PH",subString(str,"w01001-Rtd=",",w01001-Flag="));
+ meterMap.put("conductivity",subString(str,"w01014-Rtd=", ",w01014-Flag="));
+ meterMap.put("DO",subString(str,"w01009-Rtd=",",w01009-Flag="));
+ meterMap.put("turbidity",subString(str,"w01012-Rtd=",",w01012-Flag="));
+ meterMap.put("COD",subString(str,"w01018-Rtd=",",w01018-Flag="));
+ meterMap.put("AN",subString(str,"w21003-Rtd=",",w21003-Flag="));
+ meterMap.put("TP",subString(str,"w21011-Rtd=",",w21011-Flag="));
+ meterMap.put("TN",subString(str,"w21001-Rtd=",",w21001-Flag="));
+ meterMap.put("devCode",subString(str.substring(str.indexOf("MN=")),"MN=",";"));
+ meterMap.put("DataTime",subString(str.substring(str.indexOf("DataTime=")),"DataTime=",";"));
+ return meterMap;
+ }
+
+
+ public static String subString(String str, String strStart, String strEnd) {
+ int strStartIndex = str.indexOf(strStart);
+ int strEndIndex = str.indexOf(strEnd);
+ return (strStartIndex < 0||strEndIndex < 0)?"":
+ str.substring(strStartIndex, strEndIndex).substring(strStart.length());
+ }
+
+}
diff --git a/src/main/java/org/well/well/core/util/PointConvertUtility.java b/src/main/java/org/well/well/core/util/PointConvertUtility.java
index 088171a..c2da6cc 100644
--- a/src/main/java/org/well/well/core/util/PointConvertUtility.java
+++ b/src/main/java/org/well/well/core/util/PointConvertUtility.java
@@ -2,7 +2,6 @@
import com.alibaba.fastjson.JSONObject;
import com.google.gson.GsonBuilder;
-import io.netty.handler.codec.http.HttpUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/src/main/java/org/well/well/domain/DataMeter.java b/src/main/java/org/well/well/domain/DataMeter.java
new file mode 100644
index 0000000..a11a8aa
--- /dev/null
+++ b/src/main/java/org/well/well/domain/DataMeter.java
@@ -0,0 +1,264 @@
+package org.well.well.domain;
+
+import org.well.well.core.util.DateUtils;
+
+import javax.persistence.*;
+import java.io.Serializable;
+import java.text.ParseException;
+import java.util.Date;
+import java.util.Map;
+
+/**
+ *
+ * 水质监测仪上传数据表
+ *
+ *
+ * @author stylefeng123
+ * @since 2019-10-28
+ */
+@Entity
+@Table(name = "data_meter")
+public class DataMeter implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 主键
+ */
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Column(name = "ID")
+ private Long id;
+ /**
+ * 井编号
+ */
+ @Column(name ="WELL_CODE")
+ private String wellCode;
+ /**
+ * 设备编号
+ */
+ @Column(name ="DEVCODE")
+ private String devcode;
+ /**
+ * 温度
+ */
+ @Column(name ="temp")
+ private String temp;
+ /**
+ * PH
+ */
+ @Column(name ="PH")
+ private String ph;
+ /**
+ * 电导率
+ */
+ @Column(name ="conductivity")
+ private String conductivity;
+ /**
+ * 溶解氧
+ */
+ @Column(name ="DO")
+ private String do2;
+ /**
+ * 浊度
+ */
+ @Column(name ="turbidity")
+ private String turbidity;
+ /**
+ * COD
+ */
+ @Column(name ="COD")
+ private String cod;
+ /**
+ * 氨氮
+ */
+ @Column(name ="AN")
+ private String an;
+ /**
+ * 总磷
+ */
+ @Column(name ="TP")
+ private String tp;
+ /**
+ * 总氮
+ */
+ @Column(name ="TN")
+ private String tn;
+ /**
+ * 状态描述
+ */
+ @Column(name ="DESCN")
+ private String descn;
+ /**
+ * 采集时间
+ */
+ @Column(name ="UPTIME")
+ private Date uptime;
+ /**
+ * 记录时间
+ */
+ @Column(name ="LOGTIME")
+ private Date logtime;
+
+ public Long getId() {
+ return id;
+ }
+
+ public void setId(Long id) {
+ this.id = id;
+ }
+
+ public String getWellCode() {
+ return wellCode;
+ }
+
+ public void setWellCode(String wellCode) {
+ this.wellCode = wellCode;
+ }
+
+ public String getDevcode() {
+ return devcode;
+ }
+
+ public void setDevcode(String devcode) {
+ this.devcode = devcode;
+ }
+
+ public String getTemp() {
+ return temp;
+ }
+
+ public void setTemp(String temp) {
+ this.temp = temp;
+ }
+
+ public String getPh() {
+ return ph;
+ }
+
+ public void setPh(String ph) {
+ this.ph = ph;
+ }
+
+ public String getConductivity() {
+ return conductivity;
+ }
+
+ public void setConductivity(String conductivity) {
+ this.conductivity = conductivity;
+ }
+
+ public String getDo2() {
+ return do2;
+ }
+
+ public void setDo2(String do2) {
+ this.do2 = do2;
+ }
+
+ public String getTurbidity() {
+ return turbidity;
+ }
+
+ public void setTurbidity(String turbidity) {
+ this.turbidity = turbidity;
+ }
+
+ public String getCod() {
+ return cod;
+ }
+
+ public void setCod(String cod) {
+ this.cod = cod;
+ }
+
+ public String getAn() {
+ return an;
+ }
+
+ public void setAn(String an) {
+ this.an = an;
+ }
+
+ public String getTp() {
+ return tp;
+ }
+
+ public void setTp(String tp) {
+ this.tp = tp;
+ }
+
+ public String getTn() {
+ return tn;
+ }
+
+ public void setTn(String tn) {
+ this.tn = tn;
+ }
+
+ public String getDescn() {
+ return descn;
+ }
+
+ public void setDescn(String descn) {
+ this.descn = descn;
+ }
+
+ public Date getUptime() {
+ return uptime;
+ }
+
+ public void setUptime(Date uptime) {
+ this.uptime = uptime;
+ }
+
+ public Date getLogtime() {
+ return logtime;
+ }
+
+ public void setLogtime(Date logtime) {
+ this.logtime = logtime;
+ }
+
+
+ @Override
+ public String toString() {
+ return "DataMeter{" +
+ "id=" + id +
+ ", wellCode=" + wellCode +
+ ", devcode=" + devcode +
+ ", temp=" + temp +
+ ", ph=" + ph +
+ ", conductivity=" + conductivity +
+ ", do=" + do2+
+ ", turbidity=" + turbidity +
+ ", cod=" + cod +
+ ", an=" + an +
+ ", tp=" + tp +
+ ", tn=" + tn +
+ ", descn=" + descn +
+ ", uptime=" + uptime +
+ ", logtime=" + logtime +
+ "}";
+ }
+
+ public DataMeter(Map meterMap,String wellCode) {
+ this.devcode=(meterMap.get("devCode"));
+ this.logtime=(new Date());
+ try {
+ this.uptime=(DateUtils.sdf4.parse(DateUtils.DateFormat(meterMap.get("DataTime"))));
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ this.temp=(meterMap.get("temp"));
+ this.ph=(meterMap.get("PH"));
+ this.conductivity=(meterMap.get("conductivity"));
+ this.do2=(meterMap.get("DO"));
+ this.cod=(meterMap.get("COD"));
+ this.turbidity=(meterMap.get("turbidity"));
+ this.an=(meterMap.get("AN"));
+ this.tp=(meterMap.get("TP"));
+ this.tn=(meterMap.get("TN"));
+ this.wellCode=wellCode;
+ }
+}
diff --git a/src/main/java/org/well/well/manager/AlarmJobManager.java b/src/main/java/org/well/well/manager/AlarmJobManager.java
index 8b9114a..1a74d4e 100644
--- a/src/main/java/org/well/well/manager/AlarmJobManager.java
+++ b/src/main/java/org/well/well/manager/AlarmJobManager.java
@@ -26,9 +26,10 @@
deviceAlarmMap.put(DeviceTypeEnum.Liquid.toString(), "YWCX");
deviceAlarmMap.put(DeviceTypeEnum.Well.toString(), "JGKQ");
deviceAlarmMap.put(DeviceTypeEnum.Methane.toString(), "RQCX");
- deviceAlarmMap.put(DeviceTypeEnum.Dig.toString(), "KWCX");
+ deviceAlarmMap.put(DeviceTypeEnum.NoiseDig.toString(), "KWCX");
deviceAlarmMap.put(DeviceTypeEnum.WasteGas.toString(), "YHCX");
deviceAlarmMap.put(DeviceTypeEnum.TempHumi.toString(), "WSCX");
+ deviceAlarmMap.put(DeviceTypeEnum.Meter.toString(), "SZCX");
}
public Criteria getCriteria() {
diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java
index db931d2..97f91e1 100644
--- a/src/main/java/org/well/well/manager/AlarmRuleManager.java
+++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java
@@ -60,7 +60,7 @@
if (null != alarmRule) {
ruleStr = String.valueOf(alarmRule.getHighValue());
}
- } else if (DeviceTypeEnum.Dig.toString().equals(devTypeName)) {
+ } else if (DeviceTypeEnum.NoiseDig.toString().equals(devTypeName)) {
// SensorType sensorType = sensorTypeManager.get("000064");
alarmRule = findRuleByDevAndSensor(devCode, null);
if (null != alarmRule) {
diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java
index e939c23..9ae68d2 100644
--- a/src/main/java/org/well/well/manager/DeviceManager.java
+++ b/src/main/java/org/well/well/manager/DeviceManager.java
@@ -113,7 +113,7 @@
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
findDeviceDataInSevenDays(device, sql);
- } else if (devTypeName.equals(DeviceTypeEnum.Dig.toString())) {
+ } else if (devTypeName.equals(DeviceTypeEnum.NoiseDig.toString())) {
sql = "select * from data_dig " +
" where date_format(UPTIME,'%Y-%m-%d')>=:beg and" +
" DEVCODE=:devCode";
diff --git a/src/main/java/org/well/well/manager/LocatorManager.java b/src/main/java/org/well/well/manager/LocatorManager.java
index 8953d01..25698f0 100644
--- a/src/main/java/org/well/well/manager/LocatorManager.java
+++ b/src/main/java/org/well/well/manager/LocatorManager.java
@@ -8,7 +8,6 @@
import org.springframework.stereotype.Service;
import org.well.well.core.hibernate.HibernateEntityDao;
import org.well.well.core.util.DecimalUtils;
-import org.well.well.core.util.PointConvertUtility;
import org.well.well.core.util.StringUtils;
import org.well.well.domain.BusWell;
import org.well.well.domain.Locator;
diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java
new file mode 100644
index 0000000..452bfdf
--- /dev/null
+++ b/src/main/java/org/well/well/manager/MeterManager.java
@@ -0,0 +1,110 @@
+package org.well.well.manager;
+
+import org.springframework.stereotype.Service;
+import org.well.well.base.DeviceTypeEnum;
+import org.well.well.core.hibernate.HibernateEntityDao;
+import org.well.well.core.util.StringUtils;
+import org.well.well.domain.*;
+
+import javax.annotation.Resource;
+import java.util.Map;
+
+@Service
+public class MeterManager extends HibernateEntityDao {
+ @Resource
+ private DeviceManager deviceManager;
+ @Resource
+ private AlarmRecordManager alarmRecordManager;
+ @Resource
+ BusWellManager busWellManager;
+ @Resource
+ AlarmJobManager alarmJobManager;
+
+ public void processMeterData(Map meterMap){
+ try {
+ String devCode=meterMap.get("devCode");
+ //1.清离线
+ deviceManager.clearOffline(devCode);
+
+ BusWell busWell = busWellManager.getWellByDevCode(devCode);
+ //2.存数据
+ save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode()));
+ //3.有无超限
+ String alarmContent = "", alarmValue = "";
+ if(StringUtils.isNotBlank(meterMap.get("temp"))&&Float.valueOf(meterMap.get("temp"))>60){
+ alarmContent+="温度超限报警,";
+ alarmValue+="温度:" + meterMap.get("temp") + "℃,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("PH"))&&(Float.valueOf(meterMap.get("PH"))>10||
+ Float.valueOf(meterMap.get("PH"))<6)){
+ alarmContent+="PH值超限报警,";
+ alarmValue+="PH:" + meterMap.get("PH") + ",";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("conductivity"))&&
+ Float.valueOf(meterMap.get("conductivity"))>5){
+ alarmContent+="电导率超限报警,";
+ alarmValue+="电导率:" + meterMap.get("conductivity") + "mS/cm,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("DO"))&&Float.valueOf(meterMap.get("DO"))>20){
+ alarmContent+="溶解氧超限报警,";
+ alarmValue+="溶解氧:" + meterMap.get("DO") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("turbidity"))&&Float.valueOf(meterMap.get("turbidity"))>1000){
+ alarmContent+="浊度超限报警,";
+ alarmValue+="浊度:" + meterMap.get("turbidity") + "NTU,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("COD"))&&Float.valueOf(meterMap.get("COD"))>500){
+ alarmContent+="化学需氧量超限报警,";
+ alarmValue+="化学需氧量:" + meterMap.get("COD") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("AN"))&&Float.valueOf(meterMap.get("AN"))>20){
+ alarmContent+="氨氮超限报警,";
+ alarmValue+="氨氮:" + meterMap.get("AN") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TP"))&&Float.valueOf(meterMap.get("TP"))>15){
+ alarmContent+="总磷超限报警,";
+ alarmValue+="总磷:" + meterMap.get("TP") + "mg/L,";
+ }
+ if(StringUtils.isNotBlank(meterMap.get("TN"))&&Float.valueOf(meterMap.get("TN"))>30){
+ alarmContent+="总氮超限报警,";
+ alarmValue+="总氮:" + meterMap.get("TN") + "mg/L,";
+ }
+ if (StringUtils.isNotBlank(alarmContent)) {
+ AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
+ if (null != alarmRecord) {//已存在报警
+ //1.清除上一条告警记录
+ alarmRecordManager.clearAlarm(devCode, "1", "");
+ //2.写入新的告警记录,更新工单号为上一条告警记录的工单号
+ alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), alarmRecord.getDevice(), devCode,
+ alarmRecord.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+ } else {//不存在上一条报警时
+ Device device = deviceManager.getDeviceByDevCode(devCode);
+ if (device == null) return;//未注册设备舍弃
+ //1.生成新的工单
+ AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
+ busWell.getWellCode() : "", DeviceTypeEnum.Meter.toString(),"1");
+ //2.写入新的告警
+ alarmRecordManager.saveData(alarmJob.getId(), "1", null,
+ "水质超限告警",
+ alarmValue.substring(0, alarmValue.length() - 1), device,
+ devCode, alarmJob.getWellCode(), meterMap.get("DataTime"),
+ alarmContent.substring(0, alarmContent.length() - 1));
+// //3.toDo:向app推送报警消息
+// List cids = userManager.getClients(busWell);
+// if (cids.size() > 0)
+// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理");
+ }
+ } else {//未超限
+ //1.清除之前的报警
+ alarmRecordManager.clearAlarmByNormalData(devCode, "1");
+ //2.结束之前的工单
+ alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单");
+ }
+ }catch (Exception e){
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java
index 2b2c4e2..6a98704 100644
--- a/src/main/java/org/well/well/manager/NoiseDigManager.java
+++ b/src/main/java/org/well/well/manager/NoiseDigManager.java
@@ -6,14 +6,12 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
-import org.well.well.AlarmEnumDTO.LiquidAlarmEnum;
import org.well.well.AlarmEnumDTO.NoiseDigAlarmEnum;
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.domain.*;
-import org.well.well.util.PushList;
import javax.annotation.Resource;
import java.io.IOException;
@@ -69,7 +67,7 @@
//3.存数据
saveData(devCode,busWell==null?"":busWell.getWellCode(), cell, upTime, freq, val); //4.有无超限处理流程(判断最后一条数据) saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime);//存储采集数据
if (i < jsonArray.size() - 1) continue;
- String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Dig.toString());//获取报警阈值
+ String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.NoiseDig.toString());//获取报警阈值
if ( StringUtils.isNotBlank(thresh) &&
Double.valueOf(val) > Double.valueOf(thresh) * constant) {
AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode);
@@ -105,7 +103,7 @@
if (device == null) return;//未注册设备舍弃
//1.生成新的工单
AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"1");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"1");
//2.写入新的告警
alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel,
alarmContent, val, device,
@@ -147,7 +145,7 @@
AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0");
if (null == alarmJob) {
alarmJob = alarmJobManager.saveData(devCode, busWell != null ?
- busWell.getWellCode() : "", DeviceTypeEnum.Dig.toString(),"0");
+ busWell.getWellCode() : "", DeviceTypeEnum.NoiseDig.toString(),"0");
}
alarmRecordManager.saveData(alarmJob.getId(), "2",null,
NoiseDigAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(),
diff --git a/src/main/java/org/well/well/resp/NoiseDigResponse.java b/src/main/java/org/well/well/resp/NoiseDigResponse.java
index db75b71..bbb0a03 100644
--- a/src/main/java/org/well/well/resp/NoiseDigResponse.java
+++ b/src/main/java/org/well/well/resp/NoiseDigResponse.java
@@ -33,7 +33,7 @@
noiseDigManager.processAlarmData(jsonObject,devCode);
} else if (mType[2].equals(json.get("mType"))) {//更新下发参数状态
try {
- if (DeviceTypeEnum.Dig.name().equals(json.get("devType"))) {
+ if (DeviceTypeEnum.NoiseDig.name().equals(json.get("devType"))) {
if ("NoiseDigConfigSuccess".equals(jsonObject.get("bType"))) {
deviceConfigManager.updateStatus(devCode);
}
diff --git a/src/main/java/org/well/well/util/ResponseResolver.java b/src/main/java/org/well/well/util/ResponseResolver.java
index b2863d0..7f7626d 100644
--- a/src/main/java/org/well/well/util/ResponseResolver.java
+++ b/src/main/java/org/well/well/util/ResponseResolver.java
@@ -25,7 +25,7 @@
abstractResponseHashMap.put(DeviceTypeEnum.WasteGas.name(), new WasteGasResponse());
abstractResponseHashMap.put(DeviceTypeEnum.TempHumi.name(), new TempHumiResponse());
// abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
- abstractResponseHashMap.put(DeviceTypeEnum.Dig.name(), new NoiseDigResponse());
+ abstractResponseHashMap.put(DeviceTypeEnum.NoiseDig.name(), new NoiseDigResponse());
abstractResponseHashMap.put(DeviceTypeEnum.Locator.name(), new LocatorResponse());
}
diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties
index cb489db..4d52e37 100644
--- a/src/main/resources/wellSensor/application.properties
+++ b/src/main/resources/wellSensor/application.properties
@@ -153,4 +153,13 @@
# ============================================================================
gt.appId = qQqFtTBrUa7SGLjntUlpT4
gt.appKey = GNjHLiqJkD6OoeZbtbdfi5
-gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
\ No newline at end of file
+gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
+
+# ============================================================================
+# ACTIVEMQ配置
+# ============================================================================
+activemq_url = tcp://192.168.0.203:61616
+activemq_username =
+activemq_password =
+
+
diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
new file mode 100644
index 0000000..b5e0991
--- /dev/null
+++ b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml
@@ -0,0 +1,67 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ hjt.msg.queue
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/target/classes/wellSensor/application.properties b/target/classes/wellSensor/application.properties
index cb489db..4d52e37 100644
--- a/target/classes/wellSensor/application.properties
+++ b/target/classes/wellSensor/application.properties
@@ -153,4 +153,13 @@
# ============================================================================
gt.appId = qQqFtTBrUa7SGLjntUlpT4
gt.appKey = GNjHLiqJkD6OoeZbtbdfi5
-gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
\ No newline at end of file
+gt.masterSecret = TZRYQknkxLAJ58uH56PeS6
+
+# ============================================================================
+# ACTIVEMQ配置
+# ============================================================================
+activemq_url = tcp://192.168.0.203:61616
+activemq_username =
+activemq_password =
+
+