diff --git a/app/controllers/attendances_controller.rb b/app/controllers/attendances_controller.rb index 256e651e8..412b3bee6 100644 --- a/app/controllers/attendances_controller.rb +++ b/app/controllers/attendances_controller.rb @@ -79,8 +79,26 @@ class AttendancesController < ApplicationController new_end_time = "#{params[:attendance_date]} #{params[:end_time]}".to_time @attendance.update!(update_params) - # 如果历史签到变为了正在签到,将未创建的学生签到数据补上 - if a_end_time < Time.current && new_end_time > Time.current + old_group_ids = @attendance.course_attendance_groups.pluck(:course_group_id) + unless old_group_ids.include?(0) + all_groups_ids = old_group_ids + params[:group_ids] + # 如果新增的的分班加上之前的分班是课堂的全部分班,则只需创建一条记录 + if all_groups_ids.uniq.count == @course.course_groups_count + @attendance.course_attendance_groups.destroy_all + @attendance.course_attendance_groups.create!(course_group_id: 0, course_id: @attendance.course_id) + new_group = true + else + new_group_ids = params[:group_ids] - old_group_ids + new_group_ids.each do |group_id| + @attendance.course_attendance_groups.create!(course_group_id: group_id, course_id: @attendance.course_id) + new_group = true + end + end + + end + + # 如果新增了分班或者历史签到变为了正在签到,将未创建的学生签到数据补上 + if new_group || (a_end_time < Time.current && new_end_time > Time.current) create_absence_student_data end render_ok