正在显示
7 个修改的文件
包含
227 行增加
和
15 行删除
@@ -4,7 +4,7 @@ type AssessSelfList struct { | @@ -4,7 +4,7 @@ type AssessSelfList struct { | ||
4 | AssessId int `json:"assessId"` //用户执行的评估项id | 4 | AssessId int `json:"assessId"` //用户执行的评估项id |
5 | BeginTime string `json:"beginTime"` //开始时间 2006-01-02 15:04:05 | 5 | BeginTime string `json:"beginTime"` //开始时间 2006-01-02 15:04:05 |
6 | EndTime string `json:"endTime"` //开始时间 2006-01-02 15:04:05 | 6 | EndTime string `json:"endTime"` //开始时间 2006-01-02 15:04:05 |
7 | - CycleId int `json:"cycleId"` //周期id | 7 | + CycleId int64 `json:"cycleId"` //周期id |
8 | CycleName string `json:"cycleName"` //周期名称 | 8 | CycleName string `json:"cycleName"` //周期名称 |
9 | EvaluationProjectId int `json:"evaluationProjectId"` //项目id | 9 | EvaluationProjectId int `json:"evaluationProjectId"` //项目id |
10 | EvaluationProjectName string `json:"evaluationProjectName"` //项目名称 | 10 | EvaluationProjectName string `json:"evaluationProjectName"` //项目名称 |
@@ -15,7 +15,7 @@ type AssessTaskStep struct { | @@ -15,7 +15,7 @@ type AssessTaskStep struct { | ||
15 | LinkNodeName string `json:"linkNodeName"` //流程名称 | 15 | LinkNodeName string `json:"linkNodeName"` //流程名称 |
16 | BeginTime string `json:"beginTime"` //开始时间时间 | 16 | BeginTime string `json:"beginTime"` //开始时间时间 |
17 | EndTime string `json:"endTime"` //结束时间 | 17 | EndTime string `json:"endTime"` //结束时间 |
18 | - LinkNodeType string `json:"linkNodeType"` //流程类型 | 18 | + LinkNodeType int `json:"linkNodeType"` //流程类型 |
19 | Desc string `json:"desc"` //情况描述 | 19 | Desc string `json:"desc"` //情况描述 |
20 | - Status int `json:"status"` //流程是否完成 | 20 | + Status string `json:"status"` //流程是否完成 "":未参加,"uncompleted":未完成,"completed":完成 |
21 | } | 21 | } |
1 | package service | 1 | package service |
2 | 2 | ||
3 | import ( | 3 | import ( |
4 | + "fmt" | ||
5 | + | ||
4 | "github.com/linmadan/egglib-go/core/application" | 6 | "github.com/linmadan/egglib-go/core/application" |
5 | "github.com/linmadan/egglib-go/utils/tool_funs" | 7 | "github.com/linmadan/egglib-go/utils/tool_funs" |
6 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" | 8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/factory" |
7 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" | 9 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/adapter" |
8 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" | 10 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query" |
11 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/domain" | ||
12 | + "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/log" | ||
9 | ) | 13 | ) |
10 | 14 | ||
15 | +// 员工评绩效评估 | ||
11 | type StaffAssessServeice struct { | 16 | type StaffAssessServeice struct { |
12 | } | 17 | } |
13 | 18 | ||
@@ -76,15 +81,130 @@ func (srv StaffAssessServeice) AssessTaskDesc(param query.AssessTaskDescQuery) ( | @@ -76,15 +81,130 @@ func (srv StaffAssessServeice) AssessTaskDesc(param query.AssessTaskDescQuery) ( | ||
76 | defer func() { | 81 | defer func() { |
77 | _ = transactionContext.RollbackTransaction() | 82 | _ = transactionContext.RollbackTransaction() |
78 | }() | 83 | }() |
84 | + // 获取评估任务 | ||
85 | + staffAssessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{ | ||
86 | + "transactionContext": transactionContext, | ||
87 | + }) | ||
88 | + //获取个人参与的评估流程 | ||
89 | + staffAssessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{ | ||
90 | + "transactionContext": transactionContext, | ||
91 | + }) | ||
92 | + assessTaskData, err := staffAssessTaskRepo.FindOne(map[string]interface{}{ | ||
93 | + "id": param.AssessTaskId, | ||
94 | + }) | ||
95 | + if err != nil { | ||
96 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "评估任务不存在,"+err.Error()) | ||
97 | + } | ||
98 | + //返回的数据结果 | ||
99 | + result := adapter.AssessTaskDescResp{ | ||
100 | + AssessTaskId: assessTaskData.Id, | ||
101 | + EvaluationProjectId: assessTaskData.EvaluationProjectId, | ||
102 | + EvaluationProjectName: assessTaskData.EvaluationProjectName, | ||
103 | + CycleName: assessTaskData.CycleName, | ||
104 | + BeginTime: assessTaskData.BeginTime.Local().Format("2006-01-02 15:04-05"), | ||
105 | + EndTime: assessTaskData.EndTime.Local().Format("2006-01-02 15:04-05"), | ||
106 | + StepList: []adapter.AssessTaskStep{}, | ||
107 | + } | ||
79 | 108 | ||
109 | + for _, v := range assessTaskData.StepList { | ||
110 | + stepItem := adapter.AssessTaskStep{ | ||
111 | + SortBy: v.SortBy, | ||
112 | + LinkNodeName: v.LinkNodeName, | ||
113 | + BeginTime: v.BeginTime.Local().Format("2006-01-02 15:04:05"), | ||
114 | + EndTime: v.EndTime.Local().Format("2006-01-02 15:04:05"), | ||
115 | + LinkNodeType: v.LinkNodeType, | ||
116 | + Desc: fmt.Sprintf("截止日期:%s", v.EndTime.Local().Format("2006-01-02 15:04:05")), | ||
117 | + Status: "", | ||
118 | + } | ||
119 | + switch v.LinkNodeType { | ||
120 | + case domain.LinkNodeSelfAssessment: | ||
121 | + //个人自评完成情况 | ||
122 | + _, assessSelfData, err := staffAssessRepo.Find(map[string]interface{}{ | ||
123 | + "staffAssessTaskId": assessTaskData.Id, | ||
124 | + "executorId": param.UserId, | ||
125 | + "typesList": []string{string(domain.AssessSelf)}, | ||
126 | + }) | ||
127 | + if err != nil { | ||
128 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | ||
129 | + } | ||
130 | + if len(assessSelfData) > 0 { | ||
131 | + stepItem.Status = string(assessSelfData[0].Status) | ||
132 | + } | ||
133 | + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) | ||
134 | + case domain.LinkNodeAllInvite: | ||
135 | + //邀请别人评估自己 | ||
136 | + _, assessInviteData, err := staffAssessRepo.Find(map[string]interface{}{ | ||
137 | + "staffAssessTaskId": assessTaskData.Id, | ||
138 | + "targetUserId": param.UserId, | ||
139 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
140 | + "limit": 5, | ||
141 | + }) | ||
142 | + if err != nil { | ||
143 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | ||
144 | + } | ||
145 | + //待邀请人数,为5人减去已邀请的人数。若邀请人数已等于或大于5人,则只显示截止日期即可 | ||
146 | + if len(assessInviteData) > 5 { | ||
147 | + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) | ||
148 | + stepItem.Status = string(domain.StaffAssessCompleted) | ||
149 | + } else { | ||
150 | + stepItem.Desc = fmt.Sprintf("截止日期:%s 待邀请%d人", stepItem.EndTime, 5-len(assessInviteData)) | ||
151 | + stepItem.Status = string(domain.StaffAssessUncompleted) | ||
152 | + } | ||
153 | + case domain.LinkNodeAllAssessment: | ||
154 | + //我评估别人,被邀请评估 | ||
155 | + _, assessInviteList, err := staffAssessRepo.Find(map[string]interface{}{ | ||
156 | + "staffAssessTaskId": assessTaskData.Id, | ||
157 | + "executorId": param.UserId, | ||
158 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
159 | + }) | ||
160 | + if err != nil { | ||
161 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | ||
162 | + } | ||
163 | + | ||
164 | + if len(assessInviteList) > 0 { | ||
165 | + stepItem.Status = string(domain.StaffAssessCompleted) | ||
166 | + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) | ||
167 | + for _, v := range assessInviteList { | ||
168 | + if v.Status == domain.StaffAssessUncompleted { | ||
169 | + stepItem.Status = string(domain.StaffAssessUncompleted) | ||
170 | + break | ||
171 | + } | ||
172 | + } | ||
173 | + } | ||
174 | + case domain.LinkNodeSuperiorAssessment: | ||
175 | + //我评估别人,上级评估 | ||
176 | + _, assessSupperList, err := staffAssessRepo.Find(map[string]interface{}{ | ||
177 | + "staffAssessTaskId": assessTaskData.Id, | ||
178 | + "executorId": param.UserId, | ||
179 | + "typesList": []string{string(domain.AssessSuper)}, | ||
180 | + }) | ||
181 | + if err != nil { | ||
182 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | ||
183 | + } | ||
184 | + if len(assessSupperList) > 0 { | ||
185 | + stepItem.Status = string(domain.StaffAssessCompleted) | ||
186 | + stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) | ||
187 | + uncompletedNum := 0 | ||
188 | + for _, v := range assessSupperList { | ||
189 | + if v.Status == domain.StaffAssessUncompleted { | ||
190 | + uncompletedNum += 1 | ||
191 | + } | ||
192 | + } | ||
193 | + if uncompletedNum > 0 { | ||
194 | + stepItem.Desc = fmt.Sprintf("截止日期:%s 待评估%d人", stepItem.EndTime, uncompletedNum) | ||
195 | + } | ||
196 | + } | ||
197 | + } | ||
198 | + result.StepList = append(result.StepList, stepItem) | ||
199 | + } | ||
80 | if err := transactionContext.CommitTransaction(); err != nil { | 200 | if err := transactionContext.CommitTransaction(); err != nil { |
81 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 201 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
82 | } | 202 | } |
83 | - return nil, nil | 203 | + return &result, nil |
84 | } | 204 | } |
85 | 205 | ||
86 | -// 获取自评反馈列表 | ||
87 | -func (srv StaffAssessServeice) AssessSelfList(param query.AssessTaskDescQuery) (map[string]interface{}, error) { | 206 | +// 获取个人的自评反馈历史记录列表 |
207 | +func (srv StaffAssessServeice) AssessSelfList(param query.AssessSelfListQuery) (map[string]interface{}, error) { | ||
88 | transactionContext, err := factory.CreateTransactionContext(nil) | 208 | transactionContext, err := factory.CreateTransactionContext(nil) |
89 | if err != nil { | 209 | if err != nil { |
90 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | 210 | return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) |
@@ -95,14 +215,81 @@ func (srv StaffAssessServeice) AssessSelfList(param query.AssessTaskDescQuery) ( | @@ -95,14 +215,81 @@ func (srv StaffAssessServeice) AssessSelfList(param query.AssessTaskDescQuery) ( | ||
95 | defer func() { | 215 | defer func() { |
96 | _ = transactionContext.RollbackTransaction() | 216 | _ = transactionContext.RollbackTransaction() |
97 | }() | 217 | }() |
218 | + //获取个人参与的评估流程 | ||
219 | + staffAssessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{ | ||
220 | + "transactionContext": transactionContext, | ||
221 | + }) | ||
222 | + var limit int = 20 | ||
223 | + var offset int = 0 | ||
224 | + if param.PageSize > 0 { | ||
225 | + limit = param.PageSize | ||
226 | + } | ||
227 | + offset = (param.PageNumber - 1) * param.PageSize | ||
228 | + condition := map[string]interface{}{ | ||
229 | + "executorId": param.UserId, | ||
230 | + "companyId": param.CompanyId, | ||
231 | + "typesList": []string{string(domain.AssessSelf)}, | ||
232 | + "limit": limit, | ||
233 | + "status": string(domain.StaffAssessCompleted), | ||
234 | + } | ||
235 | + if offset > 0 { | ||
236 | + condition["offset"] = offset | ||
237 | + } | ||
238 | + //获取历史列表 | ||
239 | + cnt, assessList, err := staffAssessRepo.Find(condition) | ||
240 | + if err != nil { | ||
241 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取评估任务列表,"+err.Error()) | ||
242 | + } | ||
243 | + | ||
244 | + //获取公司数据 | ||
245 | + companyRep := factory.CreateCompanyRepository(map[string]interface{}{ | ||
246 | + "transactionContext": transactionContext, | ||
247 | + }) | ||
248 | + | ||
249 | + companyData, err := companyRep.FindOne(map[string]interface{}{ | ||
250 | + "id": param.CompanyId, | ||
251 | + }) | ||
252 | + if err != nil { | ||
253 | + log.Logger.Error("获取公司信息," + err.Error()) | ||
254 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取公司信息,"+err.Error()) | ||
255 | + } | ||
256 | + | ||
257 | + //获取用户数据 | ||
258 | + userRep := factory.CreateUserRepository(map[string]interface{}{ | ||
259 | + "transactionContext": transactionContext, | ||
260 | + }) | ||
261 | + userData, err := userRep.FindOne(map[string]interface{}{ | ||
262 | + "id": param.UserId, | ||
263 | + }) | ||
264 | + if err != nil { | ||
265 | + log.Logger.Error("获取用户信息," + err.Error()) | ||
266 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取用户信息,"+err.Error()) | ||
267 | + } | ||
98 | 268 | ||
99 | if err := transactionContext.CommitTransaction(); err != nil { | 269 | if err := transactionContext.CommitTransaction(); err != nil { |
100 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | 270 | return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) |
101 | } | 271 | } |
102 | - var cnt int64 | ||
103 | - var listData []adapter.AssessSelfList | ||
104 | - var userInfo adapter.StaffInfo | ||
105 | - result := tool_funs.SimpleWrapGridMap(cnt, listData) | 272 | + listData := make([]adapter.AssessSelfList, 0, len(assessList)) |
273 | + var itemTemp adapter.AssessSelfList | ||
274 | + for _, v := range assessList { | ||
275 | + itemTemp = adapter.AssessSelfList{ | ||
276 | + AssessId: v.Id, | ||
277 | + BeginTime: v.BeginTime.Local().Format("2006-01-02 15:04:05"), | ||
278 | + EndTime: v.EndTime.Local().Format("2006-01-02 15:04:05"), | ||
279 | + CycleId: v.CycleId, | ||
280 | + CycleName: v.CycleName, | ||
281 | + EvaluationProjectId: v.EvaluationProjectId, | ||
282 | + EvaluationProjectName: v.EvaluationProjectName, | ||
283 | + } | ||
284 | + listData = append(listData, itemTemp) | ||
285 | + } | ||
286 | + userInfo := adapter.StaffInfo{ | ||
287 | + UserName: userData.Name, | ||
288 | + CompanyName: companyData.Name, | ||
289 | + SupperUserName: "", | ||
290 | + DutyTime: userData.CreateAt.Local().Format("2006-01-02 15:04:05"), | ||
291 | + } | ||
292 | + result := tool_funs.SimpleWrapGridMap(int64(cnt), listData) | ||
106 | result["userInfo"] = userInfo | 293 | result["userInfo"] = userInfo |
107 | return result, nil | 294 | return result, nil |
108 | } | 295 | } |
@@ -125,3 +312,8 @@ func (srv StaffAssessServeice) CreateStaffAssessTask() error { | @@ -125,3 +312,8 @@ func (srv StaffAssessServeice) CreateStaffAssessTask() error { | ||
125 | } | 312 | } |
126 | return nil | 313 | return nil |
127 | } | 314 | } |
315 | + | ||
316 | +func (srv StaffAssessServeice) getStaffDesc(userId int) *domain.StaffDesc { | ||
317 | + | ||
318 | + return &domain.StaffDesc{} | ||
319 | +} |
@@ -28,7 +28,7 @@ type StaffAssess struct { | @@ -28,7 +28,7 @@ type StaffAssess struct { | ||
28 | EvaluationProjectId int `json:"evaluationProjectId"` //对应的项目id | 28 | EvaluationProjectId int `json:"evaluationProjectId"` //对应的项目id |
29 | EvaluationProjectName string `json:"evaluationProjectName"` //对应的项目名称 | 29 | EvaluationProjectName string `json:"evaluationProjectName"` //对应的项目名称 |
30 | CycleId int64 `json:"cycleId"` //对应的周期id | 30 | CycleId int64 `json:"cycleId"` //对应的周期id |
31 | - CycleName int64 `json:"cycleName"` //对应的周期名称 | 31 | + CycleName string `json:"cycleName"` //对应的周期名称 |
32 | StaffAssessTaskId int `json:"staffAssessTaskId"` //执行评估的任务id | 32 | StaffAssessTaskId int `json:"staffAssessTaskId"` //执行评估的任务id |
33 | TargetUser StaffDesc `json:"targetUser"` //被评估的目标用户 | 33 | TargetUser StaffDesc `json:"targetUser"` //被评估的目标用户 |
34 | TargetDepartment []StaffDepartment `json:"targetDepartment"` //被评估的目标用户所在的部门 | 34 | TargetDepartment []StaffDepartment `json:"targetDepartment"` //被评估的目标用户所在的部门 |
@@ -34,10 +34,12 @@ type StaffAssessTask struct { | @@ -34,10 +34,12 @@ type StaffAssessTask struct { | ||
34 | 34 | ||
35 | //考评的流程 | 35 | //考评的流程 |
36 | type AssessTaskStep struct { | 36 | type AssessTaskStep struct { |
37 | - SortBy int `json:"sortBy"` //排序 | ||
38 | - LinkNodeId int `json:"linkNodeId"` //考评的流程id | ||
39 | - LinkNodeName string `json:"linkNodeName"` //流程名称 | ||
40 | - LinkNodeType int `json:"linkNodeType"` //流程类型 同evaluation_template.go->LinkNode.Type | 37 | + SortBy int `json:"sortBy"` //排序 |
38 | + LinkNodeId int `json:"linkNodeId"` //考评的流程id | ||
39 | + LinkNodeName string `json:"linkNodeName"` //流程名称 | ||
40 | + LinkNodeType int `json:"linkNodeType"` //流程类型 同evaluation_template.go->LinkNode.Type | ||
41 | + BeginTime time.Time `json:"beginTime"` //绩效考核开始时间 | ||
42 | + EndTime time.Time `json:"endTime"` //绩效考核截止时间 | ||
41 | } | 43 | } |
42 | 44 | ||
43 | type StaffAssessTaskRepository interface { | 45 | type StaffAssessTaskRepository interface { |
@@ -127,6 +127,16 @@ func (repo *StaffAssessRepository) Find(queryOptions map[string]interface{}) (in | @@ -127,6 +127,16 @@ func (repo *StaffAssessRepository) Find(queryOptions map[string]interface{}) (in | ||
127 | if v, ok := queryOptions["cycleId"].(int64); ok && v > 0 { | 127 | if v, ok := queryOptions["cycleId"].(int64); ok && v > 0 { |
128 | query.Where(`cycle_id=?`, v) | 128 | query.Where(`cycle_id=?`, v) |
129 | } | 129 | } |
130 | + if v, ok := queryOptions["staffAssessTaskId"]; ok { | ||
131 | + query.Where(`staff_assess_task_id=?`, v) | ||
132 | + } | ||
133 | + | ||
134 | + if v, ok := queryOptions["typesList"].([]string); ok && len(v) > 0 { | ||
135 | + query.Where("types in(?)", pg.Array(v)) | ||
136 | + } | ||
137 | + if v, ok := queryOptions["status"].(string); ok && len(v) > 0 { | ||
138 | + query.Where("status=?", v) | ||
139 | + } | ||
130 | count, err := query.SelectAndCount() | 140 | count, err := query.SelectAndCount() |
131 | if err != nil { | 141 | if err != nil { |
132 | return 0, nil, err | 142 | return 0, nil, err |
-
请 注册 或 登录 后发表评论