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

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

import javax.validation.constraints.NotBlank;
import java.io.Serializable;
import java.util.Date;

/**
 * 风险管控统计
 *
 * @author huych
 * @date 2024-09-25 10:01:06
 */
@Data
public class TRiskMonitorVo extends RowIndex implements Serializable {

	/**
	 * 主键
	 */
	@TableId(type = IdType.ASSIGN_ID)
	@NotBlank(message = "主键 不能为空")
	@Length(max = 32, message = "主键 不能超过32 个字符")
	@ExcelAttribute(name = "主键", isNotEmpty = true, errorInfo = "主键 不能为空", maxLength = 32)
	@Schema(description = "主键")
	@ExcelProperty("主键")
	private String id;
	/**
	 * 结算主体编码
	 */
	@NotBlank(message = "结算主体编码 不能为空")
	@Length(max = 32, message = "结算主体编码 不能超过32 个字符")
	@ExcelAttribute(name = "结算主体编码", isNotEmpty = true, errorInfo = "结算主体编码 不能为空", maxLength = 32)
	@Schema(description = "结算主体编码")
	@ExcelProperty("结算主体编码")
	private String departNo;
	/**
	 * 结算主体名称
	 */
	@NotBlank(message = "结算主体名称 不能为空")
	@Length(max = 50, message = "结算主体名称 不能超过50 个字符")
	@ExcelAttribute(name = "结算主体名称", isNotEmpty = true, errorInfo = "结算主体名称 不能为空", maxLength = 50)
	@Schema(description = "结算主体名称")
	@ExcelProperty("结算主体名称")
	private String departName;
	/**
	 * 项目状态：0正常 1停止服务 2 已冻结
	 */
	@NotBlank(message = "项目状态：0正常 1停止服务 2 已冻结 不能为空")
	@Length(max = 1, message = "项目状态：0正常 1停止服务 2 已冻结 不能超过1 个字符")
	@ExcelAttribute(name = "项目状态：0正常 1停止服务 2 已冻结", isNotEmpty = true, errorInfo = "项目状态：0正常 1停止服务 2 已冻结 不能为空", maxLength = 1)
	@Schema(description = "项目状态：0正常 1停止服务 2 已冻结")
	@ExcelProperty("项目状态：0正常 1停止服务 2 已冻结")
	private String stopFlag;
	/**
	 * 业务类型分类
	 */
	@Length(max = 32, message = "业务类型分类 不能超过32 个字符")
	@ExcelAttribute(name = "业务类型分类", maxLength = 32)
	@Schema(description = "业务类型分类")
	@ExcelProperty("业务类型分类")
	private String businessPrimaryType;
	/**
	 * 业务类型二级分类
	 */
	@Length(max = 32, message = "业务类型二级分类 不能超过32 个字符")
	@ExcelAttribute(name = "业务类型二级分类", maxLength = 32)
	@Schema(description = "业务类型二级分类")
	@ExcelProperty("业务类型二级分类")
	private String businessSecondType;
	/**
	 * 业务类型三级分类
	 */
	@Length(max = 32, message = "业务类型三级分类 不能超过32 个字符")
	@ExcelAttribute(name = "业务类型三级分类", maxLength = 32)
	@Schema(description = "业务类型三级分类")
	@ExcelProperty("业务类型三级分类")
	private String businessThirdType;
	/**
	 * 所属客户名称
	 */
	@Length(max = 50, message = "所属客户名称 不能超过50 个字符")
	@ExcelAttribute(name = "所属客户名称", maxLength = 50)
	@Schema(description = "所属客户名称")
	@ExcelProperty("所属客户名称")
	private String customerName;
	/**
	 * 所属客户编码
	 */
	@Length(max = 50, message = "所属客户编码 不能超过50 个字符")
	@ExcelAttribute(name = "所属客户编码", maxLength = 50)
	@Schema(description = "所属客户编码")
	@ExcelProperty("所属客户编码")
	private String customerNo;
	/**
	 * 二级指标归属
	 */
	@Length(max = 50, message = "二级指标归属 不能超过50 个字符")
	@ExcelAttribute(name = "二级指标归属", maxLength = 50)
	@Schema(description = "二级指标归属")
	@ExcelProperty("二级指标归属")
	private String secondIndicatorBelong;
	/**
	 * 条线类型
	 */
	@Length(max = 20, message = "条线类型 不能超过20 个字符")
	@ExcelAttribute(name = "条线类型", maxLength = 20)
	@Schema(description = "条线类型")
	@ExcelProperty("条线类型")
	private String lineType;
	/**
	 * BU归属（0：央企BU，1：区域政府BU，2：电信事业部，3：其他）
	 */
	@Length(max = 20, message = "BU归属（0：央企BU，1：区域政府BU，2：电信事业部，3：其他） 不能超过20 个字符")
	@ExcelAttribute(name = "BU归属（0：央企BU，1：区域政府BU，2：电信事业部，3：其他）", maxLength = 20)
	@Schema(description = "BU归属（0：央企BU，1：区域政府BU，2：电信事业部，3：其他）")
	@ExcelProperty("BU归属（0：央企BU，1：区域政府BU，2：电信事业部，3：其他）")
	private String buBelong;
	/**
	 * 是否存在风险 0 是 1否
	 */
	@Length(max = 1, message = "是否存在风险 0 是 1否 不能超过1 个字符")
	@ExcelAttribute(name = "是否存在风险 0 是 1否", maxLength = 1)
	@Schema(description = "是否存在风险 0 是 1否")
	@ExcelProperty("是否存在风险 0 是 1否")
	private String isRisk;
	/**
	 * 可能风险点
	 */
	@Length(max = 100, message = "可能风险点 不能超过100 个字符")
	@ExcelAttribute(name = "可能风险点", maxLength = 100)
	@Schema(description = "可能风险点")
	@ExcelProperty("可能风险点")
	private String riskType;
	/**
	 * 在项人数
	 */
	@ExcelAttribute(name = "在项人数")
	@Schema(description = "在项人数")
	@ExcelProperty("在项人数")
	private Integer projectNum;
	/**
	 * 不在项人员有效合同数
	 */
	@ExcelAttribute(name = "不在项人员有效合同数")
	@Schema(description = "不在项人员有效合同数")
	@ExcelProperty("不在项人员有效合同数")
	private Integer unproContractNum;
	/**
	 * 在项人员有效合同数
	 */
	@ExcelAttribute(name = "在项人员有效合同数")
	@Schema(description = "在项人员有效合同数")
	@ExcelProperty("在项人员有效合同数")
	private Integer proContractNum;
	/**
	 * 不在项人员有效商险数
	 */
	@ExcelAttribute(name = "不在项人员有效商险数")
	@Schema(description = "不在项人员有效商险数")
	@ExcelProperty("不在项人员有效商险数")
	private Integer unproInsuranceNum;
	/**
	 * 在项人员有效商险数
	 */
	@ExcelAttribute(name = "在项人员有效商险数")
	@Schema(description = "在项人员有效商险数")
	@ExcelProperty("在项人员有效商险数")
	private Integer proInsuranceNum;
	/**
	 * 不在项人员有效社保数
	 */
	@ExcelAttribute(name = "不在项人员有效社保数")
	@Schema(description = "不在项人员有效社保数")
	@ExcelProperty("不在项人员有效社保数")
	private Integer unproSocialNum;
	/**
	 * 在项人员有效社保数
	 */
	@ExcelAttribute(name = "在项人员有效社保数")
	@Schema(description = "在项人员有效社保数")
	@ExcelProperty("在项人员有效社保数")
	private Integer proSocialNum;
	/**
	 * 不在项人员有效公积金数
	 */
	@ExcelAttribute(name = "不在项人员有效公积金数")
	@Schema(description = "不在项人员有效公积金数")
	@ExcelProperty("不在项人员有效公积金数")
	private Integer unproFundNum;
	/**
	 * 在项人员有效公积金数
	 */
	@ExcelAttribute(name = "在项人员有效公积金数")
	@Schema(description = "在项人员有效公积金数")
	@ExcelProperty("在项人员有效公积金数")
	private Integer proFundNum;
	/**
	 * 不在项人员有效发薪数
	 */
	@ExcelAttribute(name = "不在项人员有效发薪数")
	@Schema(description = "不在项人员有效发薪数")
	@ExcelProperty("不在项人员有效发薪数")
	private Integer unproSalaryNum;
	/**
	 * 在项人员有效发薪数
	 */
	@ExcelAttribute(name = "在项人员有效发薪数")
	@Schema(description = "在项人员有效发薪数")
	@ExcelProperty("在项人员有效发薪数")
	private Integer proSalaryNum;
	/**
	 * 最后发薪日期
	 */
	@ExcelAttribute(name = "最后发薪日期", isDate = true)
	@Schema(description = "最后发薪日期")
	@ExcelProperty("最后发薪日期")
	private Date lastSalaryTime;
	/**
	 * 是否删除（0否/1是）
	 */
	@NotBlank(message = "是否删除（0否/1是） 不能为空")
	@Length(max = 1, message = "是否删除（0否/1是） 不能超过1 个字符")
	@ExcelAttribute(name = "是否删除（0否/1是）", isNotEmpty = true, errorInfo = "是否删除（0否/1是） 不能为空", maxLength = 1)
	@Schema(description = "是否删除（0否/1是）")
	@ExcelProperty("是否删除（0否/1是）")
	private String deleteFlag;
	/**
	 * 创建人id
	 */
	@NotBlank(message = "创建人id 不能为空")
	@Length(max = 32, message = "创建人id 不能超过32 个字符")
	@ExcelAttribute(name = "创建人id", isNotEmpty = true, errorInfo = "创建人id 不能为空", maxLength = 32)
	@Schema(description = "创建人id")
	@ExcelProperty("创建人id")
	private String createBy;
	/**
	 * 创建人姓名
	 */
	@Length(max = 32, message = "创建人姓名 不能超过32 个字符")
	@ExcelAttribute(name = "创建人姓名", maxLength = 32)
	@Schema(description = "创建人姓名")
	@ExcelProperty("创建人姓名")
	private String createName;
	/**
	 * 创建时间
	 */
	@NotBlank(message = "创建时间 不能为空")
	@ExcelAttribute(name = "创建时间", isNotEmpty = true, errorInfo = "创建时间 不能为空", isDate = true)
	@Schema(description = "创建时间")
	@ExcelProperty("创建时间")
	private Date createTime;
	/**
	 * 更新人id
	 */
	@Length(max = 32, message = "更新人id 不能超过32 个字符")
	@ExcelAttribute(name = "更新人id", maxLength = 32)
	@Schema(description = "更新人id")
	@ExcelProperty("更新人id")
	private String updateBy;
	/**
	 * 更新时间
	 */
	@ExcelAttribute(name = "更新时间", isDate = true)
	@Schema(description = "更新时间")
	@ExcelProperty("更新时间")
	private Date updateTime;

}
