package com.ssm.manage.entity;

import com.alibaba.excel.annotation.ExcelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.*;

@Table(name = "base_staff")
public class BaseStaff implements Serializable {
    /**
     * 主键ID
     */
    @Id
    private Long id;

    /**
     * 员工编码
     */
    @Column(name = "staff_num")
    @ExcelProperty("员工编码*")
    private String staffNum;

    /**
     * 员工名称
     */
    @Column(name = "staff_name")
    @ExcelProperty("员工名称*")
    private String staffName;

    /**
     * 性别：1：男；0：女
     */
    @ExcelProperty("性别*")
    private Integer sex;

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

    /**
     * QQ
     */
    @Column(name = "QQ")
    @ExcelProperty("QQ")
    private String qq;

    /**
     * 微信
     */
    @ExcelProperty("微信")
    private String wechat;

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

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

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

    /**
     * 密码
     */
    @ExcelProperty("密码*")
    private String password;

    /**
     * 身份证号
     */
    @Column(name = "identity_card")
    @ExcelProperty("身份证号*")
    private String identityCard;

    /**
     * 状态 1：在职：0 ： 离职 2:启用 3:停用
     */
    @ExcelProperty("状态*")
    private Integer state;

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

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

    /**
     * 水牌号
     */
    @Column(name = "brand_number")
    @ExcelProperty("水牌号*")
    private String brandNumber;

    /**
     * 简介
     */
    @Column(name = "brief_introduction")
    @ExcelProperty("简介")
    private String briefIntroduction;

    /**
     * 擅长
     */
    @Column(name = "good_at")
    @ExcelProperty("擅长")
    private String goodAt;

    /**
     * 人气
     */
    @ExcelProperty("人气")
    private Integer popularity;

    /**
     * 是否用户：1:是用户/0:不是用户
     */
    @Column(name = "user_state")
    @ExcelProperty("是否用户*")
    private Integer userState;


    /**
     * 用户角色编码
     */
    private Long roleId;
    /**
     * 用户角色编码
     */
    @Column(name = "role_num")
    @ExcelProperty("用户角色编码")
    private String roleNum;

    /**
     * 用户角色名称
     */
    @Column(name = "role_name")
    @ExcelProperty("用户角色名称")
    private String roleName;

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

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

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

    /**
     * 月度任务
     */
    @Column(name = "month_task")
    private String monthTask;

    /**
     * 底薪
     */
    @Column(name = "base_salary")
    @ExcelProperty("底薪")
    private BigDecimal baseSalary;

    /**
     * 提成比率
     */
    @Column(name = "month_ratio")
    private BigDecimal monthRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    @Column(name = "month_higher_one")
    private BigDecimal monthHigherOne;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_higher_one_ratio")
    private BigDecimal monthHigherOneRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    @Column(name = "month_higher_two")
    private BigDecimal monthHigherTwo;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_higher_two_ratio")
    private BigDecimal monthHigherTwoRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    @Column(name = "month_higher_three")
    private BigDecimal monthHigherThree;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_higher_three_ratio")
    private BigDecimal monthHigherThreeRatio;

    /**
     * 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    @Column(name = "month_higher_four")
    private BigDecimal monthHigherFour;

    /**
     * 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_higher_four_ratio")
    private BigDecimal monthHigherFourRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_one")
    private BigDecimal monthLowerOne;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_one_ratio")
    private BigDecimal monthLowerOneRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_two")
    private BigDecimal monthLowerTwo;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_two_ratio")
    private BigDecimal monthLowerTwoRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_three")
    private BigDecimal monthLowerThree;

    /**
     * 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_three_ratio")
    private BigDecimal monthLowerThreeRatio;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_four")
    private BigDecimal monthLowerFour;

    /**
     * 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    @Column(name = "month_lower_four_ratio")
    private BigDecimal monthLowerFourRatio;

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

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

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

    @Column(name = "source")
    @ExcelProperty("员工来源(0:校招、1:社招、2:介绍)")
    private Integer source;

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

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


    @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_id")
    @ExcelProperty("工种iD")
    private Long wordTypeId;


    /**
     * 最后修改人ID
     */
    @Column(name = "modify_id")
    private Long modifyId;

    /**
     * 最后修改人名称
     */
    @Column(name = "modify_by")
    private String modifyBy;

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

    public Long getModifyId() {
        return modifyId;
    }

    public void setModifyId(Long modifyId) {
        this.modifyId = modifyId;
    }

    public String getModifyBy() {
        return modifyBy;
    }

    public void setModifyBy(String modifyBy) {
        this.modifyBy = modifyBy;
    }

    public Date getModifyDate() {
        return modifyDate;
    }

    public void setModifyDate(Date modifyDate) {
        this.modifyDate = modifyDate;
    }

    public Long getInputId() {
        return inputId;
    }

    public void setInputId(Long inputId) {
        this.inputId = inputId;
    }

    public String getInputBy() {
        return inputBy;
    }

    public void setInputBy(String inputBy) {
        this.inputBy = inputBy;
    }

    public Date getInputDate() {
        return inputDate;
    }

    public void setInputDate(Date inputDate) {
        this.inputDate = inputDate;
    }

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

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

    /**
     * 录入时间
     */
    @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;

    public Long getRoleId() {
        return roleId;
    }

    public void setRoleId(Long roleId) {
        this.roleId = roleId;
    }

    public String getWordTypeNum() {
        return wordTypeNum;
    }

    public void setWordTypeNum(String wordTypeNum) {
        this.wordTypeNum = wordTypeNum;
    }

    public String getWordTypeName() {
        return wordTypeName;
    }

    public void setWordTypeName(String wordTypeName) {
        this.wordTypeName = wordTypeName;
    }

    public Long getWordTypeId() {
        return wordTypeId;
    }

    public void setWordTypeId(Long wordTypeId) {
        this.wordTypeId = wordTypeId;
    }

    public Integer getPostId() {
        return postId;
    }

    public void setPostId(Integer postId) {
        this.postId = postId;
    }

    public String getPostNum() {
        return postNum;
    }

    public void setPostNum(String postNum) {
        this.postNum = postNum;
    }

    public String getPostName() {
        return postName;
    }

    public void setPostName(String postName) {
        this.postName = postName;
    }

    private static final long serialVersionUID = 1L;


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


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

    public Long getStoreCodeBefore() {
        return storeCodeBefore;
    }

    public void setStoreCodeBefore(Long storeCodeBefore) {
        this.storeCodeBefore = storeCodeBefore;
    }

    public String getStoreNameBefore() {
        return storeNameBefore;
    }

    public void setStoreNameBefore(String storeNameBefore) {
        this.storeNameBefore = storeNameBefore;
    }

    /**
     * 获取主键ID
     *
     * @return id - 主键ID
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键ID
     *
     * @param id 主键ID
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取员工编码
     *
     * @return staff_num - 员工编码
     */
    public String getStaffNum() {
        return staffNum;
    }

    /**
     * 设置员工编码
     *
     * @param staffNum 员工编码
     */
    public void setStaffNum(String staffNum) {
        this.staffNum = staffNum;
    }

    /**
     * 获取员工名称
     *
     * @return staff_name - 员工名称
     */
    public String getStaffName() {
        return staffName;
    }

    /**
     * 设置员工名称
     *
     * @param staffName 员工名称
     */
    public void setStaffName(String staffName) {
        this.staffName = staffName;
    }

    /**
     * 获取性别：1：男；0：女
     *
     * @return sex - 性别：1：男；0：女
     */
    public Integer getSex() {
        return sex;
    }

    /**
     * 设置性别：1：男；0：女
     *
     * @param sex 性别：1：男；0：女
     */
    public void setSex(Integer sex) {
        this.sex = sex;
    }

    /**
     * 获取手机
     *
     * @return mobile_phone - 手机
     */
    public String getMobilePhone() {
        return mobilePhone;
    }

    /**
     * 设置手机
     *
     * @param mobilePhone 手机
     */
    public void setMobilePhone(String mobilePhone) {
        this.mobilePhone = mobilePhone;
    }

    /**
     * 获取QQ
     *
     * @return QQ - QQ
     */
    public String getQq() {
        return qq;
    }

    /**
     * 设置QQ
     *
     * @param qq QQ
     */
    public void setQq(String qq) {
        this.qq = qq;
    }

    /**
     * 获取微信
     *
     * @return wechat - 微信
     */
    public String getWechat() {
        return wechat;
    }

    /**
     * 设置微信
     *
     * @param wechat 微信
     */
    public void setWechat(String wechat) {
        this.wechat = wechat;
    }

    /**
     * 获取入职日期
     *
     * @return joined_date - 入职日期
     */
    public Date getJoinedDate() {
        return joinedDate;
    }

    /**
     * 设置入职日期
     *
     * @param joinedDate 入职日期
     */
    public void setJoinedDate(Date joinedDate) {
        this.joinedDate = joinedDate;
    }

    /**
     * 获取离职日期
     *
     * @return leave_date - 离职日期
     */
    public Date getLeaveDate() {
        return leaveDate;
    }

    /**
     * 设置离职日期
     *
     * @param leaveDate 离职日期
     */
    public void setLeaveDate(Date leaveDate) {
        this.leaveDate = leaveDate;
    }

    /**
     * 获取复职时间
     *
     * @return reinstate_date - 复职时间
     */
    public Date getReinstateDate() {
        return reinstateDate;
    }

    /**
     * 设置复职时间
     *
     * @param reinstateDate 复职时间
     */
    public void setReinstateDate(Date reinstateDate) {
        this.reinstateDate = reinstateDate;
    }

    /**
     * 获取密码
     *
     * @return password - 密码
     */
    public String getPassword() {
        return password;
    }

    /**
     * 设置密码
     *
     * @param password 密码
     */
    public void setPassword(String password) {
        this.password = password;
    }

    /**
     * 获取身份证号
     *
     * @return identity_card - 身份证号
     */
    public String getIdentityCard() {
        return identityCard;
    }

    /**
     * 设置身份证号
     *
     * @param identityCard 身份证号
     */
    public void setIdentityCard(String identityCard) {
        this.identityCard = identityCard;
    }

    /**
     * 获取状态 1：在职：0 ： 离职 2:启用 3:停用
     *
     * @return state - 状态 1：在职：0 ： 离职 2:启用 3:停用
     */
    public Integer getState() {
        return state;
    }

    /**
     * 设置状态 1：在职：0 ： 离职 2:启用 3:停用
     *
     * @param state 状态 1：在职：0 ： 离职 2:启用 3:停用
     */
    public void setState(Integer state) {
        this.state = state;
    }

    /**
     * 获取工种：1:美发师/2:技术/3:助理/4:收银员/5:美容师
     *
     * @return job - 工种：1:美发师/2:技术/3:助理/4:收银员/5:美容师
     */
    public Integer getJob() {
        return job;
    }

    /**
     * 设置工种：1:美发师/2:技术/3:助理/4:收银员/5:美容师
     *
     * @param job 工种：1:美发师/2:技术/3:助理/4:收银员/5:美容师
     */
    public void setJob(Integer job) {
        this.job = job;
    }

    /**
     * 获取职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     *
     * @return grade - 职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     */
    public Integer getGrade() {
        return grade;
    }

    /**
     * 设置职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     *
     * @param grade 职务：1:店长/2:美发经理/3:美容经理/4:总监/51~59:美发师1级到9级/6:员工
     */
    public void setGrade(Integer grade) {
        this.grade = grade;
    }

    /**
     * 获取水牌号
     *
     * @return brand_number - 水牌号
     */
    public String getBrandNumber() {
        return brandNumber;
    }

    /**
     * 设置水牌号
     *
     * @param brandNumber 水牌号
     */
    public void setBrandNumber(String brandNumber) {
        this.brandNumber = brandNumber;
    }

    /**
     * 获取简介
     *
     * @return brief_introduction - 简介
     */
    public String getBriefIntroduction() {
        return briefIntroduction;
    }

    /**
     * 设置简介
     *
     * @param briefIntroduction 简介
     */
    public void setBriefIntroduction(String briefIntroduction) {
        this.briefIntroduction = briefIntroduction;
    }

    /**
     * 获取擅长
     *
     * @return good_at - 擅长
     */
    public String getGoodAt() {
        return goodAt;
    }

    /**
     * 设置擅长
     *
     * @param goodAt 擅长
     */
    public void setGoodAt(String goodAt) {
        this.goodAt = goodAt;
    }

    /**
     * 获取人气
     *
     * @return popularity - 人气
     */
    public Integer getPopularity() {
        return popularity;
    }

    /**
     * 设置人气
     *
     * @param popularity 人气
     */
    public void setPopularity(Integer popularity) {
        this.popularity = popularity;
    }

    /**
     * 获取是否用户：1:是用户/0:不是用户
     *
     * @return user_state - 是否用户：1:是用户/0:不是用户
     */
    public Integer getUserState() {
        return userState;
    }

    /**
     * 设置是否用户：1:是用户/0:不是用户
     *
     * @param userState 是否用户：1:是用户/0:不是用户
     */
    public void setUserState(Integer userState) {
        this.userState = userState;
    }

    /**
     * 获取用户角色编码
     *
     * @return role_num - 用户角色编码
     */
    public String getRoleNum() {
        return roleNum;
    }

    /**
     * 设置用户角色编码
     *
     * @param roleNum 用户角色编码
     */
    public void setRoleNum(String roleNum) {
        this.roleNum = roleNum;
    }

    /**
     * 获取用户角色名称
     *
     * @return role_name - 用户角色名称
     */
    public String getRoleName() {
        return roleName;
    }

    /**
     * 设置用户角色名称
     *
     * @param roleName 用户角色名称
     */
    public void setRoleName(String roleName) {
        this.roleName = roleName;
    }

    /**
     * 获取门店编码
     *
     * @return store_id - 门店编码
     */
    public Long getStoreId() {
        return storeId;
    }

    /**
     * 设置门店编码
     *
     * @param storeId 门店编码
     */
    public void setStoreId(Long storeId) {
        this.storeId = storeId;
    }

    /**
     * 获取门店名称
     *
     * @return store_name - 门店名称
     */
    public String getStoreName() {
        return storeName;
    }

    /**
     * 设置门店名称
     *
     * @param storeName 门店名称
     */
    public void setStoreName(String storeName) {
        this.storeName = storeName;
    }

    /**
     * 获取是否排班   0:不排班/1:排班
     *
     * @return row - 是否排班   0:不排班/1:排班
     */
    public Integer getRow() {
        return row;
    }

    /**
     * 设置是否排班   0:不排班/1:排班
     *
     * @param row 是否排班   0:不排班/1:排班
     */
    public void setRow(Integer row) {
        this.row = row;
    }

    /**
     * 获取月度任务
     *
     * @return month_task - 月度任务
     */
    public String getMonthTask() {
        return monthTask;
    }

    /**
     * 设置月度任务
     *
     * @param monthTask 月度任务
     */
    public void setMonthTask(String monthTask) {
        this.monthTask = monthTask;
    }

    /**
     * 获取底薪
     *
     * @return base_salary - 底薪
     */
    public BigDecimal getBaseSalary() {
        return baseSalary;
    }

    /**
     * 设置底薪
     *
     * @param baseSalary 底薪
     */
    public void setBaseSalary(BigDecimal baseSalary) {
        this.baseSalary = baseSalary;
    }

    /**
     * 获取提成比率
     *
     * @return month_ratio - 提成比率
     */
    public BigDecimal getMonthRatio() {
        return monthRatio;
    }

    /**
     * 设置提成比率
     *
     * @param monthRatio 提成比率
     */
    public void setMonthRatio(BigDecimal monthRatio) {
        this.monthRatio = monthRatio;
    }

    /**
     * 获取超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @return month_higher_one - 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public BigDecimal getMonthHigherOne() {
        return monthHigherOne;
    }

    /**
     * 设置超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @param monthHigherOne 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public void setMonthHigherOne(BigDecimal monthHigherOne) {
        this.monthHigherOne = monthHigherOne;
    }

    /**
     * 获取超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_higher_one_ratio - 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthHigherOneRatio() {
        return monthHigherOneRatio;
    }

    /**
     * 设置超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthHigherOneRatio 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthHigherOneRatio(BigDecimal monthHigherOneRatio) {
        this.monthHigherOneRatio = monthHigherOneRatio;
    }

    /**
     * 获取超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @return month_higher_two - 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public BigDecimal getMonthHigherTwo() {
        return monthHigherTwo;
    }

    /**
     * 设置超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @param monthHigherTwo 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public void setMonthHigherTwo(BigDecimal monthHigherTwo) {
        this.monthHigherTwo = monthHigherTwo;
    }

    /**
     * 获取超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_higher_two_ratio - 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthHigherTwoRatio() {
        return monthHigherTwoRatio;
    }

    /**
     * 设置超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthHigherTwoRatio 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthHigherTwoRatio(BigDecimal monthHigherTwoRatio) {
        this.monthHigherTwoRatio = monthHigherTwoRatio;
    }

    /**
     * 获取超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @return month_higher_three - 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public BigDecimal getMonthHigherThree() {
        return monthHigherThree;
    }

    /**
     * 设置超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @param monthHigherThree 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public void setMonthHigherThree(BigDecimal monthHigherThree) {
        this.monthHigherThree = monthHigherThree;
    }

    /**
     * 获取超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_higher_three_ratio - 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthHigherThreeRatio() {
        return monthHigherThreeRatio;
    }

    /**
     * 设置超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthHigherThreeRatio 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthHigherThreeRatio(BigDecimal monthHigherThreeRatio) {
        this.monthHigherThreeRatio = monthHigherThreeRatio;
    }

    /**
     * 获取超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @return month_higher_four - 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public BigDecimal getMonthHigherFour() {
        return monthHigherFour;
    }

    /**
     * 设置超额业绩：小于等于1表示超额比率，大于1表示金额
     *
     * @param monthHigherFour 超额业绩：小于等于1表示超额比率，大于1表示金额
     */
    public void setMonthHigherFour(BigDecimal monthHigherFour) {
        this.monthHigherFour = monthHigherFour;
    }

    /**
     * 获取超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_higher_four_ratio - 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthHigherFourRatio() {
        return monthHigherFourRatio;
    }

    /**
     * 设置超额提成：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthHigherFourRatio 超额提成：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthHigherFourRatio(BigDecimal monthHigherFourRatio) {
        this.monthHigherFourRatio = monthHigherFourRatio;
    }

    /**
     * 获取未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_one - 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerOne() {
        return monthLowerOne;
    }

    /**
     * 设置未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerOne 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerOne(BigDecimal monthLowerOne) {
        this.monthLowerOne = monthLowerOne;
    }

    /**
     * 获取未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_one_ratio - 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerOneRatio() {
        return monthLowerOneRatio;
    }

    /**
     * 设置未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerOneRatio 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerOneRatio(BigDecimal monthLowerOneRatio) {
        this.monthLowerOneRatio = monthLowerOneRatio;
    }

    /**
     * 获取未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_two - 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerTwo() {
        return monthLowerTwo;
    }

    /**
     * 设置未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerTwo 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerTwo(BigDecimal monthLowerTwo) {
        this.monthLowerTwo = monthLowerTwo;
    }

    /**
     * 获取未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_two_ratio - 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerTwoRatio() {
        return monthLowerTwoRatio;
    }

    /**
     * 设置未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerTwoRatio 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerTwoRatio(BigDecimal monthLowerTwoRatio) {
        this.monthLowerTwoRatio = monthLowerTwoRatio;
    }

    /**
     * 获取未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_three - 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerThree() {
        return monthLowerThree;
    }

    /**
     * 设置未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerThree 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerThree(BigDecimal monthLowerThree) {
        this.monthLowerThree = monthLowerThree;
    }

    /**
     * 获取未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_three_ratio - 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerThreeRatio() {
        return monthLowerThreeRatio;
    }

    /**
     * 设置未达标扣款：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerThreeRatio 未达标扣款：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerThreeRatio(BigDecimal monthLowerThreeRatio) {
        this.monthLowerThreeRatio = monthLowerThreeRatio;
    }

    /**
     * 获取未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_four - 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerFour() {
        return monthLowerFour;
    }

    /**
     * 设置未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerFour 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerFour(BigDecimal monthLowerFour) {
        this.monthLowerFour = monthLowerFour;
    }

    /**
     * 获取未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @return month_lower_four_ratio - 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public BigDecimal getMonthLowerFourRatio() {
        return monthLowerFourRatio;
    }

    /**
     * 设置未达标业绩：小于1表示比率，大于等于1表示固定金额
     *
     * @param monthLowerFourRatio 未达标业绩：小于1表示比率，大于等于1表示固定金额
     */
    public void setMonthLowerFourRatio(BigDecimal monthLowerFourRatio) {
        this.monthLowerFourRatio = monthLowerFourRatio;
    }

    /**
     * 获取充值业绩任务
     *
     * @return recharge_achi - 充值业绩任务
     */
    public BigDecimal getRechargeAchi() {
        return rechargeAchi;
    }

    /**
     * 设置充值业绩任务
     *
     * @param rechargeAchi 充值业绩任务
     */
    public void setRechargeAchi(BigDecimal rechargeAchi) {
        this.rechargeAchi = rechargeAchi;
    }

    /**
     * 获取疗程业绩任务
     *
     * @return course_achi - 疗程业绩任务
     */
    public BigDecimal getCourseAchi() {
        return courseAchi;
    }

    /**
     * 设置疗程业绩任务
     *
     * @param courseAchi 疗程业绩任务
     */
    public void setCourseAchi(BigDecimal courseAchi) {
        this.courseAchi = courseAchi;
    }

    /**
     * 获取服务单业绩任务
     *
     * @return cash_achi - 服务单业绩任务
     */
    public BigDecimal getCashAchi() {
        return cashAchi;
    }

    /**
     * 设置服务单业绩任务
     *
     * @param cashAchi 服务单业绩任务
     */
    public void setCashAchi(BigDecimal cashAchi) {
        this.cashAchi = cashAchi;
    }

    public Integer getSource() {
        return source;
    }

    public void setSource(Integer source) {
        this.source = source;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getDeptName() {
        return deptName;
    }

    public void setDeptName(Integer deptName) {
        this.deptName = deptName;
    }

    @Override
    public boolean equals(Object that) {
        if (this == that) {
            return true;
        }
        if (that == null) {
            return false;
        }
        if (getClass() != that.getClass()) {
            return false;
        }
        BaseStaff other = (BaseStaff) that;
        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))
            && (this.getStaffNum() == null ? other.getStaffNum() == null : this.getStaffNum().equals(other.getStaffNum()))
            && (this.getStaffName() == null ? other.getStaffName() == null : this.getStaffName().equals(other.getStaffName()))
            && (this.getSex() == null ? other.getSex() == null : this.getSex().equals(other.getSex()))
            && (this.getMobilePhone() == null ? other.getMobilePhone() == null : this.getMobilePhone().equals(other.getMobilePhone()))
            && (this.getQq() == null ? other.getQq() == null : this.getQq().equals(other.getQq()))
            && (this.getWechat() == null ? other.getWechat() == null : this.getWechat().equals(other.getWechat()))
            && (this.getJoinedDate() == null ? other.getJoinedDate() == null : this.getJoinedDate().equals(other.getJoinedDate()))
            && (this.getLeaveDate() == null ? other.getLeaveDate() == null : this.getLeaveDate().equals(other.getLeaveDate()))
            && (this.getReinstateDate() == null ? other.getReinstateDate() == null : this.getReinstateDate().equals(other.getReinstateDate()))
            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))
            && (this.getIdentityCard() == null ? other.getIdentityCard() == null : this.getIdentityCard().equals(other.getIdentityCard()))
            && (this.getState() == null ? other.getState() == null : this.getState().equals(other.getState()))
            && (this.getJob() == null ? other.getJob() == null : this.getJob().equals(other.getJob()))
            && (this.getGrade() == null ? other.getGrade() == null : this.getGrade().equals(other.getGrade()))
            && (this.getBrandNumber() == null ? other.getBrandNumber() == null : this.getBrandNumber().equals(other.getBrandNumber()))
            && (this.getBriefIntroduction() == null ? other.getBriefIntroduction() == null : this.getBriefIntroduction().equals(other.getBriefIntroduction()))
            && (this.getGoodAt() == null ? other.getGoodAt() == null : this.getGoodAt().equals(other.getGoodAt()))
            && (this.getPopularity() == null ? other.getPopularity() == null : this.getPopularity().equals(other.getPopularity()))
            && (this.getUserState() == null ? other.getUserState() == null : this.getUserState().equals(other.getUserState()))
            && (this.getRoleNum() == null ? other.getRoleNum() == null : this.getRoleNum().equals(other.getRoleNum()))
            && (this.getRoleName() == null ? other.getRoleName() == null : this.getRoleName().equals(other.getRoleName()))
            && (this.getStoreId() == null ? other.getStoreId() == null : this.getStoreId().equals(other.getStoreId()))
            && (this.getStoreName() == null ? other.getStoreName() == null : this.getStoreName().equals(other.getStoreName()))
            && (this.getRow() == null ? other.getRow() == null : this.getRow().equals(other.getRow()))
            && (this.getMonthTask() == null ? other.getMonthTask() == null : this.getMonthTask().equals(other.getMonthTask()))
            && (this.getBaseSalary() == null ? other.getBaseSalary() == null : this.getBaseSalary().equals(other.getBaseSalary()))
            && (this.getMonthRatio() == null ? other.getMonthRatio() == null : this.getMonthRatio().equals(other.getMonthRatio()))
            && (this.getMonthHigherOne() == null ? other.getMonthHigherOne() == null : this.getMonthHigherOne().equals(other.getMonthHigherOne()))
            && (this.getMonthHigherOneRatio() == null ? other.getMonthHigherOneRatio() == null : this.getMonthHigherOneRatio().equals(other.getMonthHigherOneRatio()))
            && (this.getMonthHigherTwo() == null ? other.getMonthHigherTwo() == null : this.getMonthHigherTwo().equals(other.getMonthHigherTwo()))
            && (this.getMonthHigherTwoRatio() == null ? other.getMonthHigherTwoRatio() == null : this.getMonthHigherTwoRatio().equals(other.getMonthHigherTwoRatio()))
            && (this.getMonthHigherThree() == null ? other.getMonthHigherThree() == null : this.getMonthHigherThree().equals(other.getMonthHigherThree()))
            && (this.getMonthHigherThreeRatio() == null ? other.getMonthHigherThreeRatio() == null : this.getMonthHigherThreeRatio().equals(other.getMonthHigherThreeRatio()))
            && (this.getMonthHigherFour() == null ? other.getMonthHigherFour() == null : this.getMonthHigherFour().equals(other.getMonthHigherFour()))
            && (this.getMonthHigherFourRatio() == null ? other.getMonthHigherFourRatio() == null : this.getMonthHigherFourRatio().equals(other.getMonthHigherFourRatio()))
            && (this.getMonthLowerOne() == null ? other.getMonthLowerOne() == null : this.getMonthLowerOne().equals(other.getMonthLowerOne()))
            && (this.getMonthLowerOneRatio() == null ? other.getMonthLowerOneRatio() == null : this.getMonthLowerOneRatio().equals(other.getMonthLowerOneRatio()))
            && (this.getMonthLowerTwo() == null ? other.getMonthLowerTwo() == null : this.getMonthLowerTwo().equals(other.getMonthLowerTwo()))
            && (this.getMonthLowerTwoRatio() == null ? other.getMonthLowerTwoRatio() == null : this.getMonthLowerTwoRatio().equals(other.getMonthLowerTwoRatio()))
            && (this.getMonthLowerThree() == null ? other.getMonthLowerThree() == null : this.getMonthLowerThree().equals(other.getMonthLowerThree()))
            && (this.getMonthLowerThreeRatio() == null ? other.getMonthLowerThreeRatio() == null : this.getMonthLowerThreeRatio().equals(other.getMonthLowerThreeRatio()))
            && (this.getMonthLowerFour() == null ? other.getMonthLowerFour() == null : this.getMonthLowerFour().equals(other.getMonthLowerFour()))
            && (this.getMonthLowerFourRatio() == null ? other.getMonthLowerFourRatio() == null : this.getMonthLowerFourRatio().equals(other.getMonthLowerFourRatio()))
            && (this.getRechargeAchi() == null ? other.getRechargeAchi() == null : this.getRechargeAchi().equals(other.getRechargeAchi()))
            && (this.getCourseAchi() == null ? other.getCourseAchi() == null : this.getCourseAchi().equals(other.getCourseAchi()))
            && (this.getSource() == null ? other.getSource() == null : this.getSource().equals(other.getSource()))
            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))
            && (this.getDeptName() == null ? other.getDeptName() == null : this.getDeptName().equals(other.getDeptName()))
            && (this.getCashAchi() == null ? other.getCashAchi() == null : this.getCashAchi().equals(other.getCashAchi()));
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());
        result = prime * result + ((getStaffNum() == null) ? 0 : getStaffNum().hashCode());
        result = prime * result + ((getStaffName() == null) ? 0 : getStaffName().hashCode());
        result = prime * result + ((getSex() == null) ? 0 : getSex().hashCode());
        result = prime * result + ((getMobilePhone() == null) ? 0 : getMobilePhone().hashCode());
        result = prime * result + ((getQq() == null) ? 0 : getQq().hashCode());
        result = prime * result + ((getWechat() == null) ? 0 : getWechat().hashCode());
        result = prime * result + ((getJoinedDate() == null) ? 0 : getJoinedDate().hashCode());
        result = prime * result + ((getLeaveDate() == null) ? 0 : getLeaveDate().hashCode());
        result = prime * result + ((getReinstateDate() == null) ? 0 : getReinstateDate().hashCode());
        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());
        result = prime * result + ((getIdentityCard() == null) ? 0 : getIdentityCard().hashCode());
        result = prime * result + ((getState() == null) ? 0 : getState().hashCode());
        result = prime * result + ((getJob() == null) ? 0 : getJob().hashCode());
        result = prime * result + ((getGrade() == null) ? 0 : getGrade().hashCode());
        result = prime * result + ((getBrandNumber() == null) ? 0 : getBrandNumber().hashCode());
        result = prime * result + ((getBriefIntroduction() == null) ? 0 : getBriefIntroduction().hashCode());
        result = prime * result + ((getGoodAt() == null) ? 0 : getGoodAt().hashCode());
        result = prime * result + ((getPopularity() == null) ? 0 : getPopularity().hashCode());
        result = prime * result + ((getUserState() == null) ? 0 : getUserState().hashCode());
        result = prime * result + ((getRoleNum() == null) ? 0 : getRoleNum().hashCode());
        result = prime * result + ((getRoleName() == null) ? 0 : getRoleName().hashCode());
        result = prime * result + ((getStoreId() == null) ? 0 : getStoreId().hashCode());
        result = prime * result + ((getStoreName() == null) ? 0 : getStoreName().hashCode());
        result = prime * result + ((getRow() == null) ? 0 : getRow().hashCode());
        result = prime * result + ((getMonthTask() == null) ? 0 : getMonthTask().hashCode());
        result = prime * result + ((getBaseSalary() == null) ? 0 : getBaseSalary().hashCode());
        result = prime * result + ((getMonthRatio() == null) ? 0 : getMonthRatio().hashCode());
        result = prime * result + ((getMonthHigherOne() == null) ? 0 : getMonthHigherOne().hashCode());
        result = prime * result + ((getMonthHigherOneRatio() == null) ? 0 : getMonthHigherOneRatio().hashCode());
        result = prime * result + ((getMonthHigherTwo() == null) ? 0 : getMonthHigherTwo().hashCode());
        result = prime * result + ((getMonthHigherTwoRatio() == null) ? 0 : getMonthHigherTwoRatio().hashCode());
        result = prime * result + ((getMonthHigherThree() == null) ? 0 : getMonthHigherThree().hashCode());
        result = prime * result + ((getMonthHigherThreeRatio() == null) ? 0 : getMonthHigherThreeRatio().hashCode());
        result = prime * result + ((getMonthHigherFour() == null) ? 0 : getMonthHigherFour().hashCode());
        result = prime * result + ((getMonthHigherFourRatio() == null) ? 0 : getMonthHigherFourRatio().hashCode());
        result = prime * result + ((getMonthLowerOne() == null) ? 0 : getMonthLowerOne().hashCode());
        result = prime * result + ((getMonthLowerOneRatio() == null) ? 0 : getMonthLowerOneRatio().hashCode());
        result = prime * result + ((getMonthLowerTwo() == null) ? 0 : getMonthLowerTwo().hashCode());
        result = prime * result + ((getMonthLowerTwoRatio() == null) ? 0 : getMonthLowerTwoRatio().hashCode());
        result = prime * result + ((getMonthLowerThree() == null) ? 0 : getMonthLowerThree().hashCode());
        result = prime * result + ((getMonthLowerThreeRatio() == null) ? 0 : getMonthLowerThreeRatio().hashCode());
        result = prime * result + ((getMonthLowerFour() == null) ? 0 : getMonthLowerFour().hashCode());
        result = prime * result + ((getMonthLowerFourRatio() == null) ? 0 : getMonthLowerFourRatio().hashCode());
        result = prime * result + ((getRechargeAchi() == null) ? 0 : getRechargeAchi().hashCode());
        result = prime * result + ((getCourseAchi() == null) ? 0 : getCourseAchi().hashCode());
        result = prime * result + ((getCashAchi() == null) ? 0 : getCashAchi().hashCode());
        result = prime * result + ((getSource() == null) ? 0 : getSource().hashCode());
        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());
        result = prime * result + ((getDeptName() == null) ? 0 : getDeptName().hashCode());
        return result;
    }

    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append(getClass().getSimpleName());
        sb.append(" [");
        sb.append("Hash = ").append(hashCode());
        sb.append(", id=").append(id);
        sb.append(", staffNum=").append(staffNum);
        sb.append(", staffName=").append(staffName);
        sb.append(", sex=").append(sex);
        sb.append(", mobilePhone=").append(mobilePhone);
        sb.append(", qq=").append(qq);
        sb.append(", wechat=").append(wechat);
        sb.append(", joinedDate=").append(joinedDate);
        sb.append(", leaveDate=").append(leaveDate);
        sb.append(", reinstateDate=").append(reinstateDate);
        sb.append(", password=").append(password);
        sb.append(", identityCard=").append(identityCard);
        sb.append(", state=").append(state);
        sb.append(", job=").append(job);
        sb.append(", grade=").append(grade);
        sb.append(", brandNumber=").append(brandNumber);
        sb.append(", briefIntroduction=").append(briefIntroduction);
        sb.append(", goodAt=").append(goodAt);
        sb.append(", popularity=").append(popularity);
        sb.append(", userState=").append(userState);
        sb.append(", roleNum=").append(roleNum);
        sb.append(", roleName=").append(roleName);
        sb.append(", storeId=").append(storeId);
        sb.append(", storeName=").append(storeName);
        sb.append(", row=").append(row);
        sb.append(", monthTask=").append(monthTask);
        sb.append(", baseSalary=").append(baseSalary);
        sb.append(", monthRatio=").append(monthRatio);
        sb.append(", monthHigherOne=").append(monthHigherOne);
        sb.append(", monthHigherOneRatio=").append(monthHigherOneRatio);
        sb.append(", monthHigherTwo=").append(monthHigherTwo);
        sb.append(", monthHigherTwoRatio=").append(monthHigherTwoRatio);
        sb.append(", monthHigherThree=").append(monthHigherThree);
        sb.append(", monthHigherThreeRatio=").append(monthHigherThreeRatio);
        sb.append(", monthHigherFour=").append(monthHigherFour);
        sb.append(", monthHigherFourRatio=").append(monthHigherFourRatio);
        sb.append(", monthLowerOne=").append(monthLowerOne);
        sb.append(", monthLowerOneRatio=").append(monthLowerOneRatio);
        sb.append(", monthLowerTwo=").append(monthLowerTwo);
        sb.append(", monthLowerTwoRatio=").append(monthLowerTwoRatio);
        sb.append(", monthLowerThree=").append(monthLowerThree);
        sb.append(", monthLowerThreeRatio=").append(monthLowerThreeRatio);
        sb.append(", monthLowerFour=").append(monthLowerFour);
        sb.append(", monthLowerFourRatio=").append(monthLowerFourRatio);
        sb.append(", rechargeAchi=").append(rechargeAchi);
        sb.append(", courseAchi=").append(courseAchi);
        sb.append(", cashAchi=").append(cashAchi);
        sb.append(", serialVersionUID=").append(serialVersionUID);
        sb.append(", source=").append(source);
        sb.append(", type=").append(type);
        sb.append(", deptName=").append(deptName);
        sb.append("]");
        return sb.toString();
    }
}