scr #1

Open
pve7nfumz wants to merge 1 commits from class into main

@ -0,0 +1,173 @@
import java.time.LocalDate;
import java.util.Objects;
import java.util.UUID;
/**
*
*/
public class Certificate {
private String certificateId; // 证书ID
private int employeeId; // 员工ID
private String title; // 证书名称
private String issuingAuthority; // 发证机构
private LocalDate issueDate; // 颁发日期
private LocalDate expiryDate; // 到期日期(可选)
private String description; // 证书描述
private String certificateUrl; // 证书电子版URL可选
private boolean isActive; // 是否有效
/**
*
*/
public Certificate(int employeeId, String title, String issuingAuthority,
LocalDate issueDate) {
validateEmployeeId(employeeId);
validateTitle(title);
validateIssuingAuthority(issuingAuthority);
validateIssueDate(issueDate);
this.certificateId = generateCertificateId();
this.employeeId = employeeId;
this.title = title;
this.issuingAuthority = issuingAuthority;
this.issueDate = issueDate;
this.isActive = true; // 默认为有效证书
this.description = "";
this.certificateUrl = null;
}
/**
*
*/
public Certificate(int employeeId, String title, String issuingAuthority,
LocalDate issueDate, LocalDate expiryDate) {
this(employeeId, title, issuingAuthority, issueDate);
if (expiryDate != null && expiryDate.isBefore(issueDate)) {
throw new IllegalArgumentException("到期日期不能早于颁发日期");
}
this.expiryDate = expiryDate;
// 如果有到期日期且已过期,则标记为无效
if (expiryDate != null && expiryDate.isBefore(LocalDate.now())) {
this.isActive = false;
}
}
// 生成证书ID
private String generateCertificateId() {
return "CERT-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
}
// 验证方法
private void validateEmployeeId(int employeeId) {
if (employeeId <= 0) {
throw new IllegalArgumentException("员工ID必须为正整数");
}
}
private void validateTitle(String title) {
if (title == null || title.trim().isEmpty()) {
throw new IllegalArgumentException("证书名称不能为空");
}
}
private void validateIssuingAuthority(String issuingAuthority) {
if (issuingAuthority == null || issuingAuthority.trim().isEmpty()) {
throw new IllegalArgumentException("发证机构不能为空");
}
}
private void validateIssueDate(LocalDate issueDate) {
if (issueDate == null || issueDate.isAfter(LocalDate.now())) {
throw new IllegalArgumentException("颁发日期不能晚于当前日期");
}
}
/**
*
*/
public boolean isExpired() {
return expiryDate != null && expiryDate.isBefore(LocalDate.now());
}
/**
*
*/
public boolean isValid() {
return isActive && !isExpired();
}
/**
*
*/
public void updateExpiryDate(LocalDate expiryDate) {
if (expiryDate != null && expiryDate.isBefore(issueDate)) {
throw new IllegalArgumentException("到期日期不能早于颁发日期");
}
this.expiryDate = expiryDate;
// 更新状态
if (expiryDate != null && expiryDate.isBefore(LocalDate.now())) {
this.isActive = false;
}
}
// Getter方法
public String getCertificateId() { return certificateId; }
public int getEmployeeId() { return employeeId; }
public String getTitle() { return title; }
public String getIssuingAuthority() { return issuingAuthority; }
public LocalDate getIssueDate() { return issueDate; }
public LocalDate getExpiryDate() { return expiryDate; }
public String getDescription() { return description; }
public String getCertificateUrl() { return certificateUrl; }
public boolean isActive() { return isActive; }
// Setter方法
public void setTitle(String title) {
validateTitle(title);
this.title = title;
}
public void setIssuingAuthority(String issuingAuthority) {
validateIssuingAuthority(issuingAuthority);
this.issuingAuthority = issuingAuthority;
}
public void setDescription(String description) {
this.description = description != null ? description : "";
}
public void setCertificateUrl(String certificateUrl) {
this.certificateUrl = certificateUrl;
}
public void activate() {
this.isActive = true;
}
public void deactivate() {
this.isActive = false;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Certificate that = (Certificate) o;
return certificateId.equals(that.certificateId);
}
@Override
public int hashCode() {
return Objects.hash(certificateId);
}
@Override
public String toString() {
return String.format("证书[ID: %s, 名称: %s, 员工ID: %d, 发证机构: %s, 状态: %s]",
certificateId, title, employeeId, issuingAuthority,
isValid() ? "有效" : "无效");
}
}
Loading…
Cancel
Save