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

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.alibaba.excel.annotation.write.style.ContentStyle;
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 io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @Author hgw
 * @Description 社保士兵自动办理导出
 * @Date 2024-5-13 10:56:51
 * @Param
 * @return
 **/
@Data
public class SocialSoldierExportVo implements Serializable {

	/**
	 * 派单类型：0派增1派减
	 */
	@ExcelAttribute(name = "派单类型", errorInfo = "派单类型不能为空", maxLength = 1, isDataId = true, readConverterExp = "0=派增,1=派减", needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("派单类型")
	private String type;

	/**
	 * 社保办理状态 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败（原-办理失败） 3已派减 4办理中 （20210609派单拆分新增fxj） 5部分办理失败 6 派减办理中 7 派减部分办理失败
	 * 0 未办理 1 全部办理成功(原-已办理) 2 全部办理失败（原-办理失败） 3 部分办理成功 4 办理中
	 *
	 * 2024-8-15 15:30:10 参考派单导出：（本期未修改，保持与社保导出一致 ）
	 * @Schema(description = "社保办理状态 0 待办理 1 办理成功 2 办理失败 3 部分办理失败 4 办理中")
	 */
	@Schema(description = "社保办理状态")
	@ExcelAttribute(name = "社保办理状态", readConverterExp = "0=未办理,1=全部办理成功,2=全部办理失败,3=部分办理成功,4=办理中", needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保办理状态")
	private String socialHandleStatus;

	/**
	 * 养老办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "养老状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "养老办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("养老状态")
	private String pensionHandle;
	/**
	 * 医疗办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "医疗状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "医疗办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医疗状态")
	private String medicalHandle;
	/**
	 * 失业办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "失业状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "失业办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("失业状态")
	private String unemployHandle;
	/**
	 * 工伤办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "工伤状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "工伤办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("工伤状态")
	private String workInjuryHandle;
	/**
	 * 生育办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "生育状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "生育办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("生育状态")
	private String birthHandle;
	/**
	 * 大病办理状态：0待办理1办理成功2办理失败3已派减4派减失败
	 */
	@ExcelAttribute(name = "大病状态", maxLength = 1, readConverterExp = "0=派增待办理,1=派增办理成功,2=派增办理失败,3=派减-已派减,4=派减失败,5=派减待办理,null=——", needExport = true)
	@Schema(description = "大病办理状态：0待办理1办理成功2办理失败3已派减")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("大病状态")
	private String bigailmentHandle;
	/**
	 * 员工姓名
	 */
	@ExcelAttribute(name = "员工姓名", errorInfo = "员工姓名不能为空", maxLength = 50, needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工姓名")
	private String empName;

	/**
	 * 员工身份证
	 */
	@ExcelAttribute(name = "员工身份证", errorInfo = "员工身份证不能为空", maxLength = 20, needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工身份证")
	private String empIdcard;

	/**
	 * 学历
	 */
	@ExcelAttribute(name = "学历", maxLength = 32, needExport = true)
	@Schema(description = "学历")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("学历")
	private String educationName;

	/**
	 * 所属单位
	 */
	@ExcelAttribute(name = "客户名称", isNotEmpty = true, needExport = true)
	@Schema(description = "客户名称（所属单位）")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("客户名称")
	private String belongUnit;

	/**
	 * 项目名称
	 */
	@ExcelAttribute(name = "项目名称", isNotEmpty = true, needExport = true)
	@Schema(description = "项目名称（项目）")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("项目名称")
	private String settleDomain;
	/**
	 * 员工类型
	 */
	@ExcelAttribute(name = "员工类型", errorInfo = "员工类型不能为空", isDataId = true, dataType = ExcelAttributeConstants.EMP_NATRUE, needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("员工类型")
	private String empType;
	/**
	 * 就职岗位
	 */
	@ExcelAttribute(name = "岗位", maxLength = 50, needExport = true)
	@Schema(description = "岗位")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("岗位")
	private String post;

	/**
	 * 员工电话
	 */
	@ExcelAttribute(name = "手机号码", maxLength = 20, needExport = true)
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("手机号码")
	private String empMobile;

	@ExcelAttribute(name = "身份证所在地")
	@Schema(description = "身份证所在地")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("身份证所在地")
	private String idCardAddress;

	/**
	 * 通信地址
	 */
	@ExcelAttribute(name = "通信地址")
	@Schema(description = "通信地址")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("通信地址")
	private String contactAddress;

	/**
	 * 户口性质
	 */
	@ExcelAttribute(name = "户口性质", maxLength = 32, isDataId = true, dataType = ExcelAttributeConstants.EMP_REGISTYPE, needExport = true)
	@Schema(description = "户口性质")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("户口性质")
	private String empRegisType;

	/**
	 * 民族
	 */
	@ExcelAttribute(name = "民族", maxLength = 32, isDataId = true, dataType = ExcelAttributeConstants.EMP_NATIONAL, needExport = true)
	@Schema(description = "民族")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("民族")
	private String empNational;

	/**
	 * 工时制（数据字典） 1标准工时 2 综合工时 3不定时工时制
	 */
	@ExcelAttribute(name = "工时制", maxLength = 32, isDataId = true, dataType = ExcelAttributeConstants.WORKING_HOURS, needExport = true)
	@Schema(description = "工时制")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("工时制")
	private String workingHours;

	/**
	 * 合同年限
	 */
	@ExcelAttribute(name = "合同年限", errorInfo = "合同年限不能为空", needExport = true)
	@Schema(description = "合同年限")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同年限")
	private String contractTerm;
	/**
	 * 合同起始时间
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@Schema(description = "合同起始时间")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同起始时间")
	private String contractStart;
	/**
	 * 合同到期时间
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@Schema(description = "合同到期时间")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("合同到期时间")
	private String contractEnd;
	/**
	 * 创建人姓名
	 */
	@ExcelAttribute(name = "申请人", needExport = true)
	@Schema(description = "申请人")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("申请人")
	private String createUserName;

	/**
	 * 备案基数
	 */
	@ExcelAttribute(name = "备案基数", needExport = true)
	@Schema(description = "备案基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("备案基数")
	private String recordBase;

	/**
	 * 缴纳类型（0最低、1自定义、2最高）
	 */
	@ExcelAttribute(name = "缴纳类型", isDataId = true, readConverterExp = "0=最低,1=自定义,2=最高", needExport = true)
	@Schema(description = "缴纳类型（0最低、1自定义、2最高）")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("缴纳类型")
	private String paymentType;
	/**
	 * 社保户
	 */
	@ExcelAttribute(name = "社保户", needExport = true)
	@Schema(description = "社保户")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保户")
	private String socialHouseholdName;
	/**
	 * 缴纳地-省
	 */
	@ExcelAttribute(name = "社保缴纳地-省", maxLength = 32, isArea = true, needExport = true)
	@Schema(description = "社保缴纳地-省")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保缴纳地-省")
	private String socialProvince;
	/**
	 * 缴纳地-市
	 */
	@ExcelAttribute(name = "社保缴纳地-市", maxLength = 32, isArea = true, parentField = "socialProvince", needExport = true)
	@Schema(description = "社保缴纳地-市")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保缴纳地-市")
	private String socialCity;
	/**
	 * 缴纳地-县
	 */
	@ExcelAttribute(name = "社保缴纳地-县", maxLength = 32, isArea = true, parentField = "socialCity", needExport = true)
	@Schema(description = "社保缴纳地-县")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保缴纳地-县")
	private String socialTown;
	/**
	 * 养老起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "养老起缴日期", needExport = true)
	@Schema(description = "养老起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("养老起缴日期")
	private String pensionStart;
	;

	/**
	 * 养老基数
	 */
	@ExcelAttribute(name = "养老基数", isFloat = true, needExport = true)
	@Schema(description = "养老基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("养老基数")
	private BigDecimal unitPensionCardinal;

	/**
	 * 医疗起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "医疗起缴日期", needExport = true)
	@Schema(description = "医疗起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医疗起缴日期")
	private String medicalStart;
	/**
	 * 医疗基数
	 */
	@ExcelAttribute(name = "医疗基数", isFloat = true, needExport = true)
	@Schema(description = "医疗基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医疗基数")
	private BigDecimal unitMedicalCardinal;
	/**
	 * 失业起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "失业起缴日期", needExport = true)
	@Schema(description = "失业起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("失业起缴日期")
	private String unemployStart;
	/**
	 * 失业基数
	 */
	@ExcelAttribute(name = "失业基数", isFloat = true, needExport = true)
	@Schema(description = "失业基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("失业基数")
	private BigDecimal unitUnemploymentCardinal;
	/**
	 * 工伤起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "工伤起缴日期", needExport = true)
	@Schema(description = "工伤起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("工伤起缴日期")
	private String workInjuryStart;
	/**
	 * 工伤基数
	 */
	@ExcelAttribute(name = "工伤基数", isFloat = true, needExport = true)
	@Schema(description = "工伤基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("工伤基数")
	private BigDecimal unitWorkInjuryCardinal;
	/**
	 * 生育起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "生育起缴日期", needExport = true)
	@Schema(description = "生育起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("生育起缴日期")
	private String birthStart;
	/**
	 * 生育基数
	 */
	@ExcelAttribute(name = "生育基数", isFloat = true, needExport = true)
	@Schema(description = "生育基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("生育基数")
	private BigDecimal unitBirthCardinal;
	/**
	 * 大病起缴日期
	 */
	@ContentStyle(dataFormat = 49)
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "大病起缴日期", needExport = true)
	@Schema(description = "大病起缴日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("大病起缴日期")
	private String bigailmentStart;
	/**
	 * 大病缴纳基数
	 */
	@ExcelAttribute(name = "大病缴纳基数")
	@Schema(description = "大病缴纳基数")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("大病缴纳基数")
	private BigDecimal unitBigailmentCardinal;
	/**
	 * 单位大病缴纳金额
	 */
	@ExcelAttribute(name = "单位大病金额", needExport = true)
	@Schema(description = "单位大病金额")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("单位大病金额")
	private BigDecimal unitBigailmentMoney;
	/**
	 * 个人大病金额
	 */
	@ExcelAttribute(name = "个人大病金额", needExport = true)
	@Schema(description = "个人大病金额")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("个人大病金额")
	private BigDecimal personalBigailmentMoney;
	/**
	 * 委托备注——2022-11-10 16:54:32与房工讨论，由于派增派减两个委托备注，只能取派单表里的委托备注，社保公积金的委托备注字段废弃
	 **/
	@ExcelAttribute(name = "委托备注", needExport = true)
	@Schema(description = "委托备注")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("委托备注")
	private String socailTrustRemark;
	/**
	 * 减少原因
	 */
	@ExcelAttribute(name = "减少原因", needExport = true, isDataId = true, dataType = ExcelAttributeConstants.REDUCE_SOCIAL_REASON)
	@Schema(description = "减少原因")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("减少原因")
	private String reduceReason;
	/**
	 * @Author fxj
	 * @Description 社保是否已导出
	 * @Date 15:32 2023/5/9
	 * @Param
	 * @return
	 **/
	@ExcelAttribute(name = "是否已导出", maxLength = 1, isDataId = true, readConverterExp = "0=否,1=是")
	@Schema(description = "是否已导出：0否、1是")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("是否已导出")
	private String exportSocialFlag;

	/**
	 * 学校
	 */
	@ExcelAttribute(name = "学校", isNotEmpty = false)
	@Schema(description = "学校：派增只做记录")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value = "学校")
	private String schoolName;

	/**
	 * 专业
	 */
	@ExcelAttribute(name = "专业", isNotEmpty = false)
	@Length(max = 50, message = "学校不能超过50个字符")
	@Schema(description = "专业：派增只做记录")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value = "专业")
	private String major;

	/**
	 * 毕业时间
	 */
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "毕业时间", isDate = true)
	@Schema(description = "毕业时间")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("毕业时间")
	private Date graduationTime;

	/**
	 * 首次至缴纳地时间
	 */
	@DateTimeFormat("yyyy-MM-dd")
	@ExcelAttribute(name = "首次至缴纳地时间", isNotEmpty = false, isDate = true)
	@Schema(description = "首次至缴纳地时间")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty(value = "首次至缴纳地时间")
	private Date firstPayTime;

	/**
	 * 离职日期
	 */
	@ExcelAttribute(name = "离职日期")
	@ContentStyle(dataFormat = 49)
	@Schema(description = "离职日期")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("离职日期" )
	private String leaveDate;

	@ExcelAttribute(name = "养老工伤失业-办理状态", readConverterExp = "0=无,1=待办理,2=自动办理中,3=继续办理,4=中止办理,5=人工处理,6=成功,7=提交成功", needExport = true)
	@Schema(description = "养老工伤失业-办理状态")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("养老工伤失业-办理状态")
	private String ygsHandleStatus;

	@ExcelAttribute(name = "医保生育大病-办理状态", readConverterExp = "0=无,1=待办理,2=自动办理中,3=继续办理,4=中止办理,5=人工处理,6=成功,7=提交成功", needExport = true)
	@Schema(description = "医保生育大病-办理状态")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医保生育大病-办理状态")
	private String ysdHandleStatus;

	@ExcelAttribute(name = "养老工伤失业-失败原因", maxLength = 500, needExport = true)
	@Schema(description = "养老工伤失业-失败原因")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("养老工伤失业-失败原因")
	private String ygsRemark;

	@ExcelAttribute(name = "医保生育大病-失败原因", maxLength = 500, needExport = true)
	@Schema(description = "医保生育大病-失败原因")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医保生育大病-失败原因")
	private String ysdRemark;

	@ExcelAttribute(name = "社保请求ID", maxLength = 50, needExport = true)
	@Schema(description = "社保请求ID")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("社保请求ID")
	private String ygsRequestId;

	@ExcelAttribute(name = "医保请求ID", maxLength = 50, needExport = true)
	@Schema(description = "医保请求ID")
	@HeadFontStyle(fontHeightInPoints = 11)
	@ExcelProperty("医保请求ID")
	private String ysdRequestId;

}
