package org.flume.alarm.restful; import net.sf.json.JSONObject; import org.flume.alarm.AlarmEnumDTO.WellAlarmEnum; import org.flume.alarm.base.DeviceTypeEnum; import org.flume.alarm.core.util.DateUtils; import org.flume.alarm.core.util.StringUtils; import org.flume.alarm.domain.Device; import org.flume.alarm.manager.AlarmRecordManager; import org.flume.alarm.manager.DeviceManager; import org.flume.alarm.mq.RocketMQProducer; import org.flume.alarm.util.Configure; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.*; @Component @Async public class SendUtils { @Resource private AlarmRecordManager alarmRecordManager; @Resource private DeviceManager deviceManager; @Resource private RocketMQProducer rocketMQProducer; /*** * 下面推送采集数据 */ public void sendData(String devCode) { if ("true".equals(Configure.getProperty("synchronize.enabled", "false"))) { Map<String, Object> dataMap = new HashMap<String, Object>(); Map<String, Object> paramMap = new HashMap<String, Object>(); dataMap.put("serviceId", DeviceUtilDTO.devTypeCodeMap. get(DeviceTypeEnum.Well.toString())); paramMap.put("value", WellAlarmEnum.NORMAL.toString()); dataMap.put("paras", paramMap); DeviceUtilDTO.sendDataMsg(Configure.getProperty("reportInfoURL"), new DeviceUtilDTO("", "false", "updata", "alarm", "", "", DateUtils.sdf4.format(new Date()), dataMap, devCode, DeviceTypeEnum.Well.toString())); } } /*** * 下面推送报警事件至业务中台 */ public void sendDataCenter(String devCode, String typeName, String ptype, String type, String alarmContent) { { if ("true".equals(Configure.getProperty("synchronizeCenter.enabled", "false"))) { Device device = deviceManager.getDeviceByDevCode(devCode, typeName); String uuid = AlarmDataCenterUtilDTO.getUUID(); String resultMsg = AlarmDataCenterUtilDTO.sendMsg(Configure.getProperty("sendCenterURL"), new AlarmDataCenterUtilDTO( uuid, device.getFactory(), ptype, type, DateUtils.sdf4.format(new Date()), "A", "1", "0", "1", device.getDevCode(), device.getDevCode(), device.getLongtitude(), device.getLatitude(), alarmContent, alarmContent)); //执行成功后,更新已发送 if (StringUtils.isNotBlank(resultMsg)) { JSONObject json = JSONObject.fromObject(resultMsg); String code = json.get("code").toString(); if ("200".equals(code)) { JSONObject dataJson = json.getJSONObject("data"); alarmRecordManager.updateSend(device.getDevCode(), dataJson.getString("eventId")); } } } } } public static String getUUID() { UUID uuid = UUID.randomUUID(); String randomString = uuid.toString().replace("-", "").toUpperCase(); return randomString; } //数据推送物联网平台MqRocket public void sendMqRocket(String content) { JSONObject json = new JSONObject(); json.put("requestId", getUUID()); json.put("version", "1.0"); json.put("timestamp", System.currentTimeMillis()); JSONObject deviceJson = new JSONObject(); JSONObject dataJson = new JSONObject(); dataJson.put("key", "well_state"); dataJson.put("value", "well_state"); dataJson.put("time", System.currentTimeMillis()); } //事件推送物联网平台MqRocket public void sendAlarmMqRocket(String eName, String key, String value, String deviceNo, String typeName) { if ("true".equals(Configure.getProperty("synchronizeMq.enabled", "false"))) { Device device = deviceManager.getDeviceByDevCode(deviceNo, typeName); //没有注册的设备舍弃 if (null == device || StringUtils.isBlank(device.getInstallPosition())) return; JSONObject json = new JSONObject(); json.put("requestId", getUUID()); json.put("version", "1.0"); json.put("timestamp", System.currentTimeMillis()); JSONObject eventsJson = new JSONObject(); List<JSONObject> dataJsonList = new ArrayList<JSONObject>(); JSONObject dataJson = new JSONObject(); JSONObject paramsJson = new JSONObject(); List<JSONObject> paramsJsonList = new ArrayList<JSONObject>(); List<JSONObject> eventsJsonList = new ArrayList<JSONObject>(); dataJson.put("key", key); dataJson.put("value", value); dataJsonList.add(dataJson); eventsJson.put("ename", eName); eventsJson.put("outputData", dataJsonList); eventsJson.put("time", System.currentTimeMillis()); eventsJsonList.add(eventsJson); paramsJson.put("deviceNo", device.getInstallPosition()); paramsJson.put("events", eventsJsonList); paramsJsonList.add(paramsJson); json.put("params", paramsJsonList); rocketMQProducer.sendMsg(json.toString(), "reportDeviceEvent"); } } //设备状态推送物联网平台MqRocket public void sendStatusMqRocket(String devCode, String typeName) { if ("true".equals(Configure.getProperty("synchronizeMq.enabled", "false"))) { Device device = deviceManager.getDeviceByDevCode(devCode, typeName); //没有注册的设备舍弃 if (null == device || StringUtils.isBlank(device.getInstallPosition())) return; JSONObject json = new JSONObject(); json.put("requestId", getUUID()); json.put("version", "1.0"); json.put("timestamp", System.currentTimeMillis()); JSONObject deviceStatusJson = new JSONObject(); List<JSONObject> deviceStatusJsonList = new ArrayList<JSONObject>(); deviceStatusJson.put("deviceNo", device.getInstallPosition()); //上下线动作(1.在线,2.离线 3.设备故障 4.设备维护 deviceStatusJson.put("status", 1); deviceStatusJsonList.add(deviceStatusJson); json.put("params", deviceStatusJsonList); rocketMQProducer.sendMsg(json.toString(), "reportDeviceStatus"); } } public void sendEventBySms(Device device, JSONObject eventObj) { if ("true".equals(Configure.getProperty("synchronizeSms.enabled", "false"))) { String smsSenderUrl = Configure.getProperty("smsSenderURL", "http://general.bushub.rj.prd/sms/user/send"); String smsAppKey = Configure.getProperty("X-APP-KEY-SMS", "2f0e62c2-08b0-4d34-b90a-5a04b4c162ee"); String sim = device.getSimid(); if (null == sim || StringUtils.isBlank(sim)) { return; } if (null == smsAppKey || StringUtils.isBlank(smsAppKey)) { return; } JSONObject header = new JSONObject(); header.put("X-APP-KEY", smsAppKey); StringBuilder params = new StringBuilder(); params.append("{"); params.append("\"mobile\":"); params.append("\"").append(sim).append("\"").append(","); String prefix = "【智慧蓉江】"; String eventTm = DateUtils.sdf4.format(new Date()); String devName = device.getDevName(); String place = device.getPlace(); StringBuilder content = new StringBuilder(""); content.append(prefix); content.append(eventTm).append(","); content.append("管网监测设备[").append(devName).append("],"); content.append("发生").append(eventObj.getString("type")).append(","); if (eventObj.containsKey("value") == true) { content.append(eventObj.getString("value")).append(","); } content.append("详细地址是:").append(place).append(","); content.append("请关注并及时处理。"); params.append("\"content\":"); params.append("\"").append(content.toString()).append("\""); params.append("}"); String resp = HttpClientUtils.post(smsSenderUrl, params.toString(), header); } } }