package com.xhpc.order.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xhpc.common.core.web.domain.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 充电订单
 *
 * @author yuyang
 * @date 2021/8/4 9:41
 */
public class XhpcChargeOrder extends BaseEntity {

    /**
     * 充电订单id
     */
    private Long chargeOrderId;
    /**
     * 电站id
     */
    private Long chargingStationId;
    /**
     * 用户id
     */
    private Long userId;
    /**
     * 终端id
     */
    private Long terminalId;
    /**
     * 互联网流水订单号
     */
    private String internetSerialNumber;
    /**
     * 订单编号
     */
    private String serialNumber;
    /**
     * 充电启始soc
     */
    private String startSoc;

    /**
     * 结束soc
     */
    private String endSoc;

    /**
     * 订单来源（0C端用户 1流量用户）
     */
    private Integer source;
    /**
     * (状态（0开始充电 1自动结算，2异常，3平台结算)
     */
    private Integer status;
    /**
     * 删除标志（0代表存在 2代表删除）
     */
    private Integer delFlag;
    /**
     * 费率模型id
     */
    private Long rateModelId;

    /**
     * 充电方式
     */
    private String chargingMode;

    /** 开始充电时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startTime;

    /** 结束充电时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date endTime;

    /** 充电时长 */
    private String chargingTime;

    /** 充电时长(秒) */
    private Long chargingTimeNumber;

    /** 充电度数 */
    private BigDecimal chargingDegree;

    /** 0桩停止充电  1 远程停止充电 */
    private String type;

    /**
     * 异常备注
     */
    private String erroRemark;

    /**
     * 总金额
     */
    private BigDecimal amountCharged;

    /**
     * 功率
     */
    private String power;

    private String gunId;

    /**
     * 运营商/场站OperatorID
     */
    private String operatorIdEvcs;

    /**
     * 流量方OperatorID
     */
    private String operatorId3rdptyEvcs;

    /**
     * 终端客户开启充电方式
     * 0：未知
     * 1：市/省级平台无卡启动
     * 2：有卡启动
     * 3：其他无卡启动
     */
    private Integer chargeModelEvcs = 3;

    private Integer clearingType = 3;

    private Double totalPower;

    /**
     * 0:用户手动停止充电
     * 1:客户归属地运营商平台停止充电
     * 2：BMS 停止充电；
     * 3：充电机设备故障；
     * 4：连接器断开
     * 5-99 自定义
     */
    private Integer stopReasonEvcs = 0;

    /**
     * 租户id
     */
    private String tenantId;
    //司机唯一标识（手机号）
    private String driverId;
    //充电金额
    private Integer chargingAmt;
    //车牌
    private String PlateNum;
    //符合Evcs标准的订单号,并非来自第三方的订单号
    private String evcsOrderNo;

    private String vinNormal;

    private Integer chargingCapacity;

    private Integer sunchaStatus;

    private String mark;

    private Long motorcadeId;

    private Integer motorcadeType;

    public Integer getStopReasonEvcs() {

        return stopReasonEvcs;
    }

    public void setStopReasonEvcs(Integer stopReasonEvcs) {

        this.stopReasonEvcs = stopReasonEvcs;
    }

    public Integer getChargeModelEvcs() {

        return chargeModelEvcs;
    }

    public void setChargeModelEvcs(Integer chargeModelEvcs) {

        this.chargeModelEvcs = chargeModelEvcs;
    }

    public Double getTotalPower() {

        return totalPower;
    }

    public void setTotalPower(Double totalPower) {

        this.totalPower = totalPower;
    }

    public String getOperatorIdEvcs() {

        return operatorIdEvcs;
    }

    public void setOperatorIdEvcs(String operatorIdEvcs) {

        this.operatorIdEvcs = operatorIdEvcs;
    }

    public String getOperatorId3rdptyEvcs() {

        return operatorId3rdptyEvcs;
    }

    public void setOperatorId3rdptyEvcs(String operatorId3rdptyEvcs) {

        this.operatorId3rdptyEvcs = operatorId3rdptyEvcs;
    }

    public String getGunId() {

        return gunId;
    }

    public void setGunId(String gunId) {

        this.gunId = gunId;
    }

    public Long getChargeOrderId() {

        return chargeOrderId;
    }

    public void setChargeOrderId(Long chargeOrderId) {

        this.chargeOrderId = chargeOrderId;
    }

    public Long getChargingStationId() {

        return chargingStationId;
    }

    public void setChargingStationId(Long chargingStationId) {

        this.chargingStationId = chargingStationId;
    }

    public Long getUserId() {

        return userId;
    }

    public void setUserId(Long userId) {

        this.userId = userId;
    }

    public Long getTerminalId() {

        return terminalId;
    }

    public void setTerminalId(Long terminalId) {

        this.terminalId = terminalId;
    }

    public String getInternetSerialNumber() {

        return internetSerialNumber;
    }

    public void setInternetSerialNumber(String internetSerialNumber) {

        this.internetSerialNumber = internetSerialNumber;
    }

    public String getSerialNumber() {

        return serialNumber;
    }

    public void setSerialNumber(String serialNumber) {

        this.serialNumber = serialNumber;
    }

    public String getStartSoc() {

        return startSoc;
    }

    public void setStartSoc(String startSoc) {

        this.startSoc = startSoc;
    }

    public Integer getSource() {

        return source;
    }

    public void setSource(Integer source) {

        this.source = source;
    }

    public Integer getStatus() {

        return status;
    }

    public void setStatus(Integer status) {

        this.status = status;
    }

    public Integer getDelFlag() {

        return delFlag;
    }

    public void setDelFlag(Integer delFlag) {

        this.delFlag = delFlag;
    }

    public Long getRateModelId() {

        return rateModelId;
    }

    public void setRateModelId(Long rateModelId) {

        this.rateModelId = rateModelId;
    }

    public String getChargingMode() {

        return chargingMode;
    }

    public void setChargingMode(String chargingMode) {

        this.chargingMode = chargingMode;
    }

    public Date getStartTime() {

        return startTime;
    }

    public void setStartTime(Date startTime) {

        this.startTime = startTime;
    }

    public Date getEndTime() {

        return endTime;
    }

    public void setEndTime(Date endTime) {

        this.endTime = endTime;
    }

    public String getChargingTime() {

        return chargingTime;
    }

    public void setChargingTime(String chargingTime) {

        this.chargingTime = chargingTime;
    }

    public BigDecimal getChargingDegree() {

        return chargingDegree;
    }

    public void setChargingDegree(BigDecimal chargingDegree) {

        this.chargingDegree = chargingDegree;
    }

    public String getEndSoc() {

        return endSoc;
    }

    public void setEndSoc(String endSoc) {

        this.endSoc = endSoc;
    }

    public String getType() {

        return type;
    }

    public void setType(String type) {

        this.type = type;
    }

    public String getErroRemark() {

        return erroRemark;
    }

    public void setErroRemark(String erroRemark) {

        this.erroRemark = erroRemark;
    }

    public BigDecimal getAmountCharged() {

        return amountCharged;
    }

    public void setAmountCharged(BigDecimal amountCharged) {

        this.amountCharged = amountCharged;
    }

    public String getPower() {

        return power;
    }

    public void setPower(String power) {

        this.power = power;
    }

    public Long getChargingTimeNumber() {

        return chargingTimeNumber;
    }

    public void setChargingTimeNumber(Long chargingTimeNumber) {

        this.chargingTimeNumber = chargingTimeNumber;
    }

    @Override
    public String getTenantId() {
        return tenantId;
    }

    @Override
    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

    public String getDriverId() {
        return driverId;
    }

    public void setDriverId(String driverId) {
        this.driverId = driverId;
    }

    public Integer getChargingAmt() {
        return chargingAmt;
    }

    public void setChargingAmt(Integer chargingAmt) {
        this.chargingAmt = chargingAmt;
    }

    public String getPlateNum() {
        return PlateNum;
    }

    public void setPlateNum(String plateNum) {
        PlateNum = plateNum;
    }

    public String getEvcsOrderNo() {
        return evcsOrderNo;
    }

    public void setEvcsOrderNo(String evcsOrderNo) {
        this.evcsOrderNo = evcsOrderNo;
    }

    public String getVinNormal() {
        return vinNormal;
    }

    public void setVinNormal(String vinNormal) {
        this.vinNormal = vinNormal;
    }

    public Integer getChargingCapacity() {
        return chargingCapacity;
    }

    public void setChargingCapacity(Integer chargingCapacity) {
        this.chargingCapacity = chargingCapacity;
    }

    public Integer getSunchaStatus() {
        return sunchaStatus;
    }

    public void setSunchaStatus(Integer sunchaStatus) {
        this.sunchaStatus = sunchaStatus;
    }

    public String getMark() {
        return mark;
    }

    public void setMark(String mark) {
        this.mark = mark;
    }

    public Long getMotorcadeId() {
        return motorcadeId;
    }

    public void setMotorcadeId(Long motorcadeId) {
        this.motorcadeId = motorcadeId;
    }

    public Integer getMotorcadeType() {
        return motorcadeType;
    }

    public void setMotorcadeType(Integer motorcadeType) {
        this.motorcadeType = motorcadeType;
    }

    public Integer getClearingType() {
        return clearingType;
    }

    public void setClearingType(Integer clearingType) {
        this.clearingType = clearingType;
    }
}
