package com.ghy.web.pojo.vo;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ghy.common.annotation.Excel;
import com.ghy.goods.domain.Goods;
import com.ghy.goods.domain.GoodsArea;
import com.ghy.goods.domain.InsuranceManager;
import com.ghy.order.domain.AfterServiceRecord;
import com.ghy.payment.domain.FinancialChangeRecord;
import com.ghy.payment.domain.OrderTimeoutRecord;
import com.ghy.shop.domain.Shop;

import lombok.Data;

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

@Data
public class OrderListResponse {

    // 商品品牌 -- 后台发单才有
    private String goodsBrand;
    // 商品规格 -- 后台发单才有
    private String goodsSpecification;

    private String totalName;

    private String isCall;

    private Long orderMasterId;

    private String orderMasterCode;

    private String originalOrderMasterCode;

    private Long orderDetailId;

    private String orderDetailCode;

    private Long workerId;

    private Long masterWorkerId;

    private String workerName;

    private String workerPhone;

    private String masterWorkerName;

    private String masterWorkerPhone;

    private String masterCompanyName;

    private String masterCompanyPhone;

    private String customerName;

    private String customerPhone;

    private String customerRemark;

    private String workerRemark;

    private Date serverTime;

    @JsonFormat(pattern = "YYYY-MM-dd HH:mm")
    private Date expectTimeStartFront;

    @JsonFormat(pattern = "HH:mm")
    private Date expectTimeEndFront;

    private Date expectTimeStart;

    private Date expectTimeEnd;

    private Date workBeginTime;

    private Date workFinishTime;

    private String clockInLocation;

    private String goodsName;

    private Integer orderType;

    private Integer orderStatus;

    private String orderStatusName;

    private Integer payStatus;

    /**
     * 退款支付状态：0=未支付，1=已支付
     */
    private Integer refundPayStatus;

    private Integer payType;

    private BigDecimal totalMoney;

    private BigDecimal payMoney;

    private BigDecimal payAddMoney;

    private BigDecimal finalRecvMoney;

    private BigDecimal changeMoney;

    private BigDecimal discountMoney;

    private String goodsLogoUrl;

    private String address;

    private Date createTime;

    private String remark;

    private Boolean isOverTime;

    private BigDecimal serverMoney;

    private List<OrderTimeoutRecord> orderTimeoutRecords;

    private List<OrderStandard> standardList;

    private List<OrderStandardDetail> orderStandardDetailList;

    private List<String> finishImgList;

    private List<AfterServiceRecord> afterServiceRecordList;

    private Boolean isOnlyServ;

    private Date updateTime;

    private Integer shelveStatus;

    private Integer ledgerAccountStatus;

    private List<FinancialChangeRecord> financialChangeRecords;

    private List<GoodsArea> goodsAreaList;

    /**
     * 发起提现后Adapay返回的对象ID draw_cash_id
     */
    private String drawCashId;

    /**
     * draw_cash_status
     * 0 未分账
     * 1 已分账
     * 2 已到账
     * -1 提现失败
     */
    private Integer drawCashStatus;

    /**
     * 发起提现时间 draw_cash_time
     */
    private Date drawCashTime;
    /**
     * 提现到账时间 arrival_time
     */
    private Date arrivalTime;

    /**
     * 是否超时 1=是 0=否
     */
    private Integer timeout;

    /**
     * 超时扣款次数
     */
    private Integer timeoutFineTimes;

    /**
     * 超时时间（用于排序）
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date timeoutTime;

    private Integer afterTimeout;

    private String orderMode;

    /*是否合约订单*/
    private String consultMode;

    private Goods goods;

    /*是否有保险id*/
    private Long insuranceId;

    private InsuranceManager insuranceManager;

    private Long cityId;

    /*街道id*/
    private Long streetId;

    private Long provinceId;

    private String name;
    private String phone;

    private String provinceName;

    private String cityName;

    private String countryName;

    private String streetName;


    private Long countryId;

    /**
     * 是否为监控但
     * */
    private Boolean isMonitoredOrder;

    private  BigDecimal addMoney;

    private  String  addMoneyRemark;

    private BigDecimal paymentMoney;

    /**
     * 是否已派发服务订单：0=未派发，1=已派发
     */
    private Integer hasServiceOrder;

    /**
     * 下单图片
     */
    @Excel(name = "下单图片", cellType = Excel.ColumnType.STRING)
    private String orderImages;

    /**
     * 是否发货到服务店：0=否，1=是
     */
    @Excel(name = "是否发货到服务店", cellType = Excel.ColumnType.NUMERIC)
    private Integer isDeliveryToStore;

    /**
     * 是否已开票：0=是，1=否
     */
    @Excel(name = "是否已开票", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=是,1=否")
    private Integer isInvoiced;

    /**
     * 是否需要开票：0=不需要，1=需要
     */
    @Excel(name = "是否需要开票", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=不需要,1=需要")
    private Integer isNeedBill;

    /**
     * 原师傅id（转单前的师傅）
     */
    @Excel(name = "原师傅id", cellType = Excel.ColumnType.NUMERIC)
    private Long originalWorkerId;


    private Long serverGoodsId;

    /**
     * 服务店铺ID
     */
    private Long serviceShopId;

    private Date confirmStartTime;

    private Integer deliveryType;

    private Long goodsId;


    /**
     * 发货备注
     */
    @Excel(name = "发货备注", cellType = Excel.ColumnType.STRING)
    private String deliveryRemark;

    /**
     * 发货图片
     */
    @Excel(name = "发货图片", cellType = Excel.ColumnType.STRING)
    private String deliveryImages;

    @Excel(name = "交货图片", cellType = Excel.ColumnType.STRING)
    private String handoverImages;

    @Excel(name = "交货备注", cellType = Excel.ColumnType.STRING)
    private String handoverRemark;

    /**
     * 快递单号
     */
    private String trackingNumber;


       /**
     * 分账倒计时结束时间
     */
    @Excel(name = "分账倒计时结束时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date shareAccountCountdownEndTime;

    /**
     * 分账倒计时时长（小时）
     */
    @Excel(name = "分账倒计时时长（小时）")
    private Integer shareAccountCountdownDuration;

    private Shop shop;

    private Shop serviceShop;
    private Long goodsOrderMasterId;

       /**
     * 是否已撤销服务主单：0=未撤销，1=已撤销
     */
    @Excel(name = "是否已撤销服务主单", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=未撤销,1=已撤销")
    private Integer serviceCancelled;

    /**
     * 是否显示售后记录：0=不显示，1=显示
     */
    private Integer showAfterServiceRecord = 0;

    @Excel(name = "是否显示在监控单", cellType = Excel.ColumnType.NUMERIC, readConverterExp = "0=不显示,1=显示在监控单")
    private Integer showInMonitor;
   
    @Excel(name = "售后状态：0-无售后，1-售后纠纷,2-售后已完成,3-售后已取消") 
    private Integer afterPlatformServiceStatus;
}
