package com.jsowell.thirdparty.platform.common;

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

import java.math.BigDecimal;

/**
 * 充电订单明细
 *
 * @author Lemon
 * @Date 2024/4/18 8:44:07
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ChargeOrderInfo {
    /**
     * 运营平台ID
     */
    @JSONField(name = "OperatorID")
    private String operatorId;

    /**
     * 设备产权所属单位ID
     */
    @JSONField(name = "EquipmentOwnerID")
    private String equipmentOwnerId;

    /**
     * 充电站ID
     */
    @JSONField(name = "StationID")
    private String stationId;

    /**
     * 设备编码
     */
    @JSONField(name = "EquipmentID")
    private String equipmentId;

    /**
     * 充电设备接口编码
     */
    @JSONField(name = "ConnectorID")
    private String connectorId;

    /**
     * 充电订单号
     */
    @JSONField(name = "StartChargeSeq")
    private String startChargeSeq;

    /**
     * 换电订单编号
     */
    @JSONField(name = "SwapOrderID")
    private Integer swapOrderId;

    /**
     * 设备分类
     * 1：车辆充电设备
     * 2：换电站内的电池箱充电设备
     */
    @JSONField(name = "EquipmentClassification")
    private Integer equipmentClassification;

    /**
     * 充电开始SOC
     */
    @JSONField(name = "StartSoc")
    private BigDecimal startSoc;

    /**
     * 充电结束SOC
     */
    @JSONField(name = "EndSoc")
    private BigDecimal endSoc;

    /**
     * 电池箱编码
     */
    @JSONField(name = "BatteryPackID")
    private String batteryPackId;

    /**
     * 是否有调仓
     */
    @JSONField(name = "BatteryCabinChange")
    private Integer batteryCabinChange;

    /**
     * 本次充电消费总金额
     * 保留小数点后 2 位
     *
     */
    @JSONField(name = "TotalMoney")
    private BigDecimal totalMoney;

    /**
     * 本次充电电费总金额
     * 保留小数点后 2 位
     */
    @JSONField(name = "TotalElecMoney")
    private BigDecimal totalElecMoney;

    /**
     * 本次充电服务费金额
     * 保留小数点后 2 位
     */
    @JSONField(name = "TotalSeviceMoney")
    private BigDecimal totalSeviceMoney;

    /**
     * 本次充电电量
     * 保留小数点后 2 位
     */
    @JSONField(name = "TotalPower")
    private BigDecimal totalPower;

    /**
     * 本次充电开始时间
     * 格式“yyyy-MM-dd HH:mm:ss”
     */
    @JSONField(name = "StartTime")
    private String startTime;

    /**
     * 本次充电结束时间
     * 格式“yyyy-MM-dd HH:mm:ss”
     */
    @JSONField(name = "EndTime")
    private String endTime;

    /**
     * 支付金额
     * 保留小数点后 2 位
     */
    @JSONField(name = "PaymentAmount")
    private BigDecimal paymentAmount;

    /**
     * 支付时间
     * 格式“yyyy-MM-dd HH:mm:ss”
     */
    @JSONField(name = "PayTime")
    private String payTime;

    /**
     * 支付方式
     * 1：支付宝
     * 2：微信支付
     * 3：交通卡
     * 4：预充卡
     * 5：银联
     * 6：其他自定义
     */
    @JSONField(name = "PayWay")
    private Integer payWay;

    /**
     * 充电结束原因
     * 0:用户手动停止充电
     * 1:客户归属地运营商平台停止充电
     * 2:BMS 停止充电
     * 3:充电机设备故障
     * 4:连接器断开
     * 5-99：自定义
     */
    @JSONField(name = "StopReason")
    private Integer stopReason;

    /**
     * 电表总起值
     * 小数点后 3 位
     */
    @JSONField(name = "StartMeterNum")
    private BigDecimal startMeterNum;

    /**
     * 电表总止值
     * 小数点后 3 位
     */
    @JSONField(name = "EndMeterNum")
    private BigDecimal endMeterNum;

}
