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 io.swagger.v3.oas.annotations.media.Schema;
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 EmpDisabilityExcelVO extends RowIndex implements Serializable {

	private static final long serialVersionUID = 1L;

	/**
	 * 员工姓名
	 */
	@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 = 50)
	@NotNull(message = "伤残病名称不能为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="伤残病名称")
	private String disabilityName;

	/**
	 * 传染病名称
	 */
	@ExcelAttribute(name = "传染病名称",maxLength = 50)
	@HeadFontStyle(fontHeightInPoints = 11)
	@Schema(description ="传染病名称")
	private String infectiousName;

	/**
	 * 职业病名称
	 */
	@ExcelAttribute(name = "职业病名称",maxLength = 50)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="职业病名称")
	private String occupationalDisease;

	/**
	 * 伤残等级
	 */
	@ExcelAttribute(name = "伤残等级",isNotEmpty = true, errorInfo = "伤残等级不能为空",isDataId = true, dataType = ExcelAttributeConstants.DISABILITY_GRADE)
	@NotNull(message = "伤残等级不能为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="伤残等级")
	private String disabilityLevel;


	/**
	 * 伤残开始日期
	 */
	@ExcelAttribute(name = "伤残开始日期",isNotEmpty = false, errorInfo = "伤残开始日期不能为空",isDate = true)
	@NotNull(message = "伤残开始日期不能为空")
	@Past
	@DateTimeFormat("yyyy-MM-dd")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="伤残开始日期")
	private Date startTime;

	/**
	 * 伤残结束日期
	 */
	@ExcelAttribute(name = "伤残结束日期",isNotEmpty = false, errorInfo = "伤残结束日期不能为空",isDate = true)
	@NotNull(message = "伤残结束日期不能为空")
	@Past
	@DateTimeFormat("yyyy-MM-dd")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="伤残结束日期")
	private Date endTime;

	/**
	 * 是否工伤标识0是/1否
	 */
	@ExcelAttribute(name = "是否工伤",isNotEmpty = true, errorInfo = "是否工伤不可为空",readConverterExp = "0=是,1=否")
	@NotNull(message = "是否工伤标识(0是/1否)不能为空")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="是否工伤")
	private String injuryIdentification;

	/**
	 * 是否职业病0是/1否
	 */
	@ExcelAttribute(name = "是否职业病",isNotEmpty = false, errorInfo = "是否职业病不可为空",readConverterExp = "0=是,1=否")
	@HeadFontStyle(fontHeightInPoints = 11)
	@Schema(description ="是否职业病 0是/1否")
	private String occupationalDiseaseFlag;

	/**
	 * 是否传染病病 0是/1否
	 */
	@ExcelAttribute(name = "是否传染病病",isNotEmpty = false, errorInfo = "是否传染病病不可为空",readConverterExp = "0=是,1=否")
	@HeadFontStyle(fontHeightInPoints = 11)
	@Schema(description ="是否传染病病 0是/1否")
	private String infectiousDiseaseFlag;

	/**
	 * 是否持有残疾人证明 0是/1否
	 */
	@ExcelAttribute(name = "是否持有残疾人证明",isNotEmpty = false, errorInfo = "是否持有残疾人证明不可为空",readConverterExp = "0=是,1=否")
	@HeadFontStyle(fontHeightInPoints = 11)
	@Schema(description ="是否持有残疾人证明 0是/1否")
	private String disabilityFlag;
	/**
	 * 是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种 0是/1否
	 */
	@ExcelAttribute(name = "是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种",readConverterExp = "0=是,1=否")
	@HeadFontStyle(fontHeightInPoints = 11)
	@Schema(description ="是否从事过井下、高空、高温、特别繁重体力劳动以及有毒有害工种 0是/1否")
	private String otherFlag;
	/**
	 * 备注
	 */
	@ExcelAttribute(name = "备注",maxLength = 200)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value ="备注")
	private String remark;

	/*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格式*/

}
