Merge remote-tracking branch 'origin/dev_osredm_server' into dev_osredm_server

This commit is contained in:
xxq250 2025-07-18 14:24:37 +08:00
commit 10c97c67ab
1 changed files with 15 additions and 6 deletions

View File

@ -124,11 +124,13 @@ class CompetitionInfosController < ApplicationController
return render_error('请上传正确的文件') if params[:file].blank? || !params[:file].is_a?(ActionDispatch::Http::UploadedFile)
ActiveRecord::Base.transaction do
doc = SimpleXlsxReader.open(params[:file].tempfile)
enroll_fields = @competition_info.enroll_fields.stringify_keys
enroll_fields = @competition_info.enroll_fields.stringify_keys.except("ID")
# 获取第一张工作表的第一行作为列名
sheet = doc.sheets.first
column_names = sheet.rows.first
success_count = 0
failed_count = 0
sheet.rows[1..-1].each do |row|
send_data = {}
enroll_fields.each do |key, value|
@ -164,12 +166,19 @@ class CompetitionInfosController < ApplicationController
login_index = column_names.index("用户标识")
user = User.find_by(login:row[login_index]) || User.find_by(phone: send_data['phone'])
if user.present?
cu = @competition_info.competition_users.new(user_id: user.id)
cu.attributes = send_data
cu.save!
begin
cu = @competition_info.competition_users.new(user_id: user.id)
cu.attributes = send_data
cu.save!
success_count += 1
rescue => e
failed_count += 1
end
else
failed_count += 1
end
end
render_ok
render_ok({success_count: success_count, failed_count: failed_count})
end
rescue => e
render_error("读取Excel文件失败: #{e.message}")
@ -181,7 +190,7 @@ class CompetitionInfosController < ApplicationController
format.json
format.xlsx {
set_export_cookies
enroll_fields = @competition_info.enroll_fields
enroll_fields = @competition_info.enroll_fields.except("ID")
@table_columns = ["用户标识"] | enroll_fields.keys
if EduSetting.get("is_local") == "true"
@table_columns = @table_columns + ["成员姓名", "成员单位", "成员手机号"]