From 464adbfdb82848d68416e06584d8fcf64a71bbe3 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Tue, 22 Oct 2019 11:03:09 +0800 Subject: [PATCH] admin: user statistic add column --- app/libs/util.rb | 15 +++++++++++++++ app/queries/admins/user_statistic_query.rb | 4 ++++ .../admins/user_statistics/export.xlsx.axlsx | 6 ++++-- .../admins/user_statistics/shared/_list.html.erb | 14 +++++++++----- 4 files changed, 32 insertions(+), 7 deletions(-) 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 @@ 姓名 - 单位部门 - <%= sort_tag('学习关卡数', name: 'study_challenge_count', path: admins_user_statistics_path) %> - <%= sort_tag('完成关卡数', name: 'finish_challenge_count', path: admins_user_statistics_path) %> - <%= sort_tag('学习实训数', name: 'study_shixun_count', path: admins_user_statistics_path) %> - <%= sort_tag('完成实训数', name: 'finish_shixun_count', path: admins_user_statistics_path) %> + 单位部门 + <%= sort_tag('学习关卡数', name: 'study_challenge_count', path: admins_user_statistics_path) %> + <%= sort_tag('完成关卡数', name: 'finish_challenge_count', path: admins_user_statistics_path) %> + <%= sort_tag('学习实训数', name: 'study_shixun_count', path: admins_user_statistics_path) %> + <%= sort_tag('完成实训数', name: 'finish_shixun_count', path: admins_user_statistics_path) %> + 评测次数 + 实战时间 @@ -23,6 +25,8 @@ <%= 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(:evaluate_count) %> + <%= Util.display_cost_time(user.display_extra_data(:cost_time)) || '--' %> <% end %> <% else %>