- 浏览: 301682 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
masuweng:
如何给新人机会 -
masuweng:
多sql结果集按列合并新结果报表实现方案 -
Ahe:
赞
坚持长跑方能赢 -
masuweng:
好好好
程序员如何更好的了解自己所做的事情 -
小楠人:
laoguan123 写道楼主好,使用过一些excel导入导出 ...
excell导入导出
pdf&excell&png
# render流生成 PerformanceInvoiceExcel.new(r).render CertificatePdf.new(certificates, chemical, qitem).render # IO读取文件流 IO.read file IO.read("#{Rails.root}/tmp/uploads/store/" + @ufile.attachment_id)
gem 'prawn' gem 'prawn-table' pdf自带render方法 --- excell 自定义render方法 require 'write_xlsx' @io = StringIO.new @book = WriteXLSX.new(@io) @sheet = @book.add_worksheet def render set_rows default_text company_info table_info footer_content @book.close @io.string end
def download checked_file = params[:checked_file]&.split "," zip = PackageZip.new(@order_items, checked_file) zip.generate_zip do |zip_path| send_file( zip_path, filename: "iChemical-Package Document-Order-#{rand(99999)}.zip", type: "application/zip", disposition: "attachment" ) end zip.delete_temp_zip end
require 'zip' class PackageZip def initialize(order_items, checked_file) @order_items = order_items @order = order_items.last&.order @checked_file = checked_file @temp_dir = Dir.mktmpdir @zip_list = [] @zip_name_list = [] end def generate_zip(&block) chooise_file @order zip_path = File.join(@temp_dir, 'temp.zip') Zip::File.open(zip_path, Zip::File::CREATE) do |zipfile| @zip_name_list.each_with_index do |name, index| zipfile.get_output_stream(name) do |io| io.write @zip_list[index] end end end block.call zip_path ensure end def chooise_file(order) checked_file = @checked_file || order.order_items&.first&.package_documents&.first&.checked_file&.split(",") if !checked_file.nil? checked_file.each do |file| attachments = order.order_attachments.where(file_type: file) @ufile = attachments.last case file when "coa" if @ufile.nil? @order_items.each do |item| qitem = nil if item.order.type == "OfflineOrder" chemical = item.chemical certificates = item.quotation_item.certificates.pluck(:item, :specification, :result).compact qitem = item.quotation_item else chemical = item.chemical certificates = item.certificates.pluck(:item, :specification, :result).compact qitem = item end certificate_pdf = CertificatePdf.new(certificates, chemical, qitem).render certificate_pdf_name = "cctv-COA-CAS[#{chemical.cas}]-#{rand(99999)}.pdf" @zip_name_list.push certificate_pdf_name @zip_list.push certificate_pdf end else certificate_pdf_name = @ufile.attachment_filename certificate_pdf = IO.read("#{Rails.root}/tmp/uploads/store/" + @ufile.attachment_id) @zip_name_list.push certificate_pdf_name @zip_list.push certificate_pdf end when "msds" if attachments.present? attachments.zip_file do |zip_path| @zip_name_list.push "cctv-MSDS-Package-Order-#{rand(99999)}.zip" @zip_list.push IO.read zip_path end else @order_items.each do |item| msds = Msds.new(item) result, flag = msds.generate msds_file_name = 'cctv' << (flag ? '' : '-GT') << '-MSDS-' << item.order_item_no << '.pdf' msds_file = msds.render @zip_name_list.push msds_file_name @zip_list.push msds_file end end when "pi" if ProformaInvoiceRecord.updated.find_by(order_id: @order.id).present? proforma_invoice_xls_name = "cctv-Proforma Invoice-Order-#{order.uuid}-#{rand(99999)}.xls" r = ProformaInvoiceRecord.create_with_auto(@order_items, nil, nil, "modified") proforma_invoice_xls = PerformanceInvoiceExcel.new(r).render else proforma_invoice_xls_name = "cctv-Proforma Invoice-Order-#{order.uuid}-#{rand(99999)}.xls" r = ProformaInvoiceRecord.create_with_auto(@order_items, nil, nil, "original") proforma_invoice_xls = PerformanceInvoiceExcel.new(r).render end @zip_name_list.push proforma_invoice_xls_name @zip_list.push proforma_invoice_xls when "ci" if CommercialInvoiceRecord.updated.find_by(order_id: @order.id).present? invoice_xls_name = "cctv Invoice-#{order.uuid}-#{rand(99999)}.xls" r = CommercialInvoiceRecord.create_with_auto(@order_items, nil, nil, "modified") invoice_xls = CommercialInvoiceExcel.new(r).render else invoice_xls_name = "cctv Invoice-#{order.uuid}-#{rand(99999)}.xls" r = CommercialInvoiceRecord.create_with_auto(@order_items, nil, nil, "original") invoice_xls = CommercialInvoiceExcel.new(r).render end @zip_name_list.push invoice_xls_name @zip_list.push invoice_xls when "pl" if PackageListRecord.updated.find_by(order_id: @order.id).present? pack_list_xls_name = "cctv-Packing List-Order-#{order.uuid}-#{rand(99999)}.xls" r = PackageListRecord.create_with_auto(@order_items, nil, nil, "modified") pack_list_xls = PackingListExcel.new(r).render else pack_list_xls_name = "cctv-Packing List-Order-#{order.uuid}-#{rand(99999)}.xls" r = PackageListRecord.create_with_auto(@order_items, nil, nil, "original") pack_list_xls = PackingListExcel.new(r).render end @zip_name_list.push pack_list_xls_name @zip_list.push pack_list_xls when "qc_report" @order_items.each do |item| testing_records = item.testing_records if testing_records.present? testing_records.each do |file| if file.file_path.present? file_name = file.file_name file = file.file_path new_file = download_img(file, file_name) if new_file.present? @zip_name_list.push file_name @zip_list.push IO.read new_file if File.exist?(new_file) File.delete(new_file) end end end end end end else if !@ufile.nil? file_name = @ufile.attachment_filename file = "#{Rails.root}/tmp/uploads/store/" + @ufile.attachment_id @zip_name_list.push file_name @zip_list.push IO.read file end end end end end ########下载图片 def download_img(img_url,file_name) image_temp_dir = "tmp/uploads/qc_report/" FileUtils.mkdir(image_temp_dir) unless File.exists?(image_temp_dir) begin _file_path = image_temp_dir+file_name unless File.exists?(_file_path) img_file = open(img_url) { |f| f.read } open(image_temp_dir+file_name, "wb") { |f| f.write(img_file) } end return _file_path rescue => err puts err return '' end end def delete_temp_zip Thread.new do sleep 2 FileUtils.rm_rf @temp_dir if @temp_dir end end end
发表评论
-
git仓库创建
2020-09-04 15:33 710推送现有文件夹 cd existing_folder git ... -
puma高并发
2020-08-19 09:31 475nginx突发大量502报错 top看一下,cpu的占用并不高 ... -
searchkick
2019-04-10 11:30 0# 通用查询块(条件) def general_ ... -
导入线下excell业务数据按权重匹配线上数据
2019-03-07 11:00 899业务场景:(系统间还没有接口对调,订单号暂时需要线下处理) 线 ... -
两对象同时映射一对一和一对多
2019-02-20 10:14 842class Kpi::Team < Applicat ... -
ruby一些类加载方式
2018-12-21 10:12 566require_dependency 'order/sco ... -
基于ruby的gem remotipart的异步上传文件
2018-12-21 10:11 534针对某一对象保存实例化之前,异步上传图片保存。 gem ' ... -
基于html2canvas的长图分享
2018-12-21 10:11 1160<span class="ui label ... -
rails处理上传读取excell&生成excell
2018-12-20 14:15 979gem 'spreadsheet' gem 'roo', ... -
基于ruby Mechanize的爬虫
2018-12-20 13:09 676def self.sang_carwler ... -
一些常用加密方式
2018-12-20 13:02 730sign = OpenSSL::Digest::SHA256. ... -
ruby 调用restful接口示例
2018-12-20 12:02 927链接参数中添加token def self.query_p ... -
rails错误日志记录
2018-12-19 14:41 767Rails中对日志的处理采用的是“消息-订阅”机制,各部分组件 ... -
railsAPI接收Base64文件
2018-12-18 11:05 1039tmp_dir = " ... -
ruby 调用savon接口示例
2018-12-18 10:51 1024例子一 module Api module Aob ... -
关于国际商城现货展示与购物车的费用设计
2018-11-15 18:34 442关于国际商城现货展示 ... -
基于多线程的全局变量
2018-10-31 19:50 1167def current_nation def ... -
hash最小值过滤算法
2018-10-31 09:52 1087[["数量","包装" ... -
阿里云裸机部署rails运用
2018-10-08 20:33 1392登录阿里云后首先 sudo apt-get update a ... -
基于mini_magick多图片合并/添加水印
2018-07-02 17:44 1714class ImageService requi ...
相关推荐
【标题】:“参考资料-U9销售订单单据类型.zip”指的是一个关于用友U9系统中销售订单单据类型的参考资料压缩包。这个压缩包包含了对U9系统中不同销售订单单据类型的详细介绍,帮助用户理解并操作销售流程。 【描述...
在金蝶K3 Wise系统中,管理和生成单据编号与单据内码是企业信息化管理中的重要环节。本文将详细解析如何通过SQL语句来实现这一功能,主要涉及的两个核心存储过程是`p_BM_GetBillNo`和`GetICMaxNum`。 一、生成单据...
单据号通常用于区分不同的业务操作,如采购订单、销售发票、入库单等,每个单据号都是独一无二的,反映了特定业务活动的状态和时间。在大量业务数据中,手动管理单据号容易出错,因此,使用专业工具进行自动跟踪和...
单据头通常包含订单的总体信息,如订单号、日期、客户或供应商信息等。单据体则包含具体的产品明细,如产品编码、数量、单价和金额等。该工具能够分别处理这两部分,确保所有必要信息都被正确地导入到金蝶K3系统中。...
金蝶K3 BOS单据转换流程设置是一个关键的业务操作,它涉及到企业内部的信息化管理,特别是财务和供应链管理的高效协同。金蝶K3是企业资源计划系统(ERP)的一部分,BOS(Business Operation System)则是金蝶提供的...
经过几个月的学习和研究,以及农民兄弟的指导和帮助,终于完成了一个单据管理系统(模板),现取名为“捷民单据管理”,旨在便捷利民!在此衷心感谢农民兄弟的帮助。图文广告业的单据部分项目牵涉面积计算,较为难写...
单据流转功能是企业信息化系统中的重要组成部分,它主要用于处理企业内部的各种业务单据,如采购订单、销售发票、库存调整单等。这些单据在不同的业务环节中需要经过审批、传递、执行等多个步骤,单据流转就是模拟并...
NC65开发课件之主子单据开发 NC65开发课件之主子单据开发是基于元数据生成主子单据的过程,旨在帮助开发者快速掌握NC65平台下的主子单据开发技术。该课程涵盖了主子单据开发的整个流程,从创建元数据到生成主子单据...
在IT行业中,尤其是在Java编程领域,自动生成单据号是一个常见的需求,特别是在财务系统、订单管理系统或者任何需要唯一标识业务实体的地方。这个需求通常涉及到日期处理、字符串格式化以及可能的序列号生成。下面...
### 用友UAP开发NC65单据开发详细知识点 #### 一、基本概念与原理 ##### 1. 业务案例场景及功能概述 - **业务案例**: 本案例以销售报价单为例,旨在展示如何利用用友UAP开发平台进行单据开发。 - **功能概述**: -...
1. **需求分析**:明确单表单据所需的数据字段和业务逻辑,例如订单表可能包含订单号、客户名称、商品名称、数量、单价等字段。 2. **设计数据库表**:在用友UAP平台上创建对应的数据库表,定义字段类型、长度、...
1. **单据类型代码**:首先根据单据的种类(如采购订单、销售发票、入库单等)进行分类。 2. **年份代码**:采用四位数字表示单据创建的年份,有助于归档管理。 3. **月份代码**:两位数字表示单据创建的月份。 4. *...
1)业务场景:在日常运营中,企业可能遇到各种各样的业务单据,如采购订单、销售订单等。这些单据可能需要转换成其他类型的单据,如入库单、出库单等。在不同的业务情况下,转换规则可能会有所不同。例如,普通采购...
NC65开发课件之单据模板知识点总结 单据模板属性设置 在NC65开发环境中,单据模板属性设置是指对单据模板的各种属性的设置,包括页签项目编辑、页签属性、字段属性、模板设置和公式设置等。通过单据模板属性设置,...
单据控件是用户界面中用于展示和编辑数据的一种特定元素,通常用于处理各种商业交易记录,如发票、订单、库存清单等。以下将详细阐述单据控件开发的关键知识点: 1. **控件定义**:在软件开发中,控件是用户界面的...
NC65开发课件之单据开发进阶 本资源主要介绍NC65单据开发进阶的相关知识点,包括环境信息获取、默认值设置、表头表尾编辑前后事件、金额合计、表体编辑前后事件、默认勾选、业务规则等。 环境信息获取: 环境信息...
3. **更新单据**:当单据状态发生变化,比如订单付款完成或发票已核销,外部系统可以通过接口发送更新请求,来同步BOS中的单据状态。 4. **删除单据**:在某些情况下,可能需要从BOS中删除不再需要的单据,接口提供...
3. **销售管理**:销售团队可以利用单据模式记录销售订单,对每个订单的状态进行实时更新,便于数据分析和决策。 总的来说,Ccflow的单据模式提供了一套全面的解决方案,满足了用户在不同业务环境中对数据管理的...
[工具名称]: U8最大单据号检测修复工具 [详细说明]: 该工具可以针对系统数据库的最大单据号表进行检测修复工作。如果日常业务单据保存失败,或单据保存提示单据号冲突等,可以尝试使用该工具进行检测、修复操作。 ...
【海运班轮货代业务流程】是指在国际物流中,货代公司处理海运班轮货物运输的操作步骤。这个过程涉及到揽货接单、定舱、报关报检、货物进出港口、提单交换等多个环节。以下是对这些环节的详细解析: 1. **揽货接单*...