summary_evaluation_value.go
2.7 KB
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
package domain
import (
"fmt"
"strconv"
"time"
)
// 周期综合评估填写的内容
type SummaryEvaluationValue struct {
Id int `json:"id"` //
EvaluationItemId int `json:"evaluationItemId"` //评估条目的id
SummaryEvaluationId int `json:"summaryEvaluationId"` //综合评估任务(SummaryEvaluation)的id
Value string `json:"value"` //评估填写的评分
Score string `json:"score"` //评定得分
Types EvaluationType `json:"types"` //评估类型
Remark string `json:"remark"` //填写的内容反馈
Weight float64 `json:"weight"` //"权重"
CreatedAt time.Time `json:"createdAt"` //数据创建时间
UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
DeletedAt *time.Time `json:"deletedAt"` //数据删除时间
}
type SummaryEvaluationValueRepository interface {
Save(param *SummaryEvaluationValue) error
Remove(id int) error
FindOne(queryOptions map[string]interface{}) (*SummaryEvaluationValue, error)
Find(queryOptions map[string]interface{}) (int, []*SummaryEvaluationValue, error)
}
// 计算周期评估
// 当指标项没有权重的时候,还是进行评级操作,不计算分数
// 分数保留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) SumScore() (float64, error) {
if len(itemValue.Value) == 0 {
return 0, nil
}
if itemValue.Types == EvaluationHrbp {
valueFloat, err := strconv.ParseFloat(itemValue.Value, 64)
if err != nil {
return 0, fmt.Errorf("条目%d系数值异常,%s", itemValue.Id, itemValue.Value)
}
return valueFloat, nil
}
if itemValue.Weight == 0 {
return 0, 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) {
itemValue.EvaluationItemId = item.Id
itemValue.SummaryEvaluationId = evaluation.Id
itemValue.Value = ""
itemValue.Score = ""
itemValue.Remark = ""
itemValue.Types = evaluation.Types
itemValue.Weight = item.Weight
itemValue.CreatedAt = time.Now()
itemValue.UpdatedAt = time.Now()
}