lrj
4 天以前 4fa9591629721797386fc11836e3a9deb69cd58c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
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 + '\'' +
                '}';
    }
}