package org.dromara.personnel.domain.bo;

import org.dromara.personnel.domain.OpsUser;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;

/**
 * 运维人员业务对象 sub_construction_user
 *
 * @author LionLi
 * @date 2025-09-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = OpsUser.class, reverseConvertGenerate = false)
public class OpsUserBo extends BaseEntity {

    /**
     *
     */
    private Long id;

    /**
     * 人脸照
     */
    @NotBlank(message = "人脸照不能为空", groups = { AddGroup.class, EditGroup.class })
    private String facePic;

    /**
     * 系统用户id
     */
    @NotNull(message = "系统用户id不能为空", groups = { EditGroup.class })
    private Long sysUserId;

    /**
     * 人员姓名
     */
    @NotBlank(message = "人员姓名不能为空", groups = { AddGroup.class, EditGroup.class })
    private String userName;

    /**
     * 项目id
     */
    @NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long projectId;



    /**
     * 班组id
     */
//    @NotNull(message = "班组id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long teamId;

    /**
     * 班组名称
     */
//    @NotBlank(message = "班组名称不能为空", groups = { AddGroup.class, EditGroup.class })
    private String teamName;

    /**
     * 状态（0在职 1离职）
     */
    private String status;

    /**
     * 联系电话
     */
    @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class })
    private String phone;

    /**
     * 性别(0:保密 1:男 2女)
     */
    private String sex;

    /**
     * 民族
     */
    @NotBlank(message = "民族不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nation;

    /**
     * 身份证正面图片
     */
    @NotBlank(message = "身份证正面图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sfzFrontPic;

    /**
     * 身份证背面图片
     */
    @NotBlank(message = "身份证背面图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sfzBackPic;

    /**
     * 身份证号码
     */
    @NotBlank(message = "身份证号码不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sfzNumber;

    /**
     * 身份证有效开始期
     */
    @NotNull(message = "身份证有效开始期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date sfzStart;

    /**
     * 身份证有效结束期
     */
    @NotNull(message = "身份证有效结束期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date sfzEnd;

    /**
     * 身份证地址
     */
    @NotBlank(message = "身份证地址不能为空", groups = { AddGroup.class, EditGroup.class })
    private String sfzSite;

    /**
     * 身份证出生日期
     */
    @NotNull(message = "身份证出生日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date sfzBirth;

    /**
     * 籍贯
     */
    @NotBlank(message = "籍贯不能为空", groups = { AddGroup.class, EditGroup.class })
    private String nativePlace;

    /**
     * 银行卡图片
     */
    @NotBlank(message = "银行卡图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String yhkPic;

    /**
     * 银行卡号
     */
    @NotBlank(message = "银行卡号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String yhkNumber;

    /**
     * 开户行
     */
    @NotBlank(message = "开户行不能为空", groups = { AddGroup.class, EditGroup.class })
    private String yhkOpeningBank;

    /**
     * 持卡人
     */
    @NotBlank(message = "持卡人不能为空", groups = { AddGroup.class, EditGroup.class })
    private String yhkCardholder;

    /**
     * 工种(字典type_of_work)
     */
    @NotBlank(message = "工种(字典type_of_work)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String typeOfWork;

    /**
     * 工资计量单位
     */
    @NotBlank(message = "工资计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
    private String wageMeasureUnit;

    /**
     * 特种作业证图片
     */
    @NotBlank(message = "特种作业证图片不能为空", groups = { AddGroup.class, EditGroup.class })
    private String specialWorkPic;

    /**
     * 打卡(0启用打卡 1禁止打卡)
     */
    private String clock;

    /**
     * 入场时间
     */
    @NotBlank(message = "入场时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private String entryDate;

    /**
     * 离场时间
     */
    @NotBlank(message = "离场时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private String leaveDate;

    /**
     * 薪水
     */
    @NotNull(message = "薪水不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long salary;

    /**
     * 用户角色(1=普通用户,2=管理员)
     */
    private String userRole;

    /**
     * 退场状态(0未退场 1退场未提交材料 2已退场)
     */
    private String exitStatus;

    /**
     * 首次进入项目的时间
     */
    @NotNull(message = "首次进入项目的时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date firstDate;

    /**
     * 备注
     */
    @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remark;


}
