使用轻易云实现销售退货单数据转换与写入金蝶云星空API

  • 轻易云集成顾问-贺强
### 销售退货单对接案例分享:旺店通·企业奇门到金蝶云星空 在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的销售退货单数据与金蝶云星空系统的无缝对接。主要目标是确保系统间的数据准确性和高效流转,具体实现包括可靠抓取、快速写入以及错误处理机制。 首先,通过调用`wdt.stockin.order.query.refund`接口获取旺店通·企业奇门中的销售退货单数据,对于大量订单,我们采用定时任务批量抓取方式,以应对分页及限流问题。在此过程中,特别关注高并发场景下的数据完整性和不漏单现象。 其次,为满足不同系统间的数据结构差异,必须进行定制化映射,对从旺店通获得的数据进行格式转换,使其符合金蝶云星空的API要求。在这一环节中,我们借助灵活的映射规则,将处理后的数据批量写入到金蝶云星空,通过调用其提供的`batchSave`接口完成实际操作。 与此同时,为了保障整个集成流程稳定运行,我们实施了一系列异常处理及错误重试机制。当出现网络波动或接口响应超时等异常情况时,这些机制能够自动识别并再次尝试请求,有效提高整体成功率。此外,还实现了全程实时监控与详细日志记录功能,使得每个环节都透明可视,并能迅速排查故障点。 以上是该案例基本框架部分,在后续内容中我们将逐步详解各个关键步骤,包括细致配置和注意事项,以便为类似需求提供实战参考。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口以获取原始数据是至关重要的。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`来获取销售退货单数据,并对其进行初步加工。 #### 接口调用配置 首先,我们需要配置元数据,以便正确调用`wdt.stockin.order.query.refund`接口。以下是具体的元数据配置: ```json { "api": "wdt.stockin.order.query.refund", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockin_id", "name": "order_no", "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "datetime", "describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "datetime", "describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "status", "label": "状态", "type": "string", "describe": "入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)", "value": "80" }, { "field": "shop_no", "label": "店铺编号", "type": "string", "describe":"代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息" } ], ... } ``` #### 参数详解 1. **start_time** 和 **end_time**:这两个参数用于指定查询时间范围,以实现增量数据获取。`start_time`表示上次同步的时间点,而`end_time`则为当前时间。 2. **status**:默认值为"80",表示只查询已完成的入库单。 3. **shop_no**:用于指定特定店铺的数据。 此外,还有分页参数`page_size`和`page_no`,确保在大数据量情况下能够分批次获取数据。 #### 数据请求与清洗 通过上述配置,我们可以发送POST请求到旺店通·企业奇门接口,并接收返回的数据。轻易云平台提供了自动填充响应功能(autoFillResponse),这意味着返回的数据会自动映射到预定义的数据结构中。 ```json { ... // 示例响应部分 { ... // 自动填充响应示例 { “stockin_id”: “123456”, “order_no”: “SO20231001”, ... } ... } } ``` #### 数据转换与写入 在接收到原始数据后,我们需要对其进行初步清洗和转换。例如,将日期格式统一、字段名称标准化等。这一步骤可以通过轻易云平台提供的可视化工具来实现,无需编写复杂代码。 ```json { ... // 清洗后的示例数据 { “入库单ID”: “123456”, “订单号”: “SO20231001”, ... } } ``` #### 实践案例 假设我们需要将这些清洗后的销售退货单数据写入金蝶系统,可以配置相应的目标系统接口,并定义字段映射规则。例如: ```json { ... // 金蝶系统目标接口配置 { “api”: “kingdee.sales.return.add”, “method”: “POST”, ... // 字段映射规则 { “source_field”: “order_no”, “target_field”: “sales_order_no” ... } } } ``` 通过这种方式,我们能够实现从旺店通到金蝶系统的数据无缝对接,大大提升业务处理效率。 以上内容详细介绍了如何通过轻易云平台调用旺店通·企业奇门接口获取并加工销售退货单数据,为后续的数据处理和分析奠定基础。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行销售退货单数据转换与写入金蝶云星空API接口 在数据集成过程中,将源平台的数据转换为目标平台可接收的格式并写入,是一个至关重要的环节。本文将详细探讨如何利用轻易云数据集成平台,将销售退货单的数据转换为金蝶云星空API接口所能接收的格式,并最终成功写入目标平台。 #### API接口配置与请求参数解析 在本案例中,使用的金蝶云星空API接口为`batchSave`,其主要作用是批量保存数据。以下是该API接口的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "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)**: - 类型:字符串 - 描述:单据类型 - 转换规则:通过`ConvertObjectParser`将值转换为金蝶系统所需的编码。 - 固定值:`XSTHD01_SYS` 2. **单据编号(FBillNo)**: - 类型:字符串 - 描述:单据编号 - 值来源:源平台的订单编号字段 `{order_no}` 3. **销售组织(FSaleOrgId)**: - 类型:字符串 - 描述:组织 - 转换规则:通过`ConvertObjectParser`将值转换为金蝶系统所需的编码。 - 固定值:`100` 4. **库存组织(FStockOrgId)**: - 类型:字符串 - 描述:组织 - 转换规则:通过`ConvertObjectParser`将值转换为金蝶系统所需的编码。 - 固定值:`100` 5. **日期(FDate)**: - 类型:字符串 - 描述:日期 - 值来源:源平台的修改时间字段 `{modified}` 6. **退货客户(FRetcustId)**: - 类型:字符串 - 描述:基础资料 - 转换规则:通过`ConvertObjectParser`将值转换为金蝶系统所需的编码。 - 固定值:`3.001` 7. **明细信息(FEntity)**: 明细信息是一个数组,包含多个子字段,如物料编码、实退数量、是否赠品等。这些字段需要根据源平台的数据进行逐一映射和转换。 #### 示例代码实现 以下是一个简单示例,展示如何将源平台的数据映射并转换为目标格式,然后通过API接口写入金蝶云星空: ```python import requests # 源平台数据示例 source_data = { 'order_no': '123456', 'modified': '2023-10-01', 'details_list': [ {'spec_no': '001', 'num': 10, 'tax_amount': 100, 'tid': 'T001'}, # 更多明细... ] } # 构建请求体 request_body = { 'FormId': 'SAL_RETURNSTOCK', 'Operation': 'Save', 'IsAutoSubmitAndAudit': True, 'IsVerifyBaseDataField': True, 'SubSystemId': '21', 'BatchCount': '5', 'Model': { 'FBillTypeID': {'FNumber': 'XSTHD01_SYS'}, 'FBillNo': source_data['order_no'], 'FSaleOrgId': {'FNumber': '100'}, # 更多字段... 'FEntity': [ { 'FMaterialId': {'FNumber: detail['spec_no']}, # 更多明细字段... } for detail in source_data['details_list'] ] } } # 发起POST请求 response = requests.post( url='https://api.kingdee.com/batchSave', json=request_body, headers={'Content-Type': 'application/json'} ) # 检查响应状态码和内容 if response.status_code == 200: print('数据成功写入金蝶云星空') else: print('写入失败:', response.text) ``` #### 小结 在使用轻易云数据集成平台时,通过配置元数据并进行适当的数据映射和转换,可以有效地将源平台的数据转化为目标平台可接受的格式,并成功写入。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)