package com.rongyichuang.activity.entity; import com.rongyichuang.common.entity.BaseEntity; import jakarta.persistence.*; import java.math.BigDecimal; /** * 活动选手评分项实体类 * 对应数据库表:t_activity_player_rating_item */ @Entity @Table(name = "t_activity_player_rating_item") public class ActivityPlayerRatingItem extends BaseEntity { /** * 活动选手评分ID(关联t_activity_player_rating表) */ @Column(name = "activity_player_rating_id", nullable = false) private Long activityPlayerRatingId; /** * 评分项ID(关联t_rating_item表) */ @Column(name = "rating_item_id", nullable = false) private Long ratingItemId; /** * 评分项名称(冗余字段,便于查询) */ @Column(name = "rating_item_name", length = 100) private String ratingItemName; /** * 评分项权重(冗余字段,便于计算) */ @Column(name = "weight", precision = 5, scale = 2) private BigDecimal weight; /** * 评分项满分(冗余字段,便于计算) */ @Column(name = "max_score", precision = 10, scale = 2) private BigDecimal maxScore; /** * 实际得分 */ @Column(name = "score", precision = 10, scale = 2, nullable = false) private BigDecimal score; /** * 加权得分(score * weight) */ @Column(name = "weighted_score", precision = 10, scale = 2) private BigDecimal weightedScore; /** * 评分备注 */ @Column(name = "remark", length = 500) private String remark; // 构造函数 public ActivityPlayerRatingItem() {} public ActivityPlayerRatingItem(Long activityPlayerRatingId, Long ratingItemId, String ratingItemName, BigDecimal weight, BigDecimal maxScore, BigDecimal score) { this.activityPlayerRatingId = activityPlayerRatingId; this.ratingItemId = ratingItemId; this.ratingItemName = ratingItemName; this.weight = weight; this.maxScore = maxScore; this.score = score; // 计算加权得分 if (score != null && weight != null) { this.weightedScore = score.multiply(weight); } } // Getter和Setter方法 public Long getActivityPlayerRatingId() { return activityPlayerRatingId; } public void setActivityPlayerRatingId(Long activityPlayerRatingId) { this.activityPlayerRatingId = activityPlayerRatingId; } public Long getRatingItemId() { return ratingItemId; } public void setRatingItemId(Long ratingItemId) { this.ratingItemId = ratingItemId; } public String getRatingItemName() { return ratingItemName; } public void setRatingItemName(String ratingItemName) { this.ratingItemName = ratingItemName; } public BigDecimal getWeight() { return weight; } public void setWeight(BigDecimal weight) { this.weight = weight; // 重新计算加权得分 updateWeightedScore(); } public BigDecimal getMaxScore() { return maxScore; } public void setMaxScore(BigDecimal maxScore) { this.maxScore = maxScore; } public BigDecimal getScore() { return score; } public void setScore(BigDecimal score) { this.score = score; // 重新计算加权得分 updateWeightedScore(); } public BigDecimal getWeightedScore() { return weightedScore; } public void setWeightedScore(BigDecimal weightedScore) { this.weightedScore = weightedScore; } public String getRemark() { return remark; } public void setRemark(String remark) { this.remark = remark; } /** * 更新加权得分 */ private void updateWeightedScore() { if (score != null && weight != null) { this.weightedScore = score.multiply(weight); } } /** * 计算得分率(实际得分/满分) */ public BigDecimal getScoreRate() { if (score != null && maxScore != null && maxScore.compareTo(BigDecimal.ZERO) > 0) { return score.divide(maxScore, 4, BigDecimal.ROUND_HALF_UP); } return BigDecimal.ZERO; } @Override public String toString() { return "ActivityPlayerRatingItem{" + "id=" + getId() + ", activityPlayerRatingId=" + activityPlayerRatingId + ", ratingItemId=" + ratingItemId + ", ratingItemName='" + ratingItemName + '\'' + ", weight=" + weight + ", maxScore=" + maxScore + ", score=" + score + ", weightedScore=" + weightedScore + ", remark='" + remark + '\'' + '}'; } }