/*
 * @Description: 
 * @Version: 1.0
 * @Autor: lishengyin
 * @Date: 2021-11-08 16:45:31
 * @LastEditors: lishengyin
 * @LastEditTime: 2021-11-24 15:20:26
 */
#pragma once

#include <iostream>
#include <rapidjson/document.h>
#include <rapidjson/rapidjson.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>
#include <vector>
#include "NettyHttpTrainInfo.h"

using namespace std;


class CarDevData
{
public:
    std::string addTime;
    std::string updateTime;
    int createBy;
    int updateBy;
    int enableFlag;
    std::string attr1;
    std::string attr2;
    std::string attr3;
    int appId;
    int dvId;
    std::string parentDvId;
    std::string linkDvId;
    int carId;
    int carriageId;
    int deviceType;
    int deviceSubType;
    int deviceControlType;
    int deviceSource;
    std::string deviceUuid;
    std::string deviceNum;
    std::string birdDeviceCode;
    std::string deviceName;
    std::string deviceUserName;
    std::string devicePassWord;
    std::string localIp;
    int port;
    std::string deviceMac;
    std::string stream;
    std::string place;
    std::string longitude;
    std::string latitude;
    std::string coX;
    std::string coY;
    std::string coZ;
    std::string uploadId;
    std::string imgUrl;
    std::string remark;
    std::string orderNo;

public:
    CarDevData() {}
    ~CarDevData() {}
    bool jsonToObject(const rapidjson::Value& object);
};

class CarBasicData
{
public:
    std::string id;
    std::string pid;
    std::string label;
    CarDevData attr;
    int attr1;
    std::string child;
    std::string children;
    
public:
    CarBasicData() {}
    ~CarBasicData() {}
    bool jsonToObject(const rapidjson::Value& object);
};

class NettyHttpCarDevData
{
public:
    std::string id;
    std::string pid;
    std::string label;
    NettyHttpTrainInfo attr;
    std::string attr1;
    std::string child;
    vector<CarBasicData> children;

public:
    NettyHttpCarDevData() {}
    ~NettyHttpCarDevData() {}
    bool jsonToObject(const rapidjson::Value& object);
};