作者 tangxvhui
@@ -1371,85 +1371,95 @@ func (srv *SummaryEvaluationService) ConfirmScoreEvaluation(param *command.Confi @@ -1371,85 +1371,95 @@ func (srv *SummaryEvaluationService) ConfirmScoreEvaluation(param *command.Confi
1371 return application.ThrowError(application.TRANSACTION_ERROR, "前面流程暂未完成提交评估内容") 1371 return application.ThrowError(application.TRANSACTION_ERROR, "前面流程暂未完成提交评估内容")
1372 } 1372 }
1373 1373
1374 - _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{  
1375 - "companyId": result.CompanyId,  
1376 - "cycleId": result.CycleId,  
1377 - "targetUserId": result.TargetUser.UserId,  
1378 - })  
1379 - if err != nil {  
1380 - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
1381 - }  
1382 -  
1383 - var super *domain.SummaryEvaluation // 上级评估  
1384 - for i := range evaluationList {  
1385 - it := evaluationList[i]  
1386 - if it.Types == domain.EvaluationSuper {  
1387 - super = it  
1388 - break  
1389 - }  
1390 - }  
1391 -  
1392 - // 评估内容和值  
1393 - var itemList []*domain.EvaluationItemUsed  
1394 - var itemValues []*domain.SummaryEvaluationValue  
1395 -  
1396 - // 获取自评模板内容  
1397 - _, itemList, err = evaluationItemRepo.Find(map[string]interface{}{"evaluationProjectId": result.EvaluationProjectId, "nodeType": domain.LinkNodeSelfAssessment}) 1374 + // 按评估项优先级顺序(已确认考核结果 ->上级评估 ->HR或360评估或自评)
  1375 + _, itemValues, err := itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": result.Id, "limit": 1})
1398 if err != nil { 1376 if err != nil {
1399 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1377 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1400 } 1378 }
1401 -  
1402 - // 按评估项优先级顺序(已确认考核结果 ->上级评估 ->HR或360评估或自评)  
1403 - if super != nil {  
1404 - _, itemValues, err = itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": super.Id}) // 获取已填写的评估内容  
1405 - if err != nil {  
1406 - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
1407 - }  
1408 - // 更新填写值  
1409 - itemValues, err = srv.updateItemValuePriority(result, itemList, itemValues, true) 1379 + // 如果已经存在考核结果分数,不再进行分数计算(如.超管多次修改员工多次确认)
  1380 + if len(itemValues) > 0 {
  1381 + // do nothing...
  1382 + } else {
  1383 + // 周期内所有评估类型
  1384 + _, evaluationList, err := evaluationRepo.Find(map[string]interface{}{
  1385 + "companyId": result.CompanyId,
  1386 + "cycleId": result.CycleId,
  1387 + "targetUserId": result.TargetUser.UserId,
  1388 + })
1410 if err != nil { 1389 if err != nil {
1411 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1390 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1412 } 1391 }
1413 - } else {  
1414 - // 评估项ID(除考核结果和上级)  
1415 - var evaluationIds = make([]int, 0) 1392 +
  1393 + var super *domain.SummaryEvaluation // 上级评估
1416 for i := range evaluationList { 1394 for i := range evaluationList {
1417 it := evaluationList[i] 1395 it := evaluationList[i]
1418 - if it.Types == domain.EvaluationSelf || it.Types == domain.Evaluation360 || it.Types == domain.EvaluationHrbp {  
1419 - evaluationIds = append(evaluationIds, it.Id) 1396 + if it.Types == domain.EvaluationSuper {
  1397 + super = it
  1398 + break
1420 } 1399 }
1421 } 1400 }
1422 - if len(evaluationIds) > 0 {  
1423 - // 获取已填写的评估内容  
1424 - _, itemValues, err = itemValueRepo.Find(map[string]interface{}{"summaryEvaluationIdList": evaluationIds}) 1401 +
  1402 + // 评估内容和值
  1403 + var itemList []*domain.EvaluationItemUsed
  1404 + var itemValues []*domain.SummaryEvaluationValue
  1405 +
  1406 + // 获取自评模板
  1407 + _, itemList, err = evaluationItemRepo.Find(map[string]interface{}{"evaluationProjectId": result.EvaluationProjectId, "nodeType": domain.LinkNodeSelfAssessment})
  1408 + if err != nil {
  1409 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1410 + }
  1411 +
  1412 + if super != nil {
  1413 + _, itemValues, err = itemValueRepo.Find(map[string]interface{}{"summaryEvaluationId": super.Id}) // 获取已填写的评估内容
1425 if err != nil { 1414 if err != nil {
1426 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1415 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1427 } 1416 }
1428 -  
1429 // 更新填写值 1417 // 更新填写值
1430 - itemValues, err = srv.updateItemValuePriority(result, itemList, itemValues, false) 1418 + itemValues, err = srv.updateItemValuePriority(result, itemList, itemValues, true)
1431 if err != nil { 1419 if err != nil {
1432 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1420 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1433 } 1421 }
  1422 + } else {
  1423 + // 评估项ID(除考核结果和上级)
  1424 + var evaluationIds = make([]int, 0)
  1425 + for i := range evaluationList {
  1426 + it := evaluationList[i]
  1427 + if it.Types == domain.EvaluationSelf || it.Types == domain.Evaluation360 || it.Types == domain.EvaluationHrbp {
  1428 + evaluationIds = append(evaluationIds, it.Id)
  1429 + }
  1430 + }
  1431 + if len(evaluationIds) > 0 {
  1432 + // 已填写的评估内容
  1433 + _, itemValues, err = itemValueRepo.Find(map[string]interface{}{"summaryEvaluationIdList": evaluationIds})
  1434 + if err != nil {
  1435 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1436 + }
  1437 +
  1438 + // 更新填写值
  1439 + itemValues, err = srv.updateItemValuePriority(result, itemList, itemValues, false)
  1440 + if err != nil {
  1441 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1442 + }
  1443 + }
1434 } 1444 }
1435 - }  
1436 - err = itemValueRepo.RemoveBySummaryEvaluationId(result.Id)  
1437 - if err != nil {  
1438 - return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())  
1439 - }  
1440 - for i := range itemValues {  
1441 - if err := itemValueRepo.Save(itemValues[i]); err != nil { 1445 + err = itemValueRepo.RemoveBySummaryEvaluationId(result.Id)
  1446 + if err != nil {
1442 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error()) 1447 return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
1443 } 1448 }
1444 - }  
1445 - //重置评级汇总  
1446 - result.TotalRating = nil  
1447 - for i := range itemList {  
1448 - result.ResetTotalRating(itemList[i])  
1449 - }  
1450 - //重新计算总分  
1451 - if err := result.EvaluationTotalScore(itemValues); err != nil {  
1452 - return application.ThrowError(application.TRANSACTION_ERROR, err.Error()) 1449 + for i := range itemValues {
  1450 + if err := itemValueRepo.Save(itemValues[i]); err != nil {
  1451 + return application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  1452 + }
  1453 + }
  1454 + // 重置评级汇总
  1455 + result.TotalRating = nil
  1456 + for i := range itemList {
  1457 + result.ResetTotalRating(itemList[i])
  1458 + }
  1459 + // 计算分数
  1460 + if err := result.EvaluationTotalScore(itemValues); err != nil {
  1461 + return application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  1462 + }
1453 } 1463 }
1454 1464
1455 result.CheckResult = domain.EvaluationCheckCompleted 1465 result.CheckResult = domain.EvaluationCheckCompleted