diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index d29f89c..bccb1c6 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.well.well.AlarmEnumDTO.TempHumiAlarmEnum; +import org.well.well.AlarmEnumDTO.WasteGasAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,9 +65,10 @@ for (int i = 0; i < jsonArray.size(); i++) { try { String temperature = null != ((JSONObject) jsonArray.get(i)).get("temperature") ? - ((JSONObject) jsonArray.get(i)).get("temperature").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("temperature").toString()))) : ""; + String humidity = null != ((JSONObject) jsonArray.get(i)).get("humidity") ? - ((JSONObject) jsonArray.get(i)).get("humidity").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("humidity").toString()))) : ""; String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 deviceManager.clearOffline(devCode); @@ -151,6 +154,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), TempHumiAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index d29f89c..bccb1c6 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.well.well.AlarmEnumDTO.TempHumiAlarmEnum; +import org.well.well.AlarmEnumDTO.WasteGasAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,9 +65,10 @@ for (int i = 0; i < jsonArray.size(); i++) { try { String temperature = null != ((JSONObject) jsonArray.get(i)).get("temperature") ? - ((JSONObject) jsonArray.get(i)).get("temperature").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("temperature").toString()))) : ""; + String humidity = null != ((JSONObject) jsonArray.get(i)).get("humidity") ? - ((JSONObject) jsonArray.get(i)).get("humidity").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("humidity").toString()))) : ""; String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 deviceManager.clearOffline(devCode); @@ -151,6 +154,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), TempHumiAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 8e261fb..7cdf037 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -11,6 +11,7 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -157,6 +158,10 @@ String O2 = ((JSONObject) jsonArray.get(i)).get("O2").toString(); String H2S = ((JSONObject) jsonArray.get(i)).get("H2S").toString(); String CH4 = ((JSONObject) jsonArray.get(i)).get("CH4").toString(); + CO=String.format("%.2f", Double.valueOf(CO)); + O2=String.format("%.2f", Double.valueOf(O2)); + H2S=String.format("%.2f", Double.valueOf(H2S)); + CH4=String.format("%.2f", Double.valueOf(CH4)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); Boolean isOpen = Boolean.valueOf(((JSONObject) jsonArray.get(i)).get("liquidSwitch").toString()); //1.清离线 @@ -200,6 +205,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), WasteGasAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index d29f89c..bccb1c6 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.well.well.AlarmEnumDTO.TempHumiAlarmEnum; +import org.well.well.AlarmEnumDTO.WasteGasAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,9 +65,10 @@ for (int i = 0; i < jsonArray.size(); i++) { try { String temperature = null != ((JSONObject) jsonArray.get(i)).get("temperature") ? - ((JSONObject) jsonArray.get(i)).get("temperature").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("temperature").toString()))) : ""; + String humidity = null != ((JSONObject) jsonArray.get(i)).get("humidity") ? - ((JSONObject) jsonArray.get(i)).get("humidity").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("humidity").toString()))) : ""; String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 deviceManager.clearOffline(devCode); @@ -151,6 +154,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), TempHumiAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 8e261fb..7cdf037 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -11,6 +11,7 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -157,6 +158,10 @@ String O2 = ((JSONObject) jsonArray.get(i)).get("O2").toString(); String H2S = ((JSONObject) jsonArray.get(i)).get("H2S").toString(); String CH4 = ((JSONObject) jsonArray.get(i)).get("CH4").toString(); + CO=String.format("%.2f", Double.valueOf(CO)); + O2=String.format("%.2f", Double.valueOf(O2)); + H2S=String.format("%.2f", Double.valueOf(H2S)); + CH4=String.format("%.2f", Double.valueOf(CH4)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); Boolean isOpen = Boolean.valueOf(((JSONObject) jsonArray.get(i)).get("liquidSwitch").toString()); //1.清离线 @@ -200,6 +205,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), WasteGasAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 11ff839..3699d15 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -9,13 +9,12 @@ import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; -import org.well.well.util.PushList; import javax.annotation.Resource; import java.io.IOException; import java.util.HashMap; -import java.util.List; import java.util.Map; @Service @@ -32,13 +31,13 @@ private UserManager userManager; private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); - public Map saveData(String devCode,String wellCode, - String desc, String status){ + public Map saveData(String devCode, String wellCode, + String desc, String status) { Map resultMap = new HashMap(); try { - Well well = new Well(devCode,wellCode, desc, status); + Well well = new Well(devCode, wellCode, desc, status); save(well); } catch (Exception e) { e.printStackTrace(); @@ -58,7 +57,7 @@ //2.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 } catch (Exception e) { @@ -77,7 +76,7 @@ //1.清离线 deviceManager.clearOffline(devCode); //2.存入数据表 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); //3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警) @@ -92,27 +91,28 @@ alarmRecordManager.clearAlarm(devCode, "1", String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex())); //写入新的报警 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",null, + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); } else { Device device = deviceManager.getDeviceByDevCode(devCode); - if(device==null) return; //没注册舍弃 + if (device == null) return; //没注册舍弃 //生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"1"); + DeviceTypeEnum.Well.toString(), "1"); - alarmRecordManager.saveData(alarmJob.getId(), "1",null, + alarmRecordManager.saveData(alarmJob.getId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, devCode, alarmJob.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); //toDo:向app推送报警消息 - List cids= userManager.getClients(busWell); - if(cids.size()>0) - PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); +// List cids = userManager.getClients(busWell); +// if (cids.size() > 0) +// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName()); } } } @@ -125,12 +125,12 @@ //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"0"); + alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), + DeviceTypeEnum.Well.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index d29f89c..bccb1c6 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.well.well.AlarmEnumDTO.TempHumiAlarmEnum; +import org.well.well.AlarmEnumDTO.WasteGasAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,9 +65,10 @@ for (int i = 0; i < jsonArray.size(); i++) { try { String temperature = null != ((JSONObject) jsonArray.get(i)).get("temperature") ? - ((JSONObject) jsonArray.get(i)).get("temperature").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("temperature").toString()))) : ""; + String humidity = null != ((JSONObject) jsonArray.get(i)).get("humidity") ? - ((JSONObject) jsonArray.get(i)).get("humidity").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("humidity").toString()))) : ""; String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 deviceManager.clearOffline(devCode); @@ -151,6 +154,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), TempHumiAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 8e261fb..7cdf037 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -11,6 +11,7 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -157,6 +158,10 @@ String O2 = ((JSONObject) jsonArray.get(i)).get("O2").toString(); String H2S = ((JSONObject) jsonArray.get(i)).get("H2S").toString(); String CH4 = ((JSONObject) jsonArray.get(i)).get("CH4").toString(); + CO=String.format("%.2f", Double.valueOf(CO)); + O2=String.format("%.2f", Double.valueOf(O2)); + H2S=String.format("%.2f", Double.valueOf(H2S)); + CH4=String.format("%.2f", Double.valueOf(CH4)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); Boolean isOpen = Boolean.valueOf(((JSONObject) jsonArray.get(i)).get("liquidSwitch").toString()); //1.清离线 @@ -200,6 +205,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), WasteGasAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 11ff839..3699d15 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -9,13 +9,12 @@ import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; -import org.well.well.util.PushList; import javax.annotation.Resource; import java.io.IOException; import java.util.HashMap; -import java.util.List; import java.util.Map; @Service @@ -32,13 +31,13 @@ private UserManager userManager; private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); - public Map saveData(String devCode,String wellCode, - String desc, String status){ + public Map saveData(String devCode, String wellCode, + String desc, String status) { Map resultMap = new HashMap(); try { - Well well = new Well(devCode,wellCode, desc, status); + Well well = new Well(devCode, wellCode, desc, status); save(well); } catch (Exception e) { e.printStackTrace(); @@ -58,7 +57,7 @@ //2.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 } catch (Exception e) { @@ -77,7 +76,7 @@ //1.清离线 deviceManager.clearOffline(devCode); //2.存入数据表 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); //3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警) @@ -92,27 +91,28 @@ alarmRecordManager.clearAlarm(devCode, "1", String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex())); //写入新的报警 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",null, + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); } else { Device device = deviceManager.getDeviceByDevCode(devCode); - if(device==null) return; //没注册舍弃 + if (device == null) return; //没注册舍弃 //生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"1"); + DeviceTypeEnum.Well.toString(), "1"); - alarmRecordManager.saveData(alarmJob.getId(), "1",null, + alarmRecordManager.saveData(alarmJob.getId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, devCode, alarmJob.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); //toDo:向app推送报警消息 - List cids= userManager.getClients(busWell); - if(cids.size()>0) - PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); +// List cids = userManager.getClients(busWell); +// if (cids.size() > 0) +// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName()); } } } @@ -125,12 +125,12 @@ //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"0"); + alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), + DeviceTypeEnum.Well.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 4d52e37..b942812 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -20,7 +20,7 @@ #db.default.username=sensor #db.default.password=sensor db.default.driverClassName=com.mysql.jdbc.Driver -db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell?useUnicode=true&characterEncoding=UTF-8&useSSL=false +db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell_yizhuang?useUnicode=true&characterEncoding=UTF-8&useSSL=false db.default.username=root db.default.password=root ### ============================================================================ @@ -163,3 +163,9 @@ activemq_password = +# ============================================================================ +# 告警、工单推送地址 +# ============================================================================ +sendURL = http://119.254.103.80:14537/job/updateSinkJob + + diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 31461c9..e36e0b5 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -125,18 +125,24 @@ // temp="{\"mType\":\"Event\",\"devType\":\"Concentrator\",\"devCode\":\"00003\",\"mBody\":{\"logTime\":\"20190605002024\",\"bType\":\"ConcentratorOnline\"},\"ts\":1559665224343}"; temp="{\"mType\":\"Data\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"datas\":[{\"value\":\"00\",\"uptime\":\"20190605000000\"}],\"logTime\":\"201906010003002\",\"bType\":\"WellData\"},\"ts\":1559665802828}"; - temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.12,\"uptime\":\"20190502000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; + temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"cell\":9.9,\"datas\":[{\"level\":1.1892,\"uptime\":\"20191213000000\"}],\"logTime\":\"20190502000125\",\"bType\":\"LiquidData\"},\"ts\":1556726485336}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidPressureError\"],\"logTime\":\"20190510134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Event\",\"devType\":\"Well\",\"devCode\":\"412019010212\",\"mBody\":{\"eventType\":[\"WellLowBatteryAlarm\"],\"logTime\":\"20190624114710\",\"bType\":\"WellEvent\"},\"ts\":1560484030810}"; - temp="{\"mType\":\"Data\",\"devType\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; - 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\":\"Locator\",\"devCode\":\"71201900001\",\"mBody\":{\"datas\":[{\"longitude\":126.243324343,\"latitude\":39.2546546546,\"uptime\":\"20190809140900\"}],\"logTime\":\"20190809141012\",\"bType\":\"LocatorData\"},\"ts\":1565331012453}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"14141414146\",\"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\":0.85,\"noiseFreq\":1049,\"uptime\":\"20190822141900\"},{\"noiseVal\":0.86,\"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\":\"Data\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"cell\":99,\"datas\":[{\"temperature\":.55,\"humidity\":0.2,\"uptime\":\"20191017150000\"}],\"logTime\":\"20191017150225\",\"bType\":\"TempHumiData\"},\"ts\":1571295745881}"; // temp="{\"mType\":\"Event\",\"devType\":\"Liquid\",\"devCode\":\"11201900001\",\"mBody\":{\"eventType\":[\"LiquidUltrasonicError\"],\"logTime\":\"20190710134635\",\"bType\":\"LiquidEvent\"},\"ts\":1557467195358}"; // temp="{\"mType\":\"Data\",\"devType\":\"Methane\",\"devCode\":\"31201900001\",\"mBody\":{\"cell\":95,\"datas\":[{\"gas\":0.064453125,\"uptime\":\"20191017085400\"},{\"gas\":0.080566406,\"uptime\":\"20191017095400\"},{\"gas\":25,\"uptime\":\"20191017105400\"},{\"gas\":0.09990235,\"uptime\":\"20191017115400\"},{\"gas\":0.070898436,\"uptime\":\"20191017125400\"},{\"gas\":26.8701172,\"uptime\":\"20191017135400\"}],\"logTime\":\"20191017140124\",\"bType\":\"MethaneData\"},\"ts\":1571292084960}"; // temp="{\"mType\":\"Event\",\"devType\":\"TempHumi\",\"devCode\":\"51201900001\",\"mBody\":{\"eventType\":[\"TemperatureFail\",\"TemperatureError\",\"HumidityFail\",\"HumidityError\"],\"logTime\":\"20191021140118\",\"bType\":\"TempHumiEvent\"},\"ts\":1571292078959}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"NoiseDig\",\"devCode\":\"88888888881\",\"mBody\":{\"bType\":\"NoiseDigConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"WasteGas\",\"devCode\":\"08888888885\",\"mBody\":{\"bType\":\"WasteGasData\",\"datas\":[{\"CO\":0,\"O2\":1.1,\"H2S\":10000,\"CH4\":10000,\"liquidSwitch\":true,\"uptime\":\"20191217165124\"}],\"logTime\":\"20191217165124\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":98,\"datas\":[{\"level\":6.73,\"uptime\":\"20191217161000\"},{\"level\":5.72,\"uptime\":\"20191217162000\"},{\"level\":7.71,\"uptime\":\"20191217163000\"}],\"logTime\":\"20191217160000\"},\"ts\":1556186030842}"; +// temp="{\"mType\":\"SetResponse\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidConfigSuccess\"},\"ts\":1556182310514}"; +// temp="{\"mType\":\"Data\",\"devType\":\"Liquid\",\"devCode\":\"12121212125\",\"mBody\":{\"bType\":\"LiquidData\",\"cell\":97,\"datas\":[{\"level\":4,\"uptime\":\"20191219150000\"},{\"level\":4,\"uptime\":\"20191219151000\"},{\"level\":6.5,\"uptime\":\"20191219152000\"}],\"logTime\":\"20191219152000\"},\"ts\":1556186030842}"; + temp="{\"mType\":\"Data\",\"devType\":\"NoiseDig\",\"devCode\":\"13131313136\",\"mBody\":{\"bType\":\"NoiseDigData\",\"cell\":88,\"datas\":[{\"noiseVal\":1.83666,\"noiseFreq\":2040,\"uptime\":\"20191220125700\"}],\"logTime\":\"20191220123131\"},\"ts\":1556184691451}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); resp.process(temp); diff --git a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java index 616d7fe..ed1d6fb 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/NoiseDigAlarmEnum.java @@ -7,9 +7,9 @@ NO_DATA("设备异常", -1), NORMAL("正常", 0), - NoiseDigFail("噪声开挖探头采集失败", 1), - NoiseDigError("噪声开挖探头数据异常", 2), - NoiseDigUnknown("噪声开挖未知异常", 3), + NoiseDigFail("开挖探头采集失败", 1), + NoiseDigError("开挖探头数据异常", 2), + NoiseDigUnknown("开挖未知异常", 3), OVER_THRESH("疑似开挖", 4), OVER_THRESH1("一级疑似开挖", 5), OVER_THRESH2("二级疑似开挖", 6), diff --git a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java index 5eb8e7d..b1ff760 100644 --- a/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java +++ b/src/main/java/org/well/well/AlarmEnumDTO/WellAlarmEnum.java @@ -5,9 +5,9 @@ */ public enum WellAlarmEnum { NO_DATA("设备异常", -1), - NORMAL("状态正常", 0), + NORMAL("心跳", 0), WellOpenAlarm("井盖开盖报警", 1), - WellLowBatteryAlarm("井盖电池电量低报警", 2), + WellLowBatteryAlarm("井盖低电量报警", 2), WellDeviceBadAlarm("井盖设备故障", 3); // WellLDataAlarm("井盖数据异常", 4); diff --git a/src/main/java/org/well/well/core/util/ThreadUtil.java b/src/main/java/org/well/well/core/util/ThreadUtil.java new file mode 100644 index 0000000..79aede1 --- /dev/null +++ b/src/main/java/org/well/well/core/util/ThreadUtil.java @@ -0,0 +1,33 @@ +package org.well.well.core.util; + +import org.well.well.util.Configure; + +import java.io.UnsupportedEncodingException; +import java.net.URLEncoder; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * Created by phantomli on 2016/2/17. + */ +public class ThreadUtil { + public static void excuteMsg(Long id, String msg) throws UnsupportedEncodingException { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final Long jobId = id; + final String alarmMsg = URLEncoder.encode(msg, "UTF-8"); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(Configure.getProperty("sendURL", "") + "?id=" + jobId + + "&msg="+alarmMsg , ""); + Thread.sleep(500); + System.out.println("--------工单和告警推送至web后台成功 " + retMsg + ",工单id:" + jobId); + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------工单和告警推送至web后台失败,工单id:" + jobId); + } + } + }); + } +} diff --git a/src/main/java/org/well/well/domain/Liquid.java b/src/main/java/org/well/well/domain/Liquid.java index 0ede475..b52f4a6 100644 --- a/src/main/java/org/well/well/domain/Liquid.java +++ b/src/main/java/org/well/well/domain/Liquid.java @@ -13,6 +13,7 @@ private static final long serialVersionUID = -6250930880206117358L; private Long dbId; private String devId; + private String wellCode; private String liquidData; private String cell; private Date uptime; @@ -67,6 +68,12 @@ public void setLogtime(Date logtime) { this.logtime = logtime; } - - + @Column(name = "WELL_CODE") + public String getWellCode() { + return wellCode; + } + + public void setWellCode(String wellCode) { + this.wellCode = wellCode; + } } diff --git a/src/main/java/org/well/well/dto/LiquidDTO.java b/src/main/java/org/well/well/dto/LiquidDTO.java index a81e667..83f2ce2 100644 --- a/src/main/java/org/well/well/dto/LiquidDTO.java +++ b/src/main/java/org/well/well/dto/LiquidDTO.java @@ -58,6 +58,6 @@ this.cell = cell; this.uptime = uptime; this.devCode = devCode; - this.devCode = wellCode; + this.wellCode = wellCode; } } diff --git a/src/main/java/org/well/well/manager/AlarmRuleManager.java b/src/main/java/org/well/well/manager/AlarmRuleManager.java index 97f91e1..a850277 100644 --- a/src/main/java/org/well/well/manager/AlarmRuleManager.java +++ b/src/main/java/org/well/well/manager/AlarmRuleManager.java @@ -12,6 +12,7 @@ import org.well.well.domain.SysDept; import javax.annotation.Resource; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -128,7 +129,7 @@ } } - if (null == tenantId) return null; + if (null == tenantId) return new ArrayList(); try { Map paraMap = new HashMap(); String sql = "SELECT level,low_value,high_value,name FROM alarm_level_device_veiw a " + @@ -141,6 +142,6 @@ } catch (Exception e) { e.printStackTrace(); } - return null; + return new ArrayList(); } } diff --git a/src/main/java/org/well/well/manager/DeviceConfigManager.java b/src/main/java/org/well/well/manager/DeviceConfigManager.java index 524a7a0..cff9a72 100644 --- a/src/main/java/org/well/well/manager/DeviceConfigManager.java +++ b/src/main/java/org/well/well/manager/DeviceConfigManager.java @@ -2,22 +2,27 @@ import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.domain.Device; import org.well.well.domain.DeviceConfig; import org.hibernate.Criteria; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Service; +import javax.annotation.Resource; import java.util.List; @Service public class DeviceConfigManager extends HibernateEntityDao { + @Resource + DeviceManager deviceManager; public void updateStatus(String devCode) { - + Device device=deviceManager.getDeviceByDevCode(devCode); + if(null==device)return; Criteria criteria = getSession().createCriteria(DeviceConfig.class); - criteria.add(Restrictions.eq("devid", devCode)); + criteria.add(Restrictions.eq("deviceId", device.getId())); List deviceConfigList = criteria.list(); for (DeviceConfig deviceConfig : deviceConfigList) { deviceConfig.setStatus(true); diff --git a/src/main/java/org/well/well/manager/DeviceManager.java b/src/main/java/org/well/well/manager/DeviceManager.java index 2318b7f..33e525a 100644 --- a/src/main/java/org/well/well/manager/DeviceManager.java +++ b/src/main/java/org/well/well/manager/DeviceManager.java @@ -54,14 +54,14 @@ public void setOfflineBySevenNoData(String devCode) { Criteria criteria = getSession().createCriteria(Device.class); - criteria.add(Restrictions.eq("devCode", devCode)); - criteria.add(Restrictions.eq("valid", true)); - criteria.add(Restrictions.eq("onlineState", "1")); - List devices = criteria.list(); - for (Device device : devices) { - device.setOnlineState("0"); - device.setLogtime(new Date()); - save(device); + criteria.add(Restrictions.eq("devCode", devCode)); + criteria.add(Restrictions.eq("valid", true)); + criteria.add(Restrictions.eq("onlineState", "1")); + List devices = criteria.list(); + for (Device device : devices) { + device.setOnlineState("0"); + device.setLogtime(new Date()); + save(device); } } diff --git a/src/main/java/org/well/well/manager/LiquidManager.java b/src/main/java/org/well/well/manager/LiquidManager.java index a79a901..aba23b8 100644 --- a/src/main/java/org/well/well/manager/LiquidManager.java +++ b/src/main/java/org/well/well/manager/LiquidManager.java @@ -10,11 +10,13 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.dto.LiquidDTO; import javax.annotation.Resource; import java.io.IOException; +import java.text.DecimalFormat; import java.util.*; /** @@ -49,6 +51,7 @@ liquid.setLogtime(new Date()); liquid.setUptime(DateUtils.sdf4.parse(DateUtils.DateFormat(liquidDTO.getUptime()))); liquid.setLiquidData(liquidDTO.getLiquidData()); + liquid.setWellCode(liquidDTO.getWellCode()); save(liquid); } catch (Exception e) { e.printStackTrace(); @@ -62,7 +65,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); for (int i = 0; i < jsonArray.size(); i++) { try { + String level = ((JSONObject) jsonArray.get(i)).get("level").toString(); + level = String.format("%.2f", Double.valueOf(level)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 @@ -71,52 +76,61 @@ alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 LiquidDTO liquidDTO = new LiquidDTO(level, cell, - upTime, devCode,busWell==null?"":busWell.getWellCode()); + upTime, devCode, busWell == null ? "" : busWell.getWellCode()); this.saveData(liquidDTO);//存采集数据 //4.有无超限处理流程(判断最后一条数据) if (i < jsonArray.size() - 1) continue; String thresh = alarmRuleManager.getRuleStr(devCode, DeviceTypeEnum.Liquid.toString());//获取报警阈值 - if (StringUtils.isNotBlank(thresh) && Float.valueOf(level) > Float.valueOf(thresh)) {//超限 + List ruleRankList = new ArrayList(); + float rankThresh = 0; + if (busWell != null) ruleRankList = alarmRuleManager.getRuleRank(devCode, busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh); + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Float.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Float.valueOf(level) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 - String alarmContent=LiquidAlarmEnum.OVER_THRESH.getName(); - Integer alarmLevel=0; - if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); - for(int j=0;j=(Float.valueOf(rankValue.toString())/100*Float.valueOf(thresh))) { + String alarmContent = LiquidAlarmEnum.OVER_THRESH.getName(); + Integer alarmLevel = 0; + +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + for (int j = 0; j < ruleRankList.size(); j++) { + Object rankValue = ((Object[]) ruleRankList.get(j))[2]; + if (null != rankValue) { + if (Float.valueOf(level) >= (Float.valueOf(rankValue.toString()) / 100 * Float.valueOf(thresh))) { // LiquidAlarmEnum liquidAlarmEnum=LiquidAlarmEnum.getByIndex( // String.valueOf(Long.valueOf(((Object[]) ruleRankList.get(j))[0].toString()) + 6)); // alarmContent = liquidAlarmEnum!=null?liquidAlarmEnum.getName():alarmContent; - alarmLevel=Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); - break; - } + alarmLevel = Integer.valueOf(((Object[]) ruleRankList.get(j))[0].toString()); + break; } } } + if (null != alarmRecord) {//已存在报警 //1.清除上一条告警记录 alarmRecordManager.clearAlarm(devCode, "1", ""); //2.写入新的告警记录,更新工单号为上一条告警记录的工单号 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",alarmLevel, alarmContent, - level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime,alarmContent); + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", alarmLevel, alarmContent, + level, alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), upTime, alarmContent); } else {//不存在上一条报警时 Device device = deviceManager.getDeviceByDevCode(devCode); if (device == null) return;//未注册设备舍弃 //1.生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"1"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "1"); //2.写入新的告警 - alarmRecordManager.saveData(alarmJob.getId(), "1",alarmLevel, + alarmRecordManager.saveData(alarmJob.getId(), "1", alarmLevel, alarmContent, level, device, - devCode, alarmJob.getWellCode(), upTime,alarmContent); + devCode, alarmJob.getWellCode(), upTime, alarmContent); // //3.toDo:向app推送报警消息 // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 @@ -147,12 +161,12 @@ if (null == device) return;//没注册设备舍弃 BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { alarmJob = alarmJobManager.saveData(devCode, busWell != null ? - busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(),"0"); + busWell.getWellCode() : "", DeviceTypeEnum.Liquid.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(LiquidAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/java/org/well/well/manager/MeterManager.java b/src/main/java/org/well/well/manager/MeterManager.java index 452bfdf..3623db2 100644 --- a/src/main/java/org/well/well/manager/MeterManager.java +++ b/src/main/java/org/well/well/manager/MeterManager.java @@ -1,9 +1,11 @@ package org.well.well.manager; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; @@ -20,14 +22,14 @@ @Resource AlarmJobManager alarmJobManager; + @Transactional public void processMeterData(Map meterMap){ try { String devCode=meterMap.get("devCode"); //1.清离线 deviceManager.clearOffline(devCode); - - BusWell busWell = busWellManager.getWellByDevCode(devCode); //2.存数据 + BusWell busWell = busWellManager.getWellByDevCode(devCode); save(new DataMeter(meterMap,null==busWell?"":busWell.getWellCode())); //3.有无超限 String alarmContent = "", alarmValue = ""; @@ -96,6 +98,8 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), "水质超限告警"); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 25945d6..cf5772c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,7 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,6 +64,7 @@ try { String gas = ((JSONObject) jsonArray.get(i)).get("gas").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + gas=String.format("%.2f", Double.valueOf(gas)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -101,9 +103,7 @@ alarmContent, gas, device, devCode, alarmJob.getWellCode(), upTime,alarmContent); //3.toDo:向app推送报警消息 -// List cids = userManager.getClients(busWell); -// if (cids.size() > 0) -// PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/NoiseDigManager.java b/src/main/java/org/well/well/manager/NoiseDigManager.java index 6a98704..4482925 100644 --- a/src/main/java/org/well/well/manager/NoiseDigManager.java +++ b/src/main/java/org/well/well/manager/NoiseDigManager.java @@ -11,10 +11,12 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import javax.annotation.Resource; import java.io.IOException; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -60,6 +62,8 @@ String val = ((JSONObject) jsonArray.get(i)).get("noiseVal").toString(); String freq = ((JSONObject) jsonArray.get(i)).get("noiseFreq").toString(); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); + val=String.format("%.2f", Double.valueOf(val)); + freq=String.format("%.2f", Double.valueOf(freq)); //1.清离线 deviceManager.clearOffline(devCode); //2.清除设备告警 @@ -68,15 +72,22 @@ 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.NoiseDig.toString());//获取报警阈值 - if ( StringUtils.isNotBlank(thresh) && - Double.valueOf(val) > Double.valueOf(thresh) * constant) { + List ruleRankList= new ArrayList(); + double rankThresh = 0; + if(busWell!=null) ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); + if (ruleRankList.size() > 0 && StringUtils.isNotBlank(thresh)) { + Object rankValue = ((Object[]) ruleRankList.get(ruleRankList.size() - 1))[2]; + rankThresh = (Float.valueOf(rankValue.toString())) / 100 * Float.valueOf(thresh) * constant; + } + rankThresh = rankThresh == 0 ? (StringUtils.isNotBlank(thresh) ? Double.valueOf(thresh) : 0) : rankThresh; + if (rankThresh != 0 && Double.valueOf(val) >= rankThresh) {//超限 AlarmRecord alarmRecord = alarmRecordManager.getThresholdAlarm(devCode); //获取报警等级 String alarmContent= NoiseDigAlarmEnum.OVER_THRESH.getName(); Integer alarmLevel=0; if(busWell!=null){ - List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); +// List ruleRankList= alarmRuleManager.getRuleRank(devCode,busWell.getDeptid()); for(int j=0;j cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), alarmContent); + } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/TempHumiManager.java b/src/main/java/org/well/well/manager/TempHumiManager.java index d29f89c..bccb1c6 100644 --- a/src/main/java/org/well/well/manager/TempHumiManager.java +++ b/src/main/java/org/well/well/manager/TempHumiManager.java @@ -7,10 +7,12 @@ import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import org.well.well.AlarmEnumDTO.TempHumiAlarmEnum; +import org.well.well.AlarmEnumDTO.WasteGasAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -63,9 +65,10 @@ for (int i = 0; i < jsonArray.size(); i++) { try { String temperature = null != ((JSONObject) jsonArray.get(i)).get("temperature") ? - ((JSONObject) jsonArray.get(i)).get("temperature").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("temperature").toString()))) : ""; + String humidity = null != ((JSONObject) jsonArray.get(i)).get("humidity") ? - ((JSONObject) jsonArray.get(i)).get("humidity").toString() : ""; + (String.format("%.2f", Double.valueOf(((JSONObject) jsonArray.get(i)).get("humidity").toString()))) : ""; String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); //1.清离线 deviceManager.clearOffline(devCode); @@ -151,6 +154,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), TempHumiAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WasteGasManager.java b/src/main/java/org/well/well/manager/WasteGasManager.java index 8e261fb..7cdf037 100644 --- a/src/main/java/org/well/well/manager/WasteGasManager.java +++ b/src/main/java/org/well/well/manager/WasteGasManager.java @@ -11,6 +11,7 @@ import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; import org.well.well.core.util.StringUtils; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; import org.well.well.util.PushList; @@ -157,6 +158,10 @@ String O2 = ((JSONObject) jsonArray.get(i)).get("O2").toString(); String H2S = ((JSONObject) jsonArray.get(i)).get("H2S").toString(); String CH4 = ((JSONObject) jsonArray.get(i)).get("CH4").toString(); + CO=String.format("%.2f", Double.valueOf(CO)); + O2=String.format("%.2f", Double.valueOf(O2)); + H2S=String.format("%.2f", Double.valueOf(H2S)); + CH4=String.format("%.2f", Double.valueOf(CH4)); String upTime = ((JSONObject) jsonArray.get(i)).get("uptime").toString(); Boolean isOpen = Boolean.valueOf(((JSONObject) jsonArray.get(i)).get("liquidSwitch").toString()); //1.清离线 @@ -200,6 +205,7 @@ // List cids = userManager.getClients(busWell); // if (cids.size() > 0) // PushList.pushToUser(cids, "液位超限", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(), WasteGasAlarmEnum.OVER_THRESH.getName()); } } else {//未超限 //1.清除之前的报警 diff --git a/src/main/java/org/well/well/manager/WellManager.java b/src/main/java/org/well/well/manager/WellManager.java index 11ff839..3699d15 100644 --- a/src/main/java/org/well/well/manager/WellManager.java +++ b/src/main/java/org/well/well/manager/WellManager.java @@ -9,13 +9,12 @@ import org.well.well.AlarmEnumDTO.WellAlarmEnum; import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; +import org.well.well.core.util.ThreadUtil; import org.well.well.domain.*; -import org.well.well.util.PushList; import javax.annotation.Resource; import java.io.IOException; import java.util.HashMap; -import java.util.List; import java.util.Map; @Service @@ -32,13 +31,13 @@ private UserManager userManager; private final Logger logger = LoggerFactory.getLogger(this.getClass().getName()); - public Map saveData(String devCode,String wellCode, - String desc, String status){ + public Map saveData(String devCode, String wellCode, + String desc, String status) { Map resultMap = new HashMap(); try { - Well well = new Well(devCode,wellCode, desc, status); + Well well = new Well(devCode, wellCode, desc, status); save(well); } catch (Exception e) { e.printStackTrace(); @@ -58,7 +57,7 @@ //2.清除设备告警 alarmRecordManager.clearAlarmByNormalData(devCode, "2"); //3.存数据 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.NORMAL.toString(), String.valueOf(WellAlarmEnum.NORMAL.getIndex()));//存采集数据 } catch (Exception e) { @@ -77,7 +76,7 @@ //1.清离线 deviceManager.clearOffline(devCode); //2.存入数据表 - this.saveData(devCode,busWell==null?"":busWell.getWellCode(), + this.saveData(devCode, busWell == null ? "" : busWell.getWellCode(), WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex())); //3.根据不同的报警,进入不同的处理方法(主要分开盖和其他类型的报警) @@ -92,27 +91,28 @@ alarmRecordManager.clearAlarm(devCode, "1", String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex())); //写入新的报警 - alarmRecordManager.saveData(alarmRecord.getJobId(), "1",null, + alarmRecordManager.saveData(alarmRecord.getJobId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), alarmRecord.getDevice(), devCode, alarmRecord.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); } else { Device device = deviceManager.getDeviceByDevCode(devCode); - if(device==null) return; //没注册舍弃 + if (device == null) return; //没注册舍弃 //生成新的工单 AlarmJob alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"1"); + DeviceTypeEnum.Well.toString(), "1"); - alarmRecordManager.saveData(alarmJob.getId(), "1",null, + alarmRecordManager.saveData(alarmJob.getId(), "1", null, WellAlarmEnum.WellOpenAlarm.getName(), String.valueOf(WellAlarmEnum.WellOpenAlarm.getIndex()), device, devCode, alarmJob.getWellCode(), logTime, WellAlarmEnum.WellOpenAlarm.getName()); //toDo:向app推送报警消息 - List cids= userManager.getClients(busWell); - if(cids.size()>0) - PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); +// List cids = userManager.getClients(busWell); +// if (cids.size() > 0) +// PushList.pushToUser(cids, "井盖开盖报警", "报警啦,快来处理"); + ThreadUtil.excuteMsg(alarmJob.getId(),WellAlarmEnum.WellOpenAlarm.getName()); } } } @@ -125,12 +125,12 @@ //写入新的报警 Device device = deviceManager.getDeviceByDevCode(devCode); if (null == device) return; - AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode,"0"); + AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); if (null == alarmJob) { - alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), - DeviceTypeEnum.Well.toString(),"0"); + alarmJob = alarmJobManager.saveData(devCode, busWell.getWellCode(), + DeviceTypeEnum.Well.toString(), "0"); } - alarmRecordManager.saveData(alarmJob.getId(), "2",null, + alarmRecordManager.saveData(alarmJob.getId(), "2", null, WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getName(), String.valueOf(WellAlarmEnum.valueOf(jsonArray.get(i).toString()).getIndex()), device, devCode, null != busWell ? busWell.getWellCode() : "", logTime, diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index 4d52e37..b942812 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -20,7 +20,7 @@ #db.default.username=sensor #db.default.password=sensor db.default.driverClassName=com.mysql.jdbc.Driver -db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell?useUnicode=true&characterEncoding=UTF-8&useSSL=false +db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell_yizhuang?useUnicode=true&characterEncoding=UTF-8&useSSL=false db.default.username=root db.default.password=root ### ============================================================================ @@ -163,3 +163,9 @@ activemq_password = +# ============================================================================ +# 告警、工单推送地址 +# ============================================================================ +sendURL = http://119.254.103.80:14537/job/updateSinkJob + + diff --git a/target/classes/wellSensor/application.properties b/target/classes/wellSensor/application.properties index 4d52e37..b942812 100644 --- a/target/classes/wellSensor/application.properties +++ b/target/classes/wellSensor/application.properties @@ -20,7 +20,7 @@ #db.default.username=sensor #db.default.password=sensor db.default.driverClassName=com.mysql.jdbc.Driver -db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell?useUnicode=true&characterEncoding=UTF-8&useSSL=false +db.default.url=jdbc:mysql://119.254.103.80:3000/smartwell_yizhuang?useUnicode=true&characterEncoding=UTF-8&useSSL=false db.default.username=root db.default.password=root ### ============================================================================ @@ -163,3 +163,9 @@ activemq_password = +# ============================================================================ +# 告警、工单推送地址 +# ============================================================================ +sendURL = http://119.254.103.80:14537/job/updateSinkJob + +