Newer
Older
sink / src / main / java / org / flume / alarm / restful / DeviceUtilDTO.java
zhout on 2 Mar 2022 18 KB first commit
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());
        }

    }

}