diff --git a/src/main/java/org/well/well/core/util/SmsPushUtil.java b/src/main/java/org/well/well/core/util/SmsPushUtil.java new file mode 100644 index 0000000..7fe7eca --- /dev/null +++ b/src/main/java/org/well/well/core/util/SmsPushUtil.java @@ -0,0 +1,77 @@ +package org.well.well.core.util; + +import org.mortbay.util.ajax.JSON; +import org.well.well.core.mapper.JsonMapper; +import org.well.well.util.Configure; + +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class SmsPushUtil { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + + public static void excutePushMsg(String mobile, String msg) throws IOException { + if (checkMsgContent(mobile, msg)) { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final String smsUrl = Configure.getProperty("GH_SMS_URL", ""); + final String phone = mobile; + final String message = msg; + final String smsBody = msgBulider(mobile, msg); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(smsUrl + "/sms/v2/std/send_single", smsBody); + Map msgMap = (HashMap) JSON.parse(retMsg); + if (String.valueOf(msgMap.get("result")).equals("0")) { + Thread.sleep(500); + System.out.println("--------消息推送消息平台,推送成功,成功消息" + retMsg + ",消息内容:" + message); + } else { + System.out.println("--------消息推送消息平台失败,手机号:" + phone + ",消息内容:" + message); + } + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------消息推送消息平台异常,手机号:" + phone + ",消息内容:" + message); + } + } + }); + } + } + + private static String msgBulider(String mobile, String msg) throws IOException { + final String userId = Configure.getProperty("GH_USER_ID", ""); + String brightPwd = Configure.getProperty("GH_PWD", ""); + String tempTime = sdf.format(new Date()); + tempTime = tempTime.substring(4, tempTime.length() - 1); + String beforeMdpwd = userId + "00000000" + brightPwd + tempTime; + final String Md5Pwd = Md5Utils.getMd5(beforeMdpwd); + final String content = URLEncoder.encode(msg, "UTF-8"); + Map smsMap = new HashMap(); + JsonMapper jsonMapper = new JsonMapper(); + smsMap.put("userid", userId); + smsMap.put("pwd", Md5Pwd); + smsMap.put("mobile", mobile); + smsMap.put("content", content); + smsMap.put("timestamp", tempTime); + return jsonMapper.toJson(smsMap); + } + + private static Boolean checkMsgContent(String mobile, String msg) { + if (StringUtils.isEmpty(mobile)) { + System.out.println("手机号缺少,提示内容是" + msg); + return false; + } + if (StringUtils.isEmpty(msg)) { + System.out.println("内容缺少,手机号是" + mobile); + return false; + } + return true; + } +} diff --git a/src/main/java/org/well/well/core/util/SmsPushUtil.java b/src/main/java/org/well/well/core/util/SmsPushUtil.java new file mode 100644 index 0000000..7fe7eca --- /dev/null +++ b/src/main/java/org/well/well/core/util/SmsPushUtil.java @@ -0,0 +1,77 @@ +package org.well.well.core.util; + +import org.mortbay.util.ajax.JSON; +import org.well.well.core.mapper.JsonMapper; +import org.well.well.util.Configure; + +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class SmsPushUtil { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + + public static void excutePushMsg(String mobile, String msg) throws IOException { + if (checkMsgContent(mobile, msg)) { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final String smsUrl = Configure.getProperty("GH_SMS_URL", ""); + final String phone = mobile; + final String message = msg; + final String smsBody = msgBulider(mobile, msg); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(smsUrl + "/sms/v2/std/send_single", smsBody); + Map msgMap = (HashMap) JSON.parse(retMsg); + if (String.valueOf(msgMap.get("result")).equals("0")) { + Thread.sleep(500); + System.out.println("--------消息推送消息平台,推送成功,成功消息" + retMsg + ",消息内容:" + message); + } else { + System.out.println("--------消息推送消息平台失败,手机号:" + phone + ",消息内容:" + message); + } + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------消息推送消息平台异常,手机号:" + phone + ",消息内容:" + message); + } + } + }); + } + } + + private static String msgBulider(String mobile, String msg) throws IOException { + final String userId = Configure.getProperty("GH_USER_ID", ""); + String brightPwd = Configure.getProperty("GH_PWD", ""); + String tempTime = sdf.format(new Date()); + tempTime = tempTime.substring(4, tempTime.length() - 1); + String beforeMdpwd = userId + "00000000" + brightPwd + tempTime; + final String Md5Pwd = Md5Utils.getMd5(beforeMdpwd); + final String content = URLEncoder.encode(msg, "UTF-8"); + Map smsMap = new HashMap(); + JsonMapper jsonMapper = new JsonMapper(); + smsMap.put("userid", userId); + smsMap.put("pwd", Md5Pwd); + smsMap.put("mobile", mobile); + smsMap.put("content", content); + smsMap.put("timestamp", tempTime); + return jsonMapper.toJson(smsMap); + } + + private static Boolean checkMsgContent(String mobile, String msg) { + if (StringUtils.isEmpty(mobile)) { + System.out.println("手机号缺少,提示内容是" + msg); + return false; + } + if (StringUtils.isEmpty(msg)) { + System.out.println("内容缺少,手机号是" + mobile); + return false; + } + return true; + } +} diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index a8c44d8..7e7039c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,8 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.SmsPushUtil; +import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; import org.well.well.domain.AlarmJob; import org.well.well.domain.BusWell; @@ -110,9 +112,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.写入新的告警 @@ -121,6 +123,13 @@ devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); + + if (!StringUtils.isEmpty(busWell.getTel())) { + final String pushMsgContent = "在" + new Timestamp((new Date()).getTime()) + ",设备" + devCode + "在" + busWell.getPosition() + "发生" + alarmContent + ",为" + alarmLevel + "级报警"; + //4.toDO:向济南港华推送消息 + SmsPushUtil.excutePushMsg(busWell.getTel(), pushMsgContent); + } + } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } @@ -150,9 +159,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (null == alarmJob) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); } alarmRecordManager.saveData(jobId, "2", null, diff --git a/src/main/java/org/well/well/core/util/SmsPushUtil.java b/src/main/java/org/well/well/core/util/SmsPushUtil.java new file mode 100644 index 0000000..7fe7eca --- /dev/null +++ b/src/main/java/org/well/well/core/util/SmsPushUtil.java @@ -0,0 +1,77 @@ +package org.well.well.core.util; + +import org.mortbay.util.ajax.JSON; +import org.well.well.core.mapper.JsonMapper; +import org.well.well.util.Configure; + +import java.io.IOException; +import java.net.URLEncoder; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +public class SmsPushUtil { + + private static final SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); + + public static void excutePushMsg(String mobile, String msg) throws IOException { + if (checkMsgContent(mobile, msg)) { + ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); + final String smsUrl = Configure.getProperty("GH_SMS_URL", ""); + final String phone = mobile; + final String message = msg; + final String smsBody = msgBulider(mobile, msg); + cachedThreadPool.execute(new Runnable() { + @Override + public void run() { + try { + String retMsg = HttpClientUtils.post(smsUrl + "/sms/v2/std/send_single", smsBody); + Map msgMap = (HashMap) JSON.parse(retMsg); + if (String.valueOf(msgMap.get("result")).equals("0")) { + Thread.sleep(500); + System.out.println("--------消息推送消息平台,推送成功,成功消息" + retMsg + ",消息内容:" + message); + } else { + System.out.println("--------消息推送消息平台失败,手机号:" + phone + ",消息内容:" + message); + } + } catch (InterruptedException e) { + e.printStackTrace(); + System.out.println("--------消息推送消息平台异常,手机号:" + phone + ",消息内容:" + message); + } + } + }); + } + } + + private static String msgBulider(String mobile, String msg) throws IOException { + final String userId = Configure.getProperty("GH_USER_ID", ""); + String brightPwd = Configure.getProperty("GH_PWD", ""); + String tempTime = sdf.format(new Date()); + tempTime = tempTime.substring(4, tempTime.length() - 1); + String beforeMdpwd = userId + "00000000" + brightPwd + tempTime; + final String Md5Pwd = Md5Utils.getMd5(beforeMdpwd); + final String content = URLEncoder.encode(msg, "UTF-8"); + Map smsMap = new HashMap(); + JsonMapper jsonMapper = new JsonMapper(); + smsMap.put("userid", userId); + smsMap.put("pwd", Md5Pwd); + smsMap.put("mobile", mobile); + smsMap.put("content", content); + smsMap.put("timestamp", tempTime); + return jsonMapper.toJson(smsMap); + } + + private static Boolean checkMsgContent(String mobile, String msg) { + if (StringUtils.isEmpty(mobile)) { + System.out.println("手机号缺少,提示内容是" + msg); + return false; + } + if (StringUtils.isEmpty(msg)) { + System.out.println("内容缺少,手机号是" + mobile); + return false; + } + return true; + } +} diff --git a/src/main/java/org/well/well/manager/MethaneManager.java b/src/main/java/org/well/well/manager/MethaneManager.java index a8c44d8..7e7039c 100644 --- a/src/main/java/org/well/well/manager/MethaneManager.java +++ b/src/main/java/org/well/well/manager/MethaneManager.java @@ -9,6 +9,8 @@ import org.well.well.base.DeviceTypeEnum; import org.well.well.core.hibernate.HibernateEntityDao; import org.well.well.core.util.DateUtils; +import org.well.well.core.util.SmsPushUtil; +import org.well.well.core.util.StringUtils; import org.well.well.core.util.ThreadUtil; import org.well.well.domain.AlarmJob; import org.well.well.domain.BusWell; @@ -110,9 +112,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.写入新的告警 @@ -121,6 +123,13 @@ devCode, busWell != null ? busWell.getWellCode() : "", upTime, alarmContent); //3.toDo:向app推送报警消息 ThreadUtil.excuteMsg(jobId, alarmContent); + + if (!StringUtils.isEmpty(busWell.getTel())) { + final String pushMsgContent = "在" + new Timestamp((new Date()).getTime()) + ",设备" + devCode + "在" + busWell.getPosition() + "发生" + alarmContent + ",为" + alarmLevel + "级报警"; + //4.toDO:向济南港华推送消息 + SmsPushUtil.excutePushMsg(busWell.getTel(), pushMsgContent); + } + } else { alarmJobManager.updateAlarmJobByDevCode(devCode, "数据正常,系统自动结束工单"); } @@ -150,9 +159,9 @@ BusWell busWell = busWellManager.getWellByDevCode(devCode); //4.若无工单写入新的工单 AlarmJob alarmJob = alarmJobManager.getByDevAndType(devCode, "0"); - Long jobId=alarmJob==null? SnowFlakeUtil.getId():alarmJob.getId(); + Long jobId = alarmJob == null ? SnowFlakeUtil.getId() : alarmJob.getId(); if (null == alarmJob) { - alarmJobManager.saveData(jobId,devCode, busWell != null ? + alarmJobManager.saveData(jobId, devCode, busWell != null ? busWell.getWellCode() : "", DeviceTypeEnum.Methane.toString(), "0"); } alarmRecordManager.saveData(jobId, "2", null, diff --git a/src/main/resources/wellSensor/application.properties b/src/main/resources/wellSensor/application.properties index d2dd078..2411a26 100644 --- a/src/main/resources/wellSensor/application.properties +++ b/src/main/resources/wellSensor/application.properties @@ -169,6 +169,13 @@ 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 # ============================================================================ # 天气获取接口 # ============================================================================