SU2-7 | Добавление модели Report с поддержкой загрузки файлов, обновление контроллера и представления для обработки отчетов, а также создание миграций для таблицы отчетов и активного хранилища.
This commit is contained in:
@@ -5,16 +5,35 @@ require 'stringio'
|
||||
class FileProcessorJob
|
||||
include Sidekiq::Job
|
||||
|
||||
def perform(inn, output_path)
|
||||
def perform(inn, report_id)
|
||||
report = Report.find(report_id)
|
||||
Rails.logger.info "=== Начало загрузки для ИНН: #{inn} ==="
|
||||
download_inn(inn, output_path)
|
||||
|
||||
# Временная папка
|
||||
temp_dir = Rails.root.join('tmp', 'reports', inn)
|
||||
FileUtils.mkdir_p(temp_dir)
|
||||
|
||||
download_inn(inn, temp_dir.to_s)
|
||||
|
||||
Dir.glob("#{temp_dir}/**/*").select { |f| File.file?(f) }.each do |file_path|
|
||||
report.files.attach(
|
||||
io: File.open(file_path),
|
||||
filename: File.basename(file_path)
|
||||
)
|
||||
end
|
||||
|
||||
# Удали временные файлы
|
||||
FileUtils.rm_rf(temp_dir)
|
||||
|
||||
report.update!(status: 'completed')
|
||||
Rails.logger.info "=== Завершено для ИНН: #{inn} ==="
|
||||
rescue => e
|
||||
report.update!(status: 'failed') if report
|
||||
Rails.logger.error "=== ОШИБКА: #{e.message} ==="
|
||||
Rails.logger.error e.backtrace.first(5).join("\n")
|
||||
raise
|
||||
end
|
||||
|
||||
|
||||
private
|
||||
|
||||
def get_content(url, json_need = false)
|
||||
|
||||
Reference in New Issue
Block a user