作者 Your Name

更新

... ... @@ -611,7 +611,7 @@ func (srv StaffAssessServeice) GetAssessInviteUser(param *query.GetAssessInviteU
}
// 保存某个员工360邀请的人员
func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInvite) (*adapter.AssessInviteUserResp, error) {
func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInvite) (map[string]interface{}, error) {
inviteSameSuperId := []int{}
InviteDiffSuperId := []int{}
for _, v := range param.InviteDiffSuper {
... ... @@ -659,6 +659,19 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
return nil, application.ThrowError(application.ARG_ERROR, "获取评估任务"+err.Error())
}
//获取邀请评估的节点
var inviteNode *domain.AssessTaskStep
for _, v := range assessTaskData.StepList {
if v.LinkNodeType == domain.LinkNodeAllAssessment {
cp := v
inviteNode = &cp
break
}
}
if inviteNode == nil {
return nil, application.ThrowError(application.ARG_ERROR, "评估任务没有邀请评估的环节")
}
targetUser, err := userRepo.FindOne(map[string]interface{}{
"id": param.TargetUserId,
})
... ... @@ -725,39 +738,94 @@ func (srv StaffAssessServeice) SaveAssessInviteUser(param *command.SaveAssessInv
return nil, application.ThrowError(application.ARG_ERROR, "获取员工邀请的人"+err.Error())
}
//比对新旧数据
_ = assessList
_ = targetUser
_ = inviteSameSuper
_ = inviteDiffSuper
_ = targetUserDepartment
nowTime := time.Now()
assessMap := map[string]*domain.StaffAssess{}
for _, v := range assessList {
//假设为删除
v.DeletedAt = &nowTime
key := fmt.Sprintf("%s%d", string(v.Types), v.Executor.UserId)
assessMap[key] = v
}
newAssessList := []*domain.StaffAssess{}
//邀请同上级的员工
for _, v := range inviteSameSuper {
key := fmt.Sprintf("%s%d", string(domain.AssessInviteSameSuper), v.UserId)
if _, ok := assessMap[key]; ok {
assessMap[key].DeletedAt = nil
} else {
newAssessList = append(newAssessList, &domain.StaffAssess{
Id: 0,
CompanyId: assessTaskData.CompanyId,
EvaluationProjectId: assessTaskData.EvaluationProjectId,
EvaluationProjectName: assessTaskData.EvaluationProjectName,
CycleId: assessTaskData.CycleId,
CycleName: assessTaskData.CycleName,
StaffAssessTaskId: assessTaskData.Id,
TargetUser: domain.StaffDesc{
UserId: int(targetUser.Id),
Account: targetUser.Account,
UserName: targetUser.Name,
},
TargetDepartment: targetUserDepartment,
Executor: v,
Types: domain.AssessInviteSameSuper,
LinkNodeId: inviteNode.LinkNodeId,
LinkNodeName: inviteNode.LinkNodeName,
Status: domain.StaffAssessUncompleted,
BeginTime: inviteNode.BeginTime,
EndTime: inviteNode.EndTime,
CreatedAt: nowTime,
UpdatedAt: nowTime,
DeletedAt: nil,
})
}
}
for _, v := range inviteDiffSuper {
key := fmt.Sprintf("%s%d", string(domain.AssessInviteDiffSuper), v.UserId)
if _, ok := assessMap[key]; ok {
assessMap[key].DeletedAt = nil
} else {
newAssessList = append(newAssessList, &domain.StaffAssess{
Id: 0,
CompanyId: assessTaskData.CompanyId,
EvaluationProjectId: assessTaskData.EvaluationProjectId,
EvaluationProjectName: assessTaskData.EvaluationProjectName,
CycleId: assessTaskData.CycleId,
CycleName: assessTaskData.CycleName,
StaffAssessTaskId: assessTaskData.Id,
TargetUser: domain.StaffDesc{
UserId: int(targetUser.Id),
Account: targetUser.Account,
UserName: targetUser.Name,
},
TargetDepartment: targetUserDepartment,
Executor: v,
Types: domain.AssessInviteDiffSuper,
LinkNodeId: inviteNode.LinkNodeId,
LinkNodeName: inviteNode.LinkNodeName,
Status: domain.StaffAssessUncompleted,
BeginTime: inviteNode.BeginTime,
EndTime: inviteNode.EndTime,
CreatedAt: nowTime,
UpdatedAt: nowTime,
DeletedAt: nil,
})
}
}
assessList = append(assessList, newAssessList...)
for i := range assessList {
_, err = assessReps.Save(assessList[i])
if err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, "保存员工邀请评估"+err.Error())
}
}
if err := transactionContext.CommitTransaction(); err != nil {
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
}
result := adapter.AssessInviteUserResp{
AssessTaskId: assessTaskData.Id,
}
// for _, v := range assessTaskData.StepList {
// if v.LinkNodeType != domain.LinkNodeAllInvite {
// continue
// }
// result.LinkNodeId = v.LinkNodeId
// result.LinkNodeName = v.LinkNodeName
// result.BeginTime = v.BeginTime.Local().Format("2006-01-02 15:04:05")
// result.EndTime = v.EndTime.Local().Format("2006-01-02 15:04:05")
// break
// }
// for _, v := range assessList {
// if v.Types == domain.AssessInviteDiffSuper {
// result.InviteDiffSuper = append(result.InviteDiffSuper, v.Executor)
// }
// if v.Types == domain.AssessInviteSameSuper {
// result.InviteSameSuper = append(result.InviteDiffSuper, v.Executor)
// }
// }
return &result, nil
result := map[string]interface{}{
"assessTaskId": assessTaskData.Id,
}
return result, nil
}
// 获取员工自评的评估内容详情
... ...