package com.jeelowcode.service.system.controller.vo.user.sync;

import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import javax.validation.constraints.NotEmpty;

import java.util.List;

import static io.swagger.v3.oas.annotations.media.Schema.RequiredMode.REQUIRED;

/**
 * 主数据同步用户请求参数
 *
 * @author yangchenjj
 */
@Data
@Schema(description = "主数据同步用户请求参数")
public class MasterUserReqVO {

    /**
     * 数据在此集成系统的唯一值
     */
    @Schema(description = "数据在此集成系统的唯一值")
    private String id;

    /**
     * 数据在主数据模型唯一编码
     */
    @JsonProperty("mdm_code")
    @NotEmpty(message = "数据在主数据模型唯一编码不能为空")
    @Schema(description = "数据在主数据模型的唯一编码", requiredMode = REQUIRED)
    private String mdmCode;

    /**
     * 人员编码
     */
    @JsonProperty("emp_code")
    @Schema(description = "人员编码")
    private String empCode;

    /**
     * 人员名称
     */
    @JsonProperty("emp_name")
    @Schema(description = "人员名称")
    private String empName;

    /**
     * 显示名称
     */
    @JsonProperty("display_name")
    @Schema(description = "显示名称")
    private String displayName;

    /**
     * 性别
     */
    @JsonProperty("sex")
    @Schema(description = "性别")
    private String sex;

    /**
     * 证件类型
     */
    @Schema(description = "证件类型")
    @JsonProperty("certificate_type")
    private String certificateType;

    /**
     * 证件号码
     */
    @JsonProperty("emp_idcard")
    @Schema(description = "证件号码")
    private String empIdCard;

    /**
     * 姓
     */
    @Schema(description = "姓")
    @JsonProperty("first_name")
    private String firstName;

    /**
     * 名
     */
    @Schema(description = "名")
    @JsonProperty("last_name")
    private String lastName;

    /**
     * 出生日期
     */
    @JsonProperty("date_of_birth")
    @Schema(description = "出生日期")
    private String dateOfBirth;

    /**
     * 人员类型
     */
    @JsonProperty("cunc_person_type")
    @Schema(description = "人员类型")
    private String cuncPersonType;

    /**
     * 手机号码
     */
    @Schema(description = "手机号码")
    private String mobile;

    /**
     * 座机号码
     */
    @Schema(description = "座机号码")
    @JsonProperty("phone_number")
    private String phoneNumber;

    /**
     * 国家或地区
     */
    @Schema(description = "国家或地区")
    private String region;

    /**
     * 办公地址
     */
    @Schema(description = "办公地址")
    @JsonProperty("location_address")
    private String locationAddress;

    /**
     * 邮箱
     */
    @Schema(description = "邮箱")
    private String email;

    /**
     * 显示顺序
     */
    @JsonProperty("display_sort")
    @Schema(description = "显示顺序")
    private String displaySort;

    /**
     * 备注
     */
    @Schema(description = "备注")
    private String description;

    /**
     * 启用状态（0：停用、1：正常、2：注销）
     */
    @JsonProperty("usable_status")
    @Schema(description = "启用状态（0：停用、1：正常、2：注销）")
    private String usableStatus;

    /**
     * 头像
     */
    @JsonProperty("emp_photo")
    @Schema(description = "头像")
    private String empPhoto;

    /**
     * 子用户数据
     */
    @JsonProperty("sub_userinfo")
    @Schema(description = "子用户数据")
    private List<SubUserReqVO> subUserInfo;

}
