package com.yifu.cloud.plus.v1.yifu.archives.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import com.yifu.cloud.plus.v1.yifu.common.core.vo.RowIndex;
import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Past;
import java.io.Serializable;
import java.util.Date;

/**
 * 员工伤残excel 对应的实体
 *
 * @author fxz
 * @date 2022/3/21
 */
@Data
@ColumnWidth(30)
public class EmpFamilyExcelVO extends RowIndex implements Serializable {

	/**
	 * 员工姓名
	 */
	@ExcelAttribute(name = "员工姓名",isNotEmpty = true,errorInfo = "员工姓名不可为空",maxLength = 20)
	@NotNull(message = "员工姓名不可为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="员工姓名")
	private String empName;

	/**
	 * 员工身份证
	 */
	@ExcelAttribute(name = "身份证号",isNotEmpty = true,errorInfo = "身份证号不可为空",maxLength = 20)
	@NotNull(message = "员工身份证不可为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="身份证号")
	private String empIdcard;

	/**
	 * 家庭成员姓名
	 */
	@ExcelAttribute(name = "成员姓名",isNotEmpty = true,errorInfo = "成员姓名不可为空",maxLength = 20)
	@NotNull(message = "家庭成员姓名不可为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="成员姓名")
	private String familyName;

	/**
	 * 与本人关系
	 */
	@ExcelAttribute(name = "与本人关系",isNotEmpty = true,isDataId = true,dataType = ExcelAttributeConstants.FAMILY_RELATION,errorInfo = "与本人关系不可为空")
	//@DictValidator(dictType = "family_relation",message = "与本人关系字典不匹配")
	@NotNull(message = "与本人关系不可为空")
	private String relationshipSelf;

	/**
	 * 出生日期
	 */
	@ExcelAttribute(name = "出生日期",isDate = true)
	@Past
	@DateTimeFormat("yyyy-MM-dd")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="出生日期")
	private Date birthday;

	/**
	 * 工作/学习单位
	 */
	@ExcelAttribute(name = "工作单位",maxLength = 100)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="工作单位")
	private String workUnit;

	/**
	 * 联系电话
	 */
	@ExcelAttribute(name = "手机号码",isNotEmpty = true,isPhone = true,errorInfo = "手机号码不可为空")
	@NotNull(message = "手机号码不可为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="手机号码")
	private String contractTel;

	/*JSR303 是一套JavaBean参数校验的标准，它定义了很多常用的校验注解，我们可以直接将这些注解加在我们JavaBean的属性上面，就可以在需要校验的时候进行校验了。注解如下：
	参考配置
	@Null 限制只能为null
	@NotNull 限制必须不为null
	@AssertFalse 限制必须为false
	@AssertTrue 限制必须为true
	@DecimalMax(value) 限制必须为一个不大于指定值的数字
	@DecimalMin(value) 限制必须为一个不小于指定值的数字
	@Digits(integer,fraction) 限制必须为一个小数，且整数部分的位数不能超过integer，小数部分的位数不能超过fraction
	@Future 限制必须是一个将来的日期
	@Max(value) 限制必须为一个不大于指定值的数字
	@Min(value) 限制必须为一个不小于指定值的数字
	@Past 限制必须是一个过去的日期
	@Pattern(value) 限制必须符合指定的正则表达式
	@Size(max,min) 限制字符长度必须在min到max之间
	@Past 验证注解的元素值（日期类型）比当前时间早
	@NotEmpty 验证注解的元素值不为null且不为空（字符串长度不为0、集合大小不为0）
	@NotBlank 验证注解的元素值不为空（不为null、去除首位空格后长度为0），不同于@NotEmpty，@NotBlank只应用于字符串且在比较时会去除字符串的空格
	@Email 验证注解的元素值是Email，也可以通过正则表达式和flag指定自定义的email格式*/

}
