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

import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import jakarta.validation.constraints.Size;
import lombok.Data;

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

/**
 * 员工信息新增 DTO
 *
 * @author ruoyi
 * @date 2026-01-28
 */
@Data
public class CcdiBaseStaffAddDTO implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;

    /** 姓名 */
    @NotBlank(message = "姓名不能为空")
    @Size(max = 100, message = "姓名长度不能超过100个字符")
    private String name;

    /** 员工ID */
    @NotNull(message = "员工ID不能为空")
    private Long staffId;

    /** 所属部门ID */
    @NotNull(message = "所属部门不能为空")
    private Long deptId;

    /** 身份证号 */
    @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 = "身份证号格式不正确")
    private String idCard;

    /** 电话 */
    @NotBlank(message = "电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "电话格式不正确")
    private String phone;

    /** 年收入 */
    private BigDecimal annualIncome;

    /** 入职时间 */
    private Date hireDate;

    /** 是否党员：0-否 1-是 */
    @NotNull(message = "是否党员不能为空")
    private Integer partyMember;

    /** 状态 */
    @NotBlank(message = "状态不能为空")
    private String status;

    /** 资产信息列表 */
    private List<CcdiAssetInfoDTO> assetInfoList;
}
