package com.ssm.manage.query;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ssm.manage.entity.PayList;
import com.ssm.manage.extendEntity.AchiCommEntity;
import com.ssm.manage.page.BasePage;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Column;
import javax.persistence.Id;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Setter
@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class CardChangeListRequest extends BasePage {
    @Id
    private Long id;
    private String strDate;
    private List<Long> storeIds;
    private Long roleId;

    /**
     * 单据号
     */
    @Column(name = "doc_num")
    private String docNum;

    /**
     * 单据时间
     */
    @Column(name = "doc_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date docDate;

    /**
     * 门店编码
     */
    @Column(name = "store_id")
    private Long storeId;

    /**
     * 门店名称
     */
    @Column(name = "store_name")
    private String storeName;

    /**
     * 会员编码
     */
    @Column(name = "member_id")
    private Long memberId;

    /**
     * 会员名称
     */
    @Column(name = "member_name")
    private String memberName;

    /**
     * 会员身份证号
     */
    @Column(name = "member_identity_card")
    private String memberIdentityCard;

    /**
     * 手机
     */
    @Column(name = "mobile_phone")
    private String mobilePhone;

    /**
     * 录单人ID
     */
    @Column(name = "input_id")
    private Long inputId;

    /**
     * 录单人名称
     */
    @Column(name = "input_by")
    private String inputBy;

    /**
     * 欠款金额
     */
    @Column(name = "debt_money")
    private BigDecimal debtMoney;

    /**
     * 转入支付金额
     */
    @Column(name = "change_in_pay_money")
    private BigDecimal changeInPayMoney;

    /**
     * 转入金额
     */
    @Column(name = "change_in_money")
    private BigDecimal changeInMoney;

    /**
     * 转出金额
     */
    @Column(name = "change_out_money")
    private BigDecimal changeOutMoney;

    /**
     * 差异金额
     */
    @Column(name = "difference_money")
    private BigDecimal differenceMoney;

    /**
     * 补单时间
     */
    @Column(name = "addition_date")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date additionDate;

    /**
     * 是否补单0:不是/1:是
     */
    @Column(name = "is_addition")
    private Integer isAddition;

    /**
     * 是否作废 1:作废/0:未作废
     */
    @Column(name = "is_cancel")
    private Integer isCancel;

    /**
     * 是否欠款 1:欠款/0:未欠款
     */
    @Column(name = "is_debt")
    private Integer isDebt;

    /**
     * 作废时间
     */
    @Column(name = "cancel_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date cancelDate;

    /**
     * 作废人ID
     */
    @Column(name = "cancel_id")
    private Long cancelId;

    /**
     * 作废人名称
     */
    @Column(name = "cancel_by")
    private String cancelBy;

    /**
     * 描述
     */
    private String description;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;


    //支付方式列表
    private List<PayList> payLists;

    //门店员工登录账户
    private String staffPhone;

    private CardChangeInProjectRequest cardChangeInProjectRequest;

    private List<CardChangeOutProjectRequest> cardChangeOutProjectRequests;


    //单据类型 0加价 1内调
    private Integer  type;

    /**
     * 状态 0:添加/1:送审/2:回收/3:审核/4:反审核
     */
    private Integer state;

    //业务员列表
    private List<StaffRequest> staffLists;




    /**
     * 查询方式，0=指定查询，1=自动查询
     */
    private Integer selectType;

    private List<Long> storeList;

    private Integer courseType;
}
