package com.zcloud.basic.info.dto;

import com.alibaba.cola.dto.Command;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;

/**
 * web-client
 *
 * @Author zhangyue
 * @Date 2025-11-04 14:07:12
 */
@EqualsAndHashCode(callSuper = true)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserXgfAddCmd extends Command {
    @ApiModelProperty(value = "业务主键id老系统id", name = "userId")
    private String userId;

    @ApiModelProperty(value = "登录账号", name = "username", required = true)
    private String username;

    @ApiModelProperty(value = "姓名", name = "name", required = true)
    @NotEmpty(message = "姓名不能为空")
    private String name;

    @ApiModelProperty(value = "企业id", name = "corpinfoId", required = true)
    private Long corpinfoId;

    @ApiModelProperty(value = "是否主账号1是0否", name = "mainCorpFlag", required = true)
    @NotNull(message = "是否主账号1是0否不能为空")
    private Integer mainCorpFlag;

    @ApiModelProperty(value = "用户类型,1监管2企业3相关方", name = "userType", required = true)
    @NotNull(message = "用户类型,1监管2企业3相关方不能为空")
    private Integer userType;

    @ApiModelProperty(value = "部门id", name = "departmentId", required = true)
    @NotNull(message = "部门id不能为空")
    private Long departmentId;

    @ApiModelProperty(value = "岗位id", name = "postId")
    private Long postId;

    @ApiModelProperty(value = "角色id", name = "roleId")
    private Long roleId;

    @ApiModelProperty(value = "邮箱", name = "email")
    private String email;

    @ApiModelProperty(value = "手机号", name = "phone")
    private String phone;

    @ApiModelProperty(value = "人员类型编码", name = "personnelType")
    private String personnelType;

    @ApiModelProperty(value = "人员类型翻译", name = "personnelTypeName")
    private String personnelTypeName;

    @ApiModelProperty(value = "民族编码", name = "nation", required = true)
    @NotEmpty(message = "民族编码不能为空")
    private String nation;

    @ApiModelProperty(value = "民族名称", name = "nationName", required = true)
    @NotEmpty(message = "民族名称不能为空")
    private String nationName;

    @ApiModelProperty(value = "身份证号", name = "userIdCard", required = true)
    @NotEmpty(message = "身份证号不能为空")
    private String userIdCard;

    @ApiModelProperty(value = "人脸头像url", name = "userAvatarUrl", required = true)
    private String userAvatarUrl;

    @ApiModelProperty(value = "现住址", name = "currentAddress", required = true)
    private String currentAddress;

    @ApiModelProperty(value = "户口所在地", name = "locationAddress", required = true)
    private String locationAddress;
    @ApiModelProperty(value = "职级", name = "rankLevel")
    private String rankLevel;
    @ApiModelProperty(value = "职级名称", name = "rankLevelName")
    private String rankLevelName;

    @ApiModelProperty(value = "人员在部门中的排序", name = "sort")
    private Integer sort;

    @ApiModelProperty(value = "描述", name = "remarks")
    private String remarks;
    @ApiModelProperty(value = "是否部门领导0否1是", name = "departmentLeaderFlag")
    private Integer departmentLeaderFlag;

    @ApiModelProperty(value = "是否分管领导0否1是", name = "deputyLeaderFlag")
    private Integer deputyLeaderFlag;

    @ApiModelProperty(value = "文化程度", name = "culturalLevel", required = true)
    @NotEmpty(message = "文化程度不能为空")
    private String culturalLevel;

    @ApiModelProperty(value = "文化程度名称", name = "culturalLevelName", required = true)
    @NotEmpty(message = "文化程度名称不能为空")
    private String culturalLevelName;

    @ApiModelProperty(value = "婚姻状态", name = "maritalStatus", required = true)
    private String maritalStatus;

    @ApiModelProperty(value = "婚姻状态名称", name = "maritalStatusName", required = true)
    private String maritalStatusName;

    @ApiModelProperty(value = "政治面貌", name = "politicalAffiliation", required = true)
    @NotEmpty(message = "政治面貌不能为空")
    private String politicalAffiliation;

    @ApiModelProperty(value = "政治面貌名称", name = "politicalAffiliationName", required = true)
    @NotEmpty(message = "政治面貌名称不能为空")
    private String politicalAffiliationName;

    @ApiModelProperty(value = "企业名称")
    private String corpinfoName;
    @ApiModelProperty(value = "部门名称")
    private String departmentName;
    @ApiModelProperty(value = "岗位名称")
    private String postName;

    // 入职状态
    @ApiModelProperty(value = "是否流动人员，1-流动，0-固定人员")
    private Integer flowFlag;


    @ApiModelProperty(value = "是否特殊工种")
    private Integer isSpecialJob;
    @ApiModelProperty(value = "是否为部门负责人")
    private Integer isDepaRrtmentHead;
    @ApiModelProperty(value = "是否参加三级安全培训")
    private Integer isLevelThree;
    @ApiModelProperty(value = "是否签订劳动合同")
    private Integer isSignLabor;
    @ApiModelProperty(value = "是否缴纳商业保险")
    private Integer isPay;
    @ApiModelProperty(value = "是否缴纳社保")
    private Integer isSocial;
    @ApiModelProperty(value = "社会保障号码")
    private String socialNumber;
    @ApiModelProperty(value = "是否按期缴纳工伤保险")
    private Integer isInjuriesPay;
    @ApiModelProperty(value = "工伤保险有效期")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    private LocalDate isInjuriesPayTime;
    @ApiModelProperty(value = "商业保险单号")
    private String payNumber;
    @ApiModelProperty(value = "是否缴纳其他人身伤害保险")
    private Integer isBf;
}

