package com.yiqi.order.domain.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.yiqi.app.domain.vo.AppUserVO;
import com.yiqi.common.annotation.Excel;
import com.yiqi.system.domain.SysOrg;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

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

/**
 * @author xiaohei
 * @date 2023/12/11
 */
@Data
public class OrderClothQueryVO {

    /** 主键ID */
    @ApiModelProperty("主键ID")

    private Long id;

    /** 订单编号 */
    @Excel(name = "订单编号")
    @ApiModelProperty("订单编号")
    private String orderNo;

    @Excel(name = "订单类型", readConverterExp = "0=普通订单,1=云洗订单,2=第三方订单")
    @ApiModelProperty("订单类型（0=普通订单，1=云洗订单，2=第三方订单）,默认0")
    private String orderType;

    @Excel(name = "衣服件数")
    @ApiModelProperty("衣服件数")
    private Integer orderClothCount;

    /** 支付金额 */
    @Excel(name = "支付金额")
    @ApiModelProperty("支付金额")
    private BigDecimal payAmount;

    @Excel(name = "订单总金额")
    @ApiModelProperty("订单总金额")
    private BigDecimal orderAmount;

    @Excel(name = "衣服总金额")
    @ApiModelProperty("衣服总金额")
    private BigDecimal orderClothPrice;

    /** 支付方式（0=微信，1=支付宝，2=现金，3=余额） */
    @Excel(name = "支付方式", readConverterExp = "0=微信,1=支付宝,2=现金,3=余额")
    @ApiModelProperty("支付方式（0=微信，1=支付宝，2=现金，3=余额）")
    private String payType;

    @Excel(name = "付款时间类型", readConverterExp = "0=收衣付款,1=取衣付款")
    @ApiModelProperty("付款时间类型（0=收衣付款,1=取衣付款）")
    private String payTimeType;

    /**
     * 支付状态（0=待支付，1=已支付，-1：已失败）
     */
    @Excel(name = "支付状态", readConverterExp = "0==待支付，1=已支付，-1：已失败")
    @ApiModelProperty("支付状态（0=待支付，1=已支付，-1：已失败）")
    private String payStatus;

    @Excel(name = "是否付款" , readConverterExp = "Y=是,N=否")
    @ApiModelProperty("是否付款")
    private String hasPay;

    /** 下单渠道（APP=APP，WXAPP=小程序，OFFLINE=线下门店） */
    @Excel(name = "下单渠道", readConverterExp = "A=PP=APP,WXAPP=小程序,OFFLINE=线下门店")
    @ApiModelProperty("下单渠道（APP=APP，WXAPP=小程序，OFFLINE=线下门店）")
    private String orderSource;

    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty("支付时间")
    private Date payTime;

    @Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty("创建时间")
    private Date createTime;

    @Excel(name = "订单状态", readConverterExp = "0==预约待取,1=已取货、待门店定价,2=已定价、待支付,3=已支付、待工厂取货,4=工厂已取货、洗衣中,5=洗衣完成、待送店,6=已到店、待送衣,7=送衣中,8=已送达、待评价,9=已完成,100=已取消")
    @ApiModelProperty("订单状态（0=预约待取，1=已取货、待门店定价，2=已定价、待支付，3=已支付、待工厂取货，4=工厂已取货、洗衣中，5=洗衣完成、待送店，6=已到店、待送衣，7=送衣中，8=已送达、待评价，9=已完成，100=已取消）")
    private String orderStatus;

    /** 退款状态（0=正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消） */
    @Excel(name = "退款状态", readConverterExp = "0==正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消")
    @ApiModelProperty("退款状态（0=正常，1=退款申请中，2=退款同意，3=退款拒绝，4=退款取消）")
    private String refundStatus;

    @Excel(name = "客户ID")
    @ApiModelProperty("客户ID")

    private Long appUserId;

    /** 取衣方式（0=到店，1=上门） */
    @Excel(name = "取衣方式", readConverterExp = "0==到店,1=上门")
    @ApiModelProperty("取衣方式（0=到店，1=上门）")
    private String sendClothWay;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @Excel(name = "预计取衣时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("预计取衣时间")
    private Date planSendToUserTime;

    /** 送衣人 */
    @Excel(name = "送衣人")
    @ApiModelProperty("送衣人")

    private Long sendClothAppUserId;


    @ApiModelProperty("送衣人明细")
    private AppUserVO sendClothUserVO;

    @Excel(name = "会员姓名")
    @ApiModelProperty("会员姓名")
    private String appUserName;

    @Excel(name = "会员手机")
    @ApiModelProperty("会员手机")
    private String appUserPhoneNumber;

    @Excel(name = "来源类型")
    @ApiModelProperty("来源类型")
    private String sourceType;

    @Excel(name = "组织ID")
    @ApiModelProperty("组织ID")
    private Long orgId;


    @ApiModelProperty("组织信息")
    private SysOrg sysOrg;

    /** 是否拆装 */
    @Excel(name = "是否拆装")
    @ApiModelProperty("是否拆装")
    private String isDisassemblyAndAssembly;

    /** 是否大件 */
    @Excel(name = "是否大件")
    @ApiModelProperty("是否大件")
    private String isLargeItem;

    /** 预约时间（yyyy-MM-dd HH:mm） */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    @ApiModelProperty("预约时间")
    private Date appointmentTime;

    /** 预约件数 */
    @Excel(name = "预约件数")
    @ApiModelProperty("预约件数")
    private Integer appointmentCount;

    /** 备注 */
    @Excel(name = "备注")
    @ApiModelProperty("备注")
    private String remark;
}
