作者 tangxvhui

修正 评估分数的计算方式

... ... @@ -2,6 +2,7 @@ package domain
import (
"fmt"
"strconv"
"time"
)
... ... @@ -74,11 +75,7 @@ func (evaluation *SummaryEvaluation) EvaluationTotalScore(valueList []*SummaryEv
if v.Weight == 0 {
evaluation.SumRatingCode(v.Rating.Code)
} else {
score, err := v.SumScore()
if err != nil {
return err
}
score, _ := strconv.ParseFloat(v.Score, 64)
totalScore += score
}
}
... ... @@ -113,10 +110,21 @@ func (evaluation *SummaryEvaluation) ResetTotalRating(param *EvaluationItemUsed)
// 增加对应评级的数量
func (evaluation *SummaryEvaluation) SumRatingCode(code string) {
if len(code) == 0 {
return
}
codeNotFound := true
for i := range evaluation.TotalRating {
if evaluation.TotalRating[i].Code == code {
evaluation.TotalRating[i].Number += 1
codeNotFound = false
break
}
}
if codeNotFound {
evaluation.TotalRating = append(evaluation.TotalRating, RatingCodeNumber{
Code: code,
Number: 1,
})
}
}
... ...
package domain
import (
"errors"
"fmt"
"strconv"
"strings"
"time"
)
... ... @@ -32,40 +34,40 @@ type SummaryEvaluationValueRepository interface {
// 计算周期评估
// 当指标项没有权重的时候,还是进行评级操作,不计算分数
// 分数保留2位小数
func (itemValue *SummaryEvaluationValue) SummaryEvaluationScore() error {
//计算方式
score, err := itemValue.SumScore()
if err != nil {
return err
}
itemValue.Score = fmt.Sprintf("%.2f", score)
return nil
}
// func (itemValue *SummaryEvaluationValue) SummaryEvaluationScore() error {
// //计算方式
// score, err := itemValue.SumScore()
// if err != nil {
// return err
// }
// itemValue.Score = fmt.Sprintf("%.2f", score)
// return nil
// }
func (itemValue *SummaryEvaluationValue) SumScore() (float64, error) {
if len(itemValue.Value) == 0 {
return 0, nil
}
if itemValue.Weight == 0 {
//使用评级
return 0, nil
}
if itemValue.Types == EvaluationHrbp {
//hrbp 填写值就是得分
valueFloat, err := strconv.ParseFloat(itemValue.Value, 64)
if err != nil {
return 0, fmt.Errorf("条目%d系数值异常,%s", itemValue.Id, itemValue.Value)
}
return valueFloat, nil
}
valueFloat, err := strconv.ParseFloat(itemValue.Value, 64)
if err != nil {
return 0, fmt.Errorf("条目%d系数值异常,%s", itemValue.Id, itemValue.Value)
}
//得分计算方式
score := itemValue.Weight * valueFloat
return score, nil
}
// func (itemValue *SummaryEvaluationValue) SumScore() (float64, error) {
// if len(itemValue.Value) == 0 {
// return 0, nil
// }
// if itemValue.Weight == 0 {
// //使用评级
// return 0, nil
// }
// if itemValue.Types == EvaluationHrbp {
// //hrbp 填写值就是得分
// valueFloat, err := strconv.ParseFloat(itemValue.Value, 64)
// if err != nil {
// return 0, fmt.Errorf("条目%d系数值异常,%s", itemValue.Id, itemValue.Value)
// }
// return valueFloat, nil
// }
// valueFloat, err := strconv.ParseFloat(itemValue.Value, 64)
// if err != nil {
// return 0, fmt.Errorf("条目%d系数值异常,%s", itemValue.Id, itemValue.Value)
// }
// //得分计算方式
// score := itemValue.Weight * valueFloat
// return score, nil
// }
// 初始化一个空的value
func (itemValue *SummaryEvaluationValue) SetBlankValue(evaluation *SummaryEvaluation, item *EvaluationItemUsed) {
... ... @@ -83,25 +85,69 @@ func (itemValue *SummaryEvaluationValue) SetBlankValue(evaluation *SummaryEvalua
// 填充评估的内容
func (itemValue *SummaryEvaluationValue) FillValue(item *EvaluationItemUsed, value string, remark string) error {
itemValue.Remark = remark
itemValue.Value = value
if item.Weight == 0 {
//使用评级
if len(value) == 0 {
return nil
}
var ratingValue *RatingLevel
for _, v := range item.Rule.Rating.Levels {
if v.Code == value {
ratingValue = v
}
}
if (ratingValue == nil) && len(value) > 0 {
return fmt.Errorf("条目%d系评级值异常", itemValue.EvaluationItemId)
}
itemValue.Rating = *ratingValue
return nil
err := itemValue.valueTypeRating(item, value)
return err
}
err := itemValue.valueTypeScore(item, value)
//使用评分的形式
err := itemValue.SummaryEvaluationScore()
// err := itemValue.SummaryEvaluationScore()
return err
}
// 填写的值是 评级
func (itemValue *SummaryEvaluationValue) valueTypeRating(item *EvaluationItemUsed, value string) error {
if item.Weight != 0 {
return errors.New("评级方式错误")
}
itemValue.Value = value
itemValue.Score = "0"
// 使用评级
if len(value) == 0 {
itemValue.Rating = RatingLevel{}
return nil
}
var ratingValue *RatingLevel
for _, v := range item.Rule.Rating.Levels {
if v.Code == value {
ratingValue = v
}
}
if (ratingValue == nil) && len(value) > 0 {
return fmt.Errorf("条目%d:%s-%s系评级值异常", item.Id, item.Category, item.Name)
}
itemValue.Rating = *ratingValue
return nil
}
// 填写的值是 评分
func (itemValue *SummaryEvaluationValue) valueTypeScore(item *EvaluationItemUsed, value string) error {
if item.Weight <= 0 {
return errors.New("评分方式错误")
}
value = strings.TrimSpace(value)
valueNumber, err := strconv.ParseFloat(value, 64)
if err != nil {
return fmt.Errorf("条目%d:%s-%s系评分值异常", item.Id, item.Category, item.Name)
}
itemValue.Value = value
//处理空值
if len(value) == 0 {
itemValue.Score = "0"
return nil
}
if item.EvaluatorId < 0 {
//hrbp 的评分方式
itemValue.Score = value
return nil
} else {
// 非hrbp的评分方式
// 分数保留2位小数
score := valueNumber * item.Weight
itemValue.Score = fmt.Sprintf("%.2f", score)
}
return nil
}
... ...