fixed 竞赛bmfile导出

This commit is contained in:
xxq250 2024-11-08 15:08:04 +08:00
parent f9ce7e27cc
commit 4d9e36a683
2 changed files with 11 additions and 6 deletions

View File

@ -215,8 +215,11 @@ class CompetitionInfosController < ApplicationController
end
def enroll_template
file_attr_name = params[:file].to_s == "bm_file_id" ? params[:file].to_s : "enroll_template_id"
competition_users = CompetitionUser.where(competition_info: @competition_info.id).order("updated_at desc")
competition_users = competition_users.where(status: [1, 2, 3]).where("competition_users.enroll_template_id is not null")
competition_users = competition_users.where(status: [1, 2, 3])
competition_users = competition_users.where("competition_users.enroll_template_id is not null") if file_attr_name.to_s == "enroll_template_id"
competition_users = competition_users.where("competition_users.bm_file_id is not null") if file_attr_name.to_s == "bm_file_id"
zones = @competition_info.manager_zones(current_user)
if params[:zone].present?
competition_users = zones.include?(params[:zone].to_s) ? competition_users.where(zone: params[:zone].to_s) : competition_users.where(zone: [])
@ -233,7 +236,7 @@ class CompetitionInfosController < ApplicationController
format.json
format.zip {
Rails.logger.info("######_______________########competition_users.size: #{competition_users.size}")
service = Competition::ZipEnrollTemplateService.new(competition_users, "files")
service = Competition::ZipEnrollTemplateService.new(competition_users, "files", file_attr_name)
send_file service.zip, filename: service.filename, type: 'application/zip'
}
end

View File

@ -3,15 +3,16 @@ require 'zip'
class Competition::ZipEnrollTemplateService
attr_reader :competition_users, :path
attr_reader :competition_users, :path, :file_attr_name
def initialize(competition_users, path)
def initialize(competition_users, path, file_attr_name=nil)
@competition_users = competition_users
@path = path
@file_attr_name = file_attr_name
end
def filename
export_name = "报名资料-#{Time.now.strftime('%Y%m%d%H%M%S')}"
export_name = @file_attr_name == "bm_file_id" ? "bm审查文件-#{Time.now.strftime('%Y%m%d%H%M%S')}" : "报名资料-#{Time.now.strftime('%Y%m%d%H%M%S')}"
"#{export_name.strip}.zip"
end
@ -20,7 +21,8 @@ class Competition::ZipEnrollTemplateService
Zip::File.open(zip_file, Zip::File::CREATE) do |attach_zip|
if @competition_users.present?
@competition_users.each do |c_user|
attach = Attachment.find_by(id: c_user.enroll_template_id)
file_uuid = @file_attr_name.nil? ? c_user.send("enroll_template_id") : c_user.send("#{@file_attr_name}")
attach = Attachment.where_id_or_uuid(file_uuid).first
next if attach.blank?
attach_local_path = "#{Rails.root}/files/#{attach.disk_directory}/#{attach.disk_filename}"
attach_filename = "#{c_user.id}_#{c_user.leader}_#{attach.filename}"