diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb index 6b33a38ec..7808691cf 100644 --- a/app/controllers/homework_common_controller.rb +++ b/app/controllers/homework_common_controller.rb @@ -92,7 +92,7 @@ class HomeworkCommonController < ApplicationController @homework.publish_time = params[:homework_common][:publish_time] @homework.homework_type = params[:homework_common][:homework_type] unless @homework.late_penalty == params[:late_penalty] - @homework.student_works.where("late_penalty != 0").each do |student_work| + @homework.student_works.where("created_at > #{@homework.end_time}").each do |student_work| student_work.late_penalty = params[:late_penalty] student_work.save end @@ -108,8 +108,10 @@ class HomeworkCommonController < ApplicationController @homework_detail_manual.evaluation_num = params[:evaluation_num] unless @homework_detail_manual.absence_penalty == params[:absence_penalty] if @homework_detail_manual.comment_status == 3 #当前作业处于匿评结束状态,修改缺评扣分才会修改每个作品应扣分的值 - @homework.student_works.where("absence_penalty != 0").each do |student_work| - student_work.absence_penalty = student_work.absence_penalty / @homework_detail_manual.absence_penalty * params[:absence_penalty].to_i + work_ids = "(" + @homework.student_works.map(&:id).join(",") + ")" + @homework.student_works.each do |student_work| + absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count + student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * @homework_detail_manual.absence_penalty : 0 student_work.save end end