package org.flume.alarm.restful; import com.google.gson.GsonBuilder; import net.sf.json.JSONObject; import org.flume.alarm.core.util.DateUtils; import org.flume.alarm.core.util.MD5Utils; import org.flume.alarm.core.util.StringUtils; import org.flume.alarm.domain.Device; import org.flume.alarm.util.Configure; import java.util.*; public class DeviceUtilDTO { public static Map<String, String> devTypeCodeMap = new HashMap<String, String>(); static {//设备类型编码 devTypeCodeMap.put(DeviceTypeCodeEnum.FireHydrant.getIndex(), "1132"); devTypeCodeMap.put(DeviceTypeCodeEnum.Liquid.getIndex(), "1127"); devTypeCodeMap.put(DeviceTypeCodeEnum.Noise.getIndex(), "1130"); devTypeCodeMap.put(DeviceTypeCodeEnum.MultiLeak.getIndex(), "1129"); devTypeCodeMap.put(DeviceTypeCodeEnum.Methane.getIndex(), "1131"); devTypeCodeMap.put(DeviceTypeCodeEnum.Well.getIndex(), "1126"); devTypeCodeMap.put(DeviceTypeCodeEnum.Brq.getIndex(), "1024"); devTypeCodeMap.put(DeviceTypeCodeEnum.WasteGas.getIndex(), "1128"); } private String deviceName; private String deviceCode; private String deviceTypeCode; private String productCode; private String accessNetwork; private String latitude; private String longitude; private String threeDCoordinate; private String manufacturerName; private String version; private String remarks; private String method; private String status; private String alarmAddr; private String alarmCode; private String alarmContent; private String alarmLevel; private String alarmTime; private String alarmTitle; private String alarmType; private String appId; private String confirm; private String msgCode; private String msgSource; private String msgStatus; private String port; private String timestamp; private Map data; private DeviceUtilDTO header; private String appKey; private String customerCode; private String msgId; private String accessToken; private static String expiresSecond; private static Date begDate; public String getDeviceName() { return deviceName; } public void setDeviceName(String deviceName) { this.deviceName = deviceName; } public String getDeviceCode() { return deviceCode; } public void setDeviceCode(String deviceCode) { this.deviceCode = deviceCode; } public String getDeviceTypeCode() { return deviceTypeCode; } public void setDeviceTypeCode(String deviceTypeCode) { this.deviceTypeCode = deviceTypeCode; } public String getProductCode() { return productCode; } public void setProductCode(String productCode) { this.productCode = productCode; } public String getAccessNetwork() { return accessNetwork; } public void setAccessNetwork(String accessNetwork) { this.accessNetwork = accessNetwork; } public String getLatitude() { return latitude; } public void setLatitude(String latitude) { this.latitude = latitude; } public String getLongitude() { return longitude; } public void setLongitude(String longitude) { this.longitude = longitude; } public String getManufacturerName() { return manufacturerName; } public void setManufacturerName(String manufacturerName) { this.manufacturerName = manufacturerName; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public String getRemarks() { return remarks; } public void setRemarks(String remarks) { this.remarks = remarks; } public String getMethod() { return method; } public void setMethod(String method) { this.method = method; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public String getThreeDCoordinate() { return threeDCoordinate; } public void setThreeDCoordinate(String threeDCoordinate) { this.threeDCoordinate = threeDCoordinate; } public String getAlarmAddr() { return alarmAddr; } public void setAlarmAddr(String alarmAddr) { this.alarmAddr = alarmAddr; } public String getAlarmCode() { return alarmCode; } public void setAlarmCode(String alarmCode) { this.alarmCode = alarmCode; } public String getAlarmContent() { return alarmContent; } public void setAlarmContent(String alarmContent) { this.alarmContent = alarmContent; } public String getAlarmLevel() { return alarmLevel; } public void setAlarmLevel(String alarmLevel) { this.alarmLevel = alarmLevel; } public String getAlarmTime() { return alarmTime; } public void setAlarmTime(String alarmTime) { this.alarmTime = alarmTime; } public String getAlarmTitle() { return alarmTitle; } public void setAlarmTitle(String alarmTitle) { this.alarmTitle = alarmTitle; } public String getAlarmType() { return alarmType; } public void setAlarmType(String alarmType) { this.alarmType = alarmType; } public String getAppId() { return appId; } public void setAppId(String appId) { this.appId = appId; } public String getConfirm() { return confirm; } public void setConfirm(String confirm) { this.confirm = confirm; } public String getMsgCode() { return msgCode; } public void setMsgCode(String msgCode) { this.msgCode = msgCode; } public String getMsgSource() { return msgSource; } public void setMsgSource(String msgSource) { this.msgSource = msgSource; } public String getMsgStatus() { return msgStatus; } public void setMsgStatus(String msgStatus) { this.msgStatus = msgStatus; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getTimestamp() { return timestamp; } public void setTimestamp(String timestamp) { this.timestamp = timestamp; } public Map getData() { return data; } public void setData(Map data) { this.data = data; } public DeviceUtilDTO getHeader() { return header; } public void setHeader(DeviceUtilDTO header) { this.header = header; } public DeviceUtilDTO() { } public DeviceUtilDTO(String deviceCode, String deviceTypeName, String alarmAddr, String alarmCode, String alarmContent, String alarmLevel, String alarmTime, String alarmTitle, String alarmType) { if (deviceCode.indexOf("-") != -1) { deviceCode = deviceCode.replaceAll("-", ""); } else if (deviceCode.indexOf("_") != -1) { deviceCode = deviceCode.replaceAll("_", ""); } this.deviceCode = "341000" + "A001" + devTypeCodeMap.get(deviceTypeName) + "1001" + deviceCode; this.alarmAddr = alarmAddr; this.alarmCode = alarmCode + new Date().getTime(); this.alarmContent = alarmContent; this.alarmLevel = alarmLevel; this.alarmTime = alarmTime; this.alarmTitle = alarmTitle; this.alarmType = alarmType; } public DeviceUtilDTO(String appKey, String customerCode, String msgId) { this.appKey = appKey; this.customerCode = customerCode; this.msgId = msgId; } public DeviceUtilDTO(String deviceCode, String method) { this.deviceCode = deviceCode; this.method = method; } public DeviceUtilDTO(String appId, String confirm, String msgCode, String msgSource, String msgStatus, String port, String timestamp, Map data, String deviceCode, String deviceTypeName) { this.appId = appId; this.confirm = confirm; this.msgCode = msgCode; this.msgSource = msgSource; this.msgStatus = msgStatus; this.port = port; this.timestamp = timestamp; this.data = data; if (deviceCode.indexOf("-") != -1) { deviceCode = deviceCode.replaceAll("-", ""); } else if (deviceCode.indexOf("_") != -1) { deviceCode = deviceCode.replaceAll("_", ""); } this.deviceCode = "341000" + "A001" + devTypeCodeMap.get(deviceTypeName) + "1001" + deviceCode; this.header = new DeviceUtilDTO(Configure.getProperty("appKey"), Configure.getProperty("customerCode"), DateUtils.sdf6.format(new Date()) + (int) ((Math.random() * 9 + 1) * 1000)); } public static void sendMsg(String url, DeviceUtilDTO msg) { if ("true".equals(Configure.getProperty("synchronize.enabled", "false"))) { try { com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject(); JSONObject jsonheader = new JSONObject(); jsonheader.put("appKey", Configure.getProperty("appKey")); jsonheader.put("msgId", DateUtils.sdf6.format(new Date()) + (int) ((Math.random() * 9 + 1) * 1000)); jsonheader.put("customerCode", Configure.getProperty("customerCode")); jsonObject.put("data", msg); jsonObject.put("header", jsonheader); // com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(body); String str = url + jsonObject.toString() + Configure.getProperty("Secret"); str = MD5Utils.MD5Encode(str,"utf-8"); String responseMsg = HttpClientUtils.post(Configure.getProperty("sendURL") + url + "?token=" + str, jsonObject.toString()); System.out.println("****************************" + responseMsg); } catch (Exception e) { e.printStackTrace(); } } } public static boolean validateSession() { try { String token = Configure.getProperty("token"); if (StringUtils.isBlank(token)) { getToken(); } if (StringUtils.isNotBlank(Configure.getProperty("token"))) return true; } catch (Exception e) { e.printStackTrace(); System.out.println("********获取token失败"); } return false; } public static void sendDataMsg(String url, DeviceUtilDTO msg) { if ("true".equals(Configure.getProperty("synchronize.enabled", "false"))) { // if (!validateSession()) return; try { String body = new GsonBuilder().create().toJson(msg); com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(body); String str = url + json.toString() + Configure.getProperty("Secret"); str = MD5Utils.MD5Encode(str,"utf-8"); String responseMsg = HttpClientUtils.post(Configure.getProperty("sendURL") + url + "?token=" + str, json.toString()); System.out.println("****************************" + responseMsg); } catch (Exception e) { e.printStackTrace(); System.out.println("******推送失败" + new GsonBuilder().create().toJson(msg)); } } } public static void getToken() { try { if ("true".equals(Configure.getProperty("synchronize.enabled", "false"))) { Map<String, Object> paraMap = new HashMap<String, Object>(); paraMap.put("appKey", "gwzx"); paraMap.put("secret", "7553d8ddc9324ab731426794ff042c2b"); String body = new GsonBuilder().create().toJson(paraMap); String responseMsg = HttpClientUtils.post(Configure.getProperty("sendURL") + Configure.getProperty("permissionToken"), body); if (StringUtils.isNotBlank(responseMsg)) { JSONObject json = JSONObject.fromObject(responseMsg); String token = json.get("token").toString();//获取token值 JSONObject jsonObject = (JSONObject) json.get("data"); String expiresSecond = jsonObject.get("expiresSecond").toString();//获取超时时间 Configure.setProperty("token",token); Configure.setProperty("expiresSecond",expiresSecond); Configure.setProperty("begDate",String.valueOf(new Date().getTime())); } } } catch (Exception e) { e.printStackTrace(); System.out.println("获取token失败-----------"); } } public static void sendCase(Map<String, Object> bodyMap) { if ("true".equals(Configure.getProperty("synchronizeCase.enabled", "false"))) { if (!validateCaseSession()) return; try { String responseMsg = HttpClientUtils.postCase(Configure.getProperty("sendCaseURL"), new GsonBuilder().create().toJson(bodyMap)); System.out.println("****************************推送成功" + responseMsg); } catch (Exception e) { e.printStackTrace(); System.out.println("******推送失败" + new GsonBuilder().create().toJson(bodyMap)); } } } public static boolean validateCaseSession() { try { String caseToken = Configure.getProperty("caseToken"); if (StringUtils.isBlank(caseToken)) { getCaseToken(); } else { String casebegDate = Configure.getProperty("casebegDate"); // String expiresSecond=Configure.getProperty("expiresSecond"); if (new Date().getTime() - Long.valueOf(casebegDate) > 30 * 60 * 1000) { getCaseToken(); } } if (StringUtils.isNotBlank(Configure.getProperty("caseToken"))) return true; } catch (Exception e) { e.printStackTrace(); System.out.println("********caseToken"); } return false; } public static void getCaseToken() { try { if ("true".equals(Configure.getProperty("synchronizeCase.enabled", "false"))) { Map<String, Object> paraMap = new HashMap<String, Object>(); paraMap.put("userName", Configure.getProperty("userName")); paraMap.put("passWord", Configure.getProperty("passWord")); paraMap.put("specialCode", "GAN-ZHOU"); String body = new GsonBuilder().create().toJson(paraMap); String responseMsg = HttpClientUtils.postCase(Configure.getProperty("CaseTokenURL"), body); if (StringUtils.isNotBlank(responseMsg)) { JSONObject json = JSONObject.fromObject(responseMsg); JSONObject jsonObject = (JSONObject) json.get("data"); String token = jsonObject.get("token").toString();//获取token值 Configure.setProperty("caseToken", token); Configure.setProperty("CaseexpiresSecond", "30"); Configure.setProperty("casebegDate", String.valueOf(new Date().getTime())); } } } catch (Exception e) { e.printStackTrace(); System.out.println("获取token失败-----------"); } } public static void sendDevices(List<Device> deviceList){ JSONObject jsonheader = new JSONObject(); JSONObject json = new JSONObject(); jsonheader.put("appKey", Configure.getProperty("appKey")); jsonheader.put("msgId", DateUtils.sdf6.format(new Date()) + (int) ((Math.random() * 9 + 1) * 1000)); jsonheader.put("customerCode", Configure.getProperty("customerCode")); List<JSONObject> jsonObjects = new ArrayList<JSONObject>(); for(Device device :deviceList){ String deviceCode =device.getDevCode(); String deviceTypeName =device.getDeviceType().getTypeName(); if (deviceCode.indexOf("-") != -1) { deviceCode = deviceCode.replaceAll("-", ""); } else if (deviceCode.indexOf("_") != -1) { deviceCode = deviceCode.replaceAll("_", ""); } JSONObject jsonDevice = new JSONObject(); jsonDevice.put("accessNetwork",""); jsonDevice.put("deviceCode","341000" + "A001" + devTypeCodeMap.get(deviceTypeName) + "1001" + deviceCode); jsonDevice.put("deviceName",device.getDevName()); jsonDevice.put("deviceTypeCode",devTypeCodeMap.get(deviceTypeName)); jsonDevice.put("latitude",device.getLatitude()); jsonDevice.put("longitude",device.getLongtitude()); jsonDevice.put("manufacturerName","1001"); jsonDevice.put("method","C"); jsonDevice.put("productCode",DeviceTypeCodeEnum.getByIndex(deviceTypeName).getName()); jsonDevice.put("remarks",""); jsonDevice.put("threeDCoordinate",""); jsonDevice.put("version","v1.1"); jsonObjects.add(jsonDevice); } json.put("data",jsonObjects); json.put("header",jsonheader); try { String url=Configure.getProperty("batchCrudURL"); String str = url + json.toString() + Configure.getProperty("Secret"); str = MD5Utils.MD5Encode(str,"utf-8"); String responseMsg = HttpClientUtils.post(Configure.getProperty("sendURL") + url + "?token=" + str, json.toString()); System.out.println("****************************" + responseMsg); } catch (Exception e) { e.printStackTrace(); System.out.println("******推送失败" + json.toString()); } } }