作者 tangxvhui

更改 评级数量 汇总方式

package service
import (
"github.com/xuri/excelize/v2"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command"
)
// 导出数据
// 综合管理-周期评估
func (srv *SummaryEvaluationService) ExportAllEvaluationSuper(param *command.QueryEvaluationList) (*excelize.File, error) {
return nil, nil
}
... ...
... ... @@ -463,11 +463,14 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu
}
evaluationItemMap := map[int]*domain.EvaluationItemUsed{}
evaluationValueMap := map[int]*domain.SummaryEvaluationValue{}
evaluationData.TotalRating = nil //清空评级数量统计
for _, v := range itemList {
newValue := &domain.SummaryEvaluationValue{}
newValue.SetBlankValue(evaluationData, v)
evaluationValueMap[v.Id] = newValue
evaluationItemMap[v.Id] = v
//重置计数
evaluationData.ResetTotalRating(v)
}
for _, v := range itemValueList {
if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok {
... ... @@ -847,12 +850,15 @@ func (srv *SummaryEvaluationService) EditEvaluationSuper(param *command.EditEval
}
evaluationItemMap := map[int]*domain.EvaluationItemUsed{}
evaluationValueMap := map[int]*domain.SummaryEvaluationValue{}
evaluationData.TotalRating = nil //清空评级数量统计
for _, v := range itemList {
newValue := &domain.SummaryEvaluationValue{}
//初始一个空白的value
newValue.SetBlankValue(evaluationData, v)
evaluationValueMap[v.Id] = newValue
evaluationItemMap[v.Id] = v
//重置评级统计数量
evaluationData.ResetTotalRating(v)
}
for _, v := range itemValueList {
if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok {
... ...
... ... @@ -2,6 +2,9 @@ package service
import (
"fmt"
"strings"
"time"
"github.com/linmadan/egglib-go/core/application"
"github.com/linmadan/egglib-go/utils/tool_funs"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory"
... ... @@ -10,8 +13,6 @@ import (
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao"
"strings"
"time"
)
// Evaluation360List 获取360综评列表
... ... @@ -391,11 +392,14 @@ func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvalua
evaluationValueMap := map[int]*domain.SummaryEvaluationValue{}
evaluationItemMap := map[int]*domain.EvaluationItemUsed{}
summaryEvaluation.TotalRating = nil //清空评级数量统计
for i, v := range itemList {
newValue := &domain.SummaryEvaluationValue{}
newValue.SetBlankValue(summaryEvaluation, v)
evaluationValueMap[v.Id] = newValue
evaluationItemMap[v.Id] = itemList[i]
//重置计数
summaryEvaluation.ResetTotalRating(v)
}
for _, v := range itemValueList {
if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok {
... ... @@ -739,12 +743,14 @@ func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvalu
evaluationValueMap := map[int]*domain.SummaryEvaluationValue{}
evaluationItemMap := map[int]*domain.EvaluationItemUsed{}
summaryEvaluation.TotalRating = nil //清空评级数量统计
for i, v := range itemList {
newValue := &domain.SummaryEvaluationValue{}
newValue.SetBlankValue(summaryEvaluation, v)
evaluationValueMap[v.Id] = newValue
evaluationItemMap[v.Id] = itemList[i]
//重置计数
summaryEvaluation.ResetTotalRating(v)
}
for _, v := range itemValueList {
if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok {
... ...
... ... @@ -7,25 +7,32 @@ import (
// 周综合评估
type SummaryEvaluation struct {
Id int
CompanyId int //公司id
EvaluationProjectId int //对应的项目id
EvaluationProjectName string //对应的项目名称
CycleId int64 //对应的周期id
CycleName string //对应的周期名称
NodeId int //
TargetUser StaffDesc //被评估的目标用户,被执行的
TargetDepartment []StaffDepartment //被评估的目标用户所在的部门
Executor StaffDesc //填写评估的用户,执行人
Types EvaluationType //评估类型
Status EvaluationStatus //评估的填写状态
CheckResult EvaluationCheckResult //被执行的人确认评估结果
BeginTime time.Time //开始时间
EndTime time.Time //截止时间
TotalScore string //最终上级评估得分.
CreatedAt time.Time //数据创建时间
UpdatedAt time.Time //数据更新时间
DeletedAt *time.Time //数据删除时间
Id int `json:"id"`
CompanyId int `json:"companyId"` //公司id
EvaluationProjectId int `json:"evaluationProjectId"` //对应的项目id
EvaluationProjectName string `json:"evaluationProjectName"` //对应的项目名称
CycleId int64 `json:"cycleId"` //对应的周期id
CycleName string `json:"cycleName"` //对应的周期名称
NodeId int `json:"nodeId"` //对应的节点id
TargetUser StaffDesc `json:"targetUser"` //被评估的目标用户,被执行的
TargetDepartment []StaffDepartment `json:"targetDepartment"` //被评估的目标用户所在的部门
Executor StaffDesc `json:"executor"` //填写评估的用户,执行人
Types EvaluationType `json:"types"` //评估类型
Status EvaluationStatus `json:"status"` //评估的填写状态
CheckResult EvaluationCheckResult `json:"checkResult"` //被执行的人确认评估结果
BeginTime time.Time `json:"beginTime"` //开始时间
EndTime time.Time `json:"endTime"` //截止时间
TotalScore string `json:"totalScore"` //最终上级评估得分.
TotalRating []RatingCodeNumber `json:"totalRating"` //汇总各个评级的数量
CreatedAt time.Time `json:"createdAt"` //数据创建时间
UpdatedAt time.Time `json:"updatedAt"` //数据更新时间
DeletedAt *time.Time `json:"deletedAt"` //数据删除时间
}
// 各个评级的数量
type RatingCodeNumber struct {
Code string `json:"code"`
Number int `json:"number"`
}
type EvaluationType int //综合评估类型
... ... @@ -64,6 +71,9 @@ type SummaryEvaluationRepository interface {
func (evaluation *SummaryEvaluation) EvaluationTotalScore(valueList []*SummaryEvaluationValue) error {
var totalScore float64
for _, v := range valueList {
if v.Weight == 0 {
evaluation.SumRatingCode(v.Rating.Code)
} else {
score, err := v.SumScore()
if err != nil {
return err
... ... @@ -71,6 +81,42 @@ func (evaluation *SummaryEvaluation) EvaluationTotalScore(valueList []*SummaryEv
totalScore += score
}
}
evaluation.TotalScore = fmt.Sprintf("%.1f", totalScore)
return nil
}
// 重置评级统计数量
func (evaluation *SummaryEvaluation) ResetTotalRating(param *EvaluationItemUsed) {
if param.Weight > 0 {
return
}
if len(evaluation.TotalRating) == 0 {
evaluation.TotalRating = make([]RatingCodeNumber, 0)
}
for _, v := range param.Rule.Rating.Levels {
isExist := false
for i2, v2 := range evaluation.TotalRating {
if v.Code == v2.Code {
isExist = true
evaluation.TotalRating[i2].Number = 0
}
}
if !isExist {
evaluation.TotalRating = append(evaluation.TotalRating, RatingCodeNumber{
Code: v.Code,
Number: 0,
})
}
}
}
// 增加对应评级的数量
func (evaluation *SummaryEvaluation) SumRatingCode(code string) {
for i := range evaluation.TotalRating {
if evaluation.TotalRating[i].Code == code {
evaluation.TotalRating[i].Number += 1
break
}
}
}
... ...
... ... @@ -15,6 +15,7 @@ type SummaryEvaluation struct {
EvaluationProjectName string //对应的项目名称
CycleId int64 //对应的周期id
CycleName string //对应的周期名称
NodeId int //对应的节点id
TargetUser domain.StaffDesc //被评估的目标用户,被执行的
TargetDepartment []domain.StaffDepartment //被评估的目标用户所在的部门
Executor domain.StaffDesc //填写评估的用户,执行人
... ... @@ -24,6 +25,7 @@ type SummaryEvaluation struct {
BeginTime time.Time //开始时间
EndTime time.Time //截止时间
TotalScore string //最终上级评估得分.
TotalRating []domain.RatingCodeNumber //汇总评级
CreatedAt time.Time //数据创建时间
UpdatedAt time.Time //数据更新时间
DeletedAt *time.Time //数据删除时间
... ...
... ... @@ -38,6 +38,7 @@ func (repo *SummaryEvaluationRepository) TransformToDomain(d *models.SummaryEval
BeginTime: d.BeginTime,
EndTime: d.EndTime,
TotalScore: d.TotalScore,
TotalRating: d.TotalRating,
CreatedAt: d.CreatedAt,
UpdatedAt: d.UpdatedAt,
DeletedAt: d.DeletedAt,
... ... @@ -52,6 +53,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e
EvaluationProjectName: param.EvaluationProjectName,
CycleId: param.CycleId,
CycleName: param.CycleName,
NodeId: param.NodeId,
TargetUser: param.TargetUser,
TargetDepartment: param.TargetDepartment,
Executor: param.Executor,
... ... @@ -61,6 +63,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e
BeginTime: param.BeginTime,
EndTime: param.EndTime,
TotalScore: param.TotalScore,
TotalRating: param.TotalRating,
CreatedAt: param.CreatedAt,
UpdatedAt: param.UpdatedAt,
DeletedAt: param.DeletedAt,
... ...