package com.ssm.manage.query;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ssm.manage.entity.CoursePayList;
import com.ssm.manage.entity.CourseVo;
import com.ssm.manage.entity.Salesman;
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 javax.persistence.Table;
import javax.persistence.Transient;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 疗程转充值单(RechargeTurnCourse)实体类
 *
 * @author makejava
 * @since 2022-04-03 10:29:44
 */

@Table(name = "recharge_turn_course")
@JsonIgnoreProperties(ignoreUnknown = true)
@Getter
@Setter
@ToString
public class RechargeTurnCourseRequest extends BasePage implements Serializable {
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Getter@Setter
    @Transient
    private Date startTime;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Getter@Setter
    @Transient
    private Date endTime;
    private static final long serialVersionUID = 327560645298078222L;
    /**
     * id
     */
    @Id
    private Long id;
    /**
     * 单据号
     */
    @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;
    /**
     * 会员ID
     */
    @Column(name = "member_id")
    private Long memberId;
    /**
     * 会员编码
     */
    @Column(name = "recharge_num")
    private String memberNum;
    /**
     * 会员名称
     */
    @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 = "recharge_type_id")
    private Long rechargeTypeId;

    /**
     * 充值类型编码
     */
    @Column(name = "recharge_type_num")
    private String rechargeTypeNum;

    /**
     * 充值类型名称
     */
    @Column(name = "recharge_type_name")
    private String rechargeTypeName;
    /**
     * 充值卡转入添加金额
     */
    @Column(name = "recharge_in_money")
    private BigDecimal rechargeInMoney;
    /**
     * 疗程转出扣减金额
     */
    @Column(name = "course_out_money")
    private BigDecimal courseOutMoney;
    /**
     * 状态 0:添加/1:送审/2:回收/3:审核/4:反审核
     */
    @Column(name = "state")
    private Integer state;
    /**
     * 充值卡转入前金额
     */
    @Column(name = "recharge_before_money")
    private BigDecimal rechargeBeforeMoney;
    /**
     * 充值卡转入后金额
     */
    @Column(name = "recharge_after_money")
    private BigDecimal rechargeAfterMoney;
    /**
     * 录单人ID
     */
    @Column(name = "input_id")
    private Long inputId;
    /**
     * 录单人名称
     */
    @Column(name = "input_by")
    private String inputBy;
    /**
     * 充值账户ID
     */
    @Column(name = "recharge_account_id")
    private Long rechargeAccountId;
    /**
     * 录单时间
     */
    @Column(name = "input_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date inputDate;
    /**
     * 修改人ID
     */
    @Column(name = "update_id")
    private Long updateId;
    /**
     * 修改人名称
     */
    @Column(name = "update_by")
    private String updateBy;
    /**
     * 修改时间
     */
    @Column(name = "update_date")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateDate;
    /**
     * 第一充值人水牌号
     */
    @Column(name = "brand_number_one")
    private String brandNumberOne;
    /**
     * 第一充值人编码（来源于员工档案）
     */
    @Column(name = "sale_one_staff_id")
    private Long saleOneStaffId;
    /**
     * 第一充值人名称（来源于员工档案）
     */
    @Column(name = "sale_one_staff_name")
    private String saleOneStaffName;
    /**
     * 第一充值人占比
     */
    @Column(name = "sale_one_ratio")
    private BigDecimal saleOneRatio;
    /**
     * 第一充值会业绩
     */
    @Column(name = "sale_one_achievement_amount")
    private BigDecimal saleOneAchievementAmount;
    /**
     * 第一充值人提成
     */
    @Column(name = "sale_one_commission_amount")
    private BigDecimal saleOneCommissionAmount;
    /**
     * 第一充值人身份证号
     */
    @Column(name = "sale_one_identity_card")
    private String saleOneIdentityCard;
    /**
     * 第二充值人编码（来源于员工档案）
     */
    @Column(name = "sale_two_staff_id")
    private Long saleTwoStaffId;
    /**
     * 第二充值人名称（来源于员工档案）
     */
    @Column(name = "sale_two_staff_name")
    private String saleTwoStaffName;
    /**
     * 第二充值人身份证号
     */
    @Column(name = "sale_two_identity_card")
    private String saleTwoIdentityCard;
    /**
     * 第二充值人占比
     */
    @Column(name = "sale_two_ratio")
    private BigDecimal saleTwoRatio;
    /**
     * 第二充值人业绩
     */
    @Column(name = "sale_two_achievement_amount")
    private BigDecimal saleTwoAchievementAmount;
    /**
     * 第二充值人提成 
     */
    @Column(name = "sale_two_commission_amount")
    private BigDecimal saleTwoCommissionAmount;
    /**
     * 第三充值人编码（来源于员工档案）
     */
    @Column(name = "sale_three_staff_id")
    private Long saleThreeStaffId;
    /**
     * 第三充值人名称（来源于员工档案）
     */
    @Column(name = "sale_three_staff_name")
    private String saleThreeStaffName;
    /**
     * 第三充值人身份证号
     */
    @Column(name = "sale_three_identity_card")
    private String saleThreeIdentityCard;
    /**
     * 第三充值人占比
     */
    @Column(name = "sale_three_ratio")
    private BigDecimal saleThreeRatio;
    /**
     * 第三充值人业绩
     */
    @Column(name = "sale_three_achievement_amount")
    private BigDecimal saleThreeAchievementAmount;
    /**
     * 第三充值人提成
     */
    @Column(name = "sale_three_commission_amount")
    private BigDecimal saleThreeCommissionAmount;
    /**
     * 第二充值人水牌号
     */
    @Column(name = "brand_number_two")
    private String brandNumberTwo;
    /**
     * 第三充值人水牌号
     */
    @Column(name = "brand_number_three")
    private String brandNumberThree;
    /**
     * 第四充值人编码
     */
    @Column(name = "sale_four_staff_id")
    private Long saleFourStaffId;
    /**
     * 第四充值人名称
     */
    @Column(name = "sale_four_staff_name")
    private String saleFourStaffName;
    /**
     * 第四充值人水牌号
     */
    @Column(name = "brand_number_four")
    private String brandNumberFour;
    /**
     * 第四充值人身份证号
     */
    @Column(name = "sale_four_identity_card")
    private String saleFourIdentityCard;
    /**
     * 第四充值人占比
     */
    @Column(name = "sale_four_ratio")
    private BigDecimal saleFourRatio;
    /**
     * 第四充值人业绩
     */
    @Column(name = "sale_four_achievement_amount")
    private BigDecimal saleFourAchievementAmount;
    /**
     * 第四充值人提成
     */
    @Column(name = "sale_four_commission_amount")
    private BigDecimal saleFourCommissionAmount;
    /**
     * 提成比率
     */
    @Column(name = "type_ratio")
    private BigDecimal typeRatio;

    /**
     * 提成比率
     */
    @Column(name = "is_addition")
    private Integer isAddition;

    /**
     * 折扣
     */
    @Column(name = "discount")
    private Integer discount;

    /**
     * 折扣
     */
    @Column(name = "courser_out_time")
    private Integer courserOutTime;



    /**
     * 第五充值人水牌号
     */
    @Column(name = "brand_number_five")
    private String brandNumberFive;

    /**
     * 第五充值人编码（来源于员工档案）
     */
    @Column(name = "sale_five_staff_id")
    private Long saleFiveStaffId;

    /**
     * 第五充值人名称（来源于员工档案）
     */
    @Column(name = "sale_five_staff_name")
    private String saleFiveStaffName;

    /**
     * 第五充值人占比
     */
    @Column(name = "sale_five_ratio")
    private BigDecimal saleFiveRatio;

    /**
     * 第五充值会业绩
     */
    @Column(name = "sale_five_achievement_amount")
    private BigDecimal saleFiveAchievementAmount;

    /**
     * 第五充值人提成
     */
    @Column(name = "sale_Five_commission_amount")
    private BigDecimal saleFiveCommissionAmount;

    /**
     * 第五充值人身份证号
     */
    @Column(name = "sale_Five_identity_card")
    private String saleFiveIdentityCard;


//____________
    /**
     * 第六充值人水牌号
     */
    @Column(name = "brand_number_six")
    private String brandNumberSix;

    /**
     * 第六充值人编码（来源于员工档案）
     */
    @Column(name = "sale_six_staff_id")
    private Long saleSixStaffId;

    /**
     * 第六充值人名称（来源于员工档案）
     */
    @Column(name = "sale_six_staff_name")
    private String saleSixStaffName;

    /**
     * 第六充值人占比
     */
    @Column(name = "sale_six_ratio")
    private BigDecimal saleSixRatio;

    /**
     * 第六充值会业绩
     */
    @Column(name = "sale_six_achievement_amount")
    private BigDecimal saleSixAchievementAmount;

    /**
     * 第六充值人提成
     */
    @Column(name = "sale_six_commission_amount")
    private BigDecimal saleSixCommissionAmount;

    /**
     * 第六充值人身份证号
     */
    @Column(name = "sale_six_identity_card")
    private String saleSixIdentityCard;



//__________________

    /**
     * 第七充值人水牌号
     */
    @Column(name = "brand_number_seven")
    private String brandNumberSeven;

    /**
     * 第七充值人编码（来源于员工档案）
     */
    @Column(name = "sale_seven_staff_id")
    private Long saleSevenStaffId;

    /**
     * 第七充值人名称（来源于员工档案）
     */
    @Column(name = "sale_seven_staff_name")
    private String saleSevenStaffName;

    /**
     * 第七充值人占比
     */
    @Column(name = "sale_seven_ratio")
    private BigDecimal saleSevenRatio;

    /**
     * 第七充值会业绩
     */
    @Column(name = "sale_seven_achievement_amount")
    private BigDecimal saleSevenAchievementAmount;

    /**
     * 第七充值人提成
     */
    @Column(name = "sale_seven_commission_amount")
    private BigDecimal saleSevenCommissionAmount;

    /**
     * 第七充值人身份证号
     */
    @Column(name = "sale_seven_identity_card")
    private String saleSevenIdentityCard;


    //_________________
    /**
     * 第八充值人水牌号
     */
    @Column(name = "brand_number_eight")
    private String brandNumberEight;

    /**
     * 第八充值人编码（来源于员工档案）
     */
    @Column(name = "sale_eight_staff_id")
    private Long saleEightStaffId;

    /**
     * 第八充值人名称（来源于员工档案）
     */
    @Column(name = "sale_eight_staff_name")
    private String saleEightStaffName;

    /**
     * 第八充值人占比
     */
    @Column(name = "sale_eight_ratio")
    private BigDecimal saleEightRatio;

    /**
     * 第八充值会业绩
     */
    @Column(name = "sale_eight_achievement_amount")
    private BigDecimal saleEightAchievementAmount;

    /**
     * 第八充值人提成
     */
    @Column(name = "sale_eight_commission_amount")
    private BigDecimal saleEightCommissionAmount;

    /**
     * 第八充值人身份证号
     */
    @Column(name = "sale_eight_identity_card")
    private String saleEightIdentityCard;


    private List<CoursePayList> coursePayLists;

    private List<CoursePayListRequest> coursePayListRequests;
    private List<AchiCommEntity> achiCommEntityList;
    private List<StaffRequest> staffLists;
    private List<AchiCommEntity> entities;

    private String startDate;
    private String endDate;

    private List<Long> storeList;
//    private List<CourseVo> courseVos;

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

    /**
     * 剩余可用金额
     */
    private BigDecimal cardConsumeMoney;

}

