102 lines
2.5 KiB
Java
102 lines
2.5 KiB
Java
package com.hr.staff.entity;
|
|
|
|
import jakarta.persistence.Column;
|
|
import jakarta.persistence.Entity;
|
|
import jakarta.persistence.GeneratedValue;
|
|
import jakarta.persistence.GenerationType;
|
|
import jakarta.persistence.Id;
|
|
import jakarta.persistence.PrePersist;
|
|
import jakarta.persistence.PreUpdate;
|
|
import jakarta.persistence.Table;
|
|
import lombok.Getter;
|
|
import lombok.NoArgsConstructor;
|
|
import lombok.Setter;
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.LocalDateTime;
|
|
|
|
/**
|
|
* 员工主表 staff_employee。
|
|
*/
|
|
@Entity
|
|
@Table(name = "staff_employee")
|
|
@Getter
|
|
@Setter
|
|
@NoArgsConstructor
|
|
public class StaffEmployee {
|
|
|
|
@Id
|
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
|
private Long id;
|
|
|
|
@Column(name = "employee_no", nullable = false, length = 32, unique = true)
|
|
private String employeeNo;
|
|
|
|
@Column(name = "name", nullable = false, length = 64)
|
|
private String name;
|
|
|
|
/** 身份证号,应用层加密后存储。 */
|
|
@Column(name = "id_number", nullable = false, length = 64, unique = true)
|
|
private String idNumber;
|
|
|
|
@Column(name = "gender")
|
|
private Integer gender;
|
|
|
|
@Column(name = "department_id", nullable = false)
|
|
private Long departmentId;
|
|
|
|
@Column(name = "department_name", length = 128)
|
|
private String departmentName;
|
|
|
|
@Column(name = "position", nullable = false, length = 128)
|
|
private String position;
|
|
|
|
@Column(name = "hire_date", nullable = false)
|
|
private LocalDate hireDate;
|
|
|
|
@Column(name = "phone", length = 20)
|
|
private String phone;
|
|
|
|
@Column(name = "email", length = 128)
|
|
private String email;
|
|
|
|
@Column(name = "emergency_contact", length = 64)
|
|
private String emergencyContact;
|
|
|
|
@Column(name = "emergency_phone", length = 20)
|
|
private String emergencyPhone;
|
|
|
|
@Column(name = "status", nullable = false, length = 16)
|
|
private String status = "active";
|
|
|
|
@Column(name = "created_by")
|
|
private Long createdBy;
|
|
|
|
@Column(name = "updated_by")
|
|
private Long updatedBy;
|
|
|
|
@Column(name = "created_at", nullable = false)
|
|
private LocalDateTime createdAt;
|
|
|
|
@Column(name = "updated_at", nullable = false)
|
|
private LocalDateTime updatedAt;
|
|
|
|
@PrePersist
|
|
void onCreate() {
|
|
if (status == null) {
|
|
status = "active";
|
|
}
|
|
if (createdAt == null) {
|
|
createdAt = LocalDateTime.now();
|
|
}
|
|
if (updatedAt == null) {
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
}
|
|
|
|
@PreUpdate
|
|
void onUpdate() {
|
|
updatedAt = LocalDateTime.now();
|
|
}
|
|
}
|