From cde31b17021195acb3d29f91e219280c03c7f053 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Jun 2019 11:03:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E5=88=97=E8=A1=A8=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=88=90=E7=BB=A9=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 55 ++++++++++++++------------- app/helpers/application_helper.rb | 12 +++--- app/models/exercise.rb | 1 + app/models/homework_common.rb | 1 + 4 files changed, 38 insertions(+), 31 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 669cc58f..10332752 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -1194,12 +1194,14 @@ class CoursesController < ApplicationController @exercises = @course.exercises.where("publish_time <= '#{Time.now}'").order("publish_time asc, created_at asc") @tasks = @course.graduation_tasks.where("publish_time <= '#{Time.now}'").order("publish_time asc, created_at asc") +=begin @homeworks.where(:homework_type => 4).each do |homework| items = homework.student_works.where("work_status != 0") if items.count == 0 && homework.publish_time < Time.now && !@course.is_end update_shixun_work_status homework end end +=end respond_to do |format| format.xls { @@ -2383,12 +2385,13 @@ class CoursesController < ApplicationController blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10 #sheet1.row(0).default_format = blue #sheet1.row(0).concat([l(:excel_user_id),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_mail),l(:excel_class),l(:excel_f_score),l(:excel_commit_time)]) + teacher_co = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') sheet1[0,0] = "课程编号" sheet1[0,1] = course.id sheet1[1,0] = "课程名称" sheet1[1,1] = course.name sheet1[2,0] = "教师团队" - sheet1[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet1[2,1] = teacher_co sheet1[3,0] = "主讲教师" sheet1[3,1] = course.teacher.show_real_name sheet1[4,0] = "排名" @@ -2401,16 +2404,16 @@ class CoursesController < ApplicationController homeworks.where(:homework_type => 4).each do |homework| sheet1[4,current_col+=1] = "#{homework.name}" end - for i in 0 ... homeworks.where(:homework_type => 1).count + for i in 0 ... homeworks.where(:homework_type => 1).size sheet1[4,current_col+=1] = "普通作业第"+(i+1).to_s+"次" end - for i in 0 ... homeworks.where(:homework_type => 3).count + for i in 0 ... homeworks.where(:homework_type => 3).size sheet1[4,current_col+=1] = "分组作业第"+(i+1).to_s+"次" end - for i in 0 ... exercises.count + for i in 0 ... exercises.size sheet1[4,current_col+=1] = "试卷第"+(i+1).to_s+"次" end - for i in 0 ... tasks.count + for i in 0 ... tasks.size sheet1[4,current_col+=1] = "毕设任务第"+(i+1).to_s+"次" end @@ -2511,15 +2514,15 @@ class CoursesController < ApplicationController sheet = book.create_worksheet :name => "分班信息" sheet.row(0).concat(["课程编号", course.id]) sheet.row(1).concat(["课程名称", course.name]) - sheet.row(2).concat(["教师团队", (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、')]) + sheet.row(2).concat(["教师团队", teacher_co]) sheet.row(3).concat(["主讲教师", course.teacher.show_real_name]) sheet.row(4).concat(["序号", "分班名称", "邀请码", "学生数量"]) current_row = 5 - course.course_groups.each do |course_group| + course.course_groups.includes(:members).each do |course_group| sheet[current_row,0]= current_row - 4 sheet[current_row,1]= course_group.name sheet[current_row,2]= course_group.invite_code - sheet[current_row,3]= course_group.members.count + sheet[current_row,3]= course_group.members.size current_row += 1 end end @@ -2530,7 +2533,7 @@ class CoursesController < ApplicationController sheet2[1,0] = "课程名称" sheet2[1,1] = course.name sheet2[2,0] = "教师团队" - sheet2[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet2[2,1] = teacher_co sheet2[3,0] = "主讲教师" sheet2[3,1] = course.teacher.show_real_name sheet2.row(4).concat(["排名","学生姓名","昵称","学号","分班","作业完成数(*10)","试卷完成数(*10)","问卷完成数(*7)","资源发布数(*5)","帖子发布数(*2)","帖子回复数(*1)","作业回复数(*1)","活跃度"]) @@ -2559,14 +2562,14 @@ class CoursesController < ApplicationController count_row += 1 end - homeworks.where(:homework_type => 4).includes(:student_works).each_with_index do |home, i| + homeworks.where(:homework_type => 4).includes(:score_student_works).each_with_index do |home, i| sheet = book.create_worksheet :name => "#{home.name}" sheet[0,0] = "课程编号" sheet[0,1] = course.id sheet[1,0] = "课程名称" sheet[1,1] = course.name sheet[2,0] = "教师团队" - sheet[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet[2,1] = teacher_co sheet[3,0] = "主讲教师" sheet[3,1] = course.teacher.show_real_name sheet[3,0] = "作业批次" @@ -2575,11 +2578,11 @@ class CoursesController < ApplicationController sheet[3,1] = home.name sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)]) count_row = 5 - items = home.student_works.where("work_status != 0").order("work_score desc") - if items.count == 0 && home.publish_time < Time.now && !course.is_end - update_shixun_work_status home - items = StudentWork.where("work_status != 0 and homework_common_id = #{home.id}").order("work_score desc") - end + items = home.score_student_works + # if items.count == 0 && home.publish_time < Time.now && !course.is_end + # update_shixun_work_status home + # items = StudentWork.where("work_status != 0 and homework_common_id = #{home.id}").order("work_score desc") + # end items.each_with_index do |stu, j| sheet[count_row,0]= j + 1 sheet[count_row,1] = stu.user.show_real_name @@ -2593,14 +2596,14 @@ class CoursesController < ApplicationController end end - homeworks.where(:homework_type => 1).includes(:student_works).each_with_index do |home, i| + homeworks.where(:homework_type => 1).includes(:score_student_works).each_with_index do |home, i| sheet = book.create_worksheet :name => "普通作业第#{i+1}次" sheet[0,0] = "课程编号" sheet[0,1] = course.id sheet[1,0] = "课程名称" sheet[1,1] = course.name sheet[2,0] = "教师团队" - sheet[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet[2,1] = teacher_co sheet[3,0] = "主讲教师" sheet[3,1] = course.teacher.show_real_name sheet[3,0] = "作业批次" @@ -2615,7 +2618,7 @@ class CoursesController < ApplicationController l(:excel_t_score),l(:excel_ta_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)]) end count_row = 5 - items = home.student_works.where("work_status != 0").order("work_score desc") + items = home.score_student_works items.each_with_index do |stu, j| sheet[count_row,0]= j + 1 sheet[count_row,1] = stu.user.show_real_name @@ -2640,14 +2643,14 @@ class CoursesController < ApplicationController end - homeworks.where(:homework_type => 3).includes(:student_works).each_with_index do |home, i| + homeworks.where(:homework_type => 3).includes(:score_student_works).each_with_index do |home, i| sheet = book.create_worksheet :name => "分组作业第#{i+1}次" sheet[0,0] = "课程编号" sheet[0,1] = course.id sheet[1,0] = "课程名称" sheet[1,1] = course.name sheet[2,0] = "教师团队" - sheet[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet[2,1] = teacher_co sheet[3,0] = "主讲教师" sheet[3,1] = course.teacher.show_real_name sheet[3,0] = "作业批次" @@ -2663,7 +2666,7 @@ class CoursesController < ApplicationController l(:excel_t_score),l(:excel_ta_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)]) end count_row = 5 - items = home.student_works.where("work_status != 0").order("work_score desc") + items = home.score_student_works items.each_with_index do |stu, j| sheet[count_row,0] = j + 1 sheet[count_row,1] = stu.user.show_real_name @@ -2688,14 +2691,14 @@ class CoursesController < ApplicationController end end - exercises.each_with_index do |exercise, i| + exercises.includes(:score_exercise_users).each_with_index do |exercise, i| sheet = book.create_worksheet :name => "试卷第#{i+1}次" sheet[0,0] = "课程编号" sheet[0,1] = course.id sheet[1,0] = "课程名称" sheet[1,1] = course.name sheet[3,0] = "教师团队" - sheet[3,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet[3,1] = teacher_co sheet[3,0] = "主讲教师" sheet[3,1] = course.teacher.show_real_name sheet[3,0] = "试卷批次" @@ -2705,7 +2708,7 @@ class CoursesController < ApplicationController sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_objective_score),l(:excel_subjective_score),l(:excel_f_score),l(:excel_answer_time)]) count_row = 5 - items = exercise.exercise_users.where("commit_status != 0").order("score desc") + items = exercise.score_exercise_users items.each_with_index do |stu, j| sheet[count_row,0] = j + 1 sheet[count_row,1] = stu.user.show_real_name @@ -2726,7 +2729,7 @@ class CoursesController < ApplicationController sheet[1,0] = "课程名称" sheet[1,1] = course.name sheet[2,0] = "教师团队" - sheet[2,1] = (searchTeacherAndAssistant course).map{|member| member.user.show_real_name}.join('、') + sheet[2,1] = teacher_co sheet[3,0] = "主讲教师" sheet[3,1] = course.teacher.show_real_name sheet[3,0] = "作业批次" diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 18473fbf..8939a32c 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -6610,12 +6610,14 @@ def update_shixun_work_status homework compelete_status = 1 end end - if setting_time.end_time > Time.now - work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) - else - work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) + if setting.publish_time && setting.publish_time < Time.now && setting_time.end_time + if setting_time.end_time > Time.now + work.update_attributes(:work_status => 1, :late_penalty => 0, :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) + else + work.update_attributes(:work_status => ((myshixun.is_complete? && (myshixun.done_time < setting_time.end_time)) ? 1 : 2), :late_penalty => (myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) ? 0 : homework.late_penalty), :commit_time => myshixun.updated_at, :update_time => myshixun.updated_at, :myshixun_id => myshixun.id, :compelete_status => compelete_status) + end + set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings end - set_shixun_final_score work, homework.homework_detail_manual.answer_open_evaluation, homework_challenge_settings end # 更新所有学生的效率分 update_student_eff_score HomeworkCommon.where(:id => homework.id).first diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 47993cf9..f82b6047 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -7,6 +7,7 @@ class Exercise < ActiveRecord::Base has_many :exercise_group_settings, :dependent => :destroy has_many :exercise_questions, :dependent => :destroy,:order => "#{ExerciseQuestion.table_name}.question_number" has_many :exercise_users, :dependent => :destroy, :conditions => "exercise_users.is_delete = 0" + has_many :score_exercise_users, :conditions => "exercise_users.is_delete = 0 and commit_status != 0", :order => "exercise_users.score desc" has_many :users, :through => :exercise_users #该测试被哪些用户提交答案过 has_many :course_acts, :class_name => 'CourseActivity',:as =>:course_act ,:dependent => :destroy # 课程消息 diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index af466de3..b0482450 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -28,6 +28,7 @@ class HomeworkCommon < ActiveRecord::Base # has_many :homework_tests, :dependent => :destroy # has_many :homework_samples, :dependent => :destroy has_many :student_works, :conditions => "student_works.is_test=0 and student_works.is_delete != 1" + has_many :score_student_works, :class_name => "StudentWork", :conditions => "student_works.is_test=0 and student_works.is_delete != 1 and work_status != 0", :order => "work_score desc" has_many :student_works_evaluation_distributions, :through => :student_works #一个作业的分配的匿评列表 has_many :journals_for_messages, :as => :jour, :dependent => :destroy has_many :apply_homeworks