desc "统计实践课程的学习统计数据" namespace :subjects do task data_statistic: :environment do puts("---------------------data_statistic_begin") Rails.logger.info("---------------------data_statistic_begin") subjects = Subject.where(status: 2) subjects.find_each do |subject| puts("---------------------data_statistic: #{subject.id}") Rails.logger.info("---------------------data_statistic: #{subject.id}") sr = SubjectRecord.find_or_create_by!(subject_id: subject.id) data = Subjects::DataStatisticService.new(subject) update_params = { study_count: data.study_count, course_study_count: data.course_study_count, initiative_study: data.initiative_study, passed_count: data.passed_count, course_used_count: data.course_used_count, school_used_count: data.school_used_count } sr.update_attributes!(update_params) end puts("---------------------data_statistic_end") Rails.logger.info("---------------------data_statistic_end") end task course_info_statistic: :environment do puts("---------------------course_info_statistic_begin") Rails.logger.info("---------------------course_info_statistic_begin") subjects = Subject.where(status: 2) subjects.find_each do |subject| puts("---------------------course_info_statistic: #{subject.id}") Rails.logger.info("---------------------course_info_statistic: #{subject.id}") data = Subjects::DataStatisticService.call(subject) data.each do |key| scr = SubjectCourseRecord.find_or_create_by!(school_id: key[:school_id], subject_id: subject.id) update_params = { school_name: key[:school_name], course_count: key[:course_count], student_count: key[:student_count], choice_shixun_num: key[:choice_shixun_num], choice_shixun_frequency: key[:choice_shixun_frequency] } scr.update_attributes(update_params) end end puts("---------------------course_info_statistic_end") Rails.logger.info("---------------------course_info_statistic_end") end task shixun_info_statistic: :environment do puts("---------------------shixun_info_statistic_begin") Rails.logger.info("---------------------shixun_info_statistic_begin") subjects = Subject.where(status: 2) subjects.find_each(batch_size: 100) do |subject| data = Subjects::ShixunUsedInfoService.call(subject) data.each do |key| ssi = SubjectShixunInfo.find_or_create_by!(shixun_id: key[:shixun_id], subject_id: subject.id) update_params = { stage: key[:stage], shixun_name: key[:name], challenge_count: key[:challenge_count], course_count: key[:course_count], school_count: key[:school_count], used_count: key[:used_count], passed_count: key[:passed_count], evaluate_count: key[:evaluate_count], passed_ave_time: key[:passed_ave_time] } ssi.update_attributes(update_params) end end puts("---------------------shixun_info_statistic_end") Rails.logger.info("---------------------shixun_info_statistic_end") end task user_info_statistic: :environment do puts("---------------------user_info_statistic_begin") Rails.logger.info("---------------------user_info_statistic_begin") subjects = Subject.where(status: 2) subjects.find_each(batch_size: 100) do |subject| puts("---------------------user_info_statistic: #{subject.id}") data = Subjects::UserUsedInfoService.call(subject) data.each do |key| sui = SubjectUserInfo.find_or_create_by!(user_id: key[:user_id], subject_id: subject.id) update_params = { username: key[:name], passed_myshixun_count: key[:passed_myshixun_count], passed_games_count: key[:passed_games_count], code_line_count: key[:code_line_count], evaluate_count: key[:evaluate_count], cost_time: key[:cost_time] } sui.update_attributes(update_params) end end puts("---------------------user_info_statistic_end") Rails.logger.info("---------------------user_info_statistic_end") end end