diff --git a/app/services/homeworks_service.rb b/app/services/homeworks_service.rb index c70535e17..5483eed83 100644 --- a/app/services/homeworks_service.rb +++ b/app/services/homeworks_service.rb @@ -133,8 +133,10 @@ class HomeworksService # 计算实训作品学生的效率分 def update_student_eff_score homework if homework.work_efficiency && homework.max_efficiency != 0 + max_efficiency = homework.student_works.where("compelete_status != 0").pluck(:efficiency).max + homework.update_column("max_efficiency", max_efficiency) homework.student_works.where("compelete_status != 0").each do |student_work| - eff_score = student_work.efficiency / homework.max_efficiency * homework.eff_score + eff_score = student_work.efficiency / max_efficiency * homework.eff_score student_work.eff_score = format("%.2f", eff_score) student_work.late_penalty = student_work.work_status == 1 ? 0 : homework.late_penalty unless student_work.ultimate_score @@ -333,7 +335,10 @@ class HomeworksService work.compelete_status = myshixun_endtime < setting_time.end_time ? 2 : 3 # 如果作业的最大效率值有变更则更新所有作品的效率分 - homework.update_column("max_efficiency", work.efficiency) if homework.work_efficiency && homework.max_efficiency < work.efficiency + if homework.work_efficiency && homework.max_efficiency < work.efficiency + homework.max_efficiency = work.efficiency + homework.save(validate: false) + end else work.compelete_status = 1 # 未通关 end