diff --git a/app/libs/util.rb b/app/libs/util.rb index 84f14a6c0..38b5c9af5 100644 --- a/app/libs/util.rb +++ b/app/libs/util.rb @@ -65,4 +65,19 @@ module Util else "#{str[0..2]}***#{str[-3..-1]}" end end + + def display_cost_time(time) + time = time.to_i + return if time.zero? || time < 60 + + day = time / (24 * 60 * 60) + hour = (time % (24 * 60 * 60)) / (60 * 60) + minute = (time % (60 * 60)) / 60 + + str = '' + str += "#{day}天" unless day.zero? + str += "#{hour}小时" unless hour.zero? + str += "#{minute}分" unless minute.zero? + str + end end \ No newline at end of file diff --git a/app/queries/admins/user_statistic_query.rb b/app/queries/admins/user_statistic_query.rb index d1811e5ab..d05656b3e 100644 --- a/app/queries/admins/user_statistic_query.rb +++ b/app/queries/admins/user_statistic_query.rb @@ -50,6 +50,8 @@ class Admins::UserStatisticQuery < ApplicationQuery finish_myshixun_map = finish_myshixun.group(:user_id).count study_challenge_map = study_challenge.group(:user_id).count finish_challenge_map = finish_challenge.group(:user_id).count + evaluate_count_map = study_challenge.group(:user_id).sum(:evaluate_count) + cost_time_map = study_challenge.group(:user_id).sum(:cost_time) users.each do |user| user._extra_data = { @@ -57,6 +59,8 @@ class Admins::UserStatisticQuery < ApplicationQuery finish_shixun_count: finish_myshixun_map.fetch(user.id, 0), study_challenge_count: study_challenge_map.fetch(user.id, 0), finish_challenge_count: finish_challenge_map.fetch(user.id, 0), + evaluate_count: evaluate_count_map.fetch(user.id, 0), + cost_time: cost_time_map.fetch(user.id, 0), } end diff --git a/app/views/admins/user_statistics/export.xlsx.axlsx b/app/views/admins/user_statistics/export.xlsx.axlsx index b66e62a99..1511b6ea3 100644 --- a/app/views/admins/user_statistics/export.xlsx.axlsx +++ b/app/views/admins/user_statistics/export.xlsx.axlsx @@ -1,6 +1,6 @@ wb = xlsx_package.workbook wb.add_worksheet(name: '用户实训情况') do |sheet| - sheet.add_row %w(姓名 单位部门 学习关卡数 完成关卡数 学习实训数 完成实训数) + sheet.add_row %w(姓名 单位部门 学习关卡数 完成关卡数 学习实训数 完成实训数 评测次数 实战时间) @users.each do |user| data = [ @@ -9,7 +9,9 @@ wb.add_worksheet(name: '用户实训情况') do |sheet| user.display_extra_data(:study_challenge_count), user.display_extra_data(:finish_challenge_count), user.display_extra_data(:study_shixun_count), - user.display_extra_data(:finish_shixun_count) + user.display_extra_data(:finish_shixun_count), + user.display_extra_data(:evaluate_count), + Util.display_cost_time(user.display_extra_data(:cost_time)), ] sheet.add_row(data) end diff --git a/app/views/admins/user_statistics/shared/_list.html.erb b/app/views/admins/user_statistics/shared/_list.html.erb index 1e1b14ea3..44076812d 100644 --- a/app/views/admins/user_statistics/shared/_list.html.erb +++ b/app/views/admins/user_statistics/shared/_list.html.erb @@ -2,11 +2,13 @@ <thead class="thead-light"> <tr> <th width="14%" class="text-left">姓名</th> - <th width="38%" class="text-left">单位部门</th> - <th width="12%"><%= sort_tag('学习关卡数', name: 'study_challenge_count', path: admins_user_statistics_path) %></th> - <th width="12%"><%= sort_tag('完成关卡数', name: 'finish_challenge_count', path: admins_user_statistics_path) %></th> - <th width="12%"><%= sort_tag('学习实训数', name: 'study_shixun_count', path: admins_user_statistics_path) %></th> - <th width="12%"><%= sort_tag('完成实训数', name: 'finish_shixun_count', path: admins_user_statistics_path) %></th> + <th width="22%" class="text-left">单位部门</th> + <th width="10%"><%= sort_tag('学习关卡数', name: 'study_challenge_count', path: admins_user_statistics_path) %></th> + <th width="10%"><%= sort_tag('完成关卡数', name: 'finish_challenge_count', path: admins_user_statistics_path) %></th> + <th width="10%"><%= sort_tag('学习实训数', name: 'study_shixun_count', path: admins_user_statistics_path) %></th> + <th width="10%"><%= sort_tag('完成实训数', name: 'finish_shixun_count', path: admins_user_statistics_path) %></th> + <th width="10%">评测次数</th> + <th width="14%">实战时间</th> </tr> </thead> <tbody> @@ -23,6 +25,8 @@ <td><%= user.display_extra_data(:finish_challenge_count) %></td> <td><%= user.display_extra_data(:study_shixun_count) %></td> <td><%= user.display_extra_data(:finish_shixun_count) %></td> + <td><%= user.display_extra_data(:evaluate_count) %></td> + <td><%= Util.display_cost_time(user.display_extra_data(:cost_time)) || '--' %></td> </tr> <% end %> <% else %>