package com.ssm.manage.query;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.ssm.manage.entity.SysStoreRole;
import com.ssm.manage.page.BasePage;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import lombok.experimental.FieldNameConstants;
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)
@FieldNameConstants
public class StaffRequest extends BasePage {
    /**
     * 备注
     */
    @Column(name = "remark")
    @ApiModelProperty(name = "remark", value = "备注")
    private String remark;
    /**
     * 紧急联系人姓名
     */
    @Column(name = "urgent_name")
    @ApiModelProperty(name = "urgentName", value = "紧急联系人姓名")
    private String urgentName;

    /**
     * 紧急联系人电话
     */
    @Column(name = "urgent_phone")
    @ApiModelProperty(name = "urgentPhone", value = "紧急联系人电话")
    private String urgentPhone;

    /**
     * 紧急联系人关系
     */
    @Column(name = "urgent_relationship")
    @ApiModelProperty(name = "urgentRelationship", value = "紧急联系人关系")
    private String urgentRelationship;
    private Long id;
    private String email;
    private String facesInformation;
    private Integer regionId;
    /**
     * 入职时间
     */
    @Column(name = "ruzhi_time")
    @ApiModelProperty(name = "ruzhiTime", value = "入职时间")
    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date ruzhiTime;
    private List<Long> storeIds;
    private List<SysStoreRole> roleList;

    /**
     * 员工编码
     */
    private String staffNum;

    /**
     * 员工名称
     */
    private String staffName;
    private String saleStaffName;

    /**
     * 性别：1：男；0：女
     */
    private Integer sex;

    /**
     * 手机
     */
    private String mobilePhone;

    /**
     * QQ
     */
    private String qq;

    /**
     * 微信
     */
    private String wechat;

    /**
     * 入职日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date joinedDate;

    /**
     * 离职日期
     */
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date leaveDate;

    /**
     * 复职时间
     */
    @Column(name = "reinstate_date")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private Date reinstateDate;

    /**
     * 密码
     */
    private String password;

    /**
     * 身份证号
     */
    private String identityCard;

    /**
     * 状态 1:在职  0 :离职  2停用
     */
    private Integer state;

    /**
     * 工种：1:美发师/2:技术/3:助理/4:收银员/5:美容师
     */
    private Integer job;

    /**
     * 职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     */
    private Integer grade;

    /**
     * 水牌号
     */
    private String brandNumber;

    /**
     * 简介
     */
    private String briefIntroduction;

    /**
     * 擅长
     */
    private String goodAt;

    /**
     * 人气
     */
    private Integer popularity;

    /**
     * 是否用户：1:是用户/0:不是用户
     */
    private Integer userState;

    /**
     * 用户角色编码
     */
    private Long roleId;
    /**
     * 用户角色编码
     */
    private String roleNum;

    /**
     * 用户角色名称
     */
    private String roleName;

    /**
     * 门店主键
     */
    private Long storeId;

    /**
     * 员工编码
     */
    private String storeNum;

    /**
     * 父門店ID
     */
    private String parentId;

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

    /**
     * 是否排班   0:不排班/1:排班
     */
    private Integer row;

    /**
     * 月度任务
     */
    private String monthTask;

    /**
     * 底薪
     */
    private BigDecimal baseSalary;

    /**
     * 提成比率
     */
    private BigDecimal monthRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    private BigDecimal monthHigherOne;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthHigherOneRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    private BigDecimal monthHigherTwo;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthHigherTwoRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    private BigDecimal monthHigherThree;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthHigherThreeRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    private BigDecimal monthHigherFour;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthHigherFourRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerOne;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerOneRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerTwo;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerTwoRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerThree;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerThreeRatio;


    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerFour;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    private BigDecimal monthLowerFourRatio;

    /**
     * 充值业绩任务
     */
    @Column(name = "recharge_achi")
    private BigDecimal rechargeAchi;

    /**
     * 疗程业绩任务
     */
    @Column(name = "course_achi")
    private BigDecimal courseAchi;

    /**
     * 服务单业绩任务
     */
    @Column(name = "cash_achi")
    private BigDecimal cashAchi;


    /*
    * 验证码
    * */
    private String passCode;

    /*
     * 新密码
     * */
    private String newPassword;

    /*
    * 业绩占比
    * */
//    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private BigDecimal ratio;

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

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

    private BigDecimal cardAchi;
    private BigDecimal cardComm;

    //业务员现付业绩
    private BigDecimal cashCashAchi;
    private BigDecimal cashComm;

    @Column(name = "source")
    private Integer source;

    /**
     * 员工类型
     */
    @Column(name = "type")
    @ExcelProperty("员工类型(员工类别（0=管理者，1=普通员工,2=收银）)")
    private Integer type;


    //总店登录使用
    private Long reason;

    /**
     * 员工部门
     */
    @Column(name = "dept_name")
    @ExcelProperty("员工类型(员工类别（0=管理者，1=普通员工）)")
    private Integer deptName;


    //门店编码(转店前)
    private Long storeCodeBefore;


    //门店名称(转店前)
    private String storeNameBefore;

    @Column(name = "post_id")
    private Integer postId;

    @Column(name = "post_num")
    private String postNum;

    @Column(name = "post_name")
    private String postName;


    /**
     * 工种编码
     */
    @Column(name = "word_type_num")
    private String wordTypeNum;
    /**
     * 工种名称
     */
    @Column(name = "word_type_name")
    private String wordTypeName;
    /**
     * 工种iD
     */
    @Column(name = "word_type_name")
    @ExcelProperty("工种iD")
    private Long wordTypeId;



    private String dynamicPsw;

}
