利用轻易云平台完成旺店通与金蝶的ETL数据转换与写入

  • 轻易云集成顾问-吴伟
### 旺店通-销售退货单-->金蝶-销售退货单【赠品店铺】集成方案 在本技术案例中,我们将详细解析如何通过轻易云数据集成平台,将旺店通·旗舰奇门中的销售退货单数据高效、准确地集成到金蝶云星空的对应模块中。具体涉及的数据获取和写入接口分别为`wdt.wms.stockin.refund.querywithdetail`和`batchSave`。 对于此任务的成功实施,一个关键点在于处理大规模数据的快速写入能力。为了确保这个过程不漏单,且每一个环节都有据可查,我们采用了定时抓取、批量处理与实时监控相结合的方法。在获取到旺店通·旗舰奇门的API返回的数据后,通过自定义转换逻辑,适配不同系统之间的数据差异,并利用金蝶云星空提供的批量保存功能,实现高效流转。 此外,针对可能出现的数据质量问题和异常情况,我们配置了集中化监控与告警系统,以便及时发现并处理潜在问题。同时,为应对分页及限流等常见挑战,还专门设计了相应机制,提高任务执行可靠性和稳定性。这些解决方案不仅优化了业务流程,还显著提升了整体运行效率。 接下来,让我们深入了解具体实现步骤,包括调用旺店通·旗舰奇门接口进行数据抓取,以及如何将这些数据精确映射并安全写入到金蝶云星空。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D25.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步加工。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockin.refund.querywithdetail`,并对返回的数据进行处理。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是针对`wdt.wms.stockin.refund.querywithdetail`接口的详细配置: ```json { "api": "wdt.wms.stockin.refund.querywithdetail", "method": "POST", "number": "order_no", "id": "stockin_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "50", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "string", "value": "1", "parent": "pager" } ] }, { "field": "params", "label": "业务参数", "type": "object", "children": [ { "field": "start_time", "label": "开始时间", "type": "string", "{{LAST_SYNC_TIME|datetime}}" }, { ... ``` #### 请求参数解析 在请求参数中,我们主要关注以下几个字段: - `pager`: 用于分页查询,包含`page_size`和`page_no`两个子字段,分别表示每页记录数和当前页码。 - `params`: 包含业务参数,如时间范围、入库单状态、仓库编码等。 具体配置如下: - `start_time` 和 `end_time`: 分别表示查询的开始时间和结束时间,使用动态变量替换为上次同步时间和当前时间。 - `status`: 入库单状态,这里我们设置为“80”,表示已完成的入库单。 - `time_type`: 时间条件类型,这里设置为“1”,表示按入库时间查询。 - `shop_nos`: 店铺编号,多个店铺编号使用英文逗号分隔。 #### 数据请求与清洗 在完成接口调用配置后,我们通过轻易云平台发起请求,并获取返回的数据。接下来,我们需要对返回的数据进行清洗和初步加工。 假设我们获取到的原始数据如下: ```json { ... { ... { ... } } } ``` 我们需要对这些数据进行清洗,包括但不限于以下操作: 1. **过滤无效数据**:根据业务需求,过滤掉不符合条件的数据。例如,根据店铺编号过滤掉不相关的记录。 2. **字段转换**:将某些字段转换为目标系统所需的格式。例如,将日期格式从字符串转换为标准日期格式。 3. **数据合并**:如果有必要,将多个记录合并为一条记录,以便后续处理。 #### 实例代码 以下是一个简单的Python示例代码,用于演示如何调用接口并处理返回的数据: ```python import requests import json from datetime import datetime # 配置请求头和URL url = 'https://api.wangdian.cn/openapi2/wdt.wms.stockin.refund.querywithdetail' headers = {'Content-Type': 'application/json'} # 构建请求体 payload = { 'pager': {'page_size': '50', 'page_no': '1'}, 'params': { 'start_time': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'), 'end_time': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'status': '80', 'time_type': '1', 'shop_nos': 'C00099,C00314' } } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 cleaned_data = [] for record in data['data']: if record['shop_no'] not in ['C00099', 'C00314']: continue cleaned_record = { 'order_no': record['order_no'], 'stockin_id': record['stockin_id'], # 更多字段转换... } cleaned_data.append(cleaned_record) # 输出清洗后的数据 print(json.dumps(cleaned_data, indent=4)) else: print(f"Error: {response.status_code}") ``` 以上代码展示了如何通过Python脚本调用旺店通·旗舰奇门接口,并对返回的数据进行初步清洗。实际应用中,可以根据具体需求进一步优化和扩展数据处理逻辑。 通过上述步骤,我们完成了从源系统获取数据并进行初步加工,为后续的数据转换与写入奠定了基础。这是轻易云数据集成平台生命周期管理中的关键一步,有助于确保数据的准确性和一致性。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S2.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成过程中,ETL(提取、转换、加载)是一个关键步骤。本文将详细探讨如何使用轻易云数据集成平台将源平台的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。我们将通过具体的元数据配置来展示这一过程。 #### 数据请求与清洗 首先,我们需要从源平台(如旺店通)获取销售退货单的数据。这一步骤通常包括数据的提取和初步清洗,以确保数据的完整性和准确性。在此基础上,我们进入第二阶段:数据转换与写入。 #### 数据转换与写入 在这一阶段,我们将使用轻易云提供的元数据配置,将已经清洗好的数据转换为金蝶云星空API能够识别的格式,并通过API接口写入目标平台。以下是具体的元数据配置及其解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSTHD01_SYS" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` #### 核心字段解析 1. **FBillTypeID(单据类型)**: - 类型:字符串 - 描述:指定销售退货单的类型,固定值为`XSTHD01_SYS`。 - 转换器:`ConvertObjectParser`,参数为`FNumber`。 2. **FBillNo(单据编号)**: - 类型:字符串 - 描述:销售退货单的唯一标识符。 - 值:从源平台获取的订单号 `{order_no}`。 3. **FStockOrgId(库存组织)**: - 类型:字符串 - 描述:库存组织编码。 - 固定值:`100.01`,使用转换器 `ConvertObjectParser`。 4. **FSaleOrgId(销售组织)**: - 类型:字符串 - 描述:销售组织编码。 - 值:从源平台获取的店铺编号 `{shop_no}`,使用转换器 `ConvertObjectParser`。 5. **FDate(日期)**: - 类型:字符串 - 描述:退货日期。 - 值:从源平台获取的修改时间 `{modified}`。 6. **FRetcustId(退货客户)**: - 类型:字符串 - 描述:退货客户编码。 - 值:从源平台获取的店铺编号 `{shop_no}`,使用转换器 `ConvertObjectParser`。 7. **FEntity(明细信息)**: - 类型:数组 - 描述:包含多个明细项,每个明细项包含物料编码、实退数量、含税单价等信息。 ```json { ... { "field":"FMaterialId", ... }, ... } ``` 8. **SubHeadEntity(财务信息)**: - 类型:对象 - 描述:包含结算组织等财务相关信息。 ```json { ... { ... } ... } ``` #### API调用与数据写入 通过上述配置,我们可以构建一个完整的请求体,并通过HTTP POST方法调用金蝶云星空的批量保存接口 `batchSave`。以下是一个示例请求体: ```json { ... // 请求体内容根据元数据配置生成 } ``` #### 实践案例 假设我们从旺店通获取到如下销售退货单数据: ```json { ... } ``` 通过轻易云的数据集成平台,我们将上述数据按照元数据配置进行转换,并生成如下符合金蝶云星空API要求的数据格式: ```json { ... } ``` 最后,通过HTTP POST方法,将生成的数据发送到金蝶云星空API接口,实现销售退货单的数据写入。 #### 总结 本文详细介绍了如何使用轻易云数据集成平台进行ETL转换,并将源平台的数据成功写入金蝶云星空API接口。通过合理配置元数据,可以确保不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)