package com.ruoyi.info.collection.domain.dto;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

import java.io.Serial;
import java.io.Serializable;

/**
 * 员工亲属实体关联新增DTO
 *
 * @author ruoyi
 * @date 2026-02-09
 */
@Data
@Schema(description = "员工亲属实体关联新增")
public class CcdiStaffEnterpriseRelationAddDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 亲属身份证号 */
    @NotBlank(message = "亲属身份证号不能为空")
    @Pattern(regexp = "^[1-9]\\d{5}(18|19|20)\\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\\d|3[01])\\d{3}[0-9Xx]$", message = "亲属身份证号格式不正确")
    @Schema(description = "亲属身份证号")
    private String personId;

    /** 关联人在企业的职务 */
    @Size(max = 100, message = "关联人在企业的职务长度不能超过100个字符")
    @Schema(description = "关联人在企业的职务")
    private String relationPersonPost;

    /** 统一社会信用代码 */
    @NotBlank(message = "统一社会信用代码不能为空")
    @Pattern(regexp = "^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$", message = "统一社会信用代码格式不正确")
    @Schema(description = "统一社会信用代码")
    private String socialCreditCode;

    /** 企业名称 */
    @NotBlank(message = "企业名称不能为空")
    @Size(max = 200, message = "企业名称长度不能超过200个字符")
    @Schema(description = "企业名称")
    private String enterpriseName;

    /** 状态（0-无效 1-有效） */
    @Schema(description = "状态（0-无效 1-有效）")
    private Integer status;

    /** 补充说明 */
    @Schema(description = "补充说明")
    private String remark;

    /** 数据来源 */
    @Size(max = 50, message = "数据来源长度不能超过50个字符")
    @Schema(description = "数据来源")
    private String dataSource;

    /** 是否为员工（0-否 1-是） */
    @Schema(description = "是否为员工（0-否 1-是）")
    private Integer isEmployee;

    /** 是否为员工家属（0-否 1-是） */
    @Schema(description = "是否为员工家属（0-否 1-是）")
    private Integer isEmpFamily;

    /** 是否为客户（0-否 1-是） */
    @Schema(description = "是否为客户（0-否 1-是）")
    private Integer isCustomer;

    /** 是否为客户家属（0-否 1-是） */
    @Schema(description = "是否为客户家属（0-否 1-是）")
    private Integer isCustFamily;
}
