diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/src/main/java/org/well/well/util/AlarmPushProvider.java b/src/main/java/org/well/well/util/AlarmPushProvider.java index 2bcfb8e..07e5c1a 100644 --- a/src/main/java/org/well/well/util/AlarmPushProvider.java +++ b/src/main/java/org/well/well/util/AlarmPushProvider.java @@ -14,7 +14,8 @@ private static final Logger log = LoggerFactory.getLogger(SendBatchSmsUtil.class.getName()); - public static void alarmPushBuilder(String devcode, String tel, String value, String position, + + public static void aliPushBuilder(String devcode, String tel, String value, String position, String alarmContent, String deviceType, String units) { // if (alarmPushConfig.getEnable().equals(1)) { // if (alarmPushConfig.getWebsocketAlarm().equals(1)) { @@ -30,7 +31,7 @@ JSONArray msglist = new JSONArray(); JSONObject msgMap = new JSONObject(); msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - msgMap.put("devcode", devcode); + msgMap.put("devcode", devcode+"("+deviceType+")"); msgMap.put("value", value+units); msgMap.put("position", position); msgMap.put("content", alarmContent); @@ -51,4 +52,20 @@ // } } + public static void alarmPushBuilder(String devcode, String tels, String value, String position, + String alarmContent, String deviceType, String units) { +// JSONArray msglist = new JSONArray(); +// JSONObject msgMap = new JSONObject(); +// msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// msgMap.put("devcode", devcode+"("+deviceType+")"); +// msgMap.put("value", value+units); +// msgMap.put("position", position); +// msgMap.put("content", alarmContent); +// String phoneJson = ""; + String content ="设备编号为"+devcode+"的"+deviceType+",在"+position+"发生了"+alarmContent+",报警值为"+value+units+",请及时处理!"; + HyShortMsgUtil.sendMsg(content,tels); + } + + + } diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/src/main/java/org/well/well/util/AlarmPushProvider.java b/src/main/java/org/well/well/util/AlarmPushProvider.java index 2bcfb8e..07e5c1a 100644 --- a/src/main/java/org/well/well/util/AlarmPushProvider.java +++ b/src/main/java/org/well/well/util/AlarmPushProvider.java @@ -14,7 +14,8 @@ private static final Logger log = LoggerFactory.getLogger(SendBatchSmsUtil.class.getName()); - public static void alarmPushBuilder(String devcode, String tel, String value, String position, + + public static void aliPushBuilder(String devcode, String tel, String value, String position, String alarmContent, String deviceType, String units) { // if (alarmPushConfig.getEnable().equals(1)) { // if (alarmPushConfig.getWebsocketAlarm().equals(1)) { @@ -30,7 +31,7 @@ JSONArray msglist = new JSONArray(); JSONObject msgMap = new JSONObject(); msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - msgMap.put("devcode", devcode); + msgMap.put("devcode", devcode+"("+deviceType+")"); msgMap.put("value", value+units); msgMap.put("position", position); msgMap.put("content", alarmContent); @@ -51,4 +52,20 @@ // } } + public static void alarmPushBuilder(String devcode, String tels, String value, String position, + String alarmContent, String deviceType, String units) { +// JSONArray msglist = new JSONArray(); +// JSONObject msgMap = new JSONObject(); +// msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// msgMap.put("devcode", devcode+"("+deviceType+")"); +// msgMap.put("value", value+units); +// msgMap.put("position", position); +// msgMap.put("content", alarmContent); +// String phoneJson = ""; + String content ="设备编号为"+devcode+"的"+deviceType+",在"+position+"发生了"+alarmContent+",报警值为"+value+units+",请及时处理!"; + HyShortMsgUtil.sendMsg(content,tels); + } + + + } diff --git a/src/main/java/org/well/well/util/Configure.java b/src/main/java/org/well/well/util/Configure.java index e2da687..d72d304 100644 --- a/src/main/java/org/well/well/util/Configure.java +++ b/src/main/java/org/well/well/util/Configure.java @@ -27,7 +27,8 @@ public static String getProperty(String key, String defaultValue) { try { - String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); + String value= properties.getProperty(key); +// String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); if (null == value) { return defaultValue; } else { diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/src/main/java/org/well/well/util/AlarmPushProvider.java b/src/main/java/org/well/well/util/AlarmPushProvider.java index 2bcfb8e..07e5c1a 100644 --- a/src/main/java/org/well/well/util/AlarmPushProvider.java +++ b/src/main/java/org/well/well/util/AlarmPushProvider.java @@ -14,7 +14,8 @@ private static final Logger log = LoggerFactory.getLogger(SendBatchSmsUtil.class.getName()); - public static void alarmPushBuilder(String devcode, String tel, String value, String position, + + public static void aliPushBuilder(String devcode, String tel, String value, String position, String alarmContent, String deviceType, String units) { // if (alarmPushConfig.getEnable().equals(1)) { // if (alarmPushConfig.getWebsocketAlarm().equals(1)) { @@ -30,7 +31,7 @@ JSONArray msglist = new JSONArray(); JSONObject msgMap = new JSONObject(); msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - msgMap.put("devcode", devcode); + msgMap.put("devcode", devcode+"("+deviceType+")"); msgMap.put("value", value+units); msgMap.put("position", position); msgMap.put("content", alarmContent); @@ -51,4 +52,20 @@ // } } + public static void alarmPushBuilder(String devcode, String tels, String value, String position, + String alarmContent, String deviceType, String units) { +// JSONArray msglist = new JSONArray(); +// JSONObject msgMap = new JSONObject(); +// msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// msgMap.put("devcode", devcode+"("+deviceType+")"); +// msgMap.put("value", value+units); +// msgMap.put("position", position); +// msgMap.put("content", alarmContent); +// String phoneJson = ""; + String content ="设备编号为"+devcode+"的"+deviceType+",在"+position+"发生了"+alarmContent+",报警值为"+value+units+",请及时处理!"; + HyShortMsgUtil.sendMsg(content,tels); + } + + + } diff --git a/src/main/java/org/well/well/util/Configure.java b/src/main/java/org/well/well/util/Configure.java index e2da687..d72d304 100644 --- a/src/main/java/org/well/well/util/Configure.java +++ b/src/main/java/org/well/well/util/Configure.java @@ -27,7 +27,8 @@ public static String getProperty(String key, String defaultValue) { try { - String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); + String value= properties.getProperty(key); +// String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); if (null == value) { return defaultValue; } else { diff --git a/src/main/java/org/well/well/util/HyShortMsgUtil.java b/src/main/java/org/well/well/util/HyShortMsgUtil.java new file mode 100644 index 0000000..601288c --- /dev/null +++ b/src/main/java/org/well/well/util/HyShortMsgUtil.java @@ -0,0 +1,82 @@ +package org.well.well.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +/** + * 互亿无线的短信平台util + * + * @author cz + * @date 2023-3-20 + */ +public class HyShortMsgUtil { +// private static String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; + + private static final Logger log = LoggerFactory.getLogger(HyShortMsgUtil.class.getName()); + + public static void sendMsg(String content, String mobiles) { + + String Url = Configure.getProperty("hy_url", ""); + String appId = Configure.getProperty("appId", ""); + String appKey = Configure.getProperty("appKey", ""); + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(Url); + + client.getParams().setContentCharset("GBK"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=GBK"); + + int mobile_code = (int) ((Math.random() * 9 + 1) * 100000); + + NameValuePair[] data = {//提交短信 + new NameValuePair("account", appId), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID + new NameValuePair("password", appKey), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY + //new NameValuePair("password", util.StringUtil.MD5Encode("密码")), + new NameValuePair("mobile", "13651065090"), + new NameValuePair("content", content), + }; + + String[] mobileList = mobiles.split(","); + + try { + //批量发送 + for (String mobile : mobileList) { + data[2].setValue(mobile); + method.setRequestBody(data); + client.executeMethod(method); + String SubmitResult = method.getResponseBodyAsString(); + //System.out.println(SubmitResult); + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String smsid = root.elementText("smsid"); + log.info("手机号是{},发送内容是{},短信回执码:{},返回消息是{},smsid是{}", data[2].getValue(), data[3].getValue(), code, msg, smsid); + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + } + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/src/main/java/org/well/well/util/AlarmPushProvider.java b/src/main/java/org/well/well/util/AlarmPushProvider.java index 2bcfb8e..07e5c1a 100644 --- a/src/main/java/org/well/well/util/AlarmPushProvider.java +++ b/src/main/java/org/well/well/util/AlarmPushProvider.java @@ -14,7 +14,8 @@ private static final Logger log = LoggerFactory.getLogger(SendBatchSmsUtil.class.getName()); - public static void alarmPushBuilder(String devcode, String tel, String value, String position, + + public static void aliPushBuilder(String devcode, String tel, String value, String position, String alarmContent, String deviceType, String units) { // if (alarmPushConfig.getEnable().equals(1)) { // if (alarmPushConfig.getWebsocketAlarm().equals(1)) { @@ -30,7 +31,7 @@ JSONArray msglist = new JSONArray(); JSONObject msgMap = new JSONObject(); msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - msgMap.put("devcode", devcode); + msgMap.put("devcode", devcode+"("+deviceType+")"); msgMap.put("value", value+units); msgMap.put("position", position); msgMap.put("content", alarmContent); @@ -51,4 +52,20 @@ // } } + public static void alarmPushBuilder(String devcode, String tels, String value, String position, + String alarmContent, String deviceType, String units) { +// JSONArray msglist = new JSONArray(); +// JSONObject msgMap = new JSONObject(); +// msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// msgMap.put("devcode", devcode+"("+deviceType+")"); +// msgMap.put("value", value+units); +// msgMap.put("position", position); +// msgMap.put("content", alarmContent); +// String phoneJson = ""; + String content ="设备编号为"+devcode+"的"+deviceType+",在"+position+"发生了"+alarmContent+",报警值为"+value+units+",请及时处理!"; + HyShortMsgUtil.sendMsg(content,tels); + } + + + } diff --git a/src/main/java/org/well/well/util/Configure.java b/src/main/java/org/well/well/util/Configure.java index e2da687..d72d304 100644 --- a/src/main/java/org/well/well/util/Configure.java +++ b/src/main/java/org/well/well/util/Configure.java @@ -27,7 +27,8 @@ public static String getProperty(String key, String defaultValue) { try { - String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); + String value= properties.getProperty(key); +// String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); if (null == value) { return defaultValue; } else { diff --git a/src/main/java/org/well/well/util/HyShortMsgUtil.java b/src/main/java/org/well/well/util/HyShortMsgUtil.java new file mode 100644 index 0000000..601288c --- /dev/null +++ b/src/main/java/org/well/well/util/HyShortMsgUtil.java @@ -0,0 +1,82 @@ +package org.well.well.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +/** + * 互亿无线的短信平台util + * + * @author cz + * @date 2023-3-20 + */ +public class HyShortMsgUtil { +// private static String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; + + private static final Logger log = LoggerFactory.getLogger(HyShortMsgUtil.class.getName()); + + public static void sendMsg(String content, String mobiles) { + + String Url = Configure.getProperty("hy_url", ""); + String appId = Configure.getProperty("appId", ""); + String appKey = Configure.getProperty("appKey", ""); + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(Url); + + client.getParams().setContentCharset("GBK"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=GBK"); + + int mobile_code = (int) ((Math.random() * 9 + 1) * 100000); + + NameValuePair[] data = {//提交短信 + new NameValuePair("account", appId), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID + new NameValuePair("password", appKey), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY + //new NameValuePair("password", util.StringUtil.MD5Encode("密码")), + new NameValuePair("mobile", "13651065090"), + new NameValuePair("content", content), + }; + + String[] mobileList = mobiles.split(","); + + try { + //批量发送 + for (String mobile : mobileList) { + data[2].setValue(mobile); + method.setRequestBody(data); + client.executeMethod(method); + String SubmitResult = method.getResponseBodyAsString(); + //System.out.println(SubmitResult); + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String smsid = root.elementText("smsid"); + log.info("手机号是{},发送内容是{},短信回执码:{},返回消息是{},smsid是{}", data[2].getValue(), data[3].getValue(), code, msg, smsid); + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + } + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index b3946b0..b921a04 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -1,5 +1,3 @@ - - # ============================================================================ # application # ============================================================================ @@ -10,8 +8,6 @@ com.mossle.layout.messages application.scope.type=mock application.database.type=h2 - - # ============================================================================ # dbtest # ============================================================================ @@ -53,13 +49,9 @@ jdbc.testOnReturn=false jdbc.timeBetweenEvictionRunsMillis=30000 jdbc.numTestsPerEvictionRun=100 - - # log4jdbc # ============================================================================ log4jdbc.enable=false - - # ============================================================================ # hibernate # ============================================================================ @@ -70,8 +62,6 @@ hibernate.format_sql=false hibernate.generate_statistics=true #hibernate.hbm2ddl.auto=create - - # ============================================================================ # mail # ============================================================================ @@ -83,8 +73,6 @@ mail.mode=skip mail.test.mail=demo.mossle@gmail.com mail.default.from=demo.mossle@gmail.com - - #============================================================================ # log #============================================================================ @@ -95,27 +83,17 @@ log.mail.enable=false log.inspektr.enable=false log.log4jdbc.enable=false - - # ============================================================================ # filter # ============================================================================ - - - # ============================================================================ # servlet # ============================================================================ - - - # ============================================================================ # quartz # ============================================================================ quartz.autostartup=false org.quartz.plugin.historytrigger.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin - - # ============================================================================ # cache # ============================================================================ @@ -124,18 +102,14 @@ cache.memcached.client.url=localhost:11211 cache.memcached.server.enable=true cache.memcached.server.url=localhost:11211 - # ============================================================================ # store # ============================================================================ store.baseDir=casic.store - # ============================================================================ # lampSink # ============================================================================ lampSink.enable=false - - # ============================================================================ # schedular # ========================================================= =================== @@ -143,51 +117,48 @@ scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true deviceChecking.enabled=true #cron.time=0 37 15 * * ? +# ============================================================================ +# \uFFFD\uFFFD\uFFFD\u037C\uFFFD\uFFFD +# ============================================================================ +SEND.INTERVAL=10000 +# ============================================================================ +# \u4E2A\u63A8\u914D\u7F6E\u4FE1\u606F +# ============================================================================ +gt.appId=qQqFtTBrUa7SGLjntUlpT4 +gt.appKey=GNjHLiqJkD6OoeZbtbdfi5 +gt.masterSecret=TZRYQknkxLAJ58uH56PeS6 +# ============================================================================ +# ACTIVEMQ\u914D\u7F6E +# ============================================================================ +activemq_url=tcp://192.168.0.203:61616 +activemq_username= +activemq_password= +# ============================================================================ +# \u544A\u8B66\u3001\u5DE5\u5355\u63A8\u9001\u5730\u5740 +# ============================================================================ +sendURL=http://119.254.103.80:14537/job/updateSinkJob +# ============================================================================ +# \u6E2F\u534E\u71C3\u6C14\u62A5\u8B66\u77ED\u4FE1\u63A8\u9001 +# ============================================================================ +GH_SMS_URL=http://61.145.229.28:8803 +GH_USER_ID=JU5802 +GH_PWD=761060 +# ============================================================================ +# \u5929\u6C14\u83B7\u53D6\u63A5\u53E3 +# ============================================================================ +SERVIES_HOST=https://way.jd.com/he/freeweather +CITY=beijing +Appkey=937cd1ce7e4f44545b3a1841ab6794b0 +Press= +aliKey=LTAI5tDFNucQF2Bdy4fHgzrN +aliSecret=hZ22QQPxQue1G0R8Ty2bo6GimrLdoB +aliUrl=dysmsapi.aliyuncs.com +aliSignNameJson=\u67F4\u58EE\u544A\u8B66\u63D0\u9192 +aliTemplateCode=SMS_274425014 -# ============================================================================ -# ���ͼ�� -# ============================================================================ -SEND.INTERVAL = 10000 -# ============================================================================ -# 个推配置信息 -# ============================================================================ -gt.appId = qQqFtTBrUa7SGLjntUlpT4 -gt.appKey = GNjHLiqJkD6OoeZbtbdfi5 -gt.masterSecret = TZRYQknkxLAJ58uH56PeS6 - -# ============================================================================ -# ACTIVEMQ配置 -# ============================================================================ -activemq_url = tcp://192.168.0.203:61616 -activemq_username = -activemq_password = - - -# ============================================================================ -# 告警、工单推送地址 -# ============================================================================ -sendURL = http://119.254.103.80:14537/job/updateSinkJob - - - -# ============================================================================ -# 港华燃气报警短信推送 -# ============================================================================ -GH_SMS_URL = http://61.145.229.28:8803 -GH_USER_ID = JU5802 -GH_PWD = 761060 -# ============================================================================ -# 天气获取接口 -# ============================================================================ -SERVIES_HOST= https://way.jd.com/he/freeweather -CITY = beijing -Appkey = 937cd1ce7e4f44545b3a1841ab6794b0 -Press = - -aliKey = LTAI5tDFNucQF2Bdy4fHgzrN -aliSecret= hZ22QQPxQue1G0R8Ty2bo6GimrLdoB -aliUrl = dysmsapi.aliyuncs.com -aliSignNameJson = 柴壮告警提醒 -aliTemplateCode= SMS_273775754 +#\u4E92\u4EBF\u65E0\u7EBF\u7684\u77ED\u4FE1\u5E73\u53F0 +appId=C09164727 +appKey=9c80f9334af06a5f9cacc1468eb84632 +hy_url=http://106.ihuyi.com/webservice/sms.php?method=Submit diff --git a/pom.xml b/pom.xml index 11701b8..bcae60b 100644 --- a/pom.xml +++ b/pom.xml @@ -276,5 +276,11 @@ 2.0.22 + + com.google.code.gson + gson + 2.8.9 + + \ No newline at end of file diff --git a/src/main/java/org/well/mysql/sink/WellSink.java b/src/main/java/org/well/mysql/sink/WellSink.java index 01300ef..01f5002 100644 --- a/src/main/java/org/well/mysql/sink/WellSink.java +++ b/src/main/java/org/well/mysql/sink/WellSink.java @@ -170,7 +170,7 @@ // temp="{\"mType\":\"Data\",\"devType\":\"Tube\",\"devCode\":\"342020030014\",\"mBody\":{\"cell\":15,\"pci\":94,\"rsrp\":-103,\"snr\":7,\"datas\":[{\"gas\":0.0,\"uptime\":\"20211128000000\"}],\"logTime\":\"20211210174648\",\"bType\":\"TubeData\"},\"ts\":1639129608475}"; // // temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050010\",\"mBody\":{\"cell\":91,\"pci\":279,\"rsrp\":-105,\"snr\":10,\"datas\":[{\"gas\":40.0,\"uptime\":\"20220113175000\"},{\"liquid\":1040.07336,\"uptime\":\"20220113175000\"}],\"logTime\":\"20220113175144\",\"bType\":\"LGData\"},\"ts\":1642067504321}"; - temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":11.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; + temp="{\"mType\":\"Data\",\"devType\":\"LG\",\"devCode\":\"322021050019\",\"mBody\":{\"cell\":83,\"pci\":100,\"rsrp\":-85,\"snr\":24,\"datas\":[{\"gas\":80.0,\"uptime\":\"20220513020200\"},{\"gas\":0.599999964,\"uptime\":\"20220513030200\"},{\"liquid\":1108.392,\"uptime\":\"20220513020200\"},{\"liquid\":1112.47058,\"uptime\":\"20220513030200\"}],\"logTime\":\"20220513030400\",\"bType\":\"LGData\"},\"ts\":1652382240656}"; AbstractResponse resp = ResponseResolver.makeResponse(temp); resp.setAc(ac); // for(String dd:arr){ diff --git a/src/main/java/org/well/well/manager/LGGasManager.java b/src/main/java/org/well/well/manager/LGGasManager.java index 8f05b67..d958178 100644 --- a/src/main/java/org/well/well/manager/LGGasManager.java +++ b/src/main/java/org/well/well/manager/LGGasManager.java @@ -1,5 +1,6 @@ package org.well.well.manager; +import com.alibaba.fastjson.JSON; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.slf4j.Logger; @@ -16,6 +17,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.LGGas; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +28,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class LGGasManager extends HibernateEntityDao { @@ -66,7 +70,12 @@ String cell = jsonObject.getString("cell"); JSONArray jsonArray = jsonObject.getJSONArray("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { try { if (null == ((JSONObject) jsonArray.get(i)).get("gas")) { continue; @@ -74,7 +83,6 @@ String gas = ((JSONObject) jsonArray.get(i)).getString("gas"); String upTime = ((JSONObject) jsonArray.get(i)).getString("uptime"); gas = String.format("%.2f", Double.valueOf(gas)); - //1.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime); //2.有无超限处理流程(判断最后一条数据) @@ -115,9 +123,9 @@ return; } AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "1"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (alarmJob == null) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.LG.toString(), "1"); } //1.写入新的告警 @@ -127,9 +135,9 @@ //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); //配置了手机号,可以走短信平台发送 - if(!StringUtils.isEmpty(busWell.getTel())){ - AlarmPushProvider.alarmPushBuilder(devCode,busWell.getTel(),gas, busWell.getPosition(), - alarmContent,DeviceTypeEnum.LG.toString(),"%LEL"); + if (!StringUtils.isEmpty(busWell.getTel())) { + AlarmPushProvider.alarmPushBuilder(devCode, busWell.getTel(), gas, busWell.getPosition(), + alarmContent, DeviceTypeEnum.LG.toString(), "%LEL"); } } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); diff --git a/src/main/java/org/well/well/manager/LGLiquidManager.java b/src/main/java/org/well/well/manager/LGLiquidManager.java index 0986009..bf7e4f1 100644 --- a/src/main/java/org/well/well/manager/LGLiquidManager.java +++ b/src/main/java/org/well/well/manager/LGLiquidManager.java @@ -75,6 +75,8 @@ return resultMap; } + + @Transactional public void processNormalData(JSONObject jsonObject, String devCode) { String cell = jsonObject.getString("cell"); diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index 7cf4eff..fb5d569 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -16,6 +16,7 @@ import org.well.well.domain.BusWell; import org.well.well.domain.Device; import org.well.well.domain.Methane; +import org.well.well.util.AbnormalDataProcessor; import org.well.well.util.AlarmPushProvider; import org.well.well.util.SnowFlakeUtil; @@ -26,6 +27,8 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; @Service public class MethaneManager extends HibernateEntityDao { @@ -68,12 +71,16 @@ String snr = null != jsonObject.get("snr") ? jsonObject.get("snr").toString() : ""; JSONArray jsonArray = (JSONArray) jsonObject.get("datas"); BusWell busWell = busWellManager.getWellByDevCode(devCode); - for (int i = 0; i < jsonArray.size(); i++) { + Stream listFilter = jsonArray.stream() + .filter(object -> + ((JSONObject) object).containsKey("gas") + &&AbnormalDataProcessor.showSkip(((JSONObject) object).getString("gas"))); + List jsonFilter=listFilter.collect(Collectors.toList()); + for (int i = 0; i < jsonFilter.size(); i++) { 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.存数据 saveData(devCode, busWell == null ? "" : busWell.getWellCode(), gas, cell, upTime, pci, rsrp, snr); //2.有无超限处理流程(判断最后一条数据) diff --git a/src/main/java/org/well/well/util/AbnormalDataProcessor.java b/src/main/java/org/well/well/util/AbnormalDataProcessor.java new file mode 100644 index 0000000..88e4589 --- /dev/null +++ b/src/main/java/org/well/well/util/AbnormalDataProcessor.java @@ -0,0 +1,17 @@ +package org.well.well.util; + +public class AbnormalDataProcessor { + + public static Boolean showSkip(String value) { + value= String.format("%.2f", Double.valueOf(value)); + switch (value) { + case "40.00": + case "60.00": + case "80.00": + return false; + default: + return true; + } + } + +} diff --git a/src/main/java/org/well/well/util/AlarmPushProvider.java b/src/main/java/org/well/well/util/AlarmPushProvider.java index 2bcfb8e..07e5c1a 100644 --- a/src/main/java/org/well/well/util/AlarmPushProvider.java +++ b/src/main/java/org/well/well/util/AlarmPushProvider.java @@ -14,7 +14,8 @@ private static final Logger log = LoggerFactory.getLogger(SendBatchSmsUtil.class.getName()); - public static void alarmPushBuilder(String devcode, String tel, String value, String position, + + public static void aliPushBuilder(String devcode, String tel, String value, String position, String alarmContent, String deviceType, String units) { // if (alarmPushConfig.getEnable().equals(1)) { // if (alarmPushConfig.getWebsocketAlarm().equals(1)) { @@ -30,7 +31,7 @@ JSONArray msglist = new JSONArray(); JSONObject msgMap = new JSONObject(); msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); - msgMap.put("devcode", devcode); + msgMap.put("devcode", devcode+"("+deviceType+")"); msgMap.put("value", value+units); msgMap.put("position", position); msgMap.put("content", alarmContent); @@ -51,4 +52,20 @@ // } } + public static void alarmPushBuilder(String devcode, String tels, String value, String position, + String alarmContent, String deviceType, String units) { +// JSONArray msglist = new JSONArray(); +// JSONObject msgMap = new JSONObject(); +// msgMap.put("time", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); +// msgMap.put("devcode", devcode+"("+deviceType+")"); +// msgMap.put("value", value+units); +// msgMap.put("position", position); +// msgMap.put("content", alarmContent); +// String phoneJson = ""; + String content ="设备编号为"+devcode+"的"+deviceType+",在"+position+"发生了"+alarmContent+",报警值为"+value+units+",请及时处理!"; + HyShortMsgUtil.sendMsg(content,tels); + } + + + } diff --git a/src/main/java/org/well/well/util/Configure.java b/src/main/java/org/well/well/util/Configure.java index e2da687..d72d304 100644 --- a/src/main/java/org/well/well/util/Configure.java +++ b/src/main/java/org/well/well/util/Configure.java @@ -27,7 +27,8 @@ public static String getProperty(String key, String defaultValue) { try { - String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); + String value= properties.getProperty(key); +// String value = new String(properties.getProperty(key).getBytes("ISO-8859-1"), "utf-8"); if (null == value) { return defaultValue; } else { diff --git a/src/main/java/org/well/well/util/HyShortMsgUtil.java b/src/main/java/org/well/well/util/HyShortMsgUtil.java new file mode 100644 index 0000000..601288c --- /dev/null +++ b/src/main/java/org/well/well/util/HyShortMsgUtil.java @@ -0,0 +1,82 @@ +package org.well.well.util; + + +import org.apache.commons.httpclient.HttpClient; +import org.apache.commons.httpclient.HttpException; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; + +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; + +/** + * 互亿无线的短信平台util + * + * @author cz + * @date 2023-3-20 + */ +public class HyShortMsgUtil { +// private static String Url = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; + + private static final Logger log = LoggerFactory.getLogger(HyShortMsgUtil.class.getName()); + + public static void sendMsg(String content, String mobiles) { + + String Url = Configure.getProperty("hy_url", ""); + String appId = Configure.getProperty("appId", ""); + String appKey = Configure.getProperty("appKey", ""); + HttpClient client = new HttpClient(); + PostMethod method = new PostMethod(Url); + + client.getParams().setContentCharset("GBK"); + method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=GBK"); + + int mobile_code = (int) ((Math.random() * 9 + 1) * 100000); + + NameValuePair[] data = {//提交短信 + new NameValuePair("account", appId), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIID + new NameValuePair("password", appKey), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEY + //new NameValuePair("password", util.StringUtil.MD5Encode("密码")), + new NameValuePair("mobile", "13651065090"), + new NameValuePair("content", content), + }; + + String[] mobileList = mobiles.split(","); + + try { + //批量发送 + for (String mobile : mobileList) { + data[2].setValue(mobile); + method.setRequestBody(data); + client.executeMethod(method); + String SubmitResult = method.getResponseBodyAsString(); + //System.out.println(SubmitResult); + Document doc = DocumentHelper.parseText(SubmitResult); + Element root = doc.getRootElement(); + String code = root.elementText("code"); + String msg = root.elementText("msg"); + String smsid = root.elementText("smsid"); + log.info("手机号是{},发送内容是{},短信回执码:{},返回消息是{},smsid是{}", data[2].getValue(), data[3].getValue(), code, msg, smsid); + if ("2".equals(code)) { + System.out.println("短信提交成功"); + } + } + } catch (HttpException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (DocumentException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index b3946b0..b921a04 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -1,5 +1,3 @@ - - # ============================================================================ # application # ============================================================================ @@ -10,8 +8,6 @@ com.mossle.layout.messages application.scope.type=mock application.database.type=h2 - - # ============================================================================ # dbtest # ============================================================================ @@ -53,13 +49,9 @@ jdbc.testOnReturn=false jdbc.timeBetweenEvictionRunsMillis=30000 jdbc.numTestsPerEvictionRun=100 - - # log4jdbc # ============================================================================ log4jdbc.enable=false - - # ============================================================================ # hibernate # ============================================================================ @@ -70,8 +62,6 @@ hibernate.format_sql=false hibernate.generate_statistics=true #hibernate.hbm2ddl.auto=create - - # ============================================================================ # mail # ============================================================================ @@ -83,8 +73,6 @@ mail.mode=skip mail.test.mail=demo.mossle@gmail.com mail.default.from=demo.mossle@gmail.com - - #============================================================================ # log #============================================================================ @@ -95,27 +83,17 @@ log.mail.enable=false log.inspektr.enable=false log.log4jdbc.enable=false - - # ============================================================================ # filter # ============================================================================ - - - # ============================================================================ # servlet # ============================================================================ - - - # ============================================================================ # quartz # ============================================================================ quartz.autostartup=false org.quartz.plugin.historytrigger.class=org.quartz.plugins.history.LoggingTriggerHistoryPlugin - - # ============================================================================ # cache # ============================================================================ @@ -124,18 +102,14 @@ cache.memcached.client.url=localhost:11211 cache.memcached.server.enable=true cache.memcached.server.url=localhost:11211 - # ============================================================================ # store # ============================================================================ store.baseDir=casic.store - # ============================================================================ # lampSink # ============================================================================ lampSink.enable=false - - # ============================================================================ # schedular # ========================================================= =================== @@ -143,51 +117,48 @@ scheduler.com.casic.baseService.scheduler.DeviceCheckingJob.execute=true deviceChecking.enabled=true #cron.time=0 37 15 * * ? +# ============================================================================ +# \uFFFD\uFFFD\uFFFD\u037C\uFFFD\uFFFD +# ============================================================================ +SEND.INTERVAL=10000 +# ============================================================================ +# \u4E2A\u63A8\u914D\u7F6E\u4FE1\u606F +# ============================================================================ +gt.appId=qQqFtTBrUa7SGLjntUlpT4 +gt.appKey=GNjHLiqJkD6OoeZbtbdfi5 +gt.masterSecret=TZRYQknkxLAJ58uH56PeS6 +# ============================================================================ +# ACTIVEMQ\u914D\u7F6E +# ============================================================================ +activemq_url=tcp://192.168.0.203:61616 +activemq_username= +activemq_password= +# ============================================================================ +# \u544A\u8B66\u3001\u5DE5\u5355\u63A8\u9001\u5730\u5740 +# ============================================================================ +sendURL=http://119.254.103.80:14537/job/updateSinkJob +# ============================================================================ +# \u6E2F\u534E\u71C3\u6C14\u62A5\u8B66\u77ED\u4FE1\u63A8\u9001 +# ============================================================================ +GH_SMS_URL=http://61.145.229.28:8803 +GH_USER_ID=JU5802 +GH_PWD=761060 +# ============================================================================ +# \u5929\u6C14\u83B7\u53D6\u63A5\u53E3 +# ============================================================================ +SERVIES_HOST=https://way.jd.com/he/freeweather +CITY=beijing +Appkey=937cd1ce7e4f44545b3a1841ab6794b0 +Press= +aliKey=LTAI5tDFNucQF2Bdy4fHgzrN +aliSecret=hZ22QQPxQue1G0R8Ty2bo6GimrLdoB +aliUrl=dysmsapi.aliyuncs.com +aliSignNameJson=\u67F4\u58EE\u544A\u8B66\u63D0\u9192 +aliTemplateCode=SMS_274425014 -# ============================================================================ -# ���ͼ�� -# ============================================================================ -SEND.INTERVAL = 10000 -# ============================================================================ -# 个推配置信息 -# ============================================================================ -gt.appId = qQqFtTBrUa7SGLjntUlpT4 -gt.appKey = GNjHLiqJkD6OoeZbtbdfi5 -gt.masterSecret = TZRYQknkxLAJ58uH56PeS6 - -# ============================================================================ -# ACTIVEMQ配置 -# ============================================================================ -activemq_url = tcp://192.168.0.203:61616 -activemq_username = -activemq_password = - - -# ============================================================================ -# 告警、工单推送地址 -# ============================================================================ -sendURL = http://119.254.103.80:14537/job/updateSinkJob - - - -# ============================================================================ -# 港华燃气报警短信推送 -# ============================================================================ -GH_SMS_URL = http://61.145.229.28:8803 -GH_USER_ID = JU5802 -GH_PWD = 761060 -# ============================================================================ -# 天气获取接口 -# ============================================================================ -SERVIES_HOST= https://way.jd.com/he/freeweather -CITY = beijing -Appkey = 937cd1ce7e4f44545b3a1841ab6794b0 -Press = - -aliKey = LTAI5tDFNucQF2Bdy4fHgzrN -aliSecret= hZ22QQPxQue1G0R8Ty2bo6GimrLdoB -aliUrl = dysmsapi.aliyuncs.com -aliSignNameJson = 柴壮告警提醒 -aliTemplateCode= SMS_273775754 +#\u4E92\u4EBF\u65E0\u7EBF\u7684\u77ED\u4FE1\u5E73\u53F0 +appId=C09164727 +appKey=9c80f9334af06a5f9cacc1468eb84632 +hy_url=http://106.ihuyi.com/webservice/sms.php?method=Submit diff --git a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml index b5e0991..deb1980 100644 --- a/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml +++ b/src/main/resources/wellSensor/applicationContex-ActiveMQ.xml @@ -19,12 +19,11 @@ http://activemq.apache.org/schema/core/activemq-core-5.14.5.xsd" > - + + userName="${activemq_username}"/>