正在显示
2 个修改的文件
包含
254 行增加
和
8 行删除
| @@ -2,6 +2,7 @@ package service | @@ -2,6 +2,7 @@ package service | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "strconv" | ||
| 5 | 6 | ||
| 6 | "github.com/linmadan/egglib-go/core/application" | 7 | "github.com/linmadan/egglib-go/core/application" |
| 7 | "github.com/linmadan/egglib-go/utils/tool_funs" | 8 | "github.com/linmadan/egglib-go/utils/tool_funs" |
| @@ -12,7 +13,7 @@ import ( | @@ -12,7 +13,7 @@ import ( | ||
| 12 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" | 13 | "gitlab.fjmaimaimai.com/allied-creation/performance/pkg/infrastructure/dao" |
| 13 | ) | 14 | ) |
| 14 | 15 | ||
| 15 | -//获取我的项目周期 | 16 | +//获取我的项目周期列表 |
| 16 | func (srv StaffAssessServeice) SearchAssessCycelMe(param *query.SearchAssessMeQuery) (map[string]interface{}, error) { | 17 | func (srv StaffAssessServeice) SearchAssessCycelMe(param *query.SearchAssessMeQuery) (map[string]interface{}, error) { |
| 17 | transactionContext, err := factory.CreateTransactionContext(nil) | 18 | transactionContext, err := factory.CreateTransactionContext(nil) |
| 18 | if err != nil { | 19 | if err != nil { |
| @@ -136,10 +137,10 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | @@ -136,10 +137,10 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | ||
| 136 | if len(myAssessTask) > 0 { | 137 | if len(myAssessTask) > 0 { |
| 137 | //邀请别人评估自己 | 138 | //邀请别人评估自己 |
| 138 | _, assessInviteData, err := staffAssessRepo.Find(map[string]interface{}{ | 139 | _, assessInviteData, err := staffAssessRepo.Find(map[string]interface{}{ |
| 139 | - // "staffAssessTaskId": assessTaskData.Id, | ||
| 140 | - "targetUserId": param.UserId, | ||
| 141 | - "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
| 142 | - "limit": 5, | 140 | + "staffAssessTaskId": myAssessTask[0].Id, |
| 141 | + "targetUserId": param.UserId, //我被作为目标 | ||
| 142 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
| 143 | + "limit": 5, | ||
| 143 | }) | 144 | }) |
| 144 | if err != nil { | 145 | if err != nil { |
| 145 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | 146 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) |
| @@ -160,13 +161,13 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | @@ -160,13 +161,13 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | ||
| 160 | //我评估别人,被邀请评估 | 161 | //我评估别人,被邀请评估 |
| 161 | _, assessInviteList, err := staffAssessRepo.Find(map[string]interface{}{ | 162 | _, assessInviteList, err := staffAssessRepo.Find(map[string]interface{}{ |
| 162 | "beginDay": param.BeginDay, | 163 | "beginDay": param.BeginDay, |
| 163 | - "executorId": param.UserId, | 164 | + "cycleId": param.CycleId, |
| 165 | + "executorId": param.UserId, //我作为执行人 | ||
| 164 | "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | 166 | "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, |
| 165 | }) | 167 | }) |
| 166 | if err != nil { | 168 | if err != nil { |
| 167 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | 169 | return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) |
| 168 | } | 170 | } |
| 169 | - | ||
| 170 | if len(assessInviteList) > 0 { | 171 | if len(assessInviteList) > 0 { |
| 171 | stepItem.Status = string(domain.StaffAssessCompleted) | 172 | stepItem.Status = string(domain.StaffAssessCompleted) |
| 172 | stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) | 173 | stepItem.Desc = fmt.Sprintf("截止日期:%s", stepItem.EndTime) |
| @@ -180,7 +181,8 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | @@ -180,7 +181,8 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | ||
| 180 | case domain.LinkNodeSuperiorAssessment: | 181 | case domain.LinkNodeSuperiorAssessment: |
| 181 | //我评估别人,上级评估 | 182 | //我评估别人,上级评估 |
| 182 | _, assessSupperList, err := staffAssessRepo.Find(map[string]interface{}{ | 183 | _, assessSupperList, err := staffAssessRepo.Find(map[string]interface{}{ |
| 183 | - // "staffAssessTaskId": assessTaskData.Id, | 184 | + "cycleId": param.CycleId, |
| 185 | + "beginDay": param.BeginDay, | ||
| 184 | "executorId": param.UserId, | 186 | "executorId": param.UserId, |
| 185 | "typesList": []string{string(domain.AssessSuper)}, | 187 | "typesList": []string{string(domain.AssessSuper)}, |
| 186 | }) | 188 | }) |
| @@ -209,3 +211,239 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | @@ -209,3 +211,239 @@ func (srv StaffAssessServeice) AssessCycleMeDesc(param *query.AssessCycleDescQue | ||
| 209 | } | 211 | } |
| 210 | return &result, nil | 212 | return &result, nil |
| 211 | } | 213 | } |
| 214 | + | ||
| 215 | +//根据周期获取,我的自评任务的添加的邀请人 | ||
| 216 | +func (srv StaffAssessServeice) ListAssessInviteUser(param query.ListAssessInviteUserQuery) (*adapter.AssessInviteUserResp, error) { | ||
| 217 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 218 | + if err != nil { | ||
| 219 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 220 | + } | ||
| 221 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 222 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 223 | + } | ||
| 224 | + defer func() { | ||
| 225 | + _ = transactionContext.RollbackTransaction() | ||
| 226 | + }() | ||
| 227 | + | ||
| 228 | + assessReps := factory.CreateStaffAssessRepository(map[string]interface{}{ | ||
| 229 | + "transactionContext": transactionContext, | ||
| 230 | + }) | ||
| 231 | + | ||
| 232 | + assessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{ | ||
| 233 | + "transactionContext": transactionContext, | ||
| 234 | + }) | ||
| 235 | + _, myAssessTask, err := assessTaskRepo.Find(map[string]interface{}{ | ||
| 236 | + "cycleId": param.CycleId, | ||
| 237 | + "beginDay": param.BeginDay, | ||
| 238 | + "executorId": param.UserId, | ||
| 239 | + "limit": 1, | ||
| 240 | + }) | ||
| 241 | + if err != nil { | ||
| 242 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "我的评估任务不存在,"+err.Error()) | ||
| 243 | + } | ||
| 244 | + | ||
| 245 | + if len(myAssessTask) == 0 { | ||
| 246 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "未参与本次的自评") | ||
| 247 | + } | ||
| 248 | + | ||
| 249 | + assessTaskData := myAssessTask[0] | ||
| 250 | + | ||
| 251 | + _, assessList, err := assessReps.Find(map[string]interface{}{ | ||
| 252 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
| 253 | + "staffAssessTaskId": assessTaskData.Id, | ||
| 254 | + "targetUserId": param.UserId, | ||
| 255 | + }) | ||
| 256 | + if err != nil { | ||
| 257 | + return nil, application.ThrowError(application.ARG_ERROR, "获取个人邀请列表"+err.Error()) | ||
| 258 | + } | ||
| 259 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 260 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 261 | + } | ||
| 262 | + | ||
| 263 | + result := adapter.AssessInviteUserResp{ | ||
| 264 | + AssessTaskId: assessTaskData.Id, | ||
| 265 | + InviteDiffSuper: []domain.StaffDesc{}, | ||
| 266 | + InviteSameSuper: []domain.StaffDesc{}, | ||
| 267 | + } | ||
| 268 | + for _, v := range assessTaskData.StepList { | ||
| 269 | + if v.LinkNodeType != domain.LinkNodeAllInvite { | ||
| 270 | + continue | ||
| 271 | + } | ||
| 272 | + result.LinkNodeId = v.LinkNodeId | ||
| 273 | + result.LinkNodeName = v.LinkNodeName | ||
| 274 | + result.BeginTime = v.BeginTime.Local().Format("2006-01-02 15:04:05") | ||
| 275 | + result.EndTime = v.EndTime.Local().Format("2006-01-02 15:04:05") | ||
| 276 | + break | ||
| 277 | + } | ||
| 278 | + for _, v := range assessList { | ||
| 279 | + if v.Types == domain.AssessInviteDiffSuper { | ||
| 280 | + result.InviteDiffSuper = append(result.InviteDiffSuper, v.Executor) | ||
| 281 | + } | ||
| 282 | + if v.Types == domain.AssessInviteSameSuper { | ||
| 283 | + result.InviteSameSuper = append(result.InviteDiffSuper, v.Executor) | ||
| 284 | + } | ||
| 285 | + } | ||
| 286 | + return &result, nil | ||
| 287 | +} | ||
| 288 | + | ||
| 289 | +// 根据周期和日期获取我要执行的的360评估,用户列表和评估填写的值 | ||
| 290 | +func (srv StaffAssessServeice) ListExecutorInviteAssessDay(param *query.ListInviteUserAssessQuery) ( | ||
| 291 | + *adapter.ListInviteUserAssessResp, error) { | ||
| 292 | + transactionContext, err := factory.CreateTransactionContext(nil) | ||
| 293 | + if err != nil { | ||
| 294 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 295 | + } | ||
| 296 | + if err := transactionContext.StartTransaction(); err != nil { | ||
| 297 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) | ||
| 298 | + } | ||
| 299 | + defer func() { | ||
| 300 | + _ = transactionContext.RollbackTransaction() | ||
| 301 | + }() | ||
| 302 | + //获取对应的评估任务 | ||
| 303 | + assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{ | ||
| 304 | + "transactionContext": transactionContext, | ||
| 305 | + }) | ||
| 306 | + assessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{ | ||
| 307 | + "transactionContext": transactionContext, | ||
| 308 | + }) | ||
| 309 | + | ||
| 310 | + //获取 executorId 对应的360评估任务 用户 | ||
| 311 | + condition := map[string]interface{}{ | ||
| 312 | + "staffAssessTaskId": param.AssessTaskId, | ||
| 313 | + "executorId": param.ExecutorId, | ||
| 314 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
| 315 | + "limit": 20, | ||
| 316 | + } | ||
| 317 | + if param.PageSize > 0 { | ||
| 318 | + condition["limit"] = param.PageSize | ||
| 319 | + } | ||
| 320 | + offset := (param.PageNumber - 1) * param.PageSize | ||
| 321 | + if offset > 0 { | ||
| 322 | + condition["offset"] = offset | ||
| 323 | + } | ||
| 324 | + | ||
| 325 | + cnt, assessList, err := assessRepo.Find(condition) | ||
| 326 | + if err != nil { | ||
| 327 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 328 | + } | ||
| 329 | + var assessContentList []*domain.StaffAssessContent | ||
| 330 | + if len(assessList) > 0 { | ||
| 331 | + //获取评估用的所有评估项 | ||
| 332 | + assessContentList, err = srv.getAssessSelfInfoUncompleted(transactionContext, assessList[0]) | ||
| 333 | + if err != nil { | ||
| 334 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估任务"+err.Error()) | ||
| 335 | + } | ||
| 336 | + } | ||
| 337 | + //可变的表格列 | ||
| 338 | + changeableHeader := []adapter.ListTableHeader{} | ||
| 339 | + //列名与字段对应 | ||
| 340 | + keyMap := map[string]string{} | ||
| 341 | + for i, v := range assessContentList { | ||
| 342 | + name := fmt.Sprintf("%s-%s", v.Category, v.Name) | ||
| 343 | + key := fmt.Sprintf("k%d", i) | ||
| 344 | + keyMap[name] = key | ||
| 345 | + changeableHeader = append(changeableHeader, adapter.ListTableHeader{ | ||
| 346 | + Key: key, | ||
| 347 | + Name: name, | ||
| 348 | + }) | ||
| 349 | + } | ||
| 350 | + assessContentRepo := factory.CreateStaffAssessContentRepository(map[string]interface{}{ | ||
| 351 | + "transactionContext": transactionContext, | ||
| 352 | + }) | ||
| 353 | + // 获取已经填报的内容 | ||
| 354 | + changeableRows := map[int]map[string]string{} | ||
| 355 | + for _, v := range assessList { | ||
| 356 | + _, contentList, err := assessContentRepo.Find(map[string]interface{}{ | ||
| 357 | + "staffAssessId": v.Id, | ||
| 358 | + }) | ||
| 359 | + if err != nil { | ||
| 360 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "获取评估内容"+err.Error()) | ||
| 361 | + } | ||
| 362 | + row := map[string]string{} | ||
| 363 | + for _, vv := range contentList { | ||
| 364 | + name := fmt.Sprintf("%s-%s", vv.Category, vv.Name) | ||
| 365 | + if kk, ok := keyMap[name]; ok { | ||
| 366 | + row[kk] = vv.Value | ||
| 367 | + } | ||
| 368 | + } | ||
| 369 | + changeableRows[v.TargetUser.UserId] = row | ||
| 370 | + } | ||
| 371 | + | ||
| 372 | + //获取360邀请评估完成情况 | ||
| 373 | + //我评估别人,被邀请评估 | ||
| 374 | + cnnt, _, err := assessRepo.Find(map[string]interface{}{ | ||
| 375 | + "staffAssessTaskId": param.AssessTaskId, | ||
| 376 | + "executorId": param.ExecutorId, | ||
| 377 | + "typesList": []string{string(domain.AssessInviteDiffSuper), string(domain.AssessInviteSameSuper)}, | ||
| 378 | + "status": domain.StaffAssessUncompleted, | ||
| 379 | + }) | ||
| 380 | + if err != nil { | ||
| 381 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取个人的评估环节"+err.Error()) | ||
| 382 | + } | ||
| 383 | + | ||
| 384 | + assessTaskData, err := assessTaskRepo.FindOne(map[string]interface{}{ | ||
| 385 | + "id": param.AssessTaskId, | ||
| 386 | + }) | ||
| 387 | + if err != nil { | ||
| 388 | + return nil, application.ThrowError(application.TRANSACTION_ERROR, "获取评估任务"+err.Error()) | ||
| 389 | + } | ||
| 390 | + if err := transactionContext.CommitTransaction(); err != nil { | ||
| 391 | + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) | ||
| 392 | + } | ||
| 393 | + | ||
| 394 | + //评估填写数据行转列 | ||
| 395 | + tableHeader := []adapter.ListTableHeader{ | ||
| 396 | + {Key: "userName", Name: "姓名"}, | ||
| 397 | + {Key: "status", Name: "状态"}, | ||
| 398 | + {Key: "types", Name: "360°评估关系"}, | ||
| 399 | + {Key: "endTime", Name: "360°评估截止日期"}, | ||
| 400 | + } | ||
| 401 | + tableHeader = append(tableHeader, changeableHeader...) | ||
| 402 | + listData := []map[string]string{} | ||
| 403 | + for _, v := range assessList { | ||
| 404 | + m := map[string]string{ | ||
| 405 | + "userName": v.TargetUser.UserName, | ||
| 406 | + "userId": strconv.Itoa(v.TargetUser.UserId), | ||
| 407 | + "status": string(v.Status), | ||
| 408 | + "types": string(v.Types), | ||
| 409 | + "endTime": v.EndTime.Local().Format("2006-01-02 15:04:05"), | ||
| 410 | + "assessId": strconv.Itoa(v.Id), | ||
| 411 | + } | ||
| 412 | + switch v.Status { | ||
| 413 | + case domain.StaffAssessCompleted: | ||
| 414 | + m["status"] = "已经完成" | ||
| 415 | + case domain.StaffAssessUncompleted: | ||
| 416 | + m["status"] = "未完成" | ||
| 417 | + } | ||
| 418 | + | ||
| 419 | + switch v.Types { | ||
| 420 | + case domain.AssessInviteDiffSuper: | ||
| 421 | + m["types"] = "不同上级同事" | ||
| 422 | + case domain.AssessInviteSameSuper: | ||
| 423 | + m["types"] = "相同上级同事" | ||
| 424 | + } | ||
| 425 | + if row, ok := changeableRows[v.TargetUser.UserId]; ok { | ||
| 426 | + for k, v := range row { | ||
| 427 | + m[k] = v | ||
| 428 | + } | ||
| 429 | + } else { | ||
| 430 | + for _, v := range changeableHeader { | ||
| 431 | + m[v.Key] = "" | ||
| 432 | + } | ||
| 433 | + } | ||
| 434 | + listData = append(listData, m) | ||
| 435 | + } | ||
| 436 | + result := adapter.ListInviteUserAssessResp{ | ||
| 437 | + TableHeader: tableHeader, | ||
| 438 | + List: listData, | ||
| 439 | + Total: cnt, | ||
| 440 | + } | ||
| 441 | + for _, v := range assessTaskData.StepList { | ||
| 442 | + if v.LinkNodeType == domain.LinkNodeAllAssessment { | ||
| 443 | + result.LinkNodeId = v.LinkNodeId | ||
| 444 | + result.LinkNodeName = v.LinkNodeName | ||
| 445 | + result.LintNodeDesc = fmt.Sprintf("截止时间 %s 待评估%d人", v.EndTime.Local().Format("2006-01-02 15:04:05"), cnnt) | ||
| 446 | + } | ||
| 447 | + } | ||
| 448 | + return &result, nil | ||
| 449 | +} |
-
请 注册 或 登录 后发表评论