package com.xhpc.evcs.cdjgpc.dto;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import com.xhpc.evcs.dto.CommonStationInfo;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Transient;
import java.util.Arrays;
import java.util.List;

/**
 * @author yuyang
 * @date 2023-09-07 14:13
 */
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
        "StationID",
        "OperatorID",
        "EquipmentOwnerID",
        "StationName",
        "IsAloneApply",
        "AccountNumber",
        "Capacity",
        "CountryCode",
        "AreaCode",
        "AreaCodeCountryside",
        "Address",
        "StationTel",
        "ServiceTel",
        "StationType",
        "IsOpen",
        "StationStatus",
        "ParkNums",
        "StationLng",
        "StationLat",
        "Construction",
        "SwapMatchCars",
        "OpenAllDay",
        "ElectricityFee",
        "ServiceFee",
        "ParkFree",
        "ParkFee",
        "Payment",
        "EquipmentInfos",
        "ParkFeeType",
        "ToiletFlag",
        "StoreFlag",
        "LoungeFlag",
        "CanopyFlag",
        "PrinterFlag",
        "BarrierFlag",
        "ParkingLockFlag",
        "IsDemandResponse",
        "IsSupportOrderlyCharging",
        "IsEnergyStorage",
        "stationClassification",
        "GeneralApplicationType",
        "RoundTheClock",
        "ParkType",
        "ElectncityType",
        "BusinessExpandType",
        "RatedPower",
        "PeriodFee",
        "OfficialRunTime",
        "VideoMonitor",
        "SwapEquipmentlnfos"
})
@Data
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE,
        setterVisibility = JsonAutoDetect.Visibility.NONE, creatorVisibility = JsonAutoDetect.Visibility.NONE)
public class CDStationInfo extends CommonStationInfo {

    /**
     * 是否独立报桩
     */
    @Transient
    @JsonProperty("IsAloneApply")
    public Integer isAloneApply;
    /**
     * 户号
     */
    @Transient
    @JsonProperty("AccountNumber")
    public String accountNumber;
    /**
     * 容量
     */
    @Transient
    @JsonProperty("Capacity")
    public Double capacity;

    @Transient
    @JsonProperty("CountryCode")
    public String countryCcode;
    /**
     * 充电站省市辖区编码
     */
    @Transient
    @JsonProperty("AreaCode")
    public String areaCode;
    /**
     * 充电站省市辖区编码
     */
    @Transient
    @JsonProperty("AreaCodeCountryside")
    public String areaCodeCountryside;
    /**
     * 详情地址
     */
    @Transient
    @JsonProperty("Address")
    public String address;
    /**
     * 详细地址
     */
    @Transient
    @JsonProperty("StationTel")
    public String stationTel;
    /**
     * 服务电话
     */
    @Transient
    @JsonProperty("ServiceTel")
    public String serviceTel;
    /**
     * 站点类型
     */
    @Transient
    @JsonProperty("StationType")
    public Integer stationType;
    /**
     * 小区是否对外开放
     */
    @Transient
    @JsonProperty("IsOpen")
    public Integer isOpen;
    /**
     * 站点状态
     */
    @Transient
    @JsonProperty("StationStatus")
    public Integer stationStatus;
    /**
     * 车位数量
     */
    @Transient
    @JsonProperty("ParkNums")
    public Integer parkNums;
    /**
     * 经度
     */
    @Transient
    @JsonProperty("StationLng")
    public Double stationLng;
    /**
     * 纬度
     */
    @Transient
    @JsonProperty("StationLat")
    public Double stationLat;
    /**
     * 站点引导
     */
//    @Transient
//    @JsonProperty("SiteGuide")
//    public String siteGuide;
    /**
     * 建设场所
     */
    @Transient
    @JsonProperty("Construction")
    public Integer construction;
    /**
     * 站点照片
     */
//    @Transient
//    @JsonProperty("Pictures")
//    public String[] pictures;
    /**
     * 使用车型描述
     */
//    @Transient
//    @JsonProperty("MatchCars")
//    public String matchCars;
    /**
     * 服务车型描述
     */
    @Transient
    @JsonProperty("SwapMatchCars")
    public String[] swapMatchCars;

    public String swapMatchCarsName;


    /**
     * 车位楼层及数量描述
     */
//    @Transient
//    @JsonProperty("ParkInfo")
//    public String parkInfo;
    /**
     * 停车场产权方
     */
//    @Transient
//    @JsonProperty("ParkOwner")
//    public String parkOwner;
    /**
     * 停车场管理方
     */
//    @Transient
//    @JsonProperty("ParkManager")
//    public String parkManager;
    /**
     * 全天开放
     */
    @Transient
    @JsonProperty("OpenAllDay")
    public Integer openAllDay;
    /**
     * 营业时间
     */
//    @Transient
//    @JsonProperty("BusineHours")
//    public String busineHours;
    /**
     * 充 电 电 费 率
     */
    @Transient
    @JsonProperty("ElectricityFee")
    public String electricityFee;
    /**
     * 服务费率
     */
    @Transient
    @JsonProperty("ServiceFee")
    public String serviceFee;
    /**
     * 免费停车
     */
    @Transient
    @JsonProperty("ParkFree")
    public Integer parkFree;
    /**
     * 停车费
     */
    @Transient
    @JsonProperty("ParkFee")
    public String parkFee;
    /**
     * 支付方式
     */
    @Transient
    @JsonProperty("Payment")
    public String payment;
    /**
     * 是否支持预约
     */
//    @Transient
//    @JsonProperty("SupportOrder")
//    public Integer supportOrder;
    /**
     * 备注
     */
//    @Transient
//    @JsonProperty("Remark")
//    public String remark;
    /**
     * 充电设备信息列表
     */
    @Transient
    @JsonProperty("EquipmentInfos")
    public List<CDEquipmentInfo> equipmentInfos = null;
    /**
     * 停车收费类型
     */
    @Transient
    @JsonProperty("ParkFeeType")
    public Integer parkFeeType;
    /**
     * 是否配备卫生间
     */
    @Transient
    @JsonProperty("ToiletFlag")
    public Integer toiletFlag;
    /**
     * 是否配备便利店
     */
    @Transient
    @JsonProperty("StoreFlag")
    public Integer storeFlag;
    /**
     * 是否配备休息室
     */
    @Transient
    @JsonProperty("LoungeFlag")
    public Integer loungeFlag;
    /**
     * 是否配备雨棚
     */
    @Transient
    @JsonProperty("CanopyFlag")
    public Integer canopyFlag;
    /**
     * 是否有小票机
     */
    @Transient
    @JsonProperty("PrinterFlag")
    public Integer printerFlag;
    /**
     * 是否有道闸
     */
    @Transient
    @JsonProperty("BarrierFlag")
    public Integer barrierFlag;
    /**
     * 是否有地锁
     */
    @Transient
    @JsonProperty("ParkingLockFlag")
    public Integer parkingLockFlag;
    /**
     * 是否参与需求响应
     */
    @Transient
    @JsonProperty("IsDemandResponse")
    public Integer isDemandResponse;
    /**
     * 有序充电场站
     */
    @Transient
    @JsonProperty("IsSupportOrderlyCharging")
    public Integer isSupportOrderlyCharging;
    /**
     * 有是否有储能设备
     */
    @Transient
    @JsonProperty("IsEnergyStorage")
    public Integer isEnergyStorage;
    /**
     * 站点分类
     */
    @Transient
    @JsonProperty("StationClassification")
    public Integer stationClassification;
    /**
     * 通用类型
     */
    @Transient
    @JsonProperty("GeneralApplicationType")
    public Integer generalApplicationType;
    /**
     * 7*24小时营业
     */
    @Transient
    @JsonProperty("RoundTheClock")
    public Integer roundTheClock;
    /**
     * 停车费类型
     */
    @Transient
    @JsonProperty("ParkType")
    public Integer parkType;
    /**
     * 电费类型
     */
    @Transient
    @JsonProperty("ElectncityType")
    public Integer electncityType;
    /**
     * 报装类型
     */
    @Transient
    @JsonProperty("BusinessExpandType")
    public Integer businessExpandType;
    /**
     * 站点额定总功率
     */
    @Transient
    @JsonProperty("RatedPower")
    @Column(columnDefinition = "Decimal(10,1)")
    public Double ratedPower;
    /**
     * 峰谷分时
     */
    @Transient
    @JsonProperty("PeriodFee")
    public Integer periodFee;
    /**
     * 正式投运时间
     */
    @Transient
    @JsonProperty("OfficialRunTime")
    public String officialRunTime;
    /**
     * 视频监控配套情况
     */
    @Transient
    @JsonProperty("VideoMonitor")
    public Integer videoMonitor;

    @Transient
    @JsonProperty("SwapEquipmentlnfos")
    public List<CDSwapEquipmentlnfos> swapEquipmentlnfos = null;

//    /**
//     * 是否支持远程调控
//     */
//    @Transient
//    @JsonProperty("SupportOrder2")
//    public Integer supportOrder2;
//
//    /**
//     * 变压器装机容量
//     */
//    @Transient
//    @JsonProperty("InstalledCapacity")
//    @Column(columnDefinition = "Decimal(10,1)")
//    public Double installedCapacity;
//
//    /**
//     * 备用容量
//     */
//    @Transient
//    @JsonProperty("ReserveCapacity")
//    @Column(columnDefinition = "Decimal(10,1)")
//    public Double reserveCapacity;
//
//    /**
//     * 可响应时段
//     */
//    @Transient
//    @JsonProperty("ResponsablePeriod")
//    public String responsablePeriod;
//
//    /**
//     * 响应速率(min)
//     */
//    @Transient
//    @JsonProperty("ResponseRate")
//    public String responseRate;
//
//    /**
//     * 当年最大可调能力
//     */
//    @Transient
//    @Column(columnDefinition = "Decimal(10,1)")
//    public String maxAdjustableCapacity;
//
//    /**
//     * 可调节时长
//     */
//    @Transient
//    @JsonProperty("AdjustTime")
//    public Integer adjustTime;

}
