正在显示
6 个修改的文件
包含
121 行增加
和
46 行删除
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/xuri/excelize/v2" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +// 导出数据 | ||
| 9 | +// 综合管理-周期评估 | ||
| 10 | +func (srv *SummaryEvaluationService) ExportAllEvaluationSuper(param *command.QueryEvaluationList) (*excelize.File, error) { | ||
| 11 | + return nil, nil | ||
| 12 | +} |
| @@ -463,11 +463,14 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -463,11 +463,14 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 463 | } | 463 | } |
| 464 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} | 464 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} |
| 465 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} | 465 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} |
| 466 | + evaluationData.TotalRating = nil //清空评级数量统计 | ||
| 466 | for _, v := range itemList { | 467 | for _, v := range itemList { |
| 467 | newValue := &domain.SummaryEvaluationValue{} | 468 | newValue := &domain.SummaryEvaluationValue{} |
| 468 | newValue.SetBlankValue(evaluationData, v) | 469 | newValue.SetBlankValue(evaluationData, v) |
| 469 | evaluationValueMap[v.Id] = newValue | 470 | evaluationValueMap[v.Id] = newValue |
| 470 | evaluationItemMap[v.Id] = v | 471 | evaluationItemMap[v.Id] = v |
| 472 | + //重置计数 | ||
| 473 | + evaluationData.ResetTotalRating(v) | ||
| 471 | } | 474 | } |
| 472 | for _, v := range itemValueList { | 475 | for _, v := range itemValueList { |
| 473 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { | 476 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { |
| @@ -847,12 +850,15 @@ func (srv *SummaryEvaluationService) EditEvaluationSuper(param *command.EditEval | @@ -847,12 +850,15 @@ func (srv *SummaryEvaluationService) EditEvaluationSuper(param *command.EditEval | ||
| 847 | } | 850 | } |
| 848 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} | 851 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} |
| 849 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} | 852 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} |
| 853 | + evaluationData.TotalRating = nil //清空评级数量统计 | ||
| 850 | for _, v := range itemList { | 854 | for _, v := range itemList { |
| 851 | newValue := &domain.SummaryEvaluationValue{} | 855 | newValue := &domain.SummaryEvaluationValue{} |
| 852 | //初始一个空白的value | 856 | //初始一个空白的value |
| 853 | newValue.SetBlankValue(evaluationData, v) | 857 | newValue.SetBlankValue(evaluationData, v) |
| 854 | evaluationValueMap[v.Id] = newValue | 858 | evaluationValueMap[v.Id] = newValue |
| 855 | evaluationItemMap[v.Id] = v | 859 | evaluationItemMap[v.Id] = v |
| 860 | + //重置评级统计数量 | ||
| 861 | + evaluationData.ResetTotalRating(v) | ||
| 856 | } | 862 | } |
| 857 | for _, v := range itemValueList { | 863 | for _, v := range itemValueList { |
| 858 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { | 864 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { |
| @@ -2,6 +2,9 @@ package service | @@ -2,6 +2,9 @@ package service | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "strings" | ||
| 6 | + "time" | ||
| 7 | + | ||
| 5 | "github.com/linmadan/egglib-go/core/application" | 8 | "github.com/linmadan/egglib-go/core/application" |
| 6 | "github.com/linmadan/egglib-go/utils/tool_funs" | 9 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| @@ -10,8 +13,6 @@ import ( | @@ -10,8 +13,6 @@ import ( | ||
| 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | 13 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" |
| 11 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" |
| 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" |
| 13 | - "strings" | ||
| 14 | - "time" | ||
| 15 | ) | 16 | ) |
| 16 | 17 | ||
| 17 | // Evaluation360List 获取360综评列表 | 18 | // Evaluation360List 获取360综评列表 |
| @@ -391,11 +392,14 @@ func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvalua | @@ -391,11 +392,14 @@ func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvalua | ||
| 391 | 392 | ||
| 392 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} | 393 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} |
| 393 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} | 394 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} |
| 395 | + summaryEvaluation.TotalRating = nil //清空评级数量统计 | ||
| 394 | for i, v := range itemList { | 396 | for i, v := range itemList { |
| 395 | newValue := &domain.SummaryEvaluationValue{} | 397 | newValue := &domain.SummaryEvaluationValue{} |
| 396 | newValue.SetBlankValue(summaryEvaluation, v) | 398 | newValue.SetBlankValue(summaryEvaluation, v) |
| 397 | evaluationValueMap[v.Id] = newValue | 399 | evaluationValueMap[v.Id] = newValue |
| 398 | evaluationItemMap[v.Id] = itemList[i] | 400 | evaluationItemMap[v.Id] = itemList[i] |
| 401 | + //重置计数 | ||
| 402 | + summaryEvaluation.ResetTotalRating(v) | ||
| 399 | } | 403 | } |
| 400 | for _, v := range itemValueList { | 404 | for _, v := range itemValueList { |
| 401 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { | 405 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { |
| @@ -739,12 +743,14 @@ func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvalu | @@ -739,12 +743,14 @@ func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvalu | ||
| 739 | 743 | ||
| 740 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} | 744 | evaluationValueMap := map[int]*domain.SummaryEvaluationValue{} |
| 741 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} | 745 | evaluationItemMap := map[int]*domain.EvaluationItemUsed{} |
| 742 | - | 746 | + summaryEvaluation.TotalRating = nil //清空评级数量统计 |
| 743 | for i, v := range itemList { | 747 | for i, v := range itemList { |
| 744 | newValue := &domain.SummaryEvaluationValue{} | 748 | newValue := &domain.SummaryEvaluationValue{} |
| 745 | newValue.SetBlankValue(summaryEvaluation, v) | 749 | newValue.SetBlankValue(summaryEvaluation, v) |
| 746 | evaluationValueMap[v.Id] = newValue | 750 | evaluationValueMap[v.Id] = newValue |
| 747 | evaluationItemMap[v.Id] = itemList[i] | 751 | evaluationItemMap[v.Id] = itemList[i] |
| 752 | + //重置计数 | ||
| 753 | + summaryEvaluation.ResetTotalRating(v) | ||
| 748 | } | 754 | } |
| 749 | for _, v := range itemValueList { | 755 | for _, v := range itemValueList { |
| 750 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { | 756 | if mValue, ok := evaluationValueMap[v.EvaluationItemId]; ok { |
| @@ -7,25 +7,32 @@ import ( | @@ -7,25 +7,32 @@ import ( | ||
| 7 | 7 | ||
| 8 | // 周综合评估 | 8 | // 周综合评估 |
| 9 | type SummaryEvaluation struct { | 9 | type SummaryEvaluation struct { |
| 10 | - Id int | ||
| 11 | - CompanyId int //公司id | ||
| 12 | - EvaluationProjectId int //对应的项目id | ||
| 13 | - EvaluationProjectName string //对应的项目名称 | ||
| 14 | - CycleId int64 //对应的周期id | ||
| 15 | - CycleName string //对应的周期名称 | ||
| 16 | - NodeId int // | ||
| 17 | - TargetUser StaffDesc //被评估的目标用户,被执行的 | ||
| 18 | - TargetDepartment []StaffDepartment //被评估的目标用户所在的部门 | ||
| 19 | - Executor StaffDesc //填写评估的用户,执行人 | ||
| 20 | - Types EvaluationType //评估类型 | ||
| 21 | - Status EvaluationStatus //评估的填写状态 | ||
| 22 | - CheckResult EvaluationCheckResult //被执行的人确认评估结果 | ||
| 23 | - BeginTime time.Time //开始时间 | ||
| 24 | - EndTime time.Time //截止时间 | ||
| 25 | - TotalScore string //最终上级评估得分. | ||
| 26 | - CreatedAt time.Time //数据创建时间 | ||
| 27 | - UpdatedAt time.Time //数据更新时间 | ||
| 28 | - DeletedAt *time.Time //数据删除时间 | 10 | + Id int `json:"id"` |
| 11 | + CompanyId int `json:"companyId"` //公司id | ||
| 12 | + EvaluationProjectId int `json:"evaluationProjectId"` //对应的项目id | ||
| 13 | + EvaluationProjectName string `json:"evaluationProjectName"` //对应的项目名称 | ||
| 14 | + CycleId int64 `json:"cycleId"` //对应的周期id | ||
| 15 | + CycleName string `json:"cycleName"` //对应的周期名称 | ||
| 16 | + NodeId int `json:"nodeId"` //对应的节点id | ||
| 17 | + TargetUser StaffDesc `json:"targetUser"` //被评估的目标用户,被执行的 | ||
| 18 | + TargetDepartment []StaffDepartment `json:"targetDepartment"` //被评估的目标用户所在的部门 | ||
| 19 | + Executor StaffDesc `json:"executor"` //填写评估的用户,执行人 | ||
| 20 | + Types EvaluationType `json:"types"` //评估类型 | ||
| 21 | + Status EvaluationStatus `json:"status"` //评估的填写状态 | ||
| 22 | + CheckResult EvaluationCheckResult `json:"checkResult"` //被执行的人确认评估结果 | ||
| 23 | + BeginTime time.Time `json:"beginTime"` //开始时间 | ||
| 24 | + EndTime time.Time `json:"endTime"` //截止时间 | ||
| 25 | + TotalScore string `json:"totalScore"` //最终上级评估得分. | ||
| 26 | + TotalRating []RatingCodeNumber `json:"totalRating"` //汇总各个评级的数量 | ||
| 27 | + CreatedAt time.Time `json:"createdAt"` //数据创建时间 | ||
| 28 | + UpdatedAt time.Time `json:"updatedAt"` //数据更新时间 | ||
| 29 | + DeletedAt *time.Time `json:"deletedAt"` //数据删除时间 | ||
| 30 | +} | ||
| 31 | + | ||
| 32 | +// 各个评级的数量 | ||
| 33 | +type RatingCodeNumber struct { | ||
| 34 | + Code string `json:"code"` | ||
| 35 | + Number int `json:"number"` | ||
| 29 | } | 36 | } |
| 30 | 37 | ||
| 31 | type EvaluationType int //综合评估类型 | 38 | type EvaluationType int //综合评估类型 |
| @@ -64,13 +71,52 @@ type SummaryEvaluationRepository interface { | @@ -64,13 +71,52 @@ type SummaryEvaluationRepository interface { | ||
| 64 | func (evaluation *SummaryEvaluation) EvaluationTotalScore(valueList []*SummaryEvaluationValue) error { | 71 | func (evaluation *SummaryEvaluation) EvaluationTotalScore(valueList []*SummaryEvaluationValue) error { |
| 65 | var totalScore float64 | 72 | var totalScore float64 |
| 66 | for _, v := range valueList { | 73 | for _, v := range valueList { |
| 67 | - score, err := v.SumScore() | ||
| 68 | - if err != nil { | ||
| 69 | - return err | ||
| 70 | - } | 74 | + if v.Weight == 0 { |
| 75 | + evaluation.SumRatingCode(v.Rating.Code) | ||
| 76 | + } else { | ||
| 77 | + score, err := v.SumScore() | ||
| 78 | + if err != nil { | ||
| 79 | + return err | ||
| 80 | + } | ||
| 71 | 81 | ||
| 72 | - totalScore += score | 82 | + totalScore += score |
| 83 | + } | ||
| 73 | } | 84 | } |
| 74 | evaluation.TotalScore = fmt.Sprintf("%.1f", totalScore) | 85 | evaluation.TotalScore = fmt.Sprintf("%.1f", totalScore) |
| 75 | return nil | 86 | return nil |
| 76 | } | 87 | } |
| 88 | + | ||
| 89 | +// 重置评级统计数量 | ||
| 90 | +func (evaluation *SummaryEvaluation) ResetTotalRating(param *EvaluationItemUsed) { | ||
| 91 | + if param.Weight > 0 { | ||
| 92 | + return | ||
| 93 | + } | ||
| 94 | + if len(evaluation.TotalRating) == 0 { | ||
| 95 | + evaluation.TotalRating = make([]RatingCodeNumber, 0) | ||
| 96 | + } | ||
| 97 | + for _, v := range param.Rule.Rating.Levels { | ||
| 98 | + isExist := false | ||
| 99 | + for i2, v2 := range evaluation.TotalRating { | ||
| 100 | + if v.Code == v2.Code { | ||
| 101 | + isExist = true | ||
| 102 | + evaluation.TotalRating[i2].Number = 0 | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | + if !isExist { | ||
| 106 | + evaluation.TotalRating = append(evaluation.TotalRating, RatingCodeNumber{ | ||
| 107 | + Code: v.Code, | ||
| 108 | + Number: 0, | ||
| 109 | + }) | ||
| 110 | + } | ||
| 111 | + } | ||
| 112 | +} | ||
| 113 | + | ||
| 114 | +// 增加对应评级的数量 | ||
| 115 | +func (evaluation *SummaryEvaluation) SumRatingCode(code string) { | ||
| 116 | + for i := range evaluation.TotalRating { | ||
| 117 | + if evaluation.TotalRating[i].Code == code { | ||
| 118 | + evaluation.TotalRating[i].Number += 1 | ||
| 119 | + break | ||
| 120 | + } | ||
| 121 | + } | ||
| 122 | +} |
| @@ -8,23 +8,25 @@ import ( | @@ -8,23 +8,25 @@ import ( | ||
| 8 | 8 | ||
| 9 | // 周综合评估 | 9 | // 周综合评估 |
| 10 | type SummaryEvaluation struct { | 10 | type SummaryEvaluation struct { |
| 11 | - tableName struct{} `comment:"周综合评估" pg:"summary_evaluation"` | ||
| 12 | - Id int `pg:",pk"` | ||
| 13 | - CompanyId int //公司id | ||
| 14 | - EvaluationProjectId int //对应的项目id | ||
| 15 | - EvaluationProjectName string //对应的项目名称 | ||
| 16 | - CycleId int64 //对应的周期id | ||
| 17 | - CycleName string //对应的周期名称 | ||
| 18 | - TargetUser domain.StaffDesc //被评估的目标用户,被执行的 | ||
| 19 | - TargetDepartment []domain.StaffDepartment //被评估的目标用户所在的部门 | ||
| 20 | - Executor domain.StaffDesc //填写评估的用户,执行人 | ||
| 21 | - Types int //评估类型 | ||
| 22 | - Status string //评估的填写状态 | ||
| 23 | - CheckResult string //被执行的人确认评估结果 | ||
| 24 | - BeginTime time.Time //开始时间 | ||
| 25 | - EndTime time.Time //截止时间 | ||
| 26 | - TotalScore string //最终上级评估得分. | ||
| 27 | - CreatedAt time.Time //数据创建时间 | ||
| 28 | - UpdatedAt time.Time //数据更新时间 | ||
| 29 | - DeletedAt *time.Time //数据删除时间 | 11 | + tableName struct{} `comment:"周综合评估" pg:"summary_evaluation"` |
| 12 | + Id int `pg:",pk"` | ||
| 13 | + CompanyId int //公司id | ||
| 14 | + EvaluationProjectId int //对应的项目id | ||
| 15 | + EvaluationProjectName string //对应的项目名称 | ||
| 16 | + CycleId int64 //对应的周期id | ||
| 17 | + CycleName string //对应的周期名称 | ||
| 18 | + NodeId int //对应的节点id | ||
| 19 | + TargetUser domain.StaffDesc //被评估的目标用户,被执行的 | ||
| 20 | + TargetDepartment []domain.StaffDepartment //被评估的目标用户所在的部门 | ||
| 21 | + Executor domain.StaffDesc //填写评估的用户,执行人 | ||
| 22 | + Types int //评估类型 | ||
| 23 | + Status string //评估的填写状态 | ||
| 24 | + CheckResult string //被执行的人确认评估结果 | ||
| 25 | + BeginTime time.Time //开始时间 | ||
| 26 | + EndTime time.Time //截止时间 | ||
| 27 | + TotalScore string //最终上级评估得分. | ||
| 28 | + TotalRating []domain.RatingCodeNumber //汇总评级 | ||
| 29 | + CreatedAt time.Time //数据创建时间 | ||
| 30 | + UpdatedAt time.Time //数据更新时间 | ||
| 31 | + DeletedAt *time.Time //数据删除时间 | ||
| 30 | } | 32 | } |
| @@ -38,6 +38,7 @@ func (repo *SummaryEvaluationRepository) TransformToDomain(d *models.SummaryEval | @@ -38,6 +38,7 @@ func (repo *SummaryEvaluationRepository) TransformToDomain(d *models.SummaryEval | ||
| 38 | BeginTime: d.BeginTime, | 38 | BeginTime: d.BeginTime, |
| 39 | EndTime: d.EndTime, | 39 | EndTime: d.EndTime, |
| 40 | TotalScore: d.TotalScore, | 40 | TotalScore: d.TotalScore, |
| 41 | + TotalRating: d.TotalRating, | ||
| 41 | CreatedAt: d.CreatedAt, | 42 | CreatedAt: d.CreatedAt, |
| 42 | UpdatedAt: d.UpdatedAt, | 43 | UpdatedAt: d.UpdatedAt, |
| 43 | DeletedAt: d.DeletedAt, | 44 | DeletedAt: d.DeletedAt, |
| @@ -52,6 +53,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e | @@ -52,6 +53,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e | ||
| 52 | EvaluationProjectName: param.EvaluationProjectName, | 53 | EvaluationProjectName: param.EvaluationProjectName, |
| 53 | CycleId: param.CycleId, | 54 | CycleId: param.CycleId, |
| 54 | CycleName: param.CycleName, | 55 | CycleName: param.CycleName, |
| 56 | + NodeId: param.NodeId, | ||
| 55 | TargetUser: param.TargetUser, | 57 | TargetUser: param.TargetUser, |
| 56 | TargetDepartment: param.TargetDepartment, | 58 | TargetDepartment: param.TargetDepartment, |
| 57 | Executor: param.Executor, | 59 | Executor: param.Executor, |
| @@ -61,6 +63,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e | @@ -61,6 +63,7 @@ func (repo *SummaryEvaluationRepository) Save(param *domain.SummaryEvaluation) e | ||
| 61 | BeginTime: param.BeginTime, | 63 | BeginTime: param.BeginTime, |
| 62 | EndTime: param.EndTime, | 64 | EndTime: param.EndTime, |
| 63 | TotalScore: param.TotalScore, | 65 | TotalScore: param.TotalScore, |
| 66 | + TotalRating: param.TotalRating, | ||
| 64 | CreatedAt: param.CreatedAt, | 67 | CreatedAt: param.CreatedAt, |
| 65 | UpdatedAt: param.UpdatedAt, | 68 | UpdatedAt: param.UpdatedAt, |
| 66 | DeletedAt: param.DeletedAt, | 69 | DeletedAt: param.DeletedAt, |
-
请 注册 或 登录 后发表评论