使用轻易云平台进行ETL转换并写入旺店通·企业奇门API接口

  • 轻易云集成顾问-叶威宏
### 金蝶分布式调出单 => 旺店通委外出库单(3000组织内)(云仓) 在现代企业的信息化建设中,跨平台的数据集成是一项至关重要的工作。本文将分享一个实际案例,通过轻易云数据集成平台实现金蝶云星空与旺店通·企业奇门系统间的数据对接。本方案的关键目标是将金蝶分布式调出单高效、可靠地集成到旺店通委外出库单,实现不同业务系统之间无缝衔接和信息共享。 **如何确保集成金蝶云星空数据不漏单** 为了保证从金蝶云星空导出的数据完整性,我们采用了executeBillQuery API接口。这一接口允许我们精确而全面地抓取所需数据信息,同时运用轻易云提供的定时任务功能,可依据设定频率自动调用这一API,确保每次执行之后都不会遗漏任何新产生或修改过的数据。此外,为应对可能存在的数据丢失情况,还增设了错漏重试机制,一旦发现某个时间段内有未成功传输的记录,将触发二次尝试,从而杜绝“漏网之鱼”。 **处理分页和限流问题** 由于大规模数据请求容易导致服务器性能瓶颈甚至引发超载,因此需要合理处理分页及限流问题。在调用executeBillQuery API时,凭借轻易云平台支持的分批操作,我们能够针对大量订单进行分页,并在每页请求后设置适当延迟,以平衡查询频率与服务器负荷,防止网络拥堵及响应超时。 **快速写入到旺店通·企业奇门** 待数据安全无误地提取完毕,下一个挑战便是如何高效、高速地推送至目的端——旺店通·企业奇门。该过程中主要依赖wdt.vip.wms.stockinout.order.push API接口,由于其本身也具有一定并行能力,再结合轻易云多线程并发执行特性,仅需耗费极少时间即可完成上千条记录的数据写入工作。同时,也进行了针对性优化,包括批量提交减少HTTP连接次数等,大幅提升了整体效率。 通过以上方法,本方案不仅保障了各环节稳定运行,还确保两大系统间实现准确、及时、同步的信息交互,为业务协同带来前所未有的便利和效率提升。在后续章节中,将进一步详述具体技术细节及代码示例,帮助读者深入理解并实践此解决方案。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来实现这一过程。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到`executeBillQuery`接口采用POST方法进行调用,且支持分页查询。以下是关键的请求参数及其作用: - **FormId**: 业务对象表单Id,必须填写金蝶的表单ID,例如:`STK_TRANSFEROUT`。 - **FieldKeys**: 需查询的字段key集合,通过解析器将数组转换为字符串格式。 - **FilterString**: 过滤条件,用于筛选符合条件的数据。 - **Limit**: 最大行数,控制每次查询返回的数据量。 - **StartRow**: 开始行索引,用于分页查询。 #### 配置示例 以下是一个完整的请求配置示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FSTKTRSOUTENTRY_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FSTKTRSOUTENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSOUTENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"}, {"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"}, {"field":"FTransferBizType","label":"调拨类型","type":"string","value":"FTransferBizType"}, {"field":...} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field":...}, { "field": "FilterString", "label": "过滤条件", "type": "string", "describe": "...", "value": "... and FSrcStockID.FNumber='1104'" }, { ... } ] } ``` #### 数据请求与清洗 在实际操作中,我们需要根据业务需求设置过滤条件(FilterString),例如: ```json "FilterString" : "FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FTransferBizType = 'InnerOrgTransfer' and FOwnerID.FNumber = '3000' and FSrcStockID.FNumber='1104'" ``` 该过滤条件确保我们只获取特定供应商、特定时间段内、特定业务类型和特定仓库的数据。 #### 数据转换与写入 获取到数据后,需要对其进行初步清洗和转换,以便后续写入目标系统。在这个过程中,可以利用轻易云平台提供的数据处理工具,对字段进行映射、格式转换等操作。例如,将日期格式统一转换为目标系统所需的格式,或者对某些字段进行合并计算。 #### 实时监控与日志记录 为了确保数据处理过程的透明性和可追溯性,轻易云平台提供了实时监控和日志记录功能。通过这些功能,可以随时查看数据流动情况、处理状态以及可能出现的问题,从而及时进行调整和优化。 综上所述,通过合理配置和调用金蝶云星空接口`executeBillQuery`,我们可以高效地获取并加工所需数据,为后续的数据集成奠定坚实基础。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台所能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将金蝶分布式调出单的数据转换为旺店通委外出库单(3000组织内)的格式,并通过企业奇门API接口写入目标平台。 #### 元数据配置解析 在进行ETL转换之前,我们需要理解元数据配置的各个部分。以下是关键配置项: - **api**: `"wdt.vip.wms.stockinout.order.push"` 表示调用的API接口。 - **method**: `"POST"` 表示HTTP请求方法。 - **idCheck**: `true` 用于检查唯一单据编号,避免重复推送。 - **operation**: 定义了字段映射和合并策略,包括头部和明细字段。 - **request**: 包含具体请求参数和映射关系。 #### 请求参数配置 1. **接口外部单号 (api_outer_no)**: - 字段:`FBillNo` - 类型:`string` - 描述:调用本接口时推送的唯一单据编号,避免重复推送数据。 2. **仓库编号 (warehouse_no)**: - 字段:`FSrcStockID_FNumber` - 类型:`string` - 描述:代表仓库所有属性的唯一编码,用于区分仓库。 3. **出入类型 (order_type)**: - 固定值:`1` - 类型:`string` - 描述:可选值为1(出库)。 4. **自动审核 (auto_check)**: - 固定值:`1` - 类型:`string` - 描述:1表示自动审核,0表示不自动审核,默认值为1。 5. **货品列表 (goods_list)**: - 类型:`array` - 描述:入库单货品列表节点,包含多个子字段,如商家编码、入库数量、价格、批次和备注等。 #### 数据转换与写入 在实际操作中,我们需要将金蝶分布式调出单的数据按照上述配置进行转换,并通过API接口写入旺店通。以下是具体步骤: 1. **提取并清洗源数据**: 从金蝶系统中提取调出单数据,并进行必要的数据清洗和预处理。这一步确保了数据的一致性和准确性,为后续转换打下基础。 2. **字段映射与转换**: 根据元数据配置,将源数据字段映射到目标平台所需的字段。例如: ```json { "api_outer_no": "{FBillNo}", "warehouse_no": "{FSrcStockID_FNumber}", "order_type": "1", "auto_check": "1", "goods_list": [ { "spec_no": "{{detail_list.FMaterialID_FNumber}}", "num": "{{detail_list.F_UHZG_JJQty}}", "price": "{{detail_list.FPrice}}", "batch_no": "{{detail_list.FLOT}}", "remark": "{{detail_list.FEntryNote}}" } ] } ``` 3. **构建请求体**: 将映射后的数据构建成符合API要求的请求体。例如: ```json { "api_outer_no": "123456", "warehouse_no": "WH001", "order_type": "1", "auto_check": "1", "goods_list": [ { "spec_no": "SKU12345", "num": "100", "price": "10.00", "batch_no": "BATCH001", "remark": "" } ] } ``` 4. **发送HTTP请求**: 使用POST方法将构建好的请求体发送到目标API接口。确保处理响应结果,捕获可能出现的错误并进行相应处理。 #### 示例代码 以下是一个简化的Python示例代码,用于演示上述步骤: ```python import requests import json # 构建请求体 data = { "api_outer_no": "123456", "warehouse_no": "WH001", "order_type": 1, "auto_check": 1, "goods_list": [ { "spec_no": 'SKU12345', 'num': '100', 'price': '10.00', 'batch_no': 'BATCH001', 'remark': '' } ] } # 发送POST请求 response = requests.post( url='https://api.wangdian.cn/openapi2/wdt.vip.wms.stockinout.order.push', headers={'Content-Type': 'application/json'}, data=json.dumps(data) ) # 处理响应结果 if response.status_code == 200: print("Data successfully pushed to Wangdian API") else: print(f"Failed to push data: {response.text}") ``` 通过以上步骤,我们成功地完成了从金蝶分布式调出单到旺店通委外出库单的数据ETL转换,并通过企业奇门API接口将数据写入目标平台。这一过程不仅提高了业务流程的自动化程度,还确保了不同系统间的数据一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)