/*
 *    Copyright (c) 2018-2025, lengleng All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the following disclaimer.
 * Redistributions in binary form must reproduce the above copyright
 * notice, this list of conditions and the following disclaimer in the
 * documentation and/or other materials provided with the distribution.
 * Neither the name of the yifu4cloud.com developer nor the names of its
 * contributors may be used to endorse or promote products derived from
 * this software without specific prior written permission.
 * Author: lengleng (wangiegie@gmail.com)
 */
package com.yifu.cloud.plus.v1.csp.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.baomidou.mybatisplus.annotation.TableField;
import com.yifu.cloud.plus.v1.yifu.common.core.constant.ExcelAttribute;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;

import java.time.LocalDateTime;

/**
 * 自动化离职待办-列表
 *
 * @author hgw
 * @date 2025-11-19 19:23:15
 */
@Data
public class EmployeeRegistrationLeaveTableVo extends EmployeeRegistrationLeaveExportVo {

	@Schema(description = "主键ID")
	private String id;

	@Schema(description = "确认人")
	private String confirmUser;

	@Schema(description = "确认时间")
	private String confirmTime;

	// 联动端口：固定值：人员离职
	@Schema(description = "联动端口")
	private String linkPort;

	@Schema(description = "需处理项：1社保2公积金3商险4合同5项目档案6人员档案")
	private String doType;

	@Schema(description = "项目档案ID")
	private String empProjectId;
	@ExcelProperty("档案ID")
	@Schema(description = "档案ID")
	private String empId;
	@ExcelProperty("合同ID")
	@Schema(description = "合同ID")
	private String contractId;
	@ExcelProperty("商险ID")
	@Schema(description = "商险ID")
	private String insuranceId;
	@Schema(description = "公积金Id")
	private String fundId;
	@Schema(description = "社保Id")
	private String socialId;

	/**
	 * 社保失败人
	 */
	@ExcelAttribute(name = "社保失败人", maxLength = 50)
	@Length(max = 50, message = "社保失败人不能超过50个字符")
	@ExcelProperty("社保失败人")
	@Schema(description = "社保失败人")
	private String failSocialUser;
	/**
	 * 公积金失败人
	 */
	@ExcelAttribute(name = "公积金失败人", maxLength = 50)
	@Length(max = 50, message = "公积金失败人不能超过50个字符")
	@ExcelProperty("公积金失败人")
	@Schema(description = "公积金失败人")
	private String failFundUser;
	/**
	 * 商险失败人
	 */
	@ExcelAttribute(name = "商险失败人", maxLength = 50)
	@Length(max = 50, message = "商险失败人不能超过50个字符")
	@ExcelProperty("商险失败人")
	@Schema(description = "商险失败人")
	private String failInsuranceUser;
	/**
	 * 合同失败人
	 */
	@ExcelAttribute(name = "合同失败人", maxLength = 50)
	@Length(max = 50, message = "合同失败人不能超过50个字符")
	@ExcelProperty("合同失败人")
	@Schema(description = "合同失败人")
	private String failContractUser;
	/**
	 * 档案失败人
	 */
	@ExcelAttribute(name = "档案失败人", maxLength = 50)
	@Length(max = 50, message = "档案失败人不能超过50个字符")
	@ExcelProperty("档案失败人")
	@Schema(description = "档案失败人")
	private String failEmpUser;
	/**
	 * 项目档案失败人
	 */
	@ExcelAttribute(name = "项目档案失败人", maxLength = 50)
	@Length(max = 50, message = "项目档案失败人不能超过50个字符")
	@ExcelProperty("项目档案失败人")
	@Schema(description = "项目档案失败人")
	private String failEmpProjectUser;
	/**
	 * 社保失败原因
	 */
	@ExcelAttribute(name = "社保失败原因", maxLength = 50)
	@Length(max = 50, message = "社保失败原因不能超过50个字符")
	@ExcelProperty("社保失败原因")
	@Schema(description = "社保失败原因")
	private String failSocialRemark;
	/**
	 * 公积金失败原因
	 */
	@ExcelAttribute(name = "公积金失败原因", maxLength = 50)
	@Length(max = 50, message = "公积金失败原因不能超过50个字符")
	@ExcelProperty("公积金失败原因")
	@Schema(description = "公积金失败原因")
	private String failFundRemark;
	/**
	 * 商险失败原因
	 */
	@ExcelAttribute(name = "商险失败原因", maxLength = 50)
	@Length(max = 50, message = "商险失败原因不能超过50个字符")
	@ExcelProperty("商险失败原因")
	@Schema(description = "商险失败原因")
	private String failInsuranceRemark;
	/**
	 * 合同失败原因
	 */
	@ExcelAttribute(name = "合同失败原因", maxLength = 50)
	@Length(max = 50, message = "合同失败原因不能超过50个字符")
	@ExcelProperty("合同失败原因")
	@Schema(description = "合同失败原因")
	private String failContractRemark;
	/**
	 * 档案失败原因
	 */
	@ExcelAttribute(name = "档案失败原因", maxLength = 50)
	@Length(max = 50, message = "档案失败原因不能超过50个字符")
	@ExcelProperty("档案失败原因")
	@Schema(description = "档案失败原因")
	private String failEmpRemark;
	/**
	 * 项目档案失败原因
	 */
	@ExcelAttribute(name = "项目档案失败原因", maxLength = 50)
	@Length(max = 50, message = "项目档案失败原因不能超过50个字符")
	@ExcelProperty("项目档案失败原因")
	@Schema(description = "项目档案失败原因")
	private String failEmpProjectRemark;
	/**
	 * 社保失败时间
	 */
	@ExcelAttribute(name = "社保失败时间", isDate = true)
	@ExcelProperty("社保失败时间")
	@Schema(description = "社保失败时间")
	private LocalDateTime failSocialTime;
	/**
	 * 公积金失败时间
	 */
	@ExcelAttribute(name = "公积金失败时间", isDate = true)
	@ExcelProperty("公积金失败时间")
	@Schema(description = "公积金失败时间")
	private LocalDateTime failFundTime;
	/**
	 * 商险失败时间
	 */
	@ExcelAttribute(name = "商险失败时间", isDate = true)
	@ExcelProperty("商险失败时间")
	@Schema(description = "商险失败时间")
	private LocalDateTime failInsuranceTime;
	/**
	 * 合同失败时间
	 */
	@ExcelAttribute(name = "合同失败时间", isDate = true)
	@ExcelProperty("合同失败时间")
	@Schema(description = "合同失败时间")
	private LocalDateTime failContractTime;
	/**
	 * 档案失败时间
	 */
	@ExcelAttribute(name = "档案失败时间", isDate = true)
	@ExcelProperty("档案失败时间")
	@Schema(description = "档案失败时间")
	private LocalDateTime failEmpTime;
	/**
	 * 项目档案失败时间
	 */
	@ExcelAttribute(name = "项目档案失败时间", isDate = true)
	@ExcelProperty("项目档案失败时间")
	@Schema(description = "项目档案失败时间")
	private LocalDateTime failEmpProjectTime;

	@TableField(exist = false)
	@Schema(description = "前端客服")
	private String customerUsernameNew;

}
