package com.jsowell.thirdparty.nanrui.domain;

import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.math.BigDecimal;
import java.util.List;

/**
 * 南瑞充电平台站点信息
 *
 * @author Lemon
 * @Date 2023/9/25 13:38
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class NRStationInfo {
    /**
     * 充电站id
     * 运营商自定义的唯一编码
     */
    @JsonProperty(value = "StationID")
    private String stationId;

    /**
     * 运营商id
     * 统一社会信用代码
     */
    @JsonProperty(value = "OperatorID")
    private String operatorID;

    /**
     * 设备所属方ID
     * 设备所属方组织机构代码
     */
    @JsonProperty(value = "EquipmentOwnerID")
    private String equipmentOwnerID;

    /**
     * 充电站名称
     */
    @JsonProperty(value = "StationName")
    private String stationName;

    /**
     * 充电站国家代码
     * 比如 CN
     */
    @JsonProperty(value = "CountryCode")
    private String countryCode;

    /**
     * 充电站省市辖区编码
     */
    @JsonProperty(value = "AreaCode")
    private String areaCode;

    /**
     * 详细地址
     */
    @JsonProperty(value = "Address")
    private String address;

    /**
     * 服务电话
     */
    @JsonProperty(value = "ServiceTel")
    private String serviceTel;

    /**
     * 站点类型
     * 1：公共充电区
     * 2：专用充电区
     * 3：居民充电区
     * 255：其他
     */
    @JsonProperty(value = "StationType")
    private Integer stationType;

    /**
     * 站点状态
     * 0：未知
     * 1：建设中
     * 5：关闭下线
     * 6：维护中
     * 50：正常使用
     */
    @JsonProperty(value = "StationStatus")
    private Integer stationStatus;

    /**
     * 车位数量
     * 可停放进行充电的车位总数
     * 默认：0 未知
     *
     */
    @JsonProperty(value = "ParkNums")
    private Integer parkNums;

    /**
     * 经度
     */
    @JsonProperty(value = "StationLng")
    private BigDecimal stationLng;

    /**
     * 纬度
     */
    @JsonProperty(value = "StationLat")
    private BigDecimal stationLat;

    /**
     * 建设场所
     * 101：公共服务场所
     * 102：公共停车场
     * 103：城市交通节点
     * 104：加油站
     * 105：具备停车条件的充电区域
     * 106：高速服务区
     * 201：政府机关
     * 202：公共机构
     * 203：企业事业单位
     * 204：公交
     * 205：环卫
     * 206：物流
     * 207：出租车
     * 208：港口码头
     * 301：居民（小）区
     * 255：其他
     */
    @JsonProperty(value = "Construction")
    private Integer construction;

    /**
     * 站点照片
     * 充电设备照片、充电车位照片、停车场入口照片
     */
    @JsonProperty(value = "Pictures")
    private List<String> pictures;

    /**
     * 站点投运日期
     * yyyy-MM-dd 格式
     */
    @JsonProperty(value = "OpenForBusinessDate")
    private String openForBusinessDate;

    /**
     * 是否全天开放
     * 0：否
     * 1：是
     */
    @JsonProperty(value = "OpenAllDay")
    private Integer openAllDay;

    /**
     * 营业时间
     */
    @JsonProperty(value = "BusineHours")
    private String busineHours;

    /**
     * 最低单价
     */
    @JsonProperty(value = "MinElectricityPrice")
    private BigDecimal minElectricityPrice;

    /**
     * 充电设备信息
     */
    @JsonProperty(value = "EquipmentInfos")
    private List<NREquipmentInfo> equipmentInfos;

    @JsonProperty(value = "LoungeFlag")
    private Integer loungeFlag;

    @JsonProperty(value = "IsAloneApply")
    private Integer isAloneApply;

    @JsonProperty(value = "PrinterFlag")
    private Integer printerFlag;

    @JsonProperty(value = "ParkFree")
    private Integer parkFree;

    @JsonProperty(value = "IsPublicParkingLot")
    private Integer isPublicParkingLot;

    @JsonProperty(value = "Payment")
    private Integer payment;

    @JsonProperty(value = "RestaurantFlag")
    private Integer restaurantFlag;

    @JsonProperty(value = "BarrierFlag")
    private Integer barrierFlag;

    @JsonProperty(value = "ServiceFee")
    private BigDecimal serviceFee;

    @JsonProperty(value = "ParkingLockFlag")
    private Integer parkingLockFlag;

    @JsonProperty(value = "ElectricityFee")
    private BigDecimal electricityFee;

    @JsonProperty(value = "StoreFlag")
    private Integer storeFlag;

    @JsonProperty(value = "CanopyFlag")
    private Integer canopyFlag;

    @JsonProperty(value = "ToiletFlag")
    private Integer toiletFlag;

    @JsonProperty(value = "SupportOrder")
    private Integer supportOrder;

    @JsonProperty(value = "ParkFeeType")
    private Integer parkFeeType;
}
