正在显示
5 个修改的文件
包含
707 行增加
和
367 行删除
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "github.com/linmadan/egglib-go/core/application" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
| 6 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
| 9 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/xredis" | ||
| 10 | +) | ||
| 11 | + | ||
| 12 | +// EditEvaluation360 编辑提交360综评 | ||
| 13 | +func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { | ||
| 14 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 15 | + if err != nil { | ||
| 16 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 17 | + } | ||
| 18 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 19 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 20 | + } | ||
| 21 | + defer func() { | ||
| 22 | + _ = transactionContext.RollbackTransaction() | ||
| 23 | + }() | ||
| 24 | + evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 25 | + itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 26 | + itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 27 | + | ||
| 28 | + summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 29 | + if err != nil { | ||
| 30 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 31 | + } | ||
| 32 | + if summaryEvaluation.Executor.UserId != param.ExecutorId { | ||
| 33 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 34 | + } | ||
| 35 | + if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 36 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 37 | + } | ||
| 38 | + // 按照 被评估人加锁 | ||
| 39 | + lock := xredis.NewLockSummaryEvaluation(summaryEvaluation.TargetUser.UserId) | ||
| 40 | + err = lock.Lock() | ||
| 41 | + if err != nil { | ||
| 42 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 43 | + } | ||
| 44 | + defer func() { | ||
| 45 | + lock.UnLock() | ||
| 46 | + }() | ||
| 47 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 48 | + "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 49 | + "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 50 | + "cycleId": summaryEvaluation.CycleId, | ||
| 51 | + "limit": 1, | ||
| 52 | + }) | ||
| 53 | + if err != nil { | ||
| 54 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 55 | + } | ||
| 56 | + // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 57 | + if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 58 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 59 | + } | ||
| 60 | + | ||
| 61 | + // 自评评估内容(自评模板、筛选项目评估人) | ||
| 62 | + _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 63 | + "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 64 | + "nodeType": domain.LinkNodeSelfAssessment, | ||
| 65 | + "evaluatorId": param.ExecutorId, | ||
| 66 | + }) | ||
| 67 | + if err != nil { | ||
| 68 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + // 评估内容对应的分数 | ||
| 72 | + _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 73 | + if err != nil { | ||
| 74 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 78 | + if err != nil { | ||
| 79 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 80 | + } | ||
| 81 | + if !param.IsTemporary { | ||
| 82 | + //变更评估状态为已填写 | ||
| 83 | + summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + //保存填写值 | ||
| 87 | + for _, v := range itemValueList { | ||
| 88 | + err = itemValueRepo.Save(v) | ||
| 89 | + if err != nil { | ||
| 90 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 91 | + } | ||
| 92 | + } | ||
| 93 | + | ||
| 94 | + //保存填写值 | ||
| 95 | + err = evaluationRepo.Save(summaryEvaluation) | ||
| 96 | + if err != nil { | ||
| 97 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 98 | + } | ||
| 99 | + if !param.IsTemporary { | ||
| 100 | + err = srv.AfterCompletedEvaluation360Hrbp(transactionContext, summaryEvaluation) | ||
| 101 | + if err != nil { | ||
| 102 | + return nil, err | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 106 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 107 | + } | ||
| 108 | + itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 109 | + return map[string][]adapter.EvaluationItemAdapter{ | ||
| 110 | + "evaluationItems": itemValueAdapter, | ||
| 111 | + }, nil | ||
| 112 | +} |
| 1 | +package service | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "time" | ||
| 5 | + | ||
| 6 | + "github.com/linmadan/egglib-go/core/application" | ||
| 7 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
| 8 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/notify" | ||
| 9 | + roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" | ||
| 10 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" | ||
| 11 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | ||
| 12 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
| 13 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | ||
| 14 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/xredis" | ||
| 15 | +) | ||
| 16 | + | ||
| 17 | +// EditEvaluationHRBP 编辑提交人资综评 | ||
| 18 | +func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { | ||
| 19 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 20 | + if err != nil { | ||
| 21 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 22 | + } | ||
| 23 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 24 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 25 | + } | ||
| 26 | + defer func() { | ||
| 27 | + _ = transactionContext.RollbackTransaction() | ||
| 28 | + }() | ||
| 29 | + | ||
| 30 | + userRepo := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 31 | + evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 32 | + itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 33 | + itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 34 | + | ||
| 35 | + // 必须是HRBP权限的人才能编辑操作 | ||
| 36 | + hrbp, err := roleService.GetHrBp(transactionContext, param.CompanyId, param.ExecutorId) | ||
| 37 | + if err != nil { | ||
| 38 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 39 | + } | ||
| 40 | + if hrbp != domain.RoleTypeSystem { | ||
| 41 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 42 | + } | ||
| 43 | + | ||
| 44 | + summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 45 | + if err != nil { | ||
| 46 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 47 | + } | ||
| 48 | + if summaryEvaluation.Types != domain.EvaluationHrbp { | ||
| 49 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 50 | + } | ||
| 51 | + if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 52 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 53 | + } | ||
| 54 | + // 按照 被评估人加锁 | ||
| 55 | + lock := xredis.NewLockSummaryEvaluation(summaryEvaluation.TargetUser.UserId) | ||
| 56 | + err = lock.Lock() | ||
| 57 | + if err != nil { | ||
| 58 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 59 | + } | ||
| 60 | + defer func() { | ||
| 61 | + lock.UnLock() | ||
| 62 | + }() | ||
| 63 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 64 | + "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 65 | + "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 66 | + "cycleId": summaryEvaluation.CycleId, | ||
| 67 | + "limit": 1, | ||
| 68 | + }) | ||
| 69 | + if err != nil { | ||
| 70 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 71 | + } | ||
| 72 | + // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 73 | + if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 74 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 75 | + } | ||
| 76 | + | ||
| 77 | + // 自评评估内容(自评模板、筛选项目评估人) | ||
| 78 | + _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 79 | + "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 80 | + "nodeType": domain.LinkNodeSelfAssessment, | ||
| 81 | + "evaluatorId": -1, | ||
| 82 | + }) | ||
| 83 | + if err != nil { | ||
| 84 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + // 评估内容对应的分数 | ||
| 88 | + _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 89 | + if err != nil { | ||
| 90 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 91 | + } | ||
| 92 | + | ||
| 93 | + err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 94 | + if err != nil { | ||
| 95 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 96 | + } | ||
| 97 | + if !param.IsTemporary { | ||
| 98 | + //变更评估状态为已填写 | ||
| 99 | + summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 100 | + } | ||
| 101 | + //保存填写值 | ||
| 102 | + for _, v := range itemValueList { | ||
| 103 | + err = itemValueRepo.Save(v) | ||
| 104 | + if err != nil { | ||
| 105 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 106 | + } | ||
| 107 | + } | ||
| 108 | + | ||
| 109 | + // 针对HRBP类型,更新最后一次操作的HRBP人 | ||
| 110 | + user, err := userRepo.FindOne(map[string]interface{}{"id": param.ExecutorId}) | ||
| 111 | + if err != nil { | ||
| 112 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 113 | + } | ||
| 114 | + summaryEvaluation.Executor.UserId = param.ExecutorId | ||
| 115 | + summaryEvaluation.Executor.Account = user.Account | ||
| 116 | + summaryEvaluation.Executor.UserName = user.Name | ||
| 117 | + summaryEvaluation.Executor.CompanyName = "" // 暂时无用 | ||
| 118 | + summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 119 | + | ||
| 120 | + //保存填写值 | ||
| 121 | + err = evaluationRepo.Save(summaryEvaluation) | ||
| 122 | + if err != nil { | ||
| 123 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 124 | + } | ||
| 125 | + if !param.IsTemporary { | ||
| 126 | + err = srv.AfterCompletedEvaluation360Hrbp(transactionContext, summaryEvaluation) | ||
| 127 | + if err != nil { | ||
| 128 | + return nil, err | ||
| 129 | + } | ||
| 130 | + } | ||
| 131 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 132 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 133 | + } | ||
| 134 | + | ||
| 135 | + itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 136 | + return map[string][]adapter.EvaluationItemAdapter{ | ||
| 137 | + "evaluationItems": itemValueAdapter, | ||
| 138 | + }, nil | ||
| 139 | +} | ||
| 140 | + | ||
| 141 | +// 提交员工的人资评估 或者 360 评估 | ||
| 142 | +// 变更上级评估的开始时间 | ||
| 143 | +// 或者生成考核结果 | ||
| 144 | +func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp( | ||
| 145 | + transactionContext application.TransactionContext, | ||
| 146 | + evaluationData *domain.SummaryEvaluation, | ||
| 147 | +) error { | ||
| 148 | + evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{ | ||
| 149 | + "transactionContext": transactionContext, | ||
| 150 | + }) | ||
| 151 | + _, evaluation360HrbList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 152 | + "targetUserId": evaluationData.TargetUser.UserId, | ||
| 153 | + "typesList": []int{int(domain.Evaluation360), int(domain.EvaluationHrbp)}, | ||
| 154 | + "cycleId": evaluationData.CycleId, | ||
| 155 | + "limit": 1000, | ||
| 156 | + }) | ||
| 157 | + if err != nil { | ||
| 158 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 159 | + } | ||
| 160 | + allCompleted := true | ||
| 161 | + for _, v := range evaluation360HrbList { | ||
| 162 | + if v.Status == domain.EvaluationUncompleted { | ||
| 163 | + allCompleted = false | ||
| 164 | + break | ||
| 165 | + } | ||
| 166 | + } | ||
| 167 | + if !allCompleted { | ||
| 168 | + return nil | ||
| 169 | + } | ||
| 170 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 171 | + "targetUserId": evaluationData.TargetUser.UserId, | ||
| 172 | + "typesList": []int{int(domain.EvaluationSuper)}, | ||
| 173 | + "cycleId": evaluationData.CycleId, | ||
| 174 | + "limit": 1, | ||
| 175 | + }) | ||
| 176 | + if err != nil { | ||
| 177 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 178 | + } | ||
| 179 | + nowTime := time.Now() | ||
| 180 | + updatedId := []int{} | ||
| 181 | + // 变更上级评估的开始时间 | ||
| 182 | + for _, v := range evaluationList { | ||
| 183 | + if v.BeginTime.After(nowTime) { | ||
| 184 | + v.BeginTime = nowTime | ||
| 185 | + updatedId = append(updatedId, v.Id) | ||
| 186 | + } | ||
| 187 | + } | ||
| 188 | + evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{ | ||
| 189 | + "transactionContext": transactionContext, | ||
| 190 | + }) | ||
| 191 | + err = evaluationDao.UpdateBeginTime(updatedId, nowTime) | ||
| 192 | + if err != nil { | ||
| 193 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 194 | + } | ||
| 195 | + if len(evaluationList) == 0 { | ||
| 196 | + //没有上级评估 | ||
| 197 | + //直接进入考核结果阶段 | ||
| 198 | + _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 199 | + "targetUserId": evaluationData.TargetUser.UserId, | ||
| 200 | + "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 201 | + "cycleId": evaluationData.CycleId, | ||
| 202 | + "limit": 1, | ||
| 203 | + }) | ||
| 204 | + if err != nil { | ||
| 205 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 206 | + } | ||
| 207 | + if len(evaluationFinishList) > 0 { | ||
| 208 | + if evaluationFinishList[0].BeginTime.After(nowTime) { | ||
| 209 | + evaluationFinishList[0].BeginTime = nowTime | ||
| 210 | + } | ||
| 211 | + evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
| 212 | + err = evaluationRepo.Save(evaluationFinishList[0]) | ||
| 213 | + if err != nil { | ||
| 214 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | ||
| 215 | + } | ||
| 216 | + //添加确认绩效成绩提醒短信提醒 | ||
| 217 | + err = notify.AddNotifyConfirmEvaluationScore(evaluationFinishList[0]) | ||
| 218 | + if err != nil { | ||
| 219 | + return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) | ||
| 220 | + } | ||
| 221 | + } | ||
| 222 | + | ||
| 223 | + } | ||
| 224 | + return nil | ||
| 225 | +} |
| @@ -51,6 +51,7 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -51,6 +51,7 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 51 | if evaluationData.CompanyId != param.CompanyId { | 51 | if evaluationData.CompanyId != param.CompanyId { |
| 52 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | 52 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") |
| 53 | } | 53 | } |
| 54 | + //按照 被评估人加锁 | ||
| 54 | lock := xredis.NewLockSummaryEvaluation(evaluationData.TargetUser.UserId) | 55 | lock := xredis.NewLockSummaryEvaluation(evaluationData.TargetUser.UserId) |
| 55 | err = lock.Lock() | 56 | err = lock.Lock() |
| 56 | if err != nil { | 57 | if err != nil { |
| @@ -66,7 +67,6 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -66,7 +67,6 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 66 | if err != nil { | 67 | if err != nil { |
| 67 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 68 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 68 | } | 69 | } |
| 69 | - | ||
| 70 | _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{ | 70 | _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{ |
| 71 | "summaryEvaluationId": evaluationData.Id, | 71 | "summaryEvaluationId": evaluationData.Id, |
| 72 | }) | 72 | }) |
| @@ -80,13 +80,6 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -80,13 +80,6 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 80 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 80 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| 81 | } | 81 | } |
| 82 | 82 | ||
| 83 | - //保存填写值 | ||
| 84 | - for _, v := range itemValueList { | ||
| 85 | - err = itemValueRepo.Save(v) | ||
| 86 | - if err != nil { | ||
| 87 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 88 | - } | ||
| 89 | - } | ||
| 90 | if !param.IsTemporary { | 83 | if !param.IsTemporary { |
| 91 | evaluationData.Status = domain.EvaluationCompleted | 84 | evaluationData.Status = domain.EvaluationCompleted |
| 92 | //删除旧的填写值,使用新的填写内容 | 85 | //删除旧的填写值,使用新的填写内容 |
| @@ -102,6 +95,13 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -102,6 +95,13 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 102 | if err != nil { | 95 | if err != nil { |
| 103 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 96 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 104 | } | 97 | } |
| 98 | + //保存填写值 | ||
| 99 | + for _, v := range itemValueList { | ||
| 100 | + err = itemValueRepo.Save(v) | ||
| 101 | + if err != nil { | ||
| 102 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 103 | + } | ||
| 104 | + } | ||
| 105 | if !param.IsTemporary { | 105 | if !param.IsTemporary { |
| 106 | err = srv.AfterCompletedEvaluationSelf(transactionContext, evaluationData, itemValueList) | 106 | err = srv.AfterCompletedEvaluationSelf(transactionContext, evaluationData, itemValueList) |
| 107 | if err != nil { | 107 | if err != nil { |
| @@ -117,11 +117,11 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | @@ -117,11 +117,11 @@ func (srv *SummaryEvaluationService) EditEvaluationSelf(param *command.EditEvalu | ||
| 117 | }, nil | 117 | }, nil |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | -// 员工提交自评内容后, | ||
| 121 | -// 员工作为被评估人, | ||
| 122 | -// 变更360评估/人资评估/的开始时间 | ||
| 123 | -// 或者变更上级评估的开始时间 | ||
| 124 | -// 或者生成考核结果 | 120 | +// 员工提交自评内容后,员工作为被评估人, |
| 121 | +// 变更360评估/人资评估/的开始时间 或者变更上级评估的开始时间 | ||
| 122 | +// evaluationData 综合自评 | ||
| 123 | +// evaluationValue 自评的填写内容 | ||
| 124 | + | ||
| 125 | func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( | 125 | func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( |
| 126 | transactionContext application.TransactionContext, | 126 | transactionContext application.TransactionContext, |
| 127 | evaluationData *domain.SummaryEvaluation, | 127 | evaluationData *domain.SummaryEvaluation, |
| @@ -132,29 +132,32 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( | @@ -132,29 +132,32 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( | ||
| 132 | }) | 132 | }) |
| 133 | _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | 133 | _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ |
| 134 | "targetUserId": evaluationData.TargetUser.UserId, | 134 | "targetUserId": evaluationData.TargetUser.UserId, |
| 135 | - "typesList": []int{int(domain.Evaluation360), int(domain.EvaluationHrbp)}, | ||
| 136 | "cycleId": evaluationData.CycleId, | 135 | "cycleId": evaluationData.CycleId, |
| 137 | - "limit": 1000, | 136 | + "limit": 500, |
| 138 | }) | 137 | }) |
| 139 | if err != nil { | 138 | if err != nil { |
| 140 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 139 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 141 | } | 140 | } |
| 142 | - if len(evaluationList) == 0 { | ||
| 143 | - //如果没有360评估和hrbp 评估,查找上级评估 | ||
| 144 | - _, evaluationList, err = evaluationRepo.Find(map[string]interface{}{ | ||
| 145 | - "targetUserId": evaluationData.TargetUser.UserId, | ||
| 146 | - "typesList": []int{int(domain.EvaluationSuper)}, | ||
| 147 | - "cycleId": evaluationData.CycleId, | ||
| 148 | - "limit": 10, | ||
| 149 | - }) | ||
| 150 | - if err != nil { | ||
| 151 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 141 | + //查找需要的综合评估 |
| 142 | + var targetEvaluation []*domain.SummaryEvaluation | ||
| 143 | + // 查找360 或 hrbp 评估 | ||
| 144 | + for _, v := range evaluationList { | ||
| 145 | + if v.Types == domain.Evaluation360 || v.Types == domain.EvaluationHrbp { | ||
| 146 | + targetEvaluation = append(targetEvaluation, v) | ||
| 147 | + } | ||
| 148 | + } | ||
| 149 | + //没有360 或 hrbp 评估 ,就查找上级评估 | ||
| 150 | + if len(targetEvaluation) == 0 { | ||
| 151 | + for _, v := range evaluationList { | ||
| 152 | + if v.Types == domain.EvaluationSuper { | ||
| 153 | + targetEvaluation = append(targetEvaluation, v) | ||
| 154 | + } | ||
| 152 | } | 155 | } |
| 153 | } | 156 | } |
| 154 | nowTime := time.Now() | 157 | nowTime := time.Now() |
| 155 | updatedId := []int{} | 158 | updatedId := []int{} |
| 156 | // 变更360评估/人资评估/上级评估的开始时间 | 159 | // 变更360评估/人资评估/上级评估的开始时间 |
| 157 | - for _, v := range evaluationList { | 160 | + for _, v := range targetEvaluation { |
| 158 | if v.BeginTime.After(nowTime) { | 161 | if v.BeginTime.After(nowTime) { |
| 159 | v.BeginTime = nowTime | 162 | v.BeginTime = nowTime |
| 160 | updatedId = append(updatedId, v.Id) | 163 | updatedId = append(updatedId, v.Id) |
| @@ -163,39 +166,41 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( | @@ -163,39 +166,41 @@ func (srv *SummaryEvaluationService) AfterCompletedEvaluationSelf( | ||
| 163 | evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{ | 166 | evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{ |
| 164 | "transactionContext": transactionContext, | 167 | "transactionContext": transactionContext, |
| 165 | }) | 168 | }) |
| 169 | + // 变更360评估/人资评估/上级评估的开始时间 | ||
| 166 | err = evaluationDao.UpdateBeginTime(updatedId, nowTime) | 170 | err = evaluationDao.UpdateBeginTime(updatedId, nowTime) |
| 167 | if err != nil { | 171 | if err != nil { |
| 168 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 172 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
| 169 | } | 173 | } |
| 170 | - if len(evaluationList) == 0 { | 174 | + |
| 175 | + var evaluationFinish *domain.SummaryEvaluation | ||
| 176 | + //查找综合评估结果 | ||
| 177 | + for _, v := range evaluationList { | ||
| 178 | + if v.Types == domain.EvaluationFinish { | ||
| 179 | + evaluationFinish = v | ||
| 180 | + break | ||
| 181 | + } | ||
| 182 | + } | ||
| 183 | + if len(targetEvaluation) == 0 { | ||
| 171 | //没有上级评估、360评估、hrbp 评估 | 184 | //没有上级评估、360评估、hrbp 评估 |
| 172 | //直接进入考核结果阶段 | 185 | //直接进入考核结果阶段 |
| 173 | - _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 174 | - "targetUserId": evaluationData.TargetUser.UserId, | ||
| 175 | - "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 176 | - "cycleId": evaluationData.CycleId, | ||
| 177 | - "limit": 1, | ||
| 178 | - }) | ||
| 179 | - if err != nil { | ||
| 180 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 181 | - } | ||
| 182 | - if len(evaluationFinishList) > 0 { | 186 | + if evaluationFinish != nil { |
| 183 | //进入考核结果 | 187 | //进入考核结果 |
| 184 | //自评的结束时间 | 188 | //自评的结束时间 |
| 185 | - if evaluationFinishList[0].BeginTime.After(nowTime) { | ||
| 186 | - evaluationFinishList[0].BeginTime = nowTime | 189 | + if evaluationFinish.BeginTime.After(nowTime) { |
| 190 | + evaluationFinish.BeginTime = nowTime | ||
| 187 | } | 191 | } |
| 188 | - evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
| 189 | - err = evaluationRepo.Save(evaluationFinishList[0]) | 192 | + evaluationFinish.Status = domain.EvaluationCompleted |
| 193 | + err = evaluationRepo.Save(evaluationFinish) | ||
| 190 | if err != nil { | 194 | if err != nil { |
| 191 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | 195 | return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) |
| 192 | } | 196 | } |
| 193 | //添加确认绩效成绩提醒短信提醒 | 197 | //添加确认绩效成绩提醒短信提醒 |
| 194 | - err = notify.AddNotifyConfirmEvaluationScore(evaluationFinishList[0]) | 198 | + err = notify.AddNotifyConfirmEvaluationScore(evaluationFinish) |
| 195 | if err != nil { | 199 | if err != nil { |
| 196 | return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) | 200 | return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) |
| 197 | } | 201 | } |
| 198 | } | 202 | } |
| 199 | } | 203 | } |
| 204 | + | ||
| 200 | return nil | 205 | return nil |
| 201 | } | 206 | } |
| @@ -10,7 +10,6 @@ import ( | @@ -10,7 +10,6 @@ import ( | ||
| 10 | "github.com/linmadan/egglib-go/core/application" | 10 | "github.com/linmadan/egglib-go/core/application" |
| 11 | "github.com/linmadan/egglib-go/utils/tool_funs" | 11 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
| 13 | - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/notify" | ||
| 14 | roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" | 13 | roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" |
| 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" | 14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/adapter" |
| 16 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" |
| @@ -684,107 +683,107 @@ func (srv *SummaryEvaluationService) getSummaryEvaluation(transactionContext app | @@ -684,107 +683,107 @@ func (srv *SummaryEvaluationService) getSummaryEvaluation(transactionContext app | ||
| 684 | // 提交员工的人资评估 或者 360 评估 | 683 | // 提交员工的人资评估 或者 360 评估 |
| 685 | // 变更上级评估的开始时间 | 684 | // 变更上级评估的开始时间 |
| 686 | // 或者生成考核结果 | 685 | // 或者生成考核结果 |
| 687 | -func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *domain.SummaryEvaluation) error { | ||
| 688 | - lock := xredis.NewLockSummaryEvaluation(param.TargetUser.UserId) | ||
| 689 | - err := lock.Lock() | ||
| 690 | - if err != nil { | ||
| 691 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 692 | - } | ||
| 693 | - defer func() { | ||
| 694 | - lock.UnLock() | ||
| 695 | - }() | ||
| 696 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 697 | - if err != nil { | ||
| 698 | - return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 699 | - } | ||
| 700 | - if err := transactionContext.StartTransaction(); err != nil { | ||
| 701 | - return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 702 | - } | ||
| 703 | - defer func() { | ||
| 704 | - _ = transactionContext.RollbackTransaction() | ||
| 705 | - }() | 686 | +// func (srv *SummaryEvaluationService) AfterCompletedEvaluation360Hrbp(param *domain.SummaryEvaluation) error { |
| 687 | +// lock := xredis.NewLockSummaryEvaluation(param.TargetUser.UserId) | ||
| 688 | +// err := lock.Lock() | ||
| 689 | +// if err != nil { | ||
| 690 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 691 | +// } | ||
| 692 | +// defer func() { | ||
| 693 | +// lock.UnLock() | ||
| 694 | +// }() | ||
| 695 | +// transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 696 | +// if err != nil { | ||
| 697 | +// return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 698 | +// } | ||
| 699 | +// if err := transactionContext.StartTransaction(); err != nil { | ||
| 700 | +// return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 701 | +// } | ||
| 702 | +// defer func() { | ||
| 703 | +// _ = transactionContext.RollbackTransaction() | ||
| 704 | +// }() | ||
| 706 | 705 | ||
| 707 | - evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{ | ||
| 708 | - "transactionContext": transactionContext, | ||
| 709 | - }) | ||
| 710 | - _, evaluation360HrbList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 711 | - "targetUserId": param.TargetUser.UserId, | ||
| 712 | - "typesList": []int{int(domain.Evaluation360), int(domain.EvaluationHrbp)}, | ||
| 713 | - "cycleId": param.CycleId, | ||
| 714 | - "limit": 1000, | ||
| 715 | - }) | ||
| 716 | - if err != nil { | ||
| 717 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 718 | - } | ||
| 719 | - allCompleted := true | ||
| 720 | - for _, v := range evaluation360HrbList { | ||
| 721 | - if v.Status == domain.EvaluationUncompleted { | ||
| 722 | - allCompleted = false | ||
| 723 | - break | ||
| 724 | - } | ||
| 725 | - } | ||
| 726 | - if !allCompleted { | ||
| 727 | - return nil | ||
| 728 | - } | ||
| 729 | - _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 730 | - "targetUserId": param.TargetUser.UserId, | ||
| 731 | - "typesList": []int{int(domain.EvaluationSuper)}, | ||
| 732 | - "cycleId": param.CycleId, | ||
| 733 | - "limit": 1, | ||
| 734 | - }) | ||
| 735 | - if err != nil { | ||
| 736 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 737 | - } | ||
| 738 | - nowTime := time.Now() | ||
| 739 | - updatedId := []int{} | ||
| 740 | - // 变更上级评估的开始时间 | ||
| 741 | - for _, v := range evaluationList { | ||
| 742 | - if v.BeginTime.After(nowTime) { | ||
| 743 | - v.BeginTime = nowTime | ||
| 744 | - updatedId = append(updatedId, v.Id) | ||
| 745 | - } | ||
| 746 | - } | ||
| 747 | - evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{ | ||
| 748 | - "transactionContext": transactionContext, | ||
| 749 | - }) | ||
| 750 | - err = evaluationDao.UpdateBeginTime(updatedId, nowTime) | ||
| 751 | - if err != nil { | ||
| 752 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 753 | - } | ||
| 754 | - if len(evaluationList) == 0 { | ||
| 755 | - //没有上级评估 | ||
| 756 | - //直接进入考核结果阶段 | ||
| 757 | - _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 758 | - "targetUserId": param.TargetUser.UserId, | ||
| 759 | - "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 760 | - "cycleId": param.CycleId, | ||
| 761 | - "limit": 1, | ||
| 762 | - }) | ||
| 763 | - if err != nil { | ||
| 764 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 765 | - } | ||
| 766 | - if len(evaluationFinishList) > 0 { | ||
| 767 | - if evaluationFinishList[0].BeginTime.After(nowTime) { | ||
| 768 | - evaluationFinishList[0].BeginTime = nowTime | ||
| 769 | - } | ||
| 770 | - evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
| 771 | - err = evaluationRepo.Save(evaluationFinishList[0]) | ||
| 772 | - if err != nil { | ||
| 773 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | ||
| 774 | - } | ||
| 775 | - //添加确认绩效成绩提醒短信提醒 | ||
| 776 | - err = notify.AddNotifyConfirmEvaluationScore(evaluationFinishList[0]) | ||
| 777 | - if err != nil { | ||
| 778 | - return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) | ||
| 779 | - } | ||
| 780 | - } | 706 | +// evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{ |
| 707 | +// "transactionContext": transactionContext, | ||
| 708 | +// }) | ||
| 709 | +// _, evaluation360HrbList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 710 | +// "targetUserId": param.TargetUser.UserId, | ||
| 711 | +// "typesList": []int{int(domain.Evaluation360), int(domain.EvaluationHrbp)}, | ||
| 712 | +// "cycleId": param.CycleId, | ||
| 713 | +// "limit": 1000, | ||
| 714 | +// }) | ||
| 715 | +// if err != nil { | ||
| 716 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 717 | +// } | ||
| 718 | +// allCompleted := true | ||
| 719 | +// for _, v := range evaluation360HrbList { | ||
| 720 | +// if v.Status == domain.EvaluationUncompleted { | ||
| 721 | +// allCompleted = false | ||
| 722 | +// break | ||
| 723 | +// } | ||
| 724 | +// } | ||
| 725 | +// if !allCompleted { | ||
| 726 | +// return nil | ||
| 727 | +// } | ||
| 728 | +// _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 729 | +// "targetUserId": param.TargetUser.UserId, | ||
| 730 | +// "typesList": []int{int(domain.EvaluationSuper)}, | ||
| 731 | +// "cycleId": param.CycleId, | ||
| 732 | +// "limit": 1, | ||
| 733 | +// }) | ||
| 734 | +// if err != nil { | ||
| 735 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 736 | +// } | ||
| 737 | +// nowTime := time.Now() | ||
| 738 | +// updatedId := []int{} | ||
| 739 | +// // 变更上级评估的开始时间 | ||
| 740 | +// for _, v := range evaluationList { | ||
| 741 | +// if v.BeginTime.After(nowTime) { | ||
| 742 | +// v.BeginTime = nowTime | ||
| 743 | +// updatedId = append(updatedId, v.Id) | ||
| 744 | +// } | ||
| 745 | +// } | ||
| 746 | +// evaluationDao := dao.NewSummaryEvaluationDao(map[string]interface{}{ | ||
| 747 | +// "transactionContext": transactionContext, | ||
| 748 | +// }) | ||
| 749 | +// err = evaluationDao.UpdateBeginTime(updatedId, nowTime) | ||
| 750 | +// if err != nil { | ||
| 751 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 752 | +// } | ||
| 753 | +// if len(evaluationList) == 0 { | ||
| 754 | +// //没有上级评估 | ||
| 755 | +// //直接进入考核结果阶段 | ||
| 756 | +// _, evaluationFinishList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 757 | +// "targetUserId": param.TargetUser.UserId, | ||
| 758 | +// "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 759 | +// "cycleId": param.CycleId, | ||
| 760 | +// "limit": 1, | ||
| 761 | +// }) | ||
| 762 | +// if err != nil { | ||
| 763 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 764 | +// } | ||
| 765 | +// if len(evaluationFinishList) > 0 { | ||
| 766 | +// if evaluationFinishList[0].BeginTime.After(nowTime) { | ||
| 767 | +// evaluationFinishList[0].BeginTime = nowTime | ||
| 768 | +// } | ||
| 769 | +// evaluationFinishList[0].Status = domain.EvaluationCompleted | ||
| 770 | +// err = evaluationRepo.Save(evaluationFinishList[0]) | ||
| 771 | +// if err != nil { | ||
| 772 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存考核结果,"+err.Error()) | ||
| 773 | +// } | ||
| 774 | +// //添加确认绩效成绩提醒短信提醒 | ||
| 775 | +// err = notify.AddNotifyConfirmEvaluationScore(evaluationFinishList[0]) | ||
| 776 | +// if err != nil { | ||
| 777 | +// return application.ThrowError(application.TRANSACTION_ERROR, "创建短信提醒失败"+err.Error()) | ||
| 778 | +// } | ||
| 779 | +// } | ||
| 781 | 780 | ||
| 782 | - } | ||
| 783 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 784 | - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 785 | - } | ||
| 786 | - return nil | ||
| 787 | -} | 781 | +// } |
| 782 | +// if err := transactionContext.CommitTransaction(); err != nil { | ||
| 783 | +// return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 784 | +// } | ||
| 785 | +// return nil | ||
| 786 | +// } | ||
| 788 | 787 | ||
| 789 | // // 员工提交上级评估后 | 788 | // // 员工提交上级评估后 |
| 790 | // // 生成考核结果 | 789 | // // 生成考核结果 |
| @@ -14,7 +14,6 @@ import ( | @@ -14,7 +14,6 @@ import ( | ||
| 14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | 14 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" |
| 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | 15 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" |
| 16 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | 16 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" |
| 17 | - "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/xredis" | ||
| 18 | ) | 17 | ) |
| 19 | 18 | ||
| 20 | // Evaluation360List 获取360综评列表 | 19 | // Evaluation360List 获取360综评列表 |
| @@ -337,108 +336,108 @@ func (srv *SummaryEvaluationService) GetEvaluation360Complete(param *command.Que | @@ -337,108 +336,108 @@ func (srv *SummaryEvaluationService) GetEvaluation360Complete(param *command.Que | ||
| 337 | } | 336 | } |
| 338 | 337 | ||
| 339 | // EditEvaluation360 编辑提交360综评 | 338 | // EditEvaluation360 编辑提交360综评 |
| 340 | -func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { | ||
| 341 | - lock := xredis.NewLockSummaryEvaluationId(param.SummaryEvaluationId) | ||
| 342 | - err := lock.Lock() | ||
| 343 | - if err != nil { | ||
| 344 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 345 | - } | ||
| 346 | - defer func() { | ||
| 347 | - lock.UnLock() | ||
| 348 | - }() | ||
| 349 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 350 | - if err != nil { | ||
| 351 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 352 | - } | ||
| 353 | - if err := transactionContext.StartTransaction(); err != nil { | ||
| 354 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 355 | - } | ||
| 356 | - defer func() { | ||
| 357 | - _ = transactionContext.RollbackTransaction() | ||
| 358 | - }() | ||
| 359 | - evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 360 | - itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 361 | - itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 362 | - | ||
| 363 | - summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 364 | - if err != nil { | ||
| 365 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 366 | - } | ||
| 367 | - if summaryEvaluation.Executor.UserId != param.ExecutorId { | ||
| 368 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 369 | - } | ||
| 370 | - if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 371 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 372 | - } | ||
| 373 | - | ||
| 374 | - _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 375 | - "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 376 | - "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 377 | - "cycleId": summaryEvaluation.CycleId, | ||
| 378 | - "limit": 1, | ||
| 379 | - }) | ||
| 380 | - if err != nil { | ||
| 381 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 382 | - } | ||
| 383 | - // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 384 | - if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 385 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 386 | - } | ||
| 387 | - | ||
| 388 | - // 自评评估内容(自评模板、筛选项目评估人) | ||
| 389 | - _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 390 | - "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 391 | - "nodeType": domain.LinkNodeSelfAssessment, | ||
| 392 | - "evaluatorId": param.ExecutorId, | ||
| 393 | - }) | ||
| 394 | - if err != nil { | ||
| 395 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 396 | - } | ||
| 397 | - | ||
| 398 | - // 评估内容对应的分数 | ||
| 399 | - _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 400 | - if err != nil { | ||
| 401 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 402 | - } | ||
| 403 | - | ||
| 404 | - err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 405 | - if err != nil { | ||
| 406 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 407 | - } | ||
| 408 | - if !param.IsTemporary { | ||
| 409 | - //变更评估状态为已填写 | ||
| 410 | - summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 411 | - } | ||
| 412 | - | ||
| 413 | - //保存填写值 | ||
| 414 | - for _, v := range itemValueList { | ||
| 415 | - err = itemValueRepo.Save(v) | ||
| 416 | - if err != nil { | ||
| 417 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 418 | - } | ||
| 419 | - } | ||
| 420 | - | ||
| 421 | - //保存填写值 | ||
| 422 | - err = evaluationRepo.Save(summaryEvaluation) | ||
| 423 | - if err != nil { | ||
| 424 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 425 | - } | ||
| 426 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 427 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 428 | - } | ||
| 429 | - | ||
| 430 | - if !param.IsTemporary { | ||
| 431 | - err = srv.AfterCompletedEvaluation360Hrbp(summaryEvaluation) | ||
| 432 | - if err != nil { | ||
| 433 | - return nil, err | ||
| 434 | - } | ||
| 435 | - } | ||
| 436 | - | ||
| 437 | - itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 438 | - return map[string][]adapter.EvaluationItemAdapter{ | ||
| 439 | - "evaluationItems": itemValueAdapter, | ||
| 440 | - }, nil | ||
| 441 | -} | 339 | +// func (srv *SummaryEvaluationService) EditEvaluation360(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { |
| 340 | +// lock := xredis.NewLockSummaryEvaluationId(param.SummaryEvaluationId) | ||
| 341 | +// err := lock.Lock() | ||
| 342 | +// if err != nil { | ||
| 343 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 344 | +// } | ||
| 345 | +// defer func() { | ||
| 346 | +// lock.UnLock() | ||
| 347 | +// }() | ||
| 348 | +// transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 349 | +// if err != nil { | ||
| 350 | +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 351 | +// } | ||
| 352 | +// if err := transactionContext.StartTransaction(); err != nil { | ||
| 353 | +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 354 | +// } | ||
| 355 | +// defer func() { | ||
| 356 | +// _ = transactionContext.RollbackTransaction() | ||
| 357 | +// }() | ||
| 358 | +// evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 359 | +// itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 360 | +// itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 361 | + | ||
| 362 | +// summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 363 | +// if err != nil { | ||
| 364 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 365 | +// } | ||
| 366 | +// if summaryEvaluation.Executor.UserId != param.ExecutorId { | ||
| 367 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 368 | +// } | ||
| 369 | +// if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 370 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 371 | +// } | ||
| 372 | + | ||
| 373 | +// _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 374 | +// "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 375 | +// "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 376 | +// "cycleId": summaryEvaluation.CycleId, | ||
| 377 | +// "limit": 1, | ||
| 378 | +// }) | ||
| 379 | +// if err != nil { | ||
| 380 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 381 | +// } | ||
| 382 | +// // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 383 | +// if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 384 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 385 | +// } | ||
| 386 | + | ||
| 387 | +// // 自评评估内容(自评模板、筛选项目评估人) | ||
| 388 | +// _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 389 | +// "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 390 | +// "nodeType": domain.LinkNodeSelfAssessment, | ||
| 391 | +// "evaluatorId": param.ExecutorId, | ||
| 392 | +// }) | ||
| 393 | +// if err != nil { | ||
| 394 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 395 | +// } | ||
| 396 | + | ||
| 397 | +// // 评估内容对应的分数 | ||
| 398 | +// _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 399 | +// if err != nil { | ||
| 400 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 401 | +// } | ||
| 402 | + | ||
| 403 | +// err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 404 | +// if err != nil { | ||
| 405 | +// return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 406 | +// } | ||
| 407 | +// if !param.IsTemporary { | ||
| 408 | +// //变更评估状态为已填写 | ||
| 409 | +// summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 410 | +// } | ||
| 411 | + | ||
| 412 | +// //保存填写值 | ||
| 413 | +// for _, v := range itemValueList { | ||
| 414 | +// err = itemValueRepo.Save(v) | ||
| 415 | +// if err != nil { | ||
| 416 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 417 | +// } | ||
| 418 | +// } | ||
| 419 | + | ||
| 420 | +// //保存填写值 | ||
| 421 | +// err = evaluationRepo.Save(summaryEvaluation) | ||
| 422 | +// if err != nil { | ||
| 423 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 424 | +// } | ||
| 425 | +// if err := transactionContext.CommitTransaction(); err != nil { | ||
| 426 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 427 | +// } | ||
| 428 | + | ||
| 429 | +// if !param.IsTemporary { | ||
| 430 | +// err = srv.AfterCompletedEvaluation360Hrbp(summaryEvaluation) | ||
| 431 | +// if err != nil { | ||
| 432 | +// return nil, err | ||
| 433 | +// } | ||
| 434 | +// } | ||
| 435 | + | ||
| 436 | +// itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 437 | +// return map[string][]adapter.EvaluationItemAdapter{ | ||
| 438 | +// "evaluationItems": itemValueAdapter, | ||
| 439 | +// }, nil | ||
| 440 | +// } | ||
| 442 | 441 | ||
| 443 | // EvaluationHRBPList 获取人资综评列表 | 442 | // EvaluationHRBPList 获取人资综评列表 |
| 444 | func (srv *SummaryEvaluationService) EvaluationHRBPList(param *command.QueryEvaluationHRList) (map[string]interface{}, error) { | 443 | func (srv *SummaryEvaluationService) EvaluationHRBPList(param *command.QueryEvaluationHRList) (map[string]interface{}, error) { |
| @@ -726,128 +725,128 @@ func (srv *SummaryEvaluationService) GetEvaluationHRBPComplete(param *command.Qu | @@ -726,128 +725,128 @@ func (srv *SummaryEvaluationService) GetEvaluationHRBPComplete(param *command.Qu | ||
| 726 | } | 725 | } |
| 727 | 726 | ||
| 728 | // EditEvaluationHRBP 编辑提交人资综评 | 727 | // EditEvaluationHRBP 编辑提交人资综评 |
| 729 | -func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { | ||
| 730 | - lock := xredis.NewLockSummaryEvaluationId(param.SummaryEvaluationId) | ||
| 731 | - err := lock.Lock() | ||
| 732 | - if err != nil { | ||
| 733 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 734 | - } | ||
| 735 | - defer func() { | ||
| 736 | - lock.UnLock() | ||
| 737 | - }() | ||
| 738 | - transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 739 | - if err != nil { | ||
| 740 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 741 | - } | ||
| 742 | - if err := transactionContext.StartTransaction(); err != nil { | ||
| 743 | - return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 744 | - } | ||
| 745 | - defer func() { | ||
| 746 | - _ = transactionContext.RollbackTransaction() | ||
| 747 | - }() | ||
| 748 | - | ||
| 749 | - userRepo := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 750 | - evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 751 | - itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 752 | - itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 753 | - | ||
| 754 | - // 必须是HRBP权限的人才能编辑操作 | ||
| 755 | - hrbp, err := roleService.GetHrBp(transactionContext, param.CompanyId, param.ExecutorId) | ||
| 756 | - if err != nil { | ||
| 757 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 758 | - } | ||
| 759 | - if hrbp != domain.RoleTypeSystem { | ||
| 760 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 761 | - } | ||
| 762 | - | ||
| 763 | - summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 764 | - if err != nil { | ||
| 765 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 766 | - } | ||
| 767 | - if summaryEvaluation.Types != domain.EvaluationHrbp { | ||
| 768 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 769 | - } | ||
| 770 | - if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 771 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 772 | - } | ||
| 773 | - | ||
| 774 | - _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 775 | - "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 776 | - "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 777 | - "cycleId": summaryEvaluation.CycleId, | ||
| 778 | - "limit": 1, | ||
| 779 | - }) | ||
| 780 | - if err != nil { | ||
| 781 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 782 | - } | ||
| 783 | - // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 784 | - if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 785 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 786 | - } | ||
| 787 | - | ||
| 788 | - // 自评评估内容(自评模板、筛选项目评估人) | ||
| 789 | - _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 790 | - "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 791 | - "nodeType": domain.LinkNodeSelfAssessment, | ||
| 792 | - "evaluatorId": -1, | ||
| 793 | - }) | ||
| 794 | - if err != nil { | ||
| 795 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 796 | - } | ||
| 797 | - | ||
| 798 | - // 评估内容对应的分数 | ||
| 799 | - _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 800 | - if err != nil { | ||
| 801 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 802 | - } | ||
| 803 | - | ||
| 804 | - err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 805 | - if err != nil { | ||
| 806 | - return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 807 | - } | ||
| 808 | - if !param.IsTemporary { | ||
| 809 | - //变更评估状态为已填写 | ||
| 810 | - summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 811 | - } | ||
| 812 | - //保存填写值 | ||
| 813 | - for _, v := range itemValueList { | ||
| 814 | - err = itemValueRepo.Save(v) | ||
| 815 | - if err != nil { | ||
| 816 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 817 | - } | ||
| 818 | - } | ||
| 819 | - | ||
| 820 | - // 针对HRBP类型,更新最后一次操作的HRBP人 | ||
| 821 | - user, err := userRepo.FindOne(map[string]interface{}{"id": param.ExecutorId}) | ||
| 822 | - if err != nil { | ||
| 823 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 824 | - } | ||
| 825 | - summaryEvaluation.Executor.UserId = param.ExecutorId | ||
| 826 | - summaryEvaluation.Executor.Account = user.Account | ||
| 827 | - summaryEvaluation.Executor.UserName = user.Name | ||
| 828 | - summaryEvaluation.Executor.CompanyName = "" // 暂时无用 | ||
| 829 | - summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 830 | - | ||
| 831 | - //保存填写值 | ||
| 832 | - err = evaluationRepo.Save(summaryEvaluation) | ||
| 833 | - if err != nil { | ||
| 834 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 835 | - } | ||
| 836 | - if err := transactionContext.CommitTransaction(); err != nil { | ||
| 837 | - return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 838 | - } | ||
| 839 | - | ||
| 840 | - if !param.IsTemporary { | ||
| 841 | - err = srv.AfterCompletedEvaluation360Hrbp(summaryEvaluation) | ||
| 842 | - if err != nil { | ||
| 843 | - return nil, err | ||
| 844 | - } | ||
| 845 | - } | ||
| 846 | - itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 847 | - return map[string][]adapter.EvaluationItemAdapter{ | ||
| 848 | - "evaluationItems": itemValueAdapter, | ||
| 849 | - }, nil | ||
| 850 | -} | 728 | +// func (srv *SummaryEvaluationService) EditEvaluationHRBP(param *command.EditEvaluationValue) (map[string][]adapter.EvaluationItemAdapter, error) { |
| 729 | +// lock := xredis.NewLockSummaryEvaluationId(param.SummaryEvaluationId) | ||
| 730 | +// err := lock.Lock() | ||
| 731 | +// if err != nil { | ||
| 732 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "未能完全提交评估内容") | ||
| 733 | +// } | ||
| 734 | +// defer func() { | ||
| 735 | +// lock.UnLock() | ||
| 736 | +// }() | ||
| 737 | +// transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 738 | +// if err != nil { | ||
| 739 | +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 740 | +// } | ||
| 741 | +// if err := transactionContext.StartTransaction(); err != nil { | ||
| 742 | +// return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 743 | +// } | ||
| 744 | +// defer func() { | ||
| 745 | +// _ = transactionContext.RollbackTransaction() | ||
| 746 | +// }() | ||
| 747 | + | ||
| 748 | +// userRepo := factory.CreateUserRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 749 | +// evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 750 | +// itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 751 | +// itemValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
| 752 | + | ||
| 753 | +// // 必须是HRBP权限的人才能编辑操作 | ||
| 754 | +// hrbp, err := roleService.GetHrBp(transactionContext, param.CompanyId, param.ExecutorId) | ||
| 755 | +// if err != nil { | ||
| 756 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 757 | +// } | ||
| 758 | +// if hrbp != domain.RoleTypeSystem { | ||
| 759 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 760 | +// } | ||
| 761 | + | ||
| 762 | +// summaryEvaluation, err := evaluationRepo.FindOne(map[string]interface{}{"id": param.SummaryEvaluationId}) | ||
| 763 | +// if err != nil { | ||
| 764 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 765 | +// } | ||
| 766 | +// if summaryEvaluation.Types != domain.EvaluationHrbp { | ||
| 767 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 768 | +// } | ||
| 769 | +// if summaryEvaluation.CompanyId != param.CompanyId { | ||
| 770 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
| 771 | +// } | ||
| 772 | + | ||
| 773 | +// _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
| 774 | +// "targetUserId": summaryEvaluation.TargetUser.UserId, | ||
| 775 | +// "typesList": []int{int(domain.EvaluationFinish)}, | ||
| 776 | +// "cycleId": summaryEvaluation.CycleId, | ||
| 777 | +// "limit": 1, | ||
| 778 | +// }) | ||
| 779 | +// if err != nil { | ||
| 780 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 781 | +// } | ||
| 782 | +// // 如果目标员工已经确认考核结果,就不能在进行评估编辑 | ||
| 783 | +// if len(evaluationList) > 0 && evaluationList[0].CheckResult == domain.EvaluationCheckCompleted { | ||
| 784 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "用户已经确认该周期的考核结果,不能再编辑!") | ||
| 785 | +// } | ||
| 786 | + | ||
| 787 | +// // 自评评估内容(自评模板、筛选项目评估人) | ||
| 788 | +// _, itemList, err := itemUsedRepo.Find(map[string]interface{}{ | ||
| 789 | +// "evaluationProjectId": summaryEvaluation.EvaluationProjectId, | ||
| 790 | +// "nodeType": domain.LinkNodeSelfAssessment, | ||
| 791 | +// "evaluatorId": -1, | ||
| 792 | +// }) | ||
| 793 | +// if err != nil { | ||
| 794 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 795 | +// } | ||
| 796 | + | ||
| 797 | +// // 评估内容对应的分数 | ||
| 798 | +// _, itemValueList, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": summaryEvaluation.Id}) | ||
| 799 | +// if err != nil { | ||
| 800 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 801 | +// } | ||
| 802 | + | ||
| 803 | +// err = srv.editEvaluationValue(summaryEvaluation, &itemValueList, itemList, param.EvaluationItems, nil, param.IsTemporary) | ||
| 804 | +// if err != nil { | ||
| 805 | +// return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
| 806 | +// } | ||
| 807 | +// if !param.IsTemporary { | ||
| 808 | +// //变更评估状态为已填写 | ||
| 809 | +// summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 810 | +// } | ||
| 811 | +// //保存填写值 | ||
| 812 | +// for _, v := range itemValueList { | ||
| 813 | +// err = itemValueRepo.Save(v) | ||
| 814 | +// if err != nil { | ||
| 815 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 816 | +// } | ||
| 817 | +// } | ||
| 818 | + | ||
| 819 | +// // 针对HRBP类型,更新最后一次操作的HRBP人 | ||
| 820 | +// user, err := userRepo.FindOne(map[string]interface{}{"id": param.ExecutorId}) | ||
| 821 | +// if err != nil { | ||
| 822 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 823 | +// } | ||
| 824 | +// summaryEvaluation.Executor.UserId = param.ExecutorId | ||
| 825 | +// summaryEvaluation.Executor.Account = user.Account | ||
| 826 | +// summaryEvaluation.Executor.UserName = user.Name | ||
| 827 | +// summaryEvaluation.Executor.CompanyName = "" // 暂时无用 | ||
| 828 | +// summaryEvaluation.Status = domain.EvaluationCompleted | ||
| 829 | + | ||
| 830 | +// //保存填写值 | ||
| 831 | +// err = evaluationRepo.Save(summaryEvaluation) | ||
| 832 | +// if err != nil { | ||
| 833 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 834 | +// } | ||
| 835 | +// if err := transactionContext.CommitTransaction(); err != nil { | ||
| 836 | +// return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 837 | +// } | ||
| 838 | + | ||
| 839 | +// if !param.IsTemporary { | ||
| 840 | +// err = srv.AfterCompletedEvaluation360Hrbp(summaryEvaluation) | ||
| 841 | +// if err != nil { | ||
| 842 | +// return nil, err | ||
| 843 | +// } | ||
| 844 | +// } | ||
| 845 | +// itemValueAdapter := srv.buildSummaryItemValue(itemList, itemValueList) | ||
| 846 | +// return map[string][]adapter.EvaluationItemAdapter{ | ||
| 847 | +// "evaluationItems": itemValueAdapter, | ||
| 848 | +// }, nil | ||
| 849 | +// } | ||
| 851 | 850 | ||
| 852 | // 修改周期考核的分数 | 851 | // 修改周期考核的分数 |
| 853 | func (srv *SummaryEvaluationService) ModifyFinishScore(param *command.ModifyFinishScore) error { | 852 | func (srv *SummaryEvaluationService) ModifyFinishScore(param *command.ModifyFinishScore) error { |
-
请 注册 或 登录 后发表评论