|  |  | @ -10,7 +10,7 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |     column_value = "subject_id, study_count, course_study_count, initiative_study, passed_count, course_used_count, " + |  |  |  |     column_value = "subject_id, study_count, course_study_count, initiative_study, passed_count, course_used_count, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |         "school_used_count, created_at, updated_at" |  |  |  |         "school_used_count, created_at, updated_at" | 
			
		
	
		
		
			
				
					
					|  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| |  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| | 
			
		
	
		
		
			
				
					
					|  |  |  |       Parallel.each(s, in_processes: 4) do |subject| |  |  |  |       Parallel.each_with_index(s, in_processes: 4) do |subject, index| | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         puts("---------------------data_statistic: #{subject.id}") |  |  |  |         puts("---------------------data_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         Rails.logger.info("---------------------data_statistic: #{subject.id}") |  |  |  |         Rails.logger.info("---------------------data_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         data = Subjects::DataStatisticService.new(subject) |  |  |  |         data = Subjects::DataStatisticService.new(subject) | 
			
		
	
	
		
		
			
				
					|  |  | @ -23,7 +23,7 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |             "#{data.passed_count}, #{data.course_used_count}, #{data.school_used_count}, " + |  |  |  |             "#{data.passed_count}, #{data.course_used_count}, #{data.school_used_count}, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |             "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") |  |  |  |             "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") | 
			
		
	
		
		
			
				
					
					|  |  |  |         buffer_size += 1 |  |  |  |         buffer_size += 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |         if buffer_size == 1000 |  |  |  |         if buffer_size == 1000 || (index +1) == data.size | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |           sql = "REPLACE INTO subject_records(#{column_value}) VALUES #{str}" |  |  |  |           sql = "REPLACE INTO subject_records(#{column_value}) VALUES #{str}" | 
			
		
	
		
		
			
				
					
					|  |  |  |           puts sql |  |  |  |           puts sql | 
			
		
	
		
		
			
				
					
					|  |  |  |           ActiveRecord::Base.connection.execute sql |  |  |  |           ActiveRecord::Base.connection.execute sql | 
			
		
	
	
		
		
			
				
					|  |  | @ -55,14 +55,14 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |         puts("---------------------course_info_statistic: #{subject.id}") |  |  |  |         puts("---------------------course_info_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         Rails.logger.info("---------------------course_info_statistic: #{subject.id}") |  |  |  |         Rails.logger.info("---------------------course_info_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         data = Subjects::CourseUsedInfoService.call(subject) |  |  |  |         data = Subjects::CourseUsedInfoService.call(subject) | 
			
		
	
		
		
			
				
					
					|  |  |  |         Parallel.map(data) do |key| |  |  |  |         Parallel.map_with_index(data) do |key, index| | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |           next if key[:school_id].nil? |  |  |  |           next if key[:school_id].nil? | 
			
		
	
		
		
			
				
					
					|  |  |  |           str += ", " unless str.empty? |  |  |  |           str += ", " unless str.empty? | 
			
		
	
		
		
			
				
					
					|  |  |  |           str += ("(#{subject.id}, #{key[:school_id]}, '#{key[:school_name]}', #{key[:course_count]}, " + |  |  |  |           str += ("(#{subject.id}, #{key[:school_id]}, '#{key[:school_name]}', #{key[:course_count]}, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |               "#{key[:student_count]}, #{key[:choice_shixun_num]}, #{key[:choice_shixun_frequency]}, " + |  |  |  |               "#{key[:student_count]}, #{key[:choice_shixun_num]}, #{key[:choice_shixun_frequency]}, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") |  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") | 
			
		
	
		
		
			
				
					
					|  |  |  |           buffer_size += 1 |  |  |  |           buffer_size += 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |           if buffer_size == 1000 |  |  |  |           if buffer_size == 1000 || (index + 1) == data.size | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             sql = "REPLACE INTO subject_course_records(#{column_value}) VALUES #{str}" |  |  |  |             sql = "REPLACE INTO subject_course_records(#{column_value}) VALUES #{str}" | 
			
		
	
		
		
			
				
					
					|  |  |  |             puts sql |  |  |  |             puts sql | 
			
		
	
		
		
			
				
					
					|  |  |  |             ActiveRecord::Base.connection.execute sql |  |  |  |             ActiveRecord::Base.connection.execute sql | 
			
		
	
	
		
		
			
				
					|  |  | @ -90,11 +90,11 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |     column_value = "subject_id, shixun_id, stage, shixun_name, challenge_count, course_count, " + |  |  |  |     column_value = "subject_id, shixun_id, stage, shixun_name, challenge_count, course_count, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |         "school_count, used_count, passed_count, evaluate_count, passed_ave_time, created_at, updated_at" |  |  |  |         "school_count, used_count, passed_count, evaluate_count, passed_ave_time, created_at, updated_at" | 
			
		
	
		
		
			
				
					
					|  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| |  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| | 
			
		
	
		
		
			
				
					
					|  |  |  |       Parallel.each(s, in_processes: 4) do |subject| |  |  |  |       Parallel.each_with_index(s, in_processes: 4) do |subject| | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         puts("---------------------shixun_info_statistic: #{subject.id}") |  |  |  |         puts("---------------------shixun_info_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         Rails.logger.info("---------------------shixun_info_statistic: #{subject.id}") |  |  |  |         Rails.logger.info("---------------------shixun_info_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         data = Subjects::ShixunUsedInfoService.call(subject) |  |  |  |         data = Subjects::ShixunUsedInfoService.call(subject) | 
			
		
	
		
		
			
				
					
					|  |  |  |         data.each do |key| |  |  |  |         data.each_with_index do |key, index| | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |           next if key[:shixun_id].nil? |  |  |  |           next if key[:shixun_id].nil? | 
			
		
	
		
		
			
				
					
					|  |  |  |           str += ", " unless str.empty? |  |  |  |           str += ", " unless str.empty? | 
			
		
	
		
		
			
				
					
					|  |  |  |           str += ("(#{subject.id}, #{key[:shixun_id]}, '#{key[:stage]}', '#{key[:name]}', #{key[:challenge_count]}, " + |  |  |  |           str += ("(#{subject.id}, #{key[:shixun_id]}, '#{key[:stage]}', '#{key[:name]}', #{key[:challenge_count]}, " + | 
			
		
	
	
		
		
			
				
					|  |  | @ -102,7 +102,7 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |               "#{key[:evaluate_count]}, #{key[:passed_ave_time]}, " + |  |  |  |               "#{key[:evaluate_count]}, #{key[:passed_ave_time]}, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") |  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") | 
			
		
	
		
		
			
				
					
					|  |  |  |           buffer_size += 1 |  |  |  |           buffer_size += 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |           if buffer_size == 1000 |  |  |  |           if buffer_size == 1000 || (index+1) == data.size | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             sql = "REPLACE INTO subject_shixun_infos(#{column_value}) VALUES #{str}" |  |  |  |             sql = "REPLACE INTO subject_shixun_infos(#{column_value}) VALUES #{str}" | 
			
		
	
		
		
			
				
					
					|  |  |  |             puts sql |  |  |  |             puts sql | 
			
		
	
		
		
			
				
					
					|  |  |  |             ActiveRecord::Base.connection.execute sql |  |  |  |             ActiveRecord::Base.connection.execute sql | 
			
		
	
	
		
		
			
				
					|  |  | @ -131,7 +131,7 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |         "code_line_count, evaluate_count, cost_time, created_at, updated_at" |  |  |  |         "code_line_count, evaluate_count, cost_time, created_at, updated_at" | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
		
		
			
				
					
					|  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| |  |  |  |     subjects.find_in_batches(batch_size: 50) do |s| | 
			
		
	
		
		
			
				
					
					|  |  |  |       Parallel.each(s, in_processes: 4) do |subject| |  |  |  |       Parallel.each_with_index(s, in_processes: 4) do |subject, index| | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |         puts("---------------------user_info_statistic: #{subject.id}") |  |  |  |         puts("---------------------user_info_statistic: #{subject.id}") | 
			
		
	
		
		
			
				
					
					|  |  |  |         data = Subjects::UserUsedInfoService.call(subject) |  |  |  |         data = Subjects::UserUsedInfoService.call(subject) | 
			
		
	
		
		
			
				
					
					|  |  |  |         data.each do |key| |  |  |  |         data.each do |key| | 
			
		
	
	
		
		
			
				
					|  |  | @ -141,7 +141,7 @@ namespace :subjects do | 
			
		
	
		
		
			
				
					
					|  |  |  |               "#{key[:passed_games_count]}, #{key[:code_line_count]}, #{key[:evaluate_count]}, #{key[:cost_time]}, " + |  |  |  |               "#{key[:passed_games_count]}, #{key[:code_line_count]}, #{key[:evaluate_count]}, #{key[:cost_time]}, " + | 
			
		
	
		
		
			
				
					
					|  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") |  |  |  |               "'#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}', '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}')") | 
			
		
	
		
		
			
				
					
					|  |  |  |           buffer_size += 1 |  |  |  |           buffer_size += 1 | 
			
		
	
		
		
			
				
					
					|  |  |  |           if buffer_size == 1000 |  |  |  |           if buffer_size == 1000 || (index+1 == data.size) | 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					|  |  |  |             sql = "REPLACE INTO subject_user_infos(#{column_value}) VALUES #{str}" |  |  |  |             sql = "REPLACE INTO subject_user_infos(#{column_value}) VALUES #{str}" | 
			
		
	
		
		
			
				
					
					|  |  |  |             ActiveRecord::Base.connection.execute sql |  |  |  |             ActiveRecord::Base.connection.execute sql | 
			
		
	
		
		
			
				
					
					|  |  |  |             str = "" |  |  |  |             str = "" | 
			
		
	
	
		
		
			
				
					|  |  | 
 |