You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
158 lines
4.1 KiB
158 lines
4.1 KiB
/**
|
|
* 证书类
|
|
* 表示员工获得的培训证书
|
|
* 遵循单一职责原则
|
|
*/
|
|
package com.employeetraining.certificate;
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.Objects;
|
|
|
|
public class Certificate {
|
|
private String certificateId;
|
|
private String employeeId;
|
|
private String courseId;
|
|
private String certificateName;
|
|
private LocalDate issueDate;
|
|
private LocalDate expiryDate;
|
|
private String issuingAuthority;
|
|
private CertificateStatus status;
|
|
|
|
public Certificate() {
|
|
}
|
|
|
|
public Certificate(String certificateId, String employeeId, String courseId,
|
|
String certificateName, LocalDate issueDate,
|
|
LocalDate expiryDate, String issuingAuthority,
|
|
CertificateStatus status) {
|
|
this.certificateId = certificateId;
|
|
this.employeeId = employeeId;
|
|
this.courseId = courseId;
|
|
this.certificateName = certificateName;
|
|
this.issueDate = issueDate;
|
|
this.expiryDate = expiryDate;
|
|
this.issuingAuthority = issuingAuthority;
|
|
this.status = status;
|
|
}
|
|
|
|
// Getters and Setters
|
|
public String getCertificateId() {
|
|
return certificateId;
|
|
}
|
|
|
|
public void setCertificateId(String certificateId) {
|
|
this.certificateId = certificateId;
|
|
}
|
|
|
|
public String getEmployeeId() {
|
|
return employeeId;
|
|
}
|
|
|
|
public void setEmployeeId(String employeeId) {
|
|
this.employeeId = employeeId;
|
|
}
|
|
|
|
public String getCourseId() {
|
|
return courseId;
|
|
}
|
|
|
|
public void setCourseId(String courseId) {
|
|
this.courseId = courseId;
|
|
}
|
|
|
|
public String getCertificateName() {
|
|
return certificateName;
|
|
}
|
|
|
|
public void setCertificateName(String certificateName) {
|
|
this.certificateName = certificateName;
|
|
}
|
|
|
|
public LocalDate getIssueDate() {
|
|
return issueDate;
|
|
}
|
|
|
|
public void setIssueDate(LocalDate issueDate) {
|
|
this.issueDate = issueDate;
|
|
}
|
|
|
|
public String getFormattedIssueDate() {
|
|
if (issueDate == null) {
|
|
return "N/A";
|
|
}
|
|
return issueDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
}
|
|
|
|
public LocalDate getExpiryDate() {
|
|
return expiryDate;
|
|
}
|
|
|
|
public void setExpiryDate(LocalDate expiryDate) {
|
|
this.expiryDate = expiryDate;
|
|
}
|
|
|
|
public String getFormattedExpiryDate() {
|
|
if (expiryDate == null) {
|
|
return "永久有效";
|
|
}
|
|
return expiryDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
|
|
}
|
|
|
|
public String getIssuingAuthority() {
|
|
return issuingAuthority;
|
|
}
|
|
|
|
public void setIssuingAuthority(String issuingAuthority) {
|
|
this.issuingAuthority = issuingAuthority;
|
|
}
|
|
|
|
public CertificateStatus getStatus() {
|
|
return status;
|
|
}
|
|
|
|
public void setStatus(CertificateStatus status) {
|
|
this.status = status;
|
|
}
|
|
|
|
/**
|
|
* 检查证书是否过期
|
|
*/
|
|
public boolean isExpired() {
|
|
return expiryDate != null && LocalDate.now().isAfter(expiryDate);
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object o) {
|
|
if (this == o) return true;
|
|
if (o == null || getClass() != o.getClass()) return false;
|
|
Certificate that = (Certificate) o;
|
|
return Objects.equals(certificateId, that.certificateId);
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return Objects.hash(certificateId);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "Certificate{" +
|
|
"certificateId='" + certificateId + '\'' +
|
|
", certificateName='" + certificateName + '\'' +
|
|
", status=" + status +
|
|
", issueDate=" + getFormattedIssueDate() +
|
|
", expiryDate=" + getFormattedExpiryDate() +
|
|
'}';
|
|
}
|
|
|
|
/**
|
|
* 证书状态枚举
|
|
*/
|
|
public enum CertificateStatus {
|
|
ACTIVE,
|
|
EXPIRED,
|
|
REVOKED,
|
|
PENDING
|
|
}
|
|
} |