admin用户导出缺失文件列表功能

This commit is contained in:
sw 2015-07-02 10:41:08 +08:00
parent d196b3930d
commit 2344e3d07f
4 changed files with 45 additions and 2 deletions

View File

@ -73,6 +73,22 @@ class StoresController < ApplicationController
l(:label_forum) ]
end
#缺失文件列表
def lost_file
attachments = []
Attachment.where("container_id is not null and container_type is not null and container_type <> 'Bid' and container_type <> 'HomeworkAttach'").each do |attachment|
unless File.exist?(attachment.diskfile)
attachments << attachment
end
end
respond_to do |format|
format.xls {
send_data(homework_to_xls(attachments), :type => "text/excel;charset=utf-8; header=present",
:filename => "#{l(:label_file_lost_list)}.xls")
}
end
end
private
def project_classification project_type=0
@ -117,4 +133,27 @@ class StoresController < ApplicationController
else
end
end
#作品列表转换为excel
def homework_to_xls attachments
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "homework"
blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
sheet1.row(0).default_format = blue
sheet1.row(0).concat(["文件ID","文件名","硬盘路径","上传时间","是否公开","所属对象","所属对象Id"])
count_row = 1
attachments.each do |attachment|
sheet1[count_row,0] = attachment.id
sheet1[count_row,1] = attachment.filename
sheet1[count_row,2] = attachment.diskfile
sheet1[count_row,3] = format_time(attachment.created_on)
sheet1[count_row,4] = (attachment.is_public == 1 || attachment.is_public) ? "" :""
sheet1[count_row,5] = attachment.container_type
sheet1[count_row,6] = attachment.container_id
count_row += 1
end
book.write xls_report
xls_report.string
end
end

View File

@ -1,8 +1,9 @@
<div style="width: 57%;margin: 10px auto;">
<div style="width: 67%;margin: 10px auto;">
<%= form_tag( search_stores_path, method: 'post') do %>
<%= text_field_tag 'name', params[:name], placeholder: l('welcome.search.information'), name: "name", :class => 'blueinputbar', :style => 'width:450px;'%>
&nbsp;&nbsp;
<%= submit_tag l(:label_search), :class => "enterprise "%>
<% end %>
<%= link_to("导出缺失列表",lost_file_stores_path(:format => 'xls'),:style => "background-color: #15bccf;padding: 4px 5px;color: white;") if User.current.admin?%>
<div class='font_lighter' style="display: inline-block; margin-top:3px;"><%= l(:label_resources_search_all)%></div>
</div>

View File

@ -2023,5 +2023,7 @@ zh:
label_evaluation_common: 匿评评语
label_evaluation_time: 匿评时间
label_file_lost_list: 缺失文件列表

View File

@ -192,6 +192,7 @@ RedmineApp::Application.routes.draw do
resources :stores do
collection do
match 'search', :via => [:get, :post]
get 'lost_file'
end
end