package com.yuchen.saas.payment.api.vo.moreOrderRefund;

import com.yuchen.saas.payment.api.entity.PmgBatParkPayMoreOrderRefund;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

@Data
public class PmgBatParkPayMoreOrderRefundDetailVO extends PmgBatParkPayMoreOrderRefund {

    /**
     * 园区名称
     */
    @ApiModelProperty(name = "parkName", value = "园区名称")
    private String parkName;

    /**
     * 支付单id列表
     */
    @ApiModelProperty(name = "payIdList", value = "支付单id列表")
    private List<String> payIdList;

    /**
     * 订单号列表
     */
    @ApiModelProperty(name = "orderNoList", value = "订单号列表")
    private List<String> orderNoList;

    @ApiModelProperty(name = "businessName", value = "申请业务")
    private String businessName;

    @ApiModelProperty(name = "state", value = "任务状态0已拒绝,1已通过,2审核中,3取消,4待审核'")
    private String state;

    @ApiModelProperty(value = "流程节点集")
    private List<ProcessDetail> processDetail;

    @ApiModelProperty(name = "operatorName", value = "运营商名称")
    private String operatorName;

    @Data
    public static class ProcessDetail {
        @ApiModelProperty(value = "流程节点名称")
        private String text;

        @ApiModelProperty(value = "流程节点时间")
        private Date createTime;

        /**
         * 审核状态（0 待审核 1 进行中 2 已完成 3 已撤回 4 已拒绝））
         */
        @ApiModelProperty(name = "reviewState", value = "审核状态（0 待审核 1 进行中 2 已完成 3 已撤回 4 已拒绝）")
        private String reviewState;

        @ApiModelProperty(value = "消息(理由)")
        private String message;

        @ApiModelProperty(value = "审核人")
        private String userName;
    }

    /**
     * 退款月卡费用对象
     */
    @ApiModelProperty(name = "refundMonthlyCardBill", value = "退款月卡费用对象")
    private RefundMonthlyCardBill refundMonthlyCardBill;

    @Data
    public static class RefundMonthlyCardBill {

        /**
         * 园区id
         */
        @ApiModelProperty(name = "parkId", value = "园区id")
        private Long parkId;

        /**
         * 停车场id
         */
        @ApiModelProperty(name = "parkingId", value = "停车场id")
        private Long parkingId;

        /**
         * 停车场名称
         */
        @ApiModelProperty(name = "parkingName", value = "停车场名称")
        private String parkingName;

        /**
         * 收费标准
         */
        @ApiModelProperty(name = "rates", value = "收费标准")
        private Long rates;

        /**
         * 剩余天数
         */
        @ApiModelProperty(name = "dayNum", value = "剩余天数")
        private Integer dayNum;

        /**
         * 车主名称
         */
        @ApiModelProperty(name = "personName", value = "车主名称")
        private String personName;

        /**
         * 手机号
         */
        @ApiModelProperty(name = "personPhone", value = "手机号")
        private String personPhone;

        /**
         * 车牌号
         */
        @ApiModelProperty(value = "车牌号")
        private String plateNo;

        /**
         * 包租 开始时间
         */
        @ApiModelProperty(name = "beginTime", value = "包租 开始时间")
        private Date beginTime;

        /**
         * 包租 结束时间
         */
        @ApiModelProperty(name = "endTime", value = "包租 结束时间")
        private Date endTime;

        /**
         * 退卡时间
         */
        @ApiModelProperty(name = "refundCardTime", value = "退卡时间")
        private Date refundCardTime;

        /**
         * 包期规则名称
         */
        @ApiModelProperty(name = "ruleName", value = "包期规则名称")
        private String ruleName;

        /**
         * 包期费用(分)
         */
        @ApiModelProperty(name = "ruleFee", value = "包期费用(分)")
        private Long ruleFee;

        /**
         * 包月数量
         */
        @ApiModelProperty(name = "monthNumber", value = "包月数量")
        private Integer monthNumber;

    }

    /**
     * 退款错时卡费用对象
     */
    @ApiModelProperty(name = "refundTimingCardBill", value = "退款错时卡费用对象")
    private RefundTimingCardBill refundTimingCardBill;

    @Data
    public static class RefundTimingCardBill {

        /**
         * 园区id
         */
        @ApiModelProperty(name = "parkId", value = "园区id")
        private Long parkId;

        /**
         * 停车场id
         */
        @ApiModelProperty(name = "parkingId", value = "停车场id")
        private Long parkingId;

        /**
         * 停车场名称
         */
        @ApiModelProperty(name = "parkingName", value = "停车场名称")
        private String parkingName;

        /**
         * 收费标准
         */
        @ApiModelProperty(name = "rates", value = "收费标准")
        private Long rates;

        /**
         * 剩余天数
         */
        @ApiModelProperty(name = "dayNum", value = "剩余天数")
        private Integer dayNum;

        /**
         * 车主名称
         */
        @ApiModelProperty(name = "personName", value = "车主名称")
        private String personName;

        /**
         * 手机号
         */
        @ApiModelProperty(name = "personPhone", value = "手机号")
        private String personPhone;

        /**
         * 车牌号
         */
        @ApiModelProperty(value = "车牌号")
        private String plateNo;

        /**
         * 包租 开始时间
         */
        @ApiModelProperty(name = "beginTime", value = "包租 开始时间")
        private Date beginTime;

        /**
         * 包租 结束时间
         */
        @ApiModelProperty(name = "endTime", value = "包租 结束时间")
        private Date endTime;

        /**
         * 退卡时间
         */
        @ApiModelProperty(name = "refundCardTime", value = "退卡时间")
        private Date refundCardTime;

    }

    /**
     * 退款停车费用对象
     */
    @ApiModelProperty(name = "refundParkingBill", value = "退款停车费用对象")
    private RefundParkingBill refundParkingBill;

    @Data
    public static class RefundParkingBill {

        /**
         * 园区id
         */
        @ApiModelProperty(name = "parkId", value = "园区id")
        private Long parkId;

        /**
         * 停车场id
         */
        @ApiModelProperty(name = "parkingId", value = "停车场id")
        private Long parkingId;

        /**
         * 停车场名称
         */
        @ApiModelProperty(name = "parkingName", value = "停车场名称")
        private String parkingName;

        /**
         * 车牌号
         */
        @ApiModelProperty(value = "车牌号")
        private String plateNo;

        /**
         * 停车开始时间
         */
        @ApiModelProperty(name = "beginTime", value = "停车开始时间")
        private Date beginTime;

        /**
         * 停车结束时间
         */
        @ApiModelProperty(name = "endTime", value = "停车结束时间")
        private Date endTime;

    }

    /**
     * 退款占位费用对象
     */
    @ApiModelProperty(name = "refundPlaceholderBill", value = "退款占位费用对象")
    private RefundPlaceholderBill refundPlaceholderBill;

    @Data
    public static class RefundPlaceholderBill {

        @ApiModelProperty(name = "stationName", value = "充电站名称")
        private  String stationName;

        /**
         * 车牌号
         */
        @ApiModelProperty(value = "车牌号")
        private String plateNo;

        /**
         * 占位开始时间
         */
        @ApiModelProperty(name = "beginTime", value = "占位开始时间")
        private Date beginTime;

        /**
         * 占位结束时间
         */
        @ApiModelProperty(name = "endTime", value = "占位结束时间")
        private Date endTime;

    }

    /**
     * 退款充电费用对象
     */
    @ApiModelProperty(name = "refundChargeBill", value = "退款占位费用对象")
    private RefundChargeBill refundChargeBill;

    @Data
    public static class RefundChargeBill {

        @ApiModelProperty(name = "stationName", value = "充电站名称")
        private  String stationName;

        /**
         * 车牌号
         */
        @ApiModelProperty(value = "车牌号")
        private String plateNo;

        /**
         * 手机号
         */
        @ApiModelProperty(value = "手机号")
        private String phone;

        /**
         * 预付金额
         */
        @ApiModelProperty(value = "预付金额")
        private Float chargeValue;

        /**
         * 服务费,单位元,两位小数
         */
        @ApiModelProperty(name = "serviceCharge", value = "服务费,单位元,两位小数")
        private BigDecimal serviceCharge;

        /**
         * 充电总费用
         */
        @ApiModelProperty(name = "totalCharge", value = "充电总费用")
        private BigDecimal totalCharge;

        /**
         * 终端编号
         */
        @ApiModelProperty(name = "terminalNo", value = "终端编号")
        private String terminalNo;

        /**
         * 充电开始时间
         */
        @ApiModelProperty(name = "beginTime", value = "占位开始时间")
        private Date beginTime;

        /**
         * 充电结束时间
         */
        @ApiModelProperty(name = "endTime", value = "占位结束时间")
        private Date endTime;

    }

}
