/** * 培训记录类 * 记录员工参加培训的详细信息 * 遵循单一职责原则 */ package com.employeetraining.training; import com.employeetraining.model.Employee; import com.employeetraining.course.Course; import java.time.LocalDate; import java.time.format.DateTimeFormatter; import java.util.Objects; public class TrainingRecord { private String recordId; private String employeeId; private String courseId; private LocalDate completionDate; private double score; private TrainingStatus status; private String feedback; public TrainingRecord() { } public TrainingRecord(String recordId, String employeeId, String courseId, LocalDate completionDate, double score, TrainingStatus status, String feedback) { this.recordId = recordId; this.employeeId = employeeId; this.courseId = courseId; this.completionDate = completionDate; this.score = score; this.status = status; this.feedback = feedback; } // Getters and Setters public String getRecordId() { return recordId; } public void setRecordId(String recordId) { this.recordId = recordId; } 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 LocalDate getCompletionDate() { return completionDate; } public void setCompletionDate(LocalDate completionDate) { this.completionDate = completionDate; } public String getFormattedCompletionDate() { if (completionDate == null) { return "N/A"; } return completionDate.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")); } public double getScore() { return score; } public void setScore(double score) { this.score = score; } public TrainingStatus getStatus() { return status; } public void setStatus(TrainingStatus status) { this.status = status; } public String getFeedback() { return feedback; } public void setFeedback(String feedback) { this.feedback = feedback; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; TrainingRecord that = (TrainingRecord) o; return Objects.equals(recordId, that.recordId); } @Override public int hashCode() { return Objects.hash(recordId); } @Override public String toString() { return "TrainingRecord{" + "recordId='" + recordId + '\'' + ", employeeId='" + employeeId + '\'' + ", courseId='" + courseId + '\'' + ", status=" + status + ", completionDate=" + getFormattedCompletionDate() + ", score=" + score + '}'; } /** * 培训状态枚举 */ public enum TrainingStatus { NOT_STARTED, IN_PROGRESS, COMPLETED, FAILED, CERTIFIED } }