作者 tangxvhui

定时下发任务型指标

@@ -948,8 +948,3 @@ outerLoop: @@ -948,8 +948,3 @@ outerLoop:
948 948
949 return map[string]interface{}{"indicatorTypeTask": indicatorTypeTask}, nil 949 return map[string]interface{}{"indicatorTypeTask": indicatorTypeTask}, nil
950 } 950 }
951 -  
952 -// 生成指标任务  
953 -func (rs *EvaluationProjectService) generateEvaluationTask() error {  
954 - return nil  
955 -}  
@@ -19,9 +19,8 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat @@ -19,9 +19,8 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
19 log.Logger.Debug("CreateStaffAssessTask 获取参数", map[string]interface{}{ 19 log.Logger.Debug("CreateStaffAssessTask 获取参数", map[string]interface{}{
20 "param": param, 20 "param": param,
21 }) 21 })
22 - assessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{  
23 - "transactionContext": transactionContext,  
24 - }) 22 + assessTaskRepo := factory.CreateStaffAssessTaskRepository(map[string]interface{}{"transactionContext": transactionContext})
  23 +
25 taskBeginTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.BeginTime, time.Local) 24 taskBeginTime, err := time.ParseInLocation("2006-01-02 15:04:05", param.BeginTime, time.Local)
26 if err != nil { 25 if err != nil {
27 return nil, application.ThrowError(application.ARG_ERROR, "任务开始时间填写错误,"+param.BeginTime) 26 return nil, application.ThrowError(application.ARG_ERROR, "任务开始时间填写错误,"+param.BeginTime)
@@ -123,15 +122,16 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat @@ -123,15 +122,16 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
123 } 122 }
124 stepList := domain.SortTaskStep(assessTaskData.StepList) 123 stepList := domain.SortTaskStep(assessTaskData.StepList)
125 sort.Sort(stepList) 124 sort.Sort(stepList)
  125 + //保存 下发的每日评估
126 _, err = assessTaskRepo.Save(assessTaskData) 126 _, err = assessTaskRepo.Save(assessTaskData)
127 if err != nil { 127 if err != nil {
128 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存评估任务"+err.Error()) 128 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存评估任务"+err.Error())
129 } 129 }
130 -  
131 //保存 员工的需要填写的每日评估 130 //保存 员工的需要填写的每日评估
132 - assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{  
133 - "transactionContext": transactionContext,  
134 - }) 131 + assessRepo := factory.CreateStaffAssessRepository(map[string]interface{}{"transactionContext": transactionContext})
  132 + //保存 员工的需要填写的每日任务型 指标项
  133 + taskRecordRepo := factory.CreateTaskRecordRepository(map[string]interface{}{"transactionContext": transactionContext})
  134 +
135 for i := range assessList { 135 for i := range assessList {
136 assessList[i].StaffAssessTaskId = assessTaskData.Id 136 assessList[i].StaffAssessTaskId = assessTaskData.Id
137 _, err = assessRepo.Save(&assessList[i]) 137 _, err = assessRepo.Save(&assessList[i])
@@ -141,7 +141,20 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat @@ -141,7 +141,20 @@ func (srv StaffAssessServeice) CreateStaffAssessTask(transactionContext applicat
141 if assessList[i].Types == domain.AssessSelf { 141 if assessList[i].Types == domain.AssessSelf {
142 //添加待发送的短信通知 142 //添加待发送的短信通知
143 notify.AddNotifyStaffAssess(&assessList[i]) 143 notify.AddNotifyStaffAssess(&assessList[i])
  144 + }
  145 +
  146 + if assessList[i].Types == domain.AssessSelf {
144 //添加 指标任务 147 //添加 指标任务
  148 + taskRecordList, err := srv.buildTaskRecord(&assessList[i])
  149 + if err != nil {
  150 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "构建个人任务型指标项"+err.Error())
  151 + }
  152 + for _, val2 := range taskRecordList {
  153 + _, err := taskRecordRepo.Insert(val2)
  154 + if err != nil {
  155 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存个人任务型指标项"+err.Error())
  156 + }
  157 + }
145 } 158 }
146 } 159 }
147 return map[string]interface{}{ 160 return map[string]interface{}{
@@ -381,7 +394,7 @@ func (srv StaffAssessServeice) buildStaffAssessSupper( @@ -381,7 +394,7 @@ func (srv StaffAssessServeice) buildStaffAssessSupper(
381 394
382 // 按照评估模板中指标类型,创建里程碑任务 395 // 按照评估模板中指标类型,创建里程碑任务
383 // staffAssess 每日自评评估 396 // staffAssess 每日自评评估
384 -func (srv StaffAssessCacheService) buildTaskRecord(staffAssess *domain.StaffAssess) ([]*domain.TaskRecord, error) { 397 +func (srv StaffAssessServeice) buildTaskRecord(staffAssess *domain.StaffAssess) ([]*domain.TaskRecord, error) {
385 transactionContext, err := factory.CreateTransactionContext(nil) 398 transactionContext, err := factory.CreateTransactionContext(nil)
386 if err != nil { 399 if err != nil {
387 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 400 return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
@@ -398,16 +411,25 @@ func (srv StaffAssessCacheService) buildTaskRecord(staffAssess *domain.StaffAsse @@ -398,16 +411,25 @@ func (srv StaffAssessCacheService) buildTaskRecord(staffAssess *domain.StaffAsse
398 itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{ 411 itemUsedRepo := factory.CreateEvaluationItemUsedRepository(map[string]interface{}{
399 "transactionContext": transactionContext, 412 "transactionContext": transactionContext,
400 }) 413 })
  414 + taskRepo := factory.CreateTaskRepository(map[string]interface{}{
  415 + "transactionContext": transactionContext,
  416 + })
  417 + taskStageRepo := factory.CreateTaskStageRepository(map[string]interface{}{
  418 + "transactionContext": transactionContext,
  419 + })
  420 +
401 projectData, err := projectRepo.FindOne(map[string]interface{}{"id": staffAssess.EvaluationProjectId}) 421 projectData, err := projectRepo.FindOne(map[string]interface{}{"id": staffAssess.EvaluationProjectId})
402 if err != nil { 422 if err != nil {
403 return nil, application.ThrowError(application.ARG_ERROR, "获取项目EvaluationProject信息"+err.Error()) 423 return nil, application.ThrowError(application.ARG_ERROR, "获取项目EvaluationProject信息"+err.Error())
404 } 424 }
  425 +
405 // projectData.PrincipalId 426 // projectData.PrincipalId
406 userIdstr := strconv.Itoa(staffAssess.Executor.UserId) 427 userIdstr := strconv.Itoa(staffAssess.Executor.UserId)
407 if projectData.PrincipalId != userIdstr { 428 if projectData.PrincipalId != userIdstr {
408 return nil, nil 429 return nil, nil
409 } 430 }
410 - _, evaluationItem, err := itemUsedRepo.Find(map[string]interface{}{ 431 + // 获取指标为任务类型的评估项
  432 + _, evaluationItemList, err := itemUsedRepo.Find(map[string]interface{}{
411 "indicatorType": domain.IndicatorTypeTask, 433 "indicatorType": domain.IndicatorTypeTask,
412 "evaluationProjectId": projectData.Id, 434 "evaluationProjectId": projectData.Id,
413 }) 435 })
@@ -415,11 +437,59 @@ func (srv StaffAssessCacheService) buildTaskRecord(staffAssess *domain.StaffAsse @@ -415,11 +437,59 @@ func (srv StaffAssessCacheService) buildTaskRecord(staffAssess *domain.StaffAsse
415 if err != nil { 437 if err != nil {
416 return nil, application.ThrowError(application.ARG_ERROR, "获取评估项EvaluationItemUsed信息"+err.Error()) 438 return nil, application.ThrowError(application.ARG_ERROR, "获取评估项EvaluationItemUsed信息"+err.Error())
417 } 439 }
418 -  
419 - _ = evaluationItem 440 + if len(evaluationItemList) == 0 {
  441 + return nil, nil
  442 + }
  443 + taskRecordList := []*domain.TaskRecord{}
  444 + for _, val := range evaluationItemList {
  445 + _, taskList, err := taskRepo.Find(map[string]interface{}{
  446 + "name": val.Name,
  447 + "leaderId": projectData.PrincipalId,
  448 + })
  449 + if err != nil {
  450 + return nil, application.ThrowError(application.ARG_ERROR, "获取评估项指标任务task信息"+err.Error())
  451 + }
  452 + if len(taskList) == 0 {
  453 + continue
  454 + }
  455 + //获取里程碑数据
  456 + _, taskStageList, err := taskStageRepo.Find(map[string]interface{}{
  457 + "taskId": taskList[0].Id,
  458 + })
  459 + if err != nil {
  460 + return nil, application.ThrowError(application.ARG_ERROR, "获取评估项指标任务里程碑TaskStage信息"+err.Error())
  461 + }
  462 + newTaskRecord := domain.TaskRecord{
  463 + Id: 0,
  464 + CompanyId: staffAssess.CompanyId,
  465 + StaffAssessId: staffAssess.Id,
  466 + TaskId: taskList[0].Id,
  467 + TaskCategory: val.Category,
  468 + TaskName: taskList[0].Name,
  469 + TaskAlias: taskList[0].Alias,
  470 + TaskLeader: taskList[0].Leader,
  471 + AssistLevel: 0,
  472 + AssistContent: "",
  473 + TaskStages: []domain.TaskStage{},
  474 + TaskStageCheck: domain.TaskStage{},
  475 + }
  476 + sort.Slice(taskStageList, func(i, j int) bool {
  477 + return taskStageList[i].SortBy < taskStageList[j].SortBy
  478 + })
  479 + for i2, val2 := range taskStageList {
  480 + newTaskRecord.TaskStages = append(newTaskRecord.TaskStages, *taskStageList[i2])
  481 + if newTaskRecord.TaskStageCheck.Id == 0 {
  482 + //按顺序第一个未完成的里程碑
  483 + if val2.RealCompletedAt <= 0 {
  484 + newTaskRecord.TaskStageCheck = *taskStageList[i2]
  485 + }
  486 + }
  487 + }
  488 + taskRecordList = append(taskRecordList, &newTaskRecord)
  489 + }
420 490
421 if err := transactionContext.CommitTransaction(); err != nil { 491 if err := transactionContext.CommitTransaction(); err != nil {
422 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 492 return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
423 } 493 }
424 - return nil, nil 494 + return taskRecordList, nil
425 } 495 }
@@ -63,7 +63,7 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont @@ -63,7 +63,7 @@ func (srv TaskService) CreateTask(transactionContext application.TransactionCont
63 }) 63 })
64 cnt, _, err := taskRepo.Find(map[string]interface{}{ 64 cnt, _, err := taskRepo.Find(map[string]interface{}{
65 "name": param.Name, 65 "name": param.Name,
66 - "leaderId": param.LeaderId, 66 + "leaderId": strconv.Itoa(param.LeaderId),
67 }) 67 })
68 if err != nil { 68 if err != nil {
69 return application.ThrowError(application.INTERNAL_SERVER_ERROR, "查询任务失败:"+err.Error()) 69 return application.ThrowError(application.INTERNAL_SERVER_ERROR, "查询任务失败:"+err.Error())
@@ -828,5 +828,3 @@ func (srv TaskService) ReplyTaskStage(transactionContext application.Transaction @@ -828,5 +828,3 @@ func (srv TaskService) ReplyTaskStage(transactionContext application.Transaction
828 } 828 }
829 return nil 829 return nil
830 } 830 }
831 -  
832 -// func (srv TaskService)  
@@ -125,7 +125,7 @@ func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*d @@ -125,7 +125,7 @@ func (repo *TaskRepository) Find(queryOptions map[string]interface{}) (int, []*d
125 } 125 }
126 126
127 if val, ok := queryOptions["leaderId"]; ok { 127 if val, ok := queryOptions["leaderId"]; ok {
128 - query.Where("task.leader->>'id'='?'", val) 128 + query.Where("task.leader->>'id'=?", val)
129 } 129 }
130 if val, ok := queryOptions["aliasOrLeader"]; ok { 130 if val, ok := queryOptions["aliasOrLeader"]; ok {
131 query.Where(`task.alias like ? or task.leader->>'name' like ?`, val, val) 131 query.Where(`task.alias like ? or task.leader->>'name' like ?`, val, val)