package com.hotwj.platform.resourceManagement.companySafetyManager.domain.bo;

import com.hotwj.platform.resourceManagement.companySafetyManager.domain.HotCompanySafetyManager;
import io.github.linpeilie.annotations.AutoMapper;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.constraints.Pattern;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.constant.RegexConstants;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.common.core.validate.QueryGroup;
import org.dromara.common.mybatis.core.domain.BaseEntity;

import java.util.Date;

/**
 * 安全管理人员业务对象 hot_company_safety_manager
 *
 * @author shihongwei
 * @date 2025-12-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = HotCompanySafetyManager.class, reverseConvertGenerate = false)
public class HotCompanySafetyManagerBo extends BaseEntity {

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

    /**
     * 公司ID
     */
    @NotNull(message = "公司ID不能为空", groups = {AddGroup.class, EditGroup.class, QueryGroup.class})
    private Long companyId;

    /**
     * 上级管理人员ID
     */
//    @NotNull(message = "上级管理人员ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long reporterId;

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

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

    /**
     * 手机号
     */
    @NotBlank(message = "手机号不能为空", groups = {AddGroup.class, EditGroup.class})
    private String phone;

    /**
     * 登录密码
     */
    @Pattern(regexp = RegexConstants.OPTIONAL_PASSWORD, message = "{user.password.format.valid}", groups = {AddGroup.class, EditGroup.class})
    private String loginPassword;

    /**
     * 是否党员(0否,1是)
     */
    private Long isPartyMember;

    /**
     * 政治面貌
     */
    private String politicalStatus;

    /**
     * 是否部门负责人(0否,1是)
     */
    private Long isDepartmentHead;

    /**
     * 是否公司负责人(0否,1是)
     */
    private Long companyHead;

    /**
     * 入职日期
     */
    private Date entryDate;

    /**
     * 岗位名称
     */
    private String jobName;

    /**
     * 岗位职责
     */
    private String jobDuty;

    /**
     * 所属部门ID
     */
//    @NotNull(message = "所属部门ID不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long deptId;

    /**
     * 权限类型
     */
    @NotBlank(message = "权限类型不能为空", groups = {AddGroup.class, EditGroup.class})
    private String permissionType;

    @NotNull(message = "权限类型代码不能为空", groups = {AddGroup.class, EditGroup.class})
    private Long permissionRoleId;

    /**
     * 家庭住址
     */
    private String address;

    /**
     * 微信号
     */
    private String wechatId;

    /**
     * 身份证正面URL
     */
    private String idcardFrontUrl;

    /**
     * 身份证反面URL
     */
    private String idcardBackUrl;

    /**
     * 头像URL
     */
    private String avatarUrl;

    /**
     * 任命书URL
     */
    private String appointmentDocUrl;

    /**
     * 上岗资格证编号
     */
    private String certificateNo;

    /**
     * 上岗资格证到期日期
     */
    private Date certificateExpireDate;

    /**
     * 发证机关
     */
    private String issuingAuthority;

    /**
     * 证书附件URL
     */
    private String certificateAttachmentUrl;

    /**
     * 电子签名URL
     */
    private String signatureUrl;

    /**
     * 0=正常,1=已删除
     */
    @NotNull(message = "0=正常,1=已删除不能为空", groups = {EditGroup.class})
    private Long isDeleted;

    /**
     * 是否离职（0否 1是）
     */
    private Long isResigned;

    /**
     * 状态（0否 1是）
     */
    private Long status;

    /**
     * 导出/批量查询的人员IDs（逗号分隔）
     */
    private String ids;


}
