package org.qinan.safetyeval.domain.change.model;

import cn.hutool.extra.spring.SpringUtil;
import com.alibaba.cola.domain.DomainFactory;
import com.alibaba.cola.domain.Entity;
import com.jjb.saas.framework.domain.model.BaseE;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.qinan.safetyeval.domain.change.gateway.QualFilingPersonnelChangeGateway;

import java.time.LocalDateTime;

/**
 * 备案申请人员-变更领域模型
 *
 * @Author: ltq
 * @date 2026-07-02 10:04:33
 */
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
public class QualFilingPersonnelChangeE extends BaseE {
    private static final long serialVersionUID = 1L;

    /**
     * 备案变更id
     */
    private Long filingChangeId;
    /**
     * 来源人员id
     */
    private Long sourcePersonnelId;
    /**
     * 人员姓名
     */
    private String personName;
    /**
     * 人员类型编码
     */
    private String personTypeCode;
    /**
     * 人员类型名称
     */
    private String personTypeName;
    /**
     * 职务
     */
    private String positionName;
    /**
     * 职称
     */
    private String titleName;
    /**
     * 性别编码
     */
    private Long genderCode;
    /**
     * 性别名称
     */
    private String genderName;
    /**
     * 出生日期
     */
    private LocalDateTime birthDate;
    /**
     * 参加工作时间
     */
    private LocalDateTime joinWorkDate;
    /**
     * 身份证号
     */
    private String idCardNo;
    /**
     * 现住地址
     */
    private String currentAddress;
    /**
     * 办公地址
     */
    private String officeAddress;
    /**
     * 学历编码
     */
    private String educationCode;
    /**
     * 学历名称
     */
    private String educationName;
    /**
     * 毕业院校
     */
    private String graduateSchool;
    /**
     * 专业
     */
    private String major;
    /**
     * 资质范围
     */
    private String qualScope;
    /**
     * 出版学术专著专利获奖论文等
     */
    private String publications;
    /**
     * 职业等级及证书编号
     */
    private String professionalLevelCert;
    /**
     * 是否具有注册安全工程师资格(1是2否)
     */
    private Long registerEngineerFlag;
    /**
     * 自我申报的专业能力及认定方式
     */
    private String abilityDeclaration;
    /**
     * 主要学习工作经历
     */
    private String workExperience;
    /**
     * 申报专业能力证明材料地址
     */
    private String proofMaterialUrl;
    /**
     * 环境
     */
    private String env;
    private transient QualFilingPersonnelChangeGateway qualFilingPersonnelChangeGateway;

    public QualFilingPersonnelChangeE() {
        this.qualFilingPersonnelChangeGateway = SpringUtil.getBean(QualFilingPersonnelChangeGateway.class);
    }

    public static QualFilingPersonnelChangeE of() {
        return DomainFactory.create(QualFilingPersonnelChangeE.class);
    }

    public boolean add() {
        return qualFilingPersonnelChangeGateway.add(this);
    }

    public boolean update() {
        return qualFilingPersonnelChangeGateway.update(this);
    }
}
