package com.qmth.sop.business.bean.dto;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.qmth.sop.business.util.excel.BasicExcelRow;
import com.qmth.sop.common.enums.EducationEnum;
import com.qmth.sop.common.enums.GenderEnum;
import io.swagger.annotations.ApiModelProperty;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.io.Serializable;

/**
 * @Description: 人员档案导入Dto
 * @Param:
 * @return:
 * @Author: wangliang
 * @Date: 2023/7/31
 */
@ColumnWidth(value = 30)
@HeadStyle(fillForegroundColor = 11)
@HeadFontStyle(color = 1)
public class UserArchivesImportDto extends BasicExcelRow implements Serializable {

    //    @ExcelColumn(name = "姓名", index = 0, nullable = true)
    @ExcelProperty(value = "姓名")
    @NotBlank(message = "姓名不能为空")
    private String name;

    @ExcelProperty(value = "省份")
    @NotNull(message = "请输入常驻地区")
    @NotBlank(message = "请输入常驻地区")
    private String province;

    @ExcelProperty(value = "城市")
    @NotNull(message = "请输入常驻地区")
    @NotBlank(message = "请输入常驻地区")
    private String city;

    @ExcelProperty(value = "县区")
    private String area;

    @ExcelProperty(value = "性别")
    @NotNull(message = "请输入性别")
    private String gender;

    @ExcelProperty(value = "身份证号")
    @NotNull(message = "请输入身份证号")
    @NotBlank(message = "请输入身份证号")
    private String identity;

    @ExcelProperty(value = "学历")
    private String education;

    @ExcelProperty(value = "手机号")
    @NotNull(message = "请输入手机号")
    @NotBlank(message = "请输入手机号")
    private String mobileNumber;

    @ExcelProperty(value = "电子邮箱")
    private String email;

    @ExcelProperty(value = "供应商")
    @NotNull(message = "请选择供应商")
    @NotBlank(message = "请选择供应商")
    private String supplierName;

    @ExcelProperty(value = "入档时间")
    @ApiModelProperty(value = "入档时间")
    @NotNull(message = "请选择入档时间")
    @NotBlank(message = "请选择入档时间")
    private String archivesTimeStr;

    @ExcelProperty(value = "认证项目角色")
    @NotEmpty(message = "请选择认证角色")
    private String roleNames;

    @ExcelProperty(value = "认证分数")
    private Double authenticationScore;

    @ExcelProperty(value = "认证有效期")
    private String authenticationValidTimeStr;

    @ExcelProperty(value = "备注")
    private String remark;

    // -- 辅助查询用字段
    @ApiModelProperty("用户id（查询用）")
    @ExcelIgnore
    private Long userId;

    @ApiModelProperty("性别（查询用）")
    @ExcelIgnore
    private GenderEnum genderEnum;

    @ApiModelProperty("学历（查询用）")
    @ExcelIgnore
    private EducationEnum educationEnum;

    @ApiModelProperty("入档时间（查询用）")
    @ExcelIgnore
    private Long archivesTime;

    @ApiModelProperty("档案有效期（查询用）")
    @ExcelIgnore
    private Long authenticationValidTime;

    public UserArchivesImportDto() {

    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getArea() {
        return area;
    }

    public void setArea(String area) {
        this.area = area;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getIdentity() {
        return identity;
    }

    public void setIdentity(String identity) {
        this.identity = identity;
    }

    public String getEducation() {
        return education;
    }

    public void setEducation(String education) {
        this.education = education;
    }

    public String getMobileNumber() {
        return mobileNumber;
    }

    public void setMobileNumber(String mobileNumber) {
        this.mobileNumber = mobileNumber;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getSupplierName() {
        return supplierName;
    }

    public void setSupplierName(String supplierName) {
        this.supplierName = supplierName;
    }

    public String getArchivesTimeStr() {
        return archivesTimeStr;
    }

    public void setArchivesTimeStr(String archivesTimeStr) {
        this.archivesTimeStr = archivesTimeStr;
    }

    public String getRoleNames() {
        return roleNames;
    }

    public void setRoleNames(String roleNames) {
        this.roleNames = roleNames;
    }

    public Double getAuthenticationScore() {
        return authenticationScore;
    }

    public void setAuthenticationScore(Double authenticationScore) {
        this.authenticationScore = authenticationScore;
    }

    public String getAuthenticationValidTimeStr() {
        return authenticationValidTimeStr;
    }

    public void setAuthenticationValidTimeStr(String authenticationValidTimeStr) {
        this.authenticationValidTimeStr = authenticationValidTimeStr;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public GenderEnum getGenderEnum() {
        return genderEnum;
    }

    public void setGenderEnum(GenderEnum genderEnum) {
        this.genderEnum = genderEnum;
    }

    public EducationEnum getEducationEnum() {
        return educationEnum;
    }

    public void setEducationEnum(EducationEnum educationEnum) {
        this.educationEnum = educationEnum;
    }

    public Long getArchivesTime() {
        return archivesTime;
    }

    public void setArchivesTime(Long archivesTime) {
        this.archivesTime = archivesTime;
    }

    public Long getAuthenticationValidTime() {
        return authenticationValidTime;
    }

    public void setAuthenticationValidTime(Long authenticationValidTime) {
        this.authenticationValidTime = authenticationValidTime;
    }
}
