package com.ssm.manage.query;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ssm.manage.entity.*;
import com.ssm.manage.page.BasePage;
import com.ssm.manage.response.RechargeAccountResponse;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.springframework.format.annotation.DateTimeFormat;

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

@Setter
@Getter
@ToString
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectRequest extends BasePage {
    @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 String updateCommPhone;
    private Long id;
    private Long newId;
    private CooperateList cooperateList;
    private Long cooperateId;

    private Integer courseRestCount;
    private Integer number;
    private BigDecimal onePrice;
    /**
     * 项目编码
     */
    private String projectNum;

    /**
     * 项目名称
     */
    private String projectName;

    /**
     * 状态 1：正常；0 停用
     */
    private Integer state;

    /**
     * 标签
     */
    private String label;

    /**
     * 黄金间隔期
     */
    private Integer goldInterval;

    /**
     * 长发操作时长
     */
    private Integer longOperationTime;

    /**
     * 中发操作时长
     */
    private Integer moderateOperationTime;

    /**
     * 短发操作时长
     */
    private Integer shortOperationTime;

    /**
     * 建立人（用户名称（用户编码）），来源于员工档案
     */
    private String founderStaff;

    /**
     * 建立时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date founderDatetime;

    /**
     * 最近修改人（用户名称（用户编码）），来源于员工档案
     */
    private String modifyBy;

    /**
     * 最近修改时间
     */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date modifyDatetime;

    /**
     * 单次最小销售次数
     */
    private Integer minumumTimes;

    /**
     * 直接消费（1:是，0：否）
     */
    private Integer directConsumption;

    /**
     * 散客价
     */
    private BigDecimal price;

    /**
     * 最低散客价
     */
    private BigDecimal minumumPrice;

    /**
     * 会员价
     */
    private BigDecimal priceMember;

    /**
     * 最低会员价
     */
    private BigDecimal minumumPriceMember;

    /**
     * 现付销售业绩，大于1表示固定业绩，小于等于1表示比率业绩
     */
    private BigDecimal salesAchievement;

    /**
     * 现付销售提成，大于1表示固定提成，小于等于1表示比率提成
     */
    private BigDecimal salesCommission;

    /**
     * 卡付销售业绩，大于1表示固定业绩，小于等于1表示比率业绩
     */
    private BigDecimal cardSalesAchievement;

    /**
     * 卡付销售提成，大于1表示固定提成，小于等于1表示比率提成
     */
    private BigDecimal cardSalesCommission;

    /**
     * 大工现付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal achievementLarge;

    /**
     * 中工现付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal achievementZhonggong;

    /**
     * 技师现付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal achievementTechnician;

    /**
     * 助理现付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal achievementSmall;

    /**
     * 大工现付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal commissionLarge;

    /**
     * 中工现付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal commissionZhonggong;

    /**
     * 技师现付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal commissionTechnician;

    /**
     * 助理现付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal commissionSmall;

    /**
     * 大工卡付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardAchievementLarge;

    /**
     * 中工卡付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardAchievementZhonggong;

    /**
     * 技师卡付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardAchievementTechnician;

    /**
     * 助理卡付业绩标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardAchievementSmall;

    /**
     * 大工卡付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardCommissionLarge;

    /**
     * 中工卡付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardCommissionZhonggong;

    /**
     * 技师卡付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardCommissionTechnician;

    /**
     * 助理卡付提成标准，小于1比率，大于等于1固定金额
     */
    private BigDecimal cardCommissionSmall;

    /**
     * 项目类别ID
     */
    private Long projectTypeId;

    /**
     * 项目类别名称
     */
    private String projectTypeName;

    /**
     * 门店ID
     */
    private Long storeId;

    /**
     * 门店名称
     */
    private String storeName;

    /**
     * 有效期 单位:月
     */
    @Column(name = "valid_time")
    private Integer validTime;

    /*
    * 收银单据列表使用
    * */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date cashDate;

    /*
    * 收银单据列表使用
    * */
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private String salesDeadline;

    /*
     * 收银单据列表使用
     * */
    private Long cashId;

    /*
    * 收银单据列表使用 成交价
    * */
    private BigDecimal transactionPrice;

    /**
     * 服务金额=项目成交单价*次数
     */
    private BigDecimal amount;

    /**
     * 现付金额
     */
    @Column(name = "collection_cash_amount")
    private BigDecimal collectionCashAmount;

    /**
     * 积分金额
     */
    @Column(name = "collection_integral_amount")
    private BigDecimal collectionIntegralAmount;

    /**
     * 卡付金额
     */
    @Column(name = "collection_recharge_amount")
    private BigDecimal collectionRechargeAmount;

    /**
     * 实收总额
     */
    @Column(name = "cash_amount")
    private BigDecimal cashAmount;


    /**
     * 消费是否会员不打折（0=打折，1=不打折）
     */
    @Column(name = "no_discount")
    private Integer noDiscount;
    private String unifiedDue;

    /*
     * 收银单据列表使用 疗程账户ID
     * */
    private Long courseAccountId;
    //支付方式列表
    private List<PayList> payLists;
    //业务员列表
    private List<StaffRequest> largeList;
    private List<StaffRequest> zhonggongList;
    private List<StaffRequest> technicianList;
    private List<StaffRequest> smallList;
    private List<BaseProject> baseProjects;
    private List<StoreRequest> baseStores;

    private List<Long> projectRequests;
    private List<Salesman> salesmens;

    //充值卡付列表
    private List<RechargeAccountResponse> rechargeConsumeList;
    //新品项目查询条件
    private Integer type;
    private String sex;
    //操作人手机号
    private String staffPhone;
    //多门店使用
    private Long[] storeIds;

    /**
     * 合作项目抽佣比例
     */
    private BigDecimal brokerage;

    /**
     * 实付金额（伪）
     */
    private String collectionAmount;

    /**
     * 是否合作项目
     */
    @Column(name = "is_cooperation")
    private Integer isCooperation;

    /**
     * 门店类别/1=美容店/2=理发店
     */
    @Column(name = "store_type")
    private Integer storeType;

    private String projectTypeNum;


    /**
     * 最高散客价
     */
    private BigDecimal topPrice;
    /**
     * 最高会员价
     */
    private BigDecimal topPriceMember;
    private String remark;
    private Integer servicingTime;

    @Column(name = "overtime")
    private String overtime;

    @Column(name = "overtime_money")
    private BigDecimal overtimeMoney;

    /**
     * 数据性质，0=项目，1=商品
     */
    @Column(name = "project_nature")
    private Integer projectNature;



    /**
     * 推销提成点
     */
    @Column(name = "market_comm")
    private BigDecimal marketComm;


    /**
     * 点钟提成点
     */
    @Column(name = "clock_comm")
    private BigDecimal clockComm;


    /**
     * 轮钟提成
     */
    @Column(name = "round_clock_comm")
    private BigDecimal roundClockComm;

    /**
     * 推销提成点
     */
    @Column(name = "card_market_comm")
    private BigDecimal cardMarketComm;


    /**
     * 点钟提成点
     */
    @Column(name = "card_clock_comm")
    private BigDecimal cardClockComm;


    /**
     * 轮钟提成
     */
    @Column(name = "card_Round_clock_comm")
    private BigDecimal cardRoundClockComm;

    /**
     * 商品现付提成
     */
    @Column(name = "commodity_cash")
    private BigDecimal commodityCash;

    /**
     * 商品卡付提成
     */
    @Column(name = "commodity_card")
    private BigDecimal commodityCard;

    /**
     * 部门(0=美发，1=美容，2=其他)
     */
    @Column(name = "dept_name")
    private Integer deptName;

    /**
     * 是否允许卡付（0=允许，1=不允许）
     */
    @Column(name = "is_card_pay")
    private Integer isCardPay;

    /**
     * 导出标识 ，0=精确导出，1=连带下级一起导出
     */
    private Integer export;


    /**
     * 抽佣方式，0=固定，1=比例
     */
    @Column(name = "smoke_commission_way")
    private Integer smokeCommissionWay;

    private String selectNumName;

    private Date newdate1;
    private Date newdate2;

    private String prices;

    private int page;


    /**
     * 项目类别IDs
     */
    private String projectTypeIds;
}
