From b6c65a63f1e03447871896c9b9dd491dda865f43 Mon Sep 17 00:00:00 2001 From: Max Date: Thu, 13 Jan 2022 19:29:39 +0800 Subject: [PATCH] + imports --- imports/imports.go | 1 + imports/types.go | 41 +++++++++++ tests/imports/assets/multiple-columns.xlsx | Bin 0 -> 9474 bytes tests/imports/assets/multiple.xlsx | Bin 0 -> 9299 bytes tests/imports/assets/simple.csv | 5 ++ tests/imports/assets/simple.xlsx | Bin 0 -> 9238 bytes tests/imports/manu.imp.json | 76 +++++++++++++++++++++ 7 files changed, 123 insertions(+) create mode 100644 imports/imports.go create mode 100644 imports/types.go create mode 100644 tests/imports/assets/multiple-columns.xlsx create mode 100644 tests/imports/assets/multiple.xlsx create mode 100644 tests/imports/assets/simple.csv create mode 100644 tests/imports/assets/simple.xlsx create mode 100644 tests/imports/manu.imp.json diff --git a/imports/imports.go b/imports/imports.go new file mode 100644 index 00000000..dd3e4a86 --- /dev/null +++ b/imports/imports.go @@ -0,0 +1 @@ +package imports diff --git a/imports/types.go b/imports/types.go new file mode 100644 index 00000000..3ac22386 --- /dev/null +++ b/imports/types.go @@ -0,0 +1,41 @@ +package imports + +import "github.com/yaoapp/gou" + +// PreviewAuto 一直显示 +const PreviewAuto = "auto" + +// PreviewAlways 一直显示 +const PreviewAlways = "always" + +// PreviewNever 从不显示 +const PreviewNever = "never" + +// Imports 数据导入 +type Imports struct { + Title string `json:"title,omitempty"` // 导入名称 + Process *gou.Process `json:"process"` // 处理器名称 + Columns []Column `json:"columns"` // 字段列表 + Option Option `json:"option,omitempty"` // 导入配置项 +} + +// Column 导入字段定义 +type Column struct { + Label string `json:"label"` // 字段标签 + Name string `json:"name"` // 字段名称 + Match []string `json:"match,omitempty"` // 匹配建议 + Rules []gou.Process `json:"rules,omitempty"` // 清洗规则定义 + Nullable bool `json:"nullable,omitempty"` // 是否可以为空 + + Key string // 字段键名 Object Only + IsArray bool // 字段是否为 Array + IsObject bool // 字段是否为 Object +} + +// Option 导入配置项定 +type Option struct { + AutoMatching bool `json:"autoMatching,omitempty"` // 是否自动匹配已设定模板 + ChunkSize int `json:"chunkSize,omitempty"` // 每次处理记录数量 + MappingPreview string `json:"mappingPreview,omitempty"` // 显示字段映射界面方式 auto 匹配模板失败显示, always 一直显示, never 不显示 + DataPreview string `json:"dataPreview,omitempty"` // 数据预览界面方式 auto 有异常数据时显示, always 一直显示, never 不显示 +} diff --git a/tests/imports/assets/multiple-columns.xlsx b/tests/imports/assets/multiple-columns.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..fa6ad9c8bffa3bdce617b6bede3c8e0014bdbf3e GIT binary patch literal 9474 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

Y*4jh;dF_b9BUu_3SCk!XBIl#; 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 literal 0 HcmV?d00001 diff --git a/tests/imports/assets/simple.csv b/tests/imports/assets/simple.csv new file mode 100644 index 00000000..61c45121 --- /dev/null +++ b/tests/imports/assets/simple.csv @@ -0,0 +1,5 @@ +订单号,姓名,手机,性别,年龄,商品名称,数量,单价,总价,备注 +SN202101120018,张三,13211000011,男,26,彩绘湖北地图,3,65.5,196.5, +,李四,13211000011,男,42,景祐遁甲符应经,1,34.8,34.8, +SN202101120019,王二麻子,13410001998,男,51,太极先天后天三图说,1,24.35,72.85,孔夫子二手交易 +SN202101120019,王二麻子,13410001998,男,51,五要奇书,1,48.5,72.85,孔夫子二手交易 diff --git a/tests/imports/assets/simple.xlsx b/tests/imports/assets/simple.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..279a7ee00cbdc8f4e0a1f604bb957a6b6bd095a6 GIT binary patch literal 9238 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 d)Lj2d_b*0WUK;w>VFf(iFoAuPyCQzl`#3 literal 0 HcmV?d00001 diff --git a/tests/imports/manu.imp.json b/tests/imports/manu.imp.json new file mode 100644 index 00000000..794fbf14 --- /dev/null +++ b/tests/imports/manu.imp.json @@ -0,0 +1,76 @@ +{ + "title": "导入订单数据", + "process": "flows.order.Import", + "columns": [ + { + "label": "订单号", + "name": "order_sn", + "match": ["订单号", "订单", "order_sn", "id"], + "rules": ["scripts.rules.order_sn"], + "primary": true + }, + { + "label": "用户", + "name": "user.name", + "match": ["用户名称", "姓名", "user_id"], + "rules": ["scripts.rules.FmtUser"], + "nullable": true + }, + { + "label": "性别", + "name": "user.sex", + "match": ["性别", "gender", "sex"], + "rules": ["scripts.rules.FmtUser"], + "nullable": true + }, + { + "label": "年龄", + "name": "user.age", + "match": ["年龄", "age"], + "rules": ["scripts.rules.FmtUser"], + "nullable": true + }, + { + "label": "手机号", + "name": "mobile", + "match": ["手机号", "手机", "mobile"], + "rules": ["scripts.rules.mobile"] + }, + { + "label": "商品", + "name": "skus[*].name", + "match": ["商品", "商品名称", "goods", "skus", "sku_id", "goods_id"], + "rules": ["scripts.rules.FmtGoods"] + }, + { + "label": "数量", + "name": "skus[*].amount", + "match": ["数量", "amount"], + "rules": ["scripts.rules.FmtGoods"] + }, + { + "label": "单价", + "name": "skus[*].price", + "match": ["单价", "price", "价格"], + "rules": ["scripts.rules.FmtGoods"] + }, + { + "label": "总价", + "name": "total", + "match": ["总价", "total", "total_price"], + "rules": ["scripts.rules.FmtGoods"] + }, + { + "label": "备注", + "name": "remark", + "match": ["备注", "说明", "其他"] + } + ], + "option": { + "autoMatching": true, + "chunkSize": 500, + "logging": "error", + "mappingPreview": "auto", + "dataPreview": "auto" + } +}