tallty_import_export 1.0.28 → 1.0.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0043f0699fb0631c48a0c1dcd018ccad9cdda7dfa376c0a702bf7857338e04a5
|
4
|
+
data.tar.gz: 7a8dd851866ea1bc55f87ac8ec443587e6776cfd3c52b8b76fcd9f982aeba513
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 406e6ac1fcf1623b2c0de6bd6fb415e15012e2e8f56fd9bf8ec1a552b5b15e528048ea8d9f6f5bce0b16f491941b20dd91a9d246459f4c397f891cf175a95806
|
7
|
+
data.tar.gz: 6af4e08406d4092107d372f0e8eaa6e5305dff67b9e5db7620151f55fb3b2f7ab3661817187ef4b92fbc85b32d030cd96c33f3c153037683d97fbc2839e7e317
|
@@ -29,6 +29,7 @@ module TalltyImportExport
|
|
29
29
|
# json: model_payload,代表存储在某一个列中
|
30
30
|
# select: [{ label: '已报备', value: 'submitted'}, ...],需要转换的枚举类型
|
31
31
|
# source: true,如果source为true,代表从association_record 进行属性查询
|
32
|
+
# proc: proc或者lamda,支持call,传入 record 和 context
|
32
33
|
|
33
34
|
def export_xlsx records, **options
|
34
35
|
records = with_scope records
|
@@ -174,6 +175,8 @@ module TalltyImportExport
|
|
174
175
|
try_chain(record, header[:chain])
|
175
176
|
elsif header[:json]
|
176
177
|
record.send(header[:json])[header[:key]]
|
178
|
+
elsif header[:proc] && header[:proc].respond_to?(:call)
|
179
|
+
header[:proc].call(record)
|
177
180
|
else
|
178
181
|
try_method(record, header[:key])
|
179
182
|
end
|
@@ -16,6 +16,7 @@ module TalltyImportExport
|
|
16
16
|
# primary_key: 是否是主键
|
17
17
|
# json: model_payload,代表存储在某一个列中
|
18
18
|
# finder: 执行代码,可以查找到相关的对象
|
19
|
+
# proc: proc或者lamda,支持call,传入 val 和 context
|
19
20
|
|
20
21
|
# xlsx_file 为 file path or file object or TalltyImportExport::Excel.new
|
21
22
|
def import_xlsx xlsx_file, associations, **options
|
@@ -55,6 +56,7 @@ module TalltyImportExport
|
|
55
56
|
@headers = options.delete(:headers) || import_headers
|
56
57
|
@primary_keys = options.delete(:primary_keys) || @headers.map { |header| header[:primary_key] ? header[:key].to_sym : nil }.compact
|
57
58
|
@params = options
|
59
|
+
context.params = @params
|
58
60
|
|
59
61
|
@excel_hash = @headers.reduce({}) do |h, header|
|
60
62
|
h[header[:key].to_sym] = header[:name]
|
@@ -67,6 +69,7 @@ module TalltyImportExport
|
|
67
69
|
def process_line_info line_info, associations
|
68
70
|
# 去除空行内容
|
69
71
|
return unless line_info.values.any?(&:present?)
|
72
|
+
context.line_info = line_info
|
70
73
|
# 转换处理导入的数据格式
|
71
74
|
line_info = convert_data(line_info)
|
72
75
|
|
@@ -88,6 +91,8 @@ module TalltyImportExport
|
|
88
91
|
if header[:json]
|
89
92
|
h[header[:json]] ||= {}
|
90
93
|
h[header[:json]][k] = val
|
94
|
+
elsif header[:proc] && header[:proc].respond_to?(:call)
|
95
|
+
h[k.to_sym] = header[:proc].call(val, context)
|
91
96
|
elsif header[:finder]
|
92
97
|
# $SAFE = 2
|
93
98
|
h[k.to_sym] = eval header[:finder]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tallty_import_export
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.29
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- liyijie
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-11-
|
11
|
+
date: 2021-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: zip-zip
|