package com.yuchen.saas.parking.charge.api.vo.charge;

import com.yuchen.saas.parking.charge.api.entity.charge.SpcCurChargingInfo;
import com.yuchen.saas.parking.charge.api.entity.charge.SpcStationChargeTerminal;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
@ApiModel(value="SpcChargeBillAdminVO对象", description=" 充电订单vo对象")
public class SpcAdminChargeBillVO {
    /**
     * 电站id
     */
    @ApiModelProperty(name = "spcStationId", value = "电站id")
    private Long spcStationId;
    /**
     * 停车库名称
     */
    @ApiModelProperty(name = "spcStationName", value = "停车库名称")
    private String spcStationName;
    /**
     * 车牌
     */
    @ApiModelProperty(name = "plateNo", value = "车牌")
    private String plateNo;
    /**
     * 微信openid or 支付宝账号
     */
    @ApiModelProperty(name = "payUserId", value = "微信openid or 支付宝账号")
    private String payUserId;
    /**
     * 微信openid or 支付宝账号
     */
    @ApiModelProperty(name = "userDetailId", value = "平台用户id")
    private Long userDetailId;


    @ApiModelProperty(name = "userTenantId", value = "平台租户用户id")
    private String userTenantId;
    /**
     * 车辆id，无牌车用无牌车id
     */
    @ApiModelProperty(name = "noPlateId", value = "车辆id，无牌车用无牌车id")
    private Long noPlateId;
    /**
     * 车辆类型:0-其他，1-小型车，2-大型车，3-摩托车
     */
    @ApiModelProperty(name = "vehicleType", value = "车辆类型:0-其他，1-小型车，2-大型车，3-摩托车")
    private Integer vehicleType;
    /**
     * 充电终端id
     */
    @ApiModelProperty(name = "chargeTerminalId", value = "充电终端id")
    private Long chargeTerminalId;
    /**
     * 服务费,单位元,两位小数
     */
    @ApiModelProperty(name = "serviceCharge", value = "服务费,单位元,两位小数")
    private BigDecimal serviceCharge;
    /**
     * 充电桩平台充电序列号
     */
    @ApiModelProperty(name = "chargeSerialNumber", value = "充电桩平台充电序列号")
    private String chargeSerialNumber;

    @ApiModelProperty(name = "chargeStatus", value = "充电状态")
    private Integer chargeStatus;

    @ApiModelProperty(name = "billStatus", value = "订单状态 账单状态：0-未结清状态，1-已结算（已出停车场）")
    private Integer billStatus;
    /**
     * 充电方式:0x01 金额	0x02 电量	0x03 时间
     */
    @ApiModelProperty(name = "chargeType", value = "充电方式:0x01 金额	0x02 电量	0x03 时间")
    private Integer chargeType;
    private Float chargeValue;
    /**
     * 充电开始时间
     */
    @ApiModelProperty(name = "chargeStartTime", value = "充电开始时间")
    private Date chargeStartTime;
    /**
     * 充电结束时间
     */
    @ApiModelProperty(name = "chargeEndTime", value = "充电结束时间")
    private Date chargeEndTime;
    /**
     * 充电发起时间
     */
    @ApiModelProperty(name = "chargeLanchTime", value = "充电发起时间")
    private Date chargeLanchTime;
    /**
     * 充电真正停止的时间
     */
    @ApiModelProperty(name = "chargeStopTime", value = "充电真正停止的时间")
    private Date chargeStopTime;
    /**
     * 充电总电量:单位:kw
     */
    @ApiModelProperty(name = "totalChargingDuration", value = "充电总电量:单位:kw")
    private Integer totalChargingDuration;
    /**
     * 充电总时长:单位:秒
     */
    @ApiModelProperty(name = "totalChargingElectricity", value = "充电总时长:单位:秒")
    private Float totalChargingElectricity;
    /**
     * 充电总费用
     */
    @ApiModelProperty(name = "totalCharge", value = "充电总费用")
    private BigDecimal totalCharge;
    /**
     * 充电停止原因
     */
    @ApiModelProperty(name = "chargeStopReason", value = "充电停止原因")
    private String chargeStopReason;
    /**
     * 充电费用详情
     */
    @ApiModelProperty(name = "chargeCostDetail", value = "充电费用详情")
    private String chargeCostDetail;
    /**
     * 账单类型：1.充电
     */
    @ApiModelProperty(name = "billType", value = "账单类型：1.充电")
    private Integer billType;
    /**
     * 应收金额（最大长度8） 单位：分
     */
    @ApiModelProperty(name = "supposeCost", value = "应收金额（最大长度8） 单位：分")
    private BigDecimal supposeCost;
    /**
     * 已支付金额（最大长度8） 单位：分
     */
    @ApiModelProperty(name = "paidCost", value = "已支付金额（最大长度8） 单位：分")
    private BigDecimal paidCost;
    /**
     * 账单总金额（最大长度8） 单位：分
     */
    @ApiModelProperty(name = "totalCost", value = "账单总金额（最大长度8） 单位：分")
    private BigDecimal totalCost;

    @ApiModelProperty(name = "payTime", value = "支付时间")
    private Date payTime;
    /**
     * 开票状态(0:开票中 1:开票成功 2:开票失败 3:红冲中(待退票) 4:已红冲(已退票) 5:被驳回 6:重开发票申请中 7:待作废 8:已作废 9:未开票 10:被驳回且重新申请 11:待红冲 12:红冲失败)
     */
    @ApiModelProperty(name = "invoicingStatus", value = "开票状态(0:开票中 1:开票成功 2:开票失败 3:红冲中(待退票) 4:已红冲(已退票) 5:被驳回 6:重开发票申请中 7:待作废 8:已作废 9:未开票 10:被驳回且重新申请 11:待红冲 12:红冲失败)")
    private Integer invoicingStatus;

    @ApiModelProperty(name = "dataSourceNo", value = "来源id")
    private Integer dataSourceNo;

    @ApiModelProperty(name = "dataSourceType", value = "来源类型")
    private Integer dataSourceType;

    @ApiModelProperty(name = "spaceNo", value = "车位")
    private String spaceNo;

    @ApiModelProperty(name = "terminalName", value = "终端名称")
    private String chargeTerminalName;

    @ApiModelProperty(name = "phone", value = "用户手机号")
    private String phone;

    @ApiModelProperty(name = "startSoc", value = "开始soc")
    private String startSoc;

    @ApiModelProperty(name = "endSoc", value = "结束soc")
    private String endSoc;

    /**
     * 充电费用详情
     */
    @ApiModelProperty(name = "timesVoList", value = "充电时间线")
    private List<SpcAdminChargeBillTimesVo> timesVoList;


    private SpcStationChargeTerminalVO terminalvo;

    @ApiModelProperty(name = "curChargingInfoList", value = "实时充电信息")
    private List<SpcCurChargingInfo> curChargingInfoList;

    @ApiModelProperty(name = "settleType", value = "结算类型1用户手动结算2自动结算")
    private Integer settleType;
    @ApiModelProperty(name = "userMobile", value = "用户手机号")
    private String userMobile;
    @ApiModelProperty(name = "createTime", value = "创建时间")
    private Date createTime;
    @ApiModelProperty(name = "id", value = "编码")
    private Long id;
    @ApiModelProperty(name = "payNo", value = "支付流水号")
    private String payNo;
    @ApiModelProperty(name = "deptName", value = "运营商名称")
    private String deptName;
    /**
     * 园区ID
     */
    @ApiModelProperty(name = "parkId", value = "园区ID")
    private Long parkId;

    @ApiModelProperty(name = "orderNo", value = "订单中心订单号")
    private String orderNo;
}
