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

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttributeConstants;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.util.Date;

/**
 * @Author fxj
 * @Date 2026/2/5
 * @Description
 * @Version 1.0
 */
@Data
public class TEmpContractAlertExportVo {

	/**
	 * 员工编码
	 */
	@ExcelAttribute(name = "员工编码" )
	@Schema(description ="员工编码")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工编码")
	private String empCode;
	/**
	 * 员工名称
	 */
	@ExcelAttribute(name = "员工名称" )
	@Schema(description ="员工名称")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工名称")
	private String empName;
	/**
	 * 手机号码
	 */
	@ExcelAttribute(name = "手机号码" )
	@Schema(description = "手机号码")
	@ExcelProperty("手机号码")
	private String empPhone;

	/**
	 * 身份证号
	 */
	@ExcelAttribute(name = "身份证号" )
	@Schema(description ="身份证号")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("身份证号")
	private String empIdcard;

	/**
	 * 合同开始日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelAttribute(name = "合同开始日期" )
	@Schema(description ="合同开始日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同开始日期")
	private String contractStart;

	/**
	 * 合同截止日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelAttribute(name = "合同截止日期" )
	@Schema(description ="合同截止日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同截止日期")
	private String contractEnd;
	/**
	 * 合同岗位
	 */
	@Length(max = 32, message = "合同岗位不能超过32个字符")
	@ExcelAttribute(name = "合同岗位", maxLength = 32, needExport = true)
	@Schema(description = "合同岗位", name = "post")
	@ExcelProperty("合同岗位")
	private String post;

	/**
	 * 工时制（数据字典） 1标准工时 2 综合工时 3不定时工时制
	 */
	@Length(max = 32, message = "工时制不能超过32个字符")
	@ExcelAttribute(name = "工时制", maxLength = 32, isDataId = true, dataType = ExcelAttributeConstants.WORKING_HOURS)
	@Schema(description = "工时制（数据字典） 1标准工时 2 综合工时 3不定时工时制", name = "workingHours")
	@ExcelProperty("工时制")
	private String workingHours;

	/**
	 * 档案地-省
	 */
	@ExcelAttribute(name = "档案地-省",isArea = true )
	@Schema(description ="档案地-省")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("档案所在省")
	private String fileProvince;

	/**
	 * 档案地-市
	 */
	@ExcelAttribute(name = "档案地-市",isArea = true,parentField = "fileProvince" )
	@Schema(description ="档案地-市")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("档案所在市")
	private String fileCity;

	/**
	 * 档案地-县
	 */
	@ExcelAttribute(name = "档案地-县" ,isArea = true,parentField = "fileCity")
	@Schema(description ="档案地-县")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("档案所在县")
	private String fileTown;

	/**
	 * 客户名称
	 */
	@ExcelAttribute(name = "客户名称" )
	@Schema(description = "客户名称")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("客户名称")
	private String unitName;
	/**
	 * 客户编码
	 */
	@ExcelAttribute(name = "客户编码" )
	@Schema(description = "客户编码")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("客户编码")
	private String unitNo;

	/**
	 * 项目名称
	 */
	@ExcelAttribute(name = "项目名称" )
	@Schema(description ="项目名称")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("项目名称")
	private String project;

	/**
	 * 项目编码
	 */
	@ExcelAttribute(name = "项目编码" )
	@Schema(description ="项目编码")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("项目编码")
	private String projectNo;

	/**
	 * 员工类型
	 */
	@ExcelAttribute(name = "员工类型" ,isDataId = true,dataType =  ExcelAttributeConstants.EMP_NATRUE )
	@Schema(description ="员工类型")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工类型")
	private String empType;

	/**
	 * 合同类型
	 */
	@ExcelAttribute(name = "合同类型" , isDataId = true,dataType = ExcelAttributeConstants.EMPLOYEE_CONTRACT_TYPE)
	@Schema(description ="合同类型")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同类型")
	private String contractType;

	/**
	 * 签订期限
	 */
	@ExcelAttribute(name = "签订期限" ,isDataId = true,readConverterExp = "0=已完成一定工作任务为期限,1=固定期限,2=无固定期限")
	@Schema(description ="签订期限")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("签订期限")
	private String contractTerm;

	/**
	 * 到期天数
	 */
	@ExcelAttribute(name = "到期天数" )
	@Schema(description ="到期天数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("距离到期天数")
	private Integer daysDue;

	/**
	 * 是否过期：0 未过期 1 过期
	 */
	@ExcelAttribute(name = "是否过期", isDataId = true,readConverterExp = "0=未过期,1=过期" )
	@Schema(description ="是否过期：0 未过期 1 过期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("是否过期")
	private String dueFlag;

	/**
	 * 过期天数
	 */
	@ExcelAttribute(name = "过期天数" )
	@Schema(description ="过期天数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("过期天数")
	private Integer daysOver;

	/**
	 * 首次提醒时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelAttribute(name = "首次提醒时间" )
	@Schema(description ="首次提醒时间")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("首次提醒时间")
	private String firstAlertTime;

	/**
	 * 提醒人
	 */
	@ExcelAttribute(name = "提醒人" )
	@Schema(description ="提醒人")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("提醒人")
	private String alertPerson;

	/**
	 * 是否反馈: 0 否 1 是
	 */
	@ExcelAttribute(name = "是否反馈", isDataId = true,readConverterExp = "0=否,1=是" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("是否反馈")
	@Schema(description = "是否反馈")
	private String isFeedback;

	/**
	 * 反馈原因
	 */
	@ExcelAttribute(name = "未续签原因" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("未续签原因")
	@Schema(description = "未续签原因")
	private String feedbackReason;

	/**
	 * 详情
	 */
	@ExcelAttribute(name = "具体描述信息" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("具体描述信息")
	@Schema(description = "具体描述信息")
	private String feedbackDetail;

	/**
	 * 反馈人
	 */
	@ExcelAttribute(name = "反馈人" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("反馈人")
	@Schema(description = "反馈人")
	private String feedbackPerson;

	/**
	 * 反馈时间
	 */
	@JsonFormat(pattern = "yyyy-MM-dd")
	@ExcelAttribute(name = "反馈时间" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("反馈时间")
	@Schema(description = "反馈时间")
	private String feedbackTime;

	/**
	 * 处理状态 0 待处理  1  处理中 2  已处理
	 */
	@ExcelAttribute(name = "处理状态", isDataId = true, readConverterExp = "0=待处理,1=处理中,2=已处理" )
	@Schema(description ="处理状态")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("处理状态")
	private String handleStatus;

	/**
	 * 签署方式:1线下签0电子签
	 */
	@ExcelAttribute(name = "签署方式" , isDataId = true,readConverterExp = "1=线下签,0=电子签")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("签署方式")
	@Schema(description = "签署方式:1线下签0电子签")
	private String signType;
	/**
	 * 续签状态：0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9（已归档-电子签+线下签）已完结10撤销签署
	 */
	@ExcelAttribute(name = "续签状态",  readConverterExp = "0=待确认,1=待发起,2=线下签待审核,3=线下签审核不通过,4=线下签待归档,5=发起失败,6=签署中,7=签署失败,8=电子待归档,9=已完结,10=撤销签署-客服撤销,11=撤销签署-系统自动撤销")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("续签状态")
	@Schema(description = "签署方式:0待确认,1待发起,2线下签待审核,3线下签审核不通过4线下签待归档5发起失败6签署中7签署失败8电子待归档9（已归档-电子签+线下签）已完结10撤销签署-客服撤销 11撤销签署-系统自动撤销")
	private String processStatus;
	/**
	 * 预计合同发起时间
	 */
	@JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd")
	@ExcelAttribute(name = "预计合同发起时间" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("预计合同发起时间")
	@Schema(description = "预计合同发起时间")
	private Date expectedCollectionTime;


	/**
	 * 前端客服
	 */
	@ExcelAttribute(name = "前端客服" )
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("前端客服")
	@Schema(description = "前端客服")
	private String csName;

	/**
	 * 异常原因说明
	 */
	@ExcelAttribute(name = "发起失败原因", maxLength = 200)
	@Length(max = 200, message = "异常原因说明不能超过200个字符")
	@ExcelProperty("发起失败原因")
	@Schema(description = "发起失败原因")
	private String errorInfo;

}
