package easydo.technology.core.qdplat;

import java.text.SimpleDateFormat;
import java.util.Date;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

public class QDPlatTCM {

    @Setter
    @Getter
    @NoArgsConstructor
    public static class QDPlatTCMInfo {

        private long projectId; // long 否 20 业平台的项目id （施工许可证编号和项目id二选一必传）
        private String towerDeviceId; // string 是 50 塔机id
        private String towerDeviceName; // string 是 50 塔机名称，示例：1#塔机
        private String towerDeviceNo; // string 是 50 塔机SN号
        private String manufacturingLicense; // string 是 50 制造许可编号
        private String model; // string 是 50 规格型号
        private String recordNumber; // string 是 50 设备备案编号
        private String manufacturer; // string 是 50 制造厂家
        private String propertyUnit; // string 是 50 设备产权单位
        private String manufactureDate; // string 是 20 出厂日期，格式yyyy-MM-dd
        private String manufacturingNo; // string 是 50 出厂编号
        private String contactNumber; // string 是 11 联系电话
        private String installationUnit; // string 是 50 安装单位
        private String verifyDate; // string 是 20 检验合格日期，格式yyyy-MM-dd
        private String recordDate; // string 是 20 使用登记日期，格式yyyy-MM-dd
        private String foreArmLength; // string 是 10 起重臂长，单位：m
        private String rearArmLength; // string 是 10 平衡臂长，单位：m
        private float maxLoad; // float 是 额定吊重，单位：t
        private float maxWeight; // float 是 最大吊重，单位：t
        private float ratedTorque; // float 是 额定力矩，单位：Kn·m
        private float ratedWindSpeed; // float 是 额定风速 0.00~36.90m/s
        private String customTowerCraneType; // string 是 1 塔机类型，1：尖头塔，2：平头塔，3：动臂塔
        private String detectionUnit; // string 否 50 检测单位
        private String simCardNo; // string 是 50 SIM卡号
        private String hardwareVer; // string 是 50 硬件版本号
        private String protocolVer; // string 是 50 协议版本号
        private int selfCraneNo; // int 是 塔机名称编号1~16
        private int craneType; // int 是 塔吊类型，0: 动臂吊，1: 塔头平臂吊，2: 平头平臂吊
        private float armHeight; // float 是 塔高，单位：m
        private float maxHeight; // float 是 最大高度，单位：m
        private float maxAngle; // float 是 最大角度，单位：°
        private float minAngle; // float 是 最小角度，单位：°
        private float ratedObliguity; // float 是 额定倾角，单位：°
        private float tcMSLoadCapacity; // float 是 最大幅度允许最大载重0.00~99.99t
        private float tcMLMaxScope; // float 是 最大载重达到最大幅度0.00~655.3m
        private String lng; // string 是 20 经度
        private String lat; // string 是 20 纬度
        private int isSupervise; // int 是 塔吊使用状态，0：使用中，1：已拆除
    }

    @Setter
    @Getter
    @NoArgsConstructor
    public static class QDPlatTCMStatus {

        private long projectId; // long 否 20 业平台的项目id （施工许可证编号和项目id二选一必传）
        private String towerDeviceId; // string 是 50 塔机id
        private String deviceId; // string 是 50 监测设备（黑匣子等）id
        private String deviceName; // string 是 50 监测设备名称
        private int deviceStatus; // int 是 监测设备状态，1：在线，0：离线
        private int deviceType; // int 是 监测设备类型，0：黑匣子，1：防倾翻
        private String uploadTime; // string 是 20 上传时间，格式yyyy-MM-dd HH:mm:ss
    }

    @Setter
    @Getter
    @NoArgsConstructor
    public static class QDPlatTCMRecord {

        private long projectId; // long 否 20 业平台的项目id （施工许可证编号和项目id二选一必传）
        private String towerDeviceId; // string 是 50 塔机id
        private String deviceId; // string 是 50 监测设备id
        private String deviceName; // string 是 50 监测设备名称
        private String driverName; // string 是 20 司机姓名
        private String loadRatio; // string 是 20 荷载比，单位：%
        private String torqueRatio; // string 是 20 力矩比，单位：%
        private String amplitude; // string 是 20 幅度，单位：°
        private String angle; // string 是 20 倾角，单位：°
        private String height; // string 是 20 高度，单位：m
        private String rotation; // string 是 20 转角，单位：°
        private String weight; // string 是 20 吊重0.00~99.99，单位：t
        private String windspeed; // string 是 20 风速0.00~36.90，单位：m/s
        private String uploadTime; // string 是 20 上传数据时间，格式yyyy-MM-dd HH:mm:ss
        private String protocolVer; // string 是 50 协议版本号
        private String deviceSN; // string 是 50 设备序列号
        private String deviceTCPIP; // string 是 200 黑匣子TCP实际IP
        private String deviceTCPPoot; // string 是 200 黑匣子TCP实际端口
        private String operaterNo; // string 是 3 司机人员工号
        private String workStatus; // string 是 1 塔机工作状态，0:运行监控，1:顶升监控
        private String motorStatus; // string 是 1 系统运行状态，0:无电机处于工作状态，1:有电机处于工作状态
        private float obliguity; // float 是 倾角，单位：°
        private float ratedWeight; // float 是 额定载重 0.00~99.99，单位：t
        private String windLevel; // string 是 2 风级 0~12级
        private String eventTime; // string 是 20 数据产生时间，格式yyyy-MM-dd HH:mm:ss
    }

    @Setter
    @Getter
    @NoArgsConstructor
    public static class QDPlatTCMWarn {

        private long projectId; // long 否 20 业平台的项目id （施工许可证编号和项目id二选一必传）
        private String towerDeviceId; // string 是 50 塔机id
        private String deviceId; // string 是 50 监测设备id
        private String deviceName; // string 是 50 监测设备名称
        private int alarmMessageType; // int 是 50 告警消息类型，0：实时告警，1：循环告警
        private String eventTime; // string 是 20 数据产生时间，格式yyyy-MM-dd HH:mm:ss
        private int alarmLevel; // int 是 告警等级， 1：预警 ，2：报警
        private String alarmType; // string 是 10 告警类型，见附录B.24
        private double alarmValue; // double 是 告警值
        private String driverName; // string 是 20 塔吊司机名称
        private String driverIdcardNumber; // string 是 50 塔吊司机身份证号，AES加密
    }

    @Setter
    @Getter
    @NoArgsConstructor
    public static class QDPlatTCMTippingWarn {

        private long projectId; // long 否 20 业平台的项目id （施工许可证编号和项目id二选一必传）
        private String towerDeviceId; // string 是 50 塔机id
        private String deviceId; // string 是 50 防倾翻设备id
        private String deviceName; // string 是 50 防倾翻设备名称
        private String eventTime; // string 是 20 数据产生时间，格式yyyy-MM-dd HH:mm:ss
        private float dip; // float 是 倾斜角度-30~30，单位：°
        private String direction; // string 是 20 倾斜方向
        private int alarmType; // int 是 报警类型，见附录B.25
    }

    // public static void main(String[] args) throws Exception {

    //     QDPlatTCMInfo info = new QDPlatTCMInfo();
    //     info.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     info.setTowerDeviceId("qdeasydo-test001");
    //     info.setTowerDeviceName("1#塔吊11");
    //     info.setTowerDeviceNo("a0123456t");
    //     info.setManufacturingLicense("aaabbbccc1234");
    //     info.setModel("X-123");
    //     info.setRecordNumber("beiantest");
    //     info.setManufacturer("测试制造商");
    //     info.setPropertyUnit("产权单位");
    //     info.setManufactureDate("2018-09-03 13:14:15");
    //     info.setManufacturingNo("20180903131415");
    //     info.setContactNumber("18899776556");
    //     info.setInstallationUnit("安装单位");
    //     info.setVerifyDate("2018-09-03 13:14:15");
    //     info.setRecordDate("2018-09-03 13:14:15");
    //     info.setForeArmLength("100");
    //     info.setRearArmLength("50");
    //     info.setMaxLoad(20.F);
    //     info.setMaxWeight(10.F);
    //     info.setRatedTorque(360.F);
    //     info.setRatedWindSpeed(30.F);
    //     info.setCustomTowerCraneType("2");
    //     info.setSimCardNo("0000000");
    //     info.setHardwareVer("v1.0.3");
    //     info.setProtocolVer("sock5");
    //     info.setSelfCraneNo(1);
    //     info.setCraneType(2);
    //     info.setArmHeight(10.F);
    //     info.setMaxHeight(10.F);
    //     info.setMaxAngle(270.F);
    //     info.setMinAngle(0.F);
    //     info.setRatedObliguity(0);
    //     info.setTcMSLoadCapacity(0);
    //     info.setTcMLMaxScope(0);
    //     info.setLng("120");
    //     info.setLat("37");
    //     info.setIsSupervise(0);

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_BASIC)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(info));

    //     QDPlatTCMStatus status = new QDPlatTCMStatus();
    //     status.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     status.setTowerDeviceId("qdeasydo-test001");
    //     status.setDeviceId("9507777711B");
    //     status.setDeviceName("tcmrecorder-b");
    //     status.setDeviceStatus(1);
    //     status.setDeviceType(0);
    //     status.setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_STATUS)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(status));

    //     QDPlatTCMStatus status1 = new QDPlatTCMStatus();
    //     status1.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     status1.setTowerDeviceId("qdeasydo-test001");
    //     status1.setDeviceId("9507777711T");
    //     status1.setDeviceName("tcmrecorder-T");
    //     status1.setDeviceStatus(1);
    //     status1.setDeviceType(0);
    //     status1.setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_STATUS)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(status1));

    //     QDPlatTCMRecord record = new QDPlatTCMRecord();
    //     record.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     record.setTowerDeviceId("qdeasydo-test001");
    //     record.setDeviceId("9507777711T");
    //     record.setDeviceName("tcmrecorder-T");
    //     record.setDriverName("路人甲");
    //     record.setLoadRatio("0");
    //     record.setTorqueRatio("0");
    //     record.setAmplitude("0");
    //     record.setAngle("10");
    //     record.setHeight("20");
    //     record.setRotation("20");
    //     record.setWeight("1");
    //     record.setWindspeed("0");
    //     record.setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     record.setProtocolVer("sock5");
    //     record.setDeviceSN("9507777711T");
    //     record.setDeviceTCPIP("0.0.0.0");
    //     record.setDeviceTCPPoot("49900");
    //     record.setEventTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     record.setOperaterNo("1");
    //     record.setWorkStatus("0");
    //     record.setMotorStatus("0");
    //     record.setObliguity(0);
    //     record.setRatedWeight(0);
    //     record.setWindLevel("0");

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_RECORD)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(record));

    //     QDPlatTCMRecord record1 = new QDPlatTCMRecord();
    //     record1.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     record1.setTowerDeviceId("qdeasydo-test001");
    //     record1.setDeviceId("9507777711B");
    //     record1.setDeviceName("tcmrecorder-b");
    //     record1.setDriverName("路人甲");
    //     record1.setLoadRatio("0");
    //     record1.setTorqueRatio("0");
    //     record1.setAmplitude("0");
    //     record1.setAngle("10");
    //     record1.setHeight("20");
    //     record1.setRotation("20");
    //     record1.setWeight("1");
    //     record1.setWindspeed("0");
    //     record1.setUploadTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     record1.setProtocolVer("sock5");
    //     record1.setDeviceSN("9507777711B");
    //     record1.setDeviceTCPIP("0.0.0.0");
    //     record1.setDeviceTCPPoot("49900");
    //     record1.setEventTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     record1.setOperaterNo("1");
    //     record1.setWorkStatus("0");
    //     record1.setMotorStatus("0");
    //     record1.setObliguity(0);
    //     record1.setRatedWeight(0);
    //     record1.setWindLevel("0");

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_RECORD)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(record1));

    //     QDPlatTCMWarn warn = new QDPlatTCMWarn();
    //     warn.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     warn.setTowerDeviceId("qdeasydo-test001");
    //     warn.setDeviceId("9507777711T");
    //     warn.setDeviceName("tcmrecorder-T");
    //     warn.setAlarmMessageType(0);
    //     warn.setEventTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     warn.setAlarmLevel(2);
    //     warn.setAlarmType("09");
    //     warn.setAlarmValue(10);
    //     warn.setDriverName("路人甲");
    //     warn.setDriverIdcardNumber(QDPlatRequest.AES("370203199108180010"));

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_WARN)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(warn));

    //     QDPlatTCMTippingWarn tippingWarn = new QDPlatTCMTippingWarn();
    //     tippingWarn.setProjectId(QDPlatRequest.TEST_PROJECT_ID);
    //     tippingWarn.setTowerDeviceId("qdeasydo-test001");
    //     tippingWarn.setDeviceId("9507777711T");
    //     tippingWarn.setDeviceName("tcmrecorder-T");
    //     tippingWarn.setEventTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    //     tippingWarn.setDip(30.F);
    //     tippingWarn.setDirection("0");
    //     tippingWarn.setAlarmType(16);

    //     System.out.println(
    //             QDPlatRequest.host(QDPlatRequest.ADDRESS)
    //                     .uri(QDPlatRequest.TCM_OVERTURN_WARN)
    //                     .projectId(String.valueOf(QDPlatRequest.TEST_PROJECT_ID))
    //                     .postArray(tippingWarn));
    // }
}
