dev_bj
cxt 6 years ago
parent 94abdac635
commit fc64faa030

@ -1177,18 +1177,18 @@ class CoursesController < ApplicationController
def export_course_member_excel
q = params[:name] ? "#{params[:name].strip}" : ""
filename="#{@course.teacher.show_real_name.to_s }_#{@course.name}_#{l(:excel_member_list)}"
# if params[:group_id] && params[:group_id] != "0" && params[:group_id] != "-1"
# group = CourseGroup.find params[:group_id]
# unless group.nil?
# @all_members = searchmember_by_name(student_homework_score(group.id,0,0,"desc"), q)
# filename="#{@course.teacher.show_real_name.to_s }_#{@course.name}_#{group.name}_#{l(:excel_member_list)}"
# end
# elsif params[:group_id] && params[:group_id] == "0"
# @all_members = searchmember_by_name(student_homework_score(-1, 0, 10,"desc"), q)
# filename="#{@course.teacher.show_real_name.to_s }_#{@course.name}_未分班_#{l(:excel_member_list)}"
# else
# @all_members = searchmember_by_name(student_homework_score(0, 0, 10,"desc"), q)
# end
if params[:group_id] && params[:group_id] != "0" && params[:group_id] != "-1"
group = CourseGroup.find params[:group_id]
unless group.nil?
@all_members = searchmember_by_name(student_homework_score(group.id,0,0,"desc"), q)
filename="#{@course.teacher.show_real_name.to_s }_#{@course.name}_#{group.name}_#{l(:excel_member_list)}"
end
elsif params[:group_id] && params[:group_id] == "0"
@all_members = searchmember_by_name(student_homework_score(-1, 0, 10,"desc"), q)
filename="#{@course.teacher.show_real_name.to_s }_#{@course.name}_未分班_#{l(:excel_member_list)}"
else
@all_members = searchmember_by_name(student_homework_score(0, 0, 10,"desc"), q)
end
@homeworks = @course.homework_commons.where("publish_time <= '#{Time.now}'").order("publish_time asc, created_at asc")
@exercises = @course.exercises.where("publish_time <= '#{Time.now}'").order("publish_time asc, created_at asc")
@ -2381,431 +2381,431 @@ class CoursesController < ApplicationController
def member_to_xls homeworks, exercises, tasks, course, members, groups
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
# sheet1 = book.create_worksheet :name => "总成绩"
# 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)])
sheet1 = book.create_worksheet :name => "总成绩"
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] = teacher_co
# sheet1[3,0] = "主讲教师"
# sheet1[3,1] = course.teacher.show_real_name
# sheet1[4,0] = "排名"
# sheet1[4,1] = "学生姓名"
# sheet1[4,2] = "昵称"
# sheet1[4,3] = "邮箱"
# sheet1[4,4] = "学号"
# sheet1[4,5] = "分班"
# current_col = 5
# 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).size
# sheet1[4,current_col+=1] = "普通作业第"+(i+1).to_s+"次"
# end
# 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.size
# sheet1[4,current_col+=1] = "试卷第"+(i+1).to_s+"次"
# end
# for i in 0 ... tasks.size
# sheet1[4,current_col+=1] = "毕设任务第"+(i+1).to_s+"次"
# end
#
# sheet1[4,current_col+=1] = "实训作业总得分"
# sheet1[4,current_col+=1] = "普通作业总得分"
# sheet1[4,current_col+=1] = "分组作业总得分"
# sheet1[4,current_col+=1] = "试卷总得分"
# if tasks.count > 0
# sheet1[4,current_col+=1] = "毕设任务总得分"
# end
# #sheet1[6,homeworks.count+6] = "社区得分"
# sheet1[4,current_col+=1] = "总得分"
# count_row = 5
# members.each_with_index do |member, i|
# column = 0
# sheet1[count_row,column]= i+1
# sheet1[count_row,column+=1] = member.user.show_real_name
# sheet1[count_row,column+=1] = member.user.login
# sheet1[count_row,column+=1] = member.user.mail
# sheet1[count_row,column+=1] = member.user.user_extensions.student_id
# sheet1[count_row,column+=1] = member.course_group_id == 0 ? "暂无" : member.course_group.name
# # current_col = 5
# shixun_score = 0
# homeworks.where(:homework_type => 4).includes(:score_student_works).each do |homework|
# student_works = homework.score_student_works.select{|work| work.user_id == member.user.id}
# if student_works.empty?
# sheet1[count_row,column+=1] = 0
# else
# work_score = student_works.first.work_score.nil? ? 0 : student_works.first.work_score
# sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
# shixun_score += work_score < 0 ? 0 : work_score.round(1)
# end
# # current_col += 1
# end
# common_score = 0
# homeworks.where(:homework_type => 1).includes(:score_student_works).each do |homework|
# student_works = homework.score_student_works.select{|work| work.user_id == member.user.id}
# if student_works.empty?
# sheet1[count_row,column+=1] = 0
# else
# work_score = student_works.first.work_score.nil? ? 0 : student_works.first.work_score
# sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
# common_score += work_score < 0 ? 0 : work_score.round(1)
# end
# # current_col += 1
# end
# group_score = 0
# homeworks.where(:homework_type => 3).includes(:score_student_works).each do |homework|
# student_works = homework.score_student_works.select{|work| work.user_id == member.user.id}
# if student_works.empty?
# sheet1[count_row,column+=1] = 0
# else
# work_score = student_works.first.work_score.nil? ? 0 : student_works.first.work_score
# sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
# group_score += work_score < 0 ? 0 : work_score.round(1)
# end
# # current_col += 1
# end
# exercise_score = 0
# exercises.includes(:score_exercise_users).each do |exercise|
# exercise_user = exercise.score_exercise_users.select{|work| work.user_id == member.user.id}
# if exercise_user.empty?
# sheet1[count_row,column+=1] = 0
# else
# work_score = exercise_user.first.score.nil? ? 0 : exercise_user.first.score
# sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
# exercise_score += work_score < 0 ? 0 : work_score.round(1)
# end
# # current_col += 1
# end
#
# graduation_score = 0
# tasks.includes(:graduation_works).each do |task|
# graduation_works = task.graduation_works.where("user_id = #{member.user.id}")
# if graduation_works.empty?
# sheet1[count_row,column+=1] = 0
# else
# work_score = graduation_works.first.work_score.nil? ? 0 : graduation_works.first.work_score
# sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
# graduation_score += work_score < 0 ? 0 : work_score.round(1)
# end
# # current_col += 1
# end
#
# sum = shixun_score + common_score + group_score + exercise_score + graduation_score
# sheet1[count_row,column+=1] = shixun_score
# sheet1[count_row,column+=1] = common_score
# sheet1[count_row,column+=1] = group_score
# sheet1[count_row,column+=1] = exercise_score
# if tasks.count > 0
# sheet1[count_row,column+=1] = graduation_score
# end
# sheet1[count_row,column+=1] = sum.round(1)
# count_row += 1
# end
#
# if course.course_groups.count > 0
# sheet = book.create_worksheet :name => "分班信息"
# sheet.row(0).concat(["课程编号", course.id])
# sheet.row(1).concat(["课程名称", course.name])
# 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.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.size
# current_row += 1
# end
# end
#
# sheet2 = book.create_worksheet :name => "活跃度"
# sheet2[0,0] = "课程编号"
# sheet2[0,1] = course.id
# sheet2[1,0] = "课程名称"
# sheet2[1,1] = course.name
# sheet2[2,0] = "教师团队"
# 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","活跃度"])
# act_members = members
# act_members.each do |member|
# member[:act_score] = ((member.homework_num.to_i + member.graduation_num.to_i) * 10) + (member.exercise_num.to_i * 10) + (member.poll_num.to_i * 7) + (member.resource_num.to_i * 5) + (member.message_num.to_i * 2) + member.message_reply_num.to_i + member.homework_journal_num.to_i
# end
# act_members = act_members.sort do |a, b|
# [b[:act_score]] <=> [a[:act_score]]
# end
# count_row = 5
# act_members.each_with_index do |act_member, index|
# sheet2[count_row,0]= index + 1
# sheet2[count_row,1] = act_member.user.show_real_name
# sheet2[count_row,2] = act_member.user.login
# sheet2[count_row,3] = act_member.user.user_extensions.student_id
# sheet2[count_row,4] = act_member.course_group_id == 0 ? "暂无" : act_member.course_group.name
# sheet2[count_row,5]= act_member.homework_num.to_i + act_member.graduation_num.to_i
# sheet2[count_row,6]= act_member.exercise_num
# sheet2[count_row,7]= act_member.poll_num
# sheet2[count_row,8]= act_member.resource_num
# sheet2[count_row,9]= act_member.message_num
# sheet2[count_row,10]= act_member.message_reply_num
# sheet2[count_row,11]= act_member.homework_journal_num
# sheet2[count_row,12]= act_member.act_score
# count_row += 1
# end
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] = teacher_co
sheet[3,0] = "主讲教师"
sheet[3,1] = course.teacher.show_real_name
sheet[3,0] = "作业批次"
sheet[3,1] = "#{i+1}"
sheet[3,0] = "作业名称"
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.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
sheet[count_row,2] = stu.user.login
sheet[count_row,3] = stu.user.user_extensions.student_id
sheet[count_row,4] = member_group_name course.members, stu.user_id
sheet[count_row,5] = strip_html stu.description
sheet[count_row,6] = stu.late_penalty
sheet[count_row,7] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,8] = format_time(stu.commit_time)
count_row += 1
end
end
homeworks.where(:homework_type => 1).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] = teacher_co
sheet[3,0] = "主讲教师"
sheet[3,1] = course.teacher.show_real_name
sheet[3,0] = "作业批次"
sheet[3,1] = "#{i+1}"
sheet[3,0] = "作业名称"
sheet[3,1] = home.name
if home.anonymous_comment ==0
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
l(:excel_t_score),l(:excel_ta_score), l(:excel_n_score),l(:excel_a_penalty),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
else
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
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.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
sheet[count_row,2] = stu.user.login
sheet[count_row,3] = stu.user.user_extensions.student_id
sheet[count_row,4] = strip_html stu.description
sheet[count_row,5] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
sheet[count_row,6] = stu.teaching_asistant_score.nil? ? l(:label_without_score) : stu.teaching_asistant_score.round(1)
if home.anonymous_comment ==0
sheet[count_row,7] = stu.student_score.nil? ? l(:label_without_score) : stu.student_score.round(1)
sheet[count_row,8] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.absence_penalty
sheet[count_row,9] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
sheet[count_row,10] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,11] = format_time(stu.commit_time)
sheet1[0,0] = "课程编号"
sheet1[0,1] = course.id
sheet1[1,0] = "课程名称"
sheet1[1,1] = course.name
sheet1[2,0] = "教师团队"
sheet1[2,1] = teacher_co
sheet1[3,0] = "主讲教师"
sheet1[3,1] = course.teacher.show_real_name
sheet1[4,0] = "排名"
sheet1[4,1] = "学生姓名"
sheet1[4,2] = "昵称"
sheet1[4,3] = "邮箱"
sheet1[4,4] = "学号"
sheet1[4,5] = "分班"
current_col = 5
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).size
sheet1[4,current_col+=1] = "普通作业第"+(i+1).to_s+""
end
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.size
sheet1[4,current_col+=1] = "试卷第"+(i+1).to_s+""
end
for i in 0 ... tasks.size
sheet1[4,current_col+=1] = "毕设任务第"+(i+1).to_s+""
end
sheet1[4,current_col+=1] = "实训作业总得分"
sheet1[4,current_col+=1] = "普通作业总得分"
sheet1[4,current_col+=1] = "分组作业总得分"
sheet1[4,current_col+=1] = "试卷总得分"
if tasks.count > 0
sheet1[4,current_col+=1] = "毕设任务总得分"
end
#sheet1[6,homeworks.count+6] = "社区得分"
sheet1[4,current_col+=1] = "总得分"
count_row = 5
members.each_with_index do |member, i|
column = 0
sheet1[count_row,column]= i+1
sheet1[count_row,column+=1] = member.user.show_real_name
sheet1[count_row,column+=1] = member.user.login
sheet1[count_row,column+=1] = member.user.mail
sheet1[count_row,column+=1] = member.user.user_extensions.student_id
sheet1[count_row,column+=1] = member.course_group_id == 0 ? "暂无" : member.course_group.name
# current_col = 5
shixun_score = 0
homeworks.where(:homework_type => 4).each do |homework|
student_works = homework.score_student_works.find_by_user_id(member.user.id)
if student_works.nil?
sheet1[count_row,column+=1] = 0
else
sheet[count_row,7] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
sheet[count_row,8] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,9] = format_time(stu.commit_time)
work_score = student_works.work_score.nil? ? 0 : student_works.work_score
sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
shixun_score += work_score < 0 ? 0 : work_score.round(1)
end
count_row += 1
end
end
homeworks.where(:homework_type => 3).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] = teacher_co
sheet[3,0] = "主讲教师"
sheet[3,1] = course.teacher.show_real_name
sheet[3,0] = "作业批次"
sheet[3,1] = "#{i+1}"
sheet[3,0] = "作业名称"
sheet[3,1] = home.name
if home.anonymous_comment ==0
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
l(:excel_t_score),l(:excel_ta_score),l(:excel_n_score),l(:excel_a_penalty),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
else
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
l(:excel_t_score),l(:excel_ta_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# current_col += 1
end
count_row = 5
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
sheet[count_row,2] = stu.user.login
sheet[count_row,3] = stu.user.user_extensions.student_id
sheet[count_row,4] = get_group_member_names home.student_works.where(:group_id => stu.group_id).pluck(:user_id)
sheet[count_row,5] = strip_html stu.description
sheet[count_row,6] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
sheet[count_row,7] = stu.teaching_asistant_score.nil? ? l(:label_without_score) : stu.teaching_asistant_score.round(1)
if home.anonymous_comment ==0
sheet[count_row,8] = stu.student_score.nil? ? l(:label_without_score) : stu.student_score.round(1)
sheet[count_row,9] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.absence_penalty
sheet[count_row,10] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
sheet[count_row,11] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,12] = format_time(stu.commit_time)
common_score = 0
homeworks.where(:homework_type => 1).each do |homework|
student_works = homework.score_student_works.find_by_user_id(member.user.id)
if student_works.nil?
sheet1[count_row,column+=1] = 0
else
sheet[count_row,8] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
sheet[count_row,9] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,10] = format_time(stu.commit_time)
work_score = student_works.work_score.nil? ? 0 : student_works.work_score
sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
common_score += work_score < 0 ? 0 : work_score.round(1)
end
count_row += 1
end
end
exercises.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] = teacher_co
sheet[3,0] = "主讲教师"
sheet[3,1] = course.teacher.show_real_name
sheet[3,0] = "试卷批次"
sheet[3,1] = "#{i+1}"
sheet[3,0] = "试卷名称"
sheet[3,1] = exercise.exercise_name
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.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
sheet[count_row,2] = stu.user.login
sheet[count_row,3] = stu.user.user_extensions.student_id
sheet[count_row,4] = stu.objective_score == -1 ? "0.0" : format("%.1f",stu.objective_score)
sheet[count_row,5] = stu.subjective_score == -1 ? "0.0" : format("%.1f",stu.subjective_score)
sheet[count_row,6] = stu.score.nil? ? '--' : stu.score.round(1)
sheet[count_row,7] = stu.commit_status == 0 ? l(:excel_no_answer) : format_time(stu.start_at)
count_row += 1
# current_col += 1
end
end
tasks.each_with_index do |task, 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] = teacher_co
sheet[3,0] = "主讲教师"
sheet[3,1] = course.teacher.show_real_name
sheet[3,0] = "作业批次"
sheet[3,1] = "#{i+1}"
sheet[3,0] = "作业名称"
sheet[3,1] = task.name
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id)])
if task.task_type == 2
sheet.row(4).concat([l(:excel_group_member)])
end
sheet.row(4).concat([l(:excel_homework_des), l(:excel_t_score)])
if task.cross_comment
sheet.row(4).concat(["交叉评分"])
end
sheet.row(4).concat([l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
count_row = 5
items = task.graduation_works.where("work_status != 0").order("work_score desc")
items.each_with_index do |stu, j|
column = 0
sheet[count_row,column]= j + 1
sheet[count_row,column+=1] = stu.user.show_real_name
sheet[count_row,column+=1] = stu.user.login
sheet[count_row,column+=1] = stu.user.user_extensions.student_id
if task.task_type == 2
sheet[count_row,column+=1] = get_group_member_names task.graduation_works.where(:group_id => stu.group_id).pluck(:user_id)
end
sheet[count_row,column+=1] = strip_html stu.description
sheet[count_row,column+=1] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
if task.cross_comment
sheet[count_row,column+=1] = stu.cross_score.nil? ? l(:label_without_score) : stu.cross_score.round(1)
group_score = 0
homeworks.where(:homework_type => 3).each do |homework|
student_works = homework.score_student_works.find_by_user_id(member.user.id)
if student_works.nil?
sheet1[count_row,column+=1] = 0
else
work_score = student_works.work_score.nil? ? 0 : student_works.work_score
sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
group_score += work_score < 0 ? 0 : work_score.round(1)
end
sheet[count_row,column+=1] = stu.late_penalty
sheet[count_row,column+=1] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
sheet[count_row,column+=1] = format_time(stu.commit_time)
count_row += 1
# current_col += 1
end
=begin
if task.task_type == 1
if task.cross_comment
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
l(:excel_t_score),"交叉评分",l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
exercise_score = 0
exercises.each do |exercise|
exercise_user = exercise.score_exercise_users.find_by_user_id(member.user.id)
if exercise_user.nil?
sheet1[count_row,column+=1] = 0
else
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
l(:excel_t_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
work_score = exercise_user.score.nil? ? 0 : exercise_user.score
sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
exercise_score += work_score < 0 ? 0 : work_score.round(1)
end
else
if task.cross_comment
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
l(:excel_t_score),"交叉评分",l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# current_col += 1
end
graduation_score = 0
tasks.each do |task|
graduation_works = task.graduation_works.where("user_id = #{member.user.id}")
if graduation_works.empty?
sheet1[count_row,column+=1] = 0
else
sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
l(:excel_t_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
end
count_row = 5
items = task.graduation_works.order("work_score desc")
items.each_with_index do |stu, j|
column = 0
sheet[count_row,column]= j + 1
sheet[count_row,column+1] = stu.user.show_name
sheet[count_row,column+1] = stu.user.login
sheet[count_row,column+1] = stu.user.user_extensions.student_id
sheet[count_row,column+1] = strip_html stu.description
sheet[count_row,column+1] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(2)
if task.cross_comment
sheet[count_row,column+1] = stu.cross_score.nil? ? l(:label_without_score) : stu.cross_score.round(2)
end
sheet[count_row,column+1] = stu.late_penalty
sheet[count_row,column+1] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(2)
sheet[count_row,column+1] = format_time(stu.commit_time)
count_row += 1
work_score = graduation_works.first.work_score.nil? ? 0 : graduation_works.first.work_score
sheet1[count_row,column+=1] = work_score < 0 ? 0 : work_score.round(1)
graduation_score += work_score < 0 ? 0 : work_score.round(1)
end
# current_col += 1
end
sum = shixun_score + common_score + group_score + exercise_score + graduation_score
sheet1[count_row,column+=1] = shixun_score
sheet1[count_row,column+=1] = common_score
sheet1[count_row,column+=1] = group_score
sheet1[count_row,column+=1] = exercise_score
if tasks.count > 0
sheet1[count_row,column+=1] = graduation_score
end
sheet1[count_row,column+=1] = sum.round(1)
count_row += 1
end
if course.course_groups.count > 0
sheet = book.create_worksheet :name => "分班信息"
sheet.row(0).concat(["课程编号", course.id])
sheet.row(1).concat(["课程名称", course.name])
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.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.size
current_row += 1
end
=end
end
sheet2 = book.create_worksheet :name => "活跃度"
sheet2[0,0] = "课程编号"
sheet2[0,1] = course.id
sheet2[1,0] = "课程名称"
sheet2[1,1] = course.name
sheet2[2,0] = "教师团队"
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","活跃度"])
act_members = members
act_members.each do |member|
member[:act_score] = ((member.homework_num.to_i + member.graduation_num.to_i) * 10) + (member.exercise_num.to_i * 10) + (member.poll_num.to_i * 7) + (member.resource_num.to_i * 5) + (member.message_num.to_i * 2) + member.message_reply_num.to_i + member.homework_journal_num.to_i
end
act_members = act_members.sort do |a, b|
[b[:act_score]] <=> [a[:act_score]]
end
count_row = 5
act_members.each_with_index do |act_member, index|
sheet2[count_row,0]= index + 1
sheet2[count_row,1] = act_member.user.show_real_name
sheet2[count_row,2] = act_member.user.login
sheet2[count_row,3] = act_member.user.user_extensions.student_id
sheet2[count_row,4] = act_member.course_group_id == 0 ? "暂无" : act_member.course_group.name
sheet2[count_row,5]= act_member.homework_num.to_i + act_member.graduation_num.to_i
sheet2[count_row,6]= act_member.exercise_num
sheet2[count_row,7]= act_member.poll_num
sheet2[count_row,8]= act_member.resource_num
sheet2[count_row,9]= act_member.message_num
sheet2[count_row,10]= act_member.message_reply_num
sheet2[count_row,11]= act_member.homework_journal_num
sheet2[count_row,12]= act_member.act_score
count_row += 1
end
# 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] = teacher_co
# sheet[3,0] = "主讲教师"
# sheet[3,1] = course.teacher.show_real_name
# sheet[3,0] = "作业批次"
# sheet[3,1] = "第#{i+1}次"
# sheet[3,0] = "作业名称"
# 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.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
# sheet[count_row,2] = stu.user.login
# sheet[count_row,3] = stu.user.user_extensions.student_id
# sheet[count_row,4] = member_group_name course.members, stu.user_id
# sheet[count_row,5] = strip_html stu.description
# sheet[count_row,6] = stu.late_penalty
# sheet[count_row,7] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,8] = format_time(stu.commit_time)
# count_row += 1
# end
# end
#
# homeworks.where(:homework_type => 1).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] = teacher_co
# sheet[3,0] = "主讲教师"
# sheet[3,1] = course.teacher.show_real_name
# sheet[3,0] = "作业批次"
# sheet[3,1] = "第#{i+1}次"
# sheet[3,0] = "作业名称"
# sheet[3,1] = home.name
# if home.anonymous_comment ==0
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
# l(:excel_t_score),l(:excel_ta_score), l(:excel_n_score),l(:excel_a_penalty),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# else
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
# 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.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
# sheet[count_row,2] = stu.user.login
# sheet[count_row,3] = stu.user.user_extensions.student_id
# sheet[count_row,4] = strip_html stu.description
# sheet[count_row,5] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
# sheet[count_row,6] = stu.teaching_asistant_score.nil? ? l(:label_without_score) : stu.teaching_asistant_score.round(1)
# if home.anonymous_comment ==0
# sheet[count_row,7] = stu.student_score.nil? ? l(:label_without_score) : stu.student_score.round(1)
# sheet[count_row,8] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.absence_penalty
# sheet[count_row,9] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
# sheet[count_row,10] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,11] = format_time(stu.commit_time)
# else
# sheet[count_row,7] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
# sheet[count_row,8] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,9] = format_time(stu.commit_time)
# end
# count_row += 1
# end
#
# end
#
# homeworks.where(:homework_type => 3).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] = teacher_co
# sheet[3,0] = "主讲教师"
# sheet[3,1] = course.teacher.show_real_name
# sheet[3,0] = "作业批次"
# sheet[3,1] = "第#{i+1}次"
# sheet[3,0] = "作业名称"
# sheet[3,1] = home.name
#
# if home.anonymous_comment ==0
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
# l(:excel_t_score),l(:excel_ta_score),l(:excel_n_score),l(:excel_a_penalty),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# else
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
# 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.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
# sheet[count_row,2] = stu.user.login
# sheet[count_row,3] = stu.user.user_extensions.student_id
# sheet[count_row,4] = get_group_member_names home.student_works.where(:group_id => stu.group_id).pluck(:user_id)
# sheet[count_row,5] = strip_html stu.description
# sheet[count_row,6] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
# sheet[count_row,7] = stu.teaching_asistant_score.nil? ? l(:label_without_score) : stu.teaching_asistant_score.round(1)
# if home.anonymous_comment ==0
# sheet[count_row,8] = stu.student_score.nil? ? l(:label_without_score) : stu.student_score.round(1)
# sheet[count_row,9] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.absence_penalty
# sheet[count_row,10] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
# sheet[count_row,11] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,12] = format_time(stu.commit_time)
# else
# sheet[count_row,8] = (home.teacher_priority == 1 && !stu.teacher_score.nil?) ? 0 : stu.late_penalty
# sheet[count_row,9] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,10] = format_time(stu.commit_time)
# end
# count_row += 1
# end
# end
#
# exercises.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] = teacher_co
# sheet[3,0] = "主讲教师"
# sheet[3,1] = course.teacher.show_real_name
# sheet[3,0] = "试卷批次"
# sheet[3,1] = "第#{i+1}次"
# sheet[3,0] = "试卷名称"
# sheet[3,1] = exercise.exercise_name
#
# 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.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
# sheet[count_row,2] = stu.user.login
# sheet[count_row,3] = stu.user.user_extensions.student_id
# sheet[count_row,4] = stu.objective_score == -1 ? "0.0" : format("%.1f",stu.objective_score)
# sheet[count_row,5] = stu.subjective_score == -1 ? "0.0" : format("%.1f",stu.subjective_score)
# sheet[count_row,6] = stu.score.nil? ? '--' : stu.score.round(1)
# sheet[count_row,7] = stu.commit_status == 0 ? l(:excel_no_answer) : format_time(stu.start_at)
# count_row += 1
# end
# end
#
# tasks.each_with_index do |task, 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] = teacher_co
# sheet[3,0] = "主讲教师"
# sheet[3,1] = course.teacher.show_real_name
# sheet[3,0] = "作业批次"
# sheet[3,1] = "第#{i+1}次"
# sheet[3,0] = "作业名称"
# sheet[3,1] = task.name
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id)])
# if task.task_type == 2
# sheet.row(4).concat([l(:excel_group_member)])
# end
# sheet.row(4).concat([l(:excel_homework_des), l(:excel_t_score)])
# if task.cross_comment
# sheet.row(4).concat(["交叉评分"])
# end
# sheet.row(4).concat([l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# count_row = 5
# items = task.graduation_works.where("work_status != 0").order("work_score desc")
# items.each_with_index do |stu, j|
# column = 0
# sheet[count_row,column]= j + 1
# sheet[count_row,column+=1] = stu.user.show_real_name
# sheet[count_row,column+=1] = stu.user.login
# sheet[count_row,column+=1] = stu.user.user_extensions.student_id
# if task.task_type == 2
# sheet[count_row,column+=1] = get_group_member_names task.graduation_works.where(:group_id => stu.group_id).pluck(:user_id)
# end
# sheet[count_row,column+=1] = strip_html stu.description
# sheet[count_row,column+=1] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(1)
# if task.cross_comment
# sheet[count_row,column+=1] = stu.cross_score.nil? ? l(:label_without_score) : stu.cross_score.round(1)
# end
# sheet[count_row,column+=1] = stu.late_penalty
# sheet[count_row,column+=1] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(1)
# sheet[count_row,column+=1] = format_time(stu.commit_time)
# count_row += 1
# end
# =begin
# if task.task_type == 1
# if task.cross_comment
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
# l(:excel_t_score),"交叉评分",l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# else
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_homework_des),
# l(:excel_t_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# end
# else
# if task.cross_comment
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
# l(:excel_t_score),"交叉评分",l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# else
# sheet.row(4).concat([l(:excel_rank),l(:excel_user_name),l(:excel_nickname),l(:excel_student_id),l(:excel_group_member),l(:excel_homework_des),
# l(:excel_t_score),l(:excel_l_penalty),l(:excel_f_score),l(:excel_commit_time)])
# end
# count_row = 5
# items = task.graduation_works.order("work_score desc")
# items.each_with_index do |stu, j|
# column = 0
# sheet[count_row,column]= j + 1
# sheet[count_row,column+1] = stu.user.show_name
# sheet[count_row,column+1] = stu.user.login
# sheet[count_row,column+1] = stu.user.user_extensions.student_id
# sheet[count_row,column+1] = strip_html stu.description
# sheet[count_row,column+1] = stu.teacher_score.nil? ? l(:label_without_score) : stu.teacher_score.round(2)
# if task.cross_comment
# sheet[count_row,column+1] = stu.cross_score.nil? ? l(:label_without_score) : stu.cross_score.round(2)
# end
# sheet[count_row,column+1] = stu.late_penalty
# sheet[count_row,column+1] = stu.work_score.nil? ? l(:label_without_score) : stu.work_score.round(2)
# sheet[count_row,column+1] = format_time(stu.commit_time)
# count_row += 1
# end
# end
# =end
# end
book.write xls_report
xls_report.string
end

Loading…
Cancel
Save