正在显示
1 个修改的文件
包含
128 行增加
和
0 行删除
1 | +package service | ||
2 | + | ||
3 | +import ( | ||
4 | + "fmt" | ||
5 | + | ||
6 | + "github.com/linmadan/egglib-go/core/application" | ||
7 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | ||
8 | + roleService "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/role" | ||
9 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/summary_evaluation/command" | ||
10 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
11 | +) | ||
12 | + | ||
13 | +// 超管直接修改考核结果分数 | ||
14 | +// 修改周期考核的分数 | ||
15 | +func (srv *SummaryEvaluationService) ModifyFinishScoreV2(param *command.ModifyFinishScore) error { | ||
16 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
17 | + if err != nil { | ||
18 | + return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
19 | + } | ||
20 | + if err := transactionContext.StartTransaction(); err != nil { | ||
21 | + return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
22 | + } | ||
23 | + defer func() { | ||
24 | + _ = transactionContext.RollbackTransaction() | ||
25 | + }() | ||
26 | + // 只有超级管理员可以使用的功能 | ||
27 | + superAdmin, err := roleService.GetSuperAdmin(transactionContext, param.CompanyId, param.UserId) | ||
28 | + if err != nil { | ||
29 | + return err | ||
30 | + } | ||
31 | + if superAdmin != domain.RoleTypeSuperAdmin { | ||
32 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, "没有操作权限") | ||
33 | + } | ||
34 | + | ||
35 | + //获取周期评估任务finish | ||
36 | + evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
37 | + evaluationValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
38 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
39 | + "id": []int{param.SummaryEvaluationId}, | ||
40 | + "companyId": param.CompanyId, | ||
41 | + }) | ||
42 | + if err != nil { | ||
43 | + return application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
44 | + } | ||
45 | + if len(evaluationList) == 0 { | ||
46 | + return nil | ||
47 | + } | ||
48 | + evaluationFinishData := evaluationList[0] | ||
49 | + if evaluationFinishData.Types != domain.EvaluationFinish { | ||
50 | + return nil | ||
51 | + } | ||
52 | + // 获取考核评估项 | ||
53 | + var evaluationFinishValue []*domain.SummaryEvaluationValue | ||
54 | + var saveNewValue bool //是否需要保存新的考核评估项评估 | ||
55 | + //尝试 获取考核结果的评估项 | ||
56 | + _, evaluationFinishValue, err = evaluationValueRepo.Find(map[string]interface{}{"summaryEvaluationId": evaluationFinishData.Id}) | ||
57 | + if err != nil { | ||
58 | + return application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
59 | + } | ||
60 | + | ||
61 | + if len(evaluationFinishValue) == 0 { | ||
62 | + saveNewValue = true | ||
63 | + // 尝试获取目标人员的上级评估内容 | ||
64 | + _, itemValue, err := evaluationRepo.Find(map[string]interface{}{ | ||
65 | + "targetUserId": evaluationFinishData.TargetUser.UserId, | ||
66 | + "cycleId": evaluationFinishData.CycleId, | ||
67 | + "types": domain.EvaluationSuper, | ||
68 | + }) | ||
69 | + if err != nil { | ||
70 | + return application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
71 | + } | ||
72 | + } | ||
73 | + | ||
74 | + if len(evaluationFinishValue) == 0 { | ||
75 | + //尝试获取目标人员的360评估、人资评估、自评的评估内容 | ||
76 | + } | ||
77 | + | ||
78 | + scoreStr := fmt.Sprintf("%.2f", param.Score) | ||
79 | + evaluationFinishData.TotalScore = scoreStr | ||
80 | + evaluationFinishData.Status = domain.EvaluationCompleted | ||
81 | + err = evaluationRepo.Save(evaluationFinishData) | ||
82 | + if err != nil { | ||
83 | + return application.ThrowError(application.BUSINESS_ERROR, "修改考核结果"+err.Error()) | ||
84 | + } | ||
85 | + | ||
86 | + if saveNewValue { | ||
87 | + for _, val := range evaluationFinishValue { | ||
88 | + err = evaluationValueRepo.Save(val) | ||
89 | + if err != nil { | ||
90 | + return application.ThrowError(application.BUSINESS_ERROR, "修改考核结果"+err.Error()) | ||
91 | + } | ||
92 | + } | ||
93 | + } | ||
94 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
95 | + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
96 | + } | ||
97 | + return nil | ||
98 | +} | ||
99 | + | ||
100 | +// buildSummaryFinishValue | ||
101 | +// 当未能按照id直接查询到考核结果的评估项时, | ||
102 | +// 从目标人员的上级评估 或者360评估、人资评估、自评 构建考核结果的评估项内容 | ||
103 | +func (srv *SummaryEvaluationService) buildSummaryFinishValue(transactionContext application.TransactionContext, evaluationFinisih *domain.SummaryEvaluation) ( | ||
104 | + []*domain.SummaryEvaluationValue, error) { | ||
105 | + evaluationRepo := factory.CreateSummaryEvaluationRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
106 | + evaluationValueRepo := factory.CreateSummaryEvaluationValueRepository(map[string]interface{}{"transactionContext": transactionContext}) | ||
107 | + | ||
108 | + //尝试获取目标人员的所有评估 | ||
109 | + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{ | ||
110 | + "targetUserId": evaluationFinisih.TargetUser.UserId, | ||
111 | + "cycleId": evaluationFinisih.CycleId, | ||
112 | + }) | ||
113 | + if err != nil { | ||
114 | + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | ||
115 | + } | ||
116 | + var evaluationFinishValue []*domain.SummaryEvaluationValue | ||
117 | + var evaluationData *domain.SummaryEvaluation | ||
118 | + //尝试获取目标人员的上级评估 | ||
119 | + for _, val := range evaluationList { | ||
120 | + evaluationData = val | ||
121 | + } | ||
122 | + if evaluationData != nil { | ||
123 | + | ||
124 | + return evaluationFinishValue, nil | ||
125 | + } | ||
126 | + | ||
127 | + return nil, nil | ||
128 | +} |
-
请 注册 或 登录 后发表评论