...
|
...
|
@@ -2,6 +2,8 @@ package domain |
|
|
|
|
|
import (
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
"strconv"
|
|
|
"time"
|
|
|
)
|
|
|
|
...
|
...
|
@@ -56,9 +58,9 @@ type EvaluationRule struct { |
|
|
DeletedAt *time.Time `json:"deletedAt" comment:"删除时间"`
|
|
|
}
|
|
|
|
|
|
//根据评估填写的值,得出等级名称,
|
|
|
//如果 评估方式是评分,对评估填写的值 的小数点进行处理
|
|
|
//value 根据评估填写的值
|
|
|
// 根据评估填写的值,得出等级名称
|
|
|
// 如果 评估方式是评分,对评估填写的值的小数点后的位数进行处理,
|
|
|
// value 根据评估填写的值
|
|
|
func (rule *EvaluationRule) ScoreOrRating(value *string) (string, error) {
|
|
|
switch rule.Type {
|
|
|
case EvaluationTypeRating:
|
...
|
...
|
@@ -71,20 +73,27 @@ func (rule *EvaluationRule) ScoreOrRating(value *string) (string, error) { |
|
|
|
|
|
//根据评估填写的值,得出等级名称,
|
|
|
func (rule *EvaluationRule) ScoreValue(value *string) (string, error) {
|
|
|
// valueFloat, err := strconv.ParseFloat(*value, 64)
|
|
|
// if err != nil {
|
|
|
// return "", errors.New("评分填写的值错误")
|
|
|
// }
|
|
|
// if valueFloat < rule.Score.Min || valueFloat > rule.Score.Max {
|
|
|
// return "", errors.New("评分填写的值超出限制")
|
|
|
// }
|
|
|
|
|
|
valueFloat, err := strconv.ParseFloat(*value, 64)
|
|
|
if err != nil {
|
|
|
return "", errors.New("评分填写的值错误")
|
|
|
}
|
|
|
if valueFloat < rule.Score.Min || valueFloat > rule.Score.Max {
|
|
|
return "", fmt.Errorf("评分填写的值超出限制,>=%f且<=%f", rule.Score.Min, rule.Score.Max)
|
|
|
}
|
|
|
//保留小数处理
|
|
|
fStr := fmt.Sprintf("%%.%df", rule.Score.DecimalPlaces)
|
|
|
valueStr := fmt.Sprintf(fStr, valueFloat)
|
|
|
*value = valueStr
|
|
|
if rule.Score.IntervalState == 0 {
|
|
|
// 未开启按分数子区间匹配等级
|
|
|
return "", nil
|
|
|
}
|
|
|
valueDescrip := ""
|
|
|
// for _, v := range rule.Score.Levels {
|
|
|
// if valueFloat >= v.Start && valueFloat <= v.End {
|
|
|
// valueDescrip = v.Name
|
|
|
// }
|
|
|
// }
|
|
|
for _, v := range rule.Score.Levels {
|
|
|
if valueFloat >= v.Start && valueFloat <= v.End {
|
|
|
valueDescrip = v.Name
|
|
|
}
|
|
|
}
|
|
|
return valueDescrip, nil
|
|
|
}
|
|
|
|
...
|
...
|
|