高效调用金蝶云星辰API与数据处理策略案例分享

  • 轻易云集成顾问-谢楷斌
### 金蝶云星辰V2到旺店通·企业奇门数据集成案例 在实现采购入库单数据从金蝶云星辰V2系统流转至旺店通·企业奇门的过程中,我们充分利用了两者公开的API接口,确保数据无缝对接及业务流程高效运作。本文将重点分享如何通过调用金蝶云星辰V2 `/jdy/v2/scm/pur_inbound` 接口抓取数据,并使用 `wdt.stockin.purchase.push` 接口快速、准确地写入到旺店通·企业奇门。 为了应对大量数据的处理需求,我们设计了一套批量集成方案,通过定时任务可靠抓取金蝶云星辰V2接口的数据。在此过程中,为了解决分页和限流问题,我们采用了多线程并行处理和智能重试机制,显著提升了整体效率。此外,为应对两端系统间的数据格式差异,我们制定了精细化的数据映射规则,对接异常处理与错误重试机制也被纳入其中,以保证系统运行的稳定性。 以下是具体操作步骤及技术细节解析: ![如何开发企业微信API接口](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星辰V2接口/jdy/v2/scm/pur_inbound获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星辰V2接口`/jdy/v2/scm/pur_inbound`获取采购入库单数据,并对其进行加工处理。 #### 接口调用与请求参数配置 我们使用GET方法调用金蝶云星辰V2的采购入库单接口`/jdy/v2/scm/pur_inbound`。该接口的请求参数配置如下: ```json { "api": "/jdy/v2/scm/pur_inbound", "effect": "QUERY", "method": "GET", "number": "bill_no", "id": "id", "name": "bill_no", "idCheck": true, "request": [ {"field":"enable","label":"可用状态","type":"string","describe":"可用状态,1:可用,0:禁用,-1:全部","value":"1"}, {"field":"search","label":"模糊搜索","type":"string","describe":"模糊搜索-名称、编码、规格、条形码"}, {"field":"parent_id","label":"商品类别","type":"string","describe":"商品类别ID"}, {"field":"isdataperm","label":"数据权限","type":"string","describe":"是否添加数据权限校验,默认false"}, {"field":"create_start_time","label":"创建开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),创建时间"}, {"field":"create_end_time","label":"创建结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),创建时间"}, {"field":"modify_start_time","label":"修改开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),修改时间", "value": "_function {LAST_SYNC_TIME}*1000"}, {"field":"modify_end_time","label":"修改结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),修改时间", "value": "_function {CURRENT_TIME}*1000"}, {"field":"page","label":"当前页","type":"string","describe":"当前页(默认1)", "value": "1"}, {"field":"page_size","label":"每页显示条数","type":"string", "describe": "每页显示条数(默认10,最大100)", "value": "10"}, {"field": "bill_status", "label": "单据状态", "type": "string", "describe": "单据状态", "value": "C"} ], ... } ``` #### 请求参数详解 - **enable**: 设置为"1",表示只查询可用状态的数据。 - **search**: 支持模糊搜索,可以根据名称、编码、规格或条形码进行查询。 - **parent_id**: 商品类别ID,用于过滤特定类别的商品。 - **isdataperm**: 数据权限校验,默认为false。 - **create_start_time**和**create_end_time**: 用于过滤特定创建时间范围内的数据。 - **modify_start_time**和**modify_end_time**: 用于过滤特定修改时间范围内的数据。这里特别注意,我们使用了函数`_function {LAST_SYNC_TIME}*1000`和`_function {CURRENT_TIME}*1000`来动态获取上次同步和当前的Unix时间戳。 - **page**和**page_size**: 分页参数,默认第一页,每页显示10条记录。 - **bill_status**: 单据状态,设置为"C"表示只查询已审核的单据。 #### 数据加工与处理 在获取到原始数据后,我们需要对其进行必要的清洗和转换,以确保数据符合目标系统的要求。以下是一些常见的数据处理步骤: 1. **字段映射与转换** - 将源系统中的字段映射到目标系统中对应的字段。例如,将金蝶云星辰中的`bill_no`映射到旺店通中的订单编号字段。 2. **数据清洗** - 去除无效或冗余的数据,例如删除空值或重复记录。 - 格式化日期和数值类型的数据,使其符合目标系统的格式要求。 3. **业务逻辑处理** - 根据业务需求对数据进行进一步处理,例如计算总金额、生成唯一标识符等。 4. **错误处理与日志记录** - 在数据处理过程中捕获并记录错误信息,以便后续排查和修复。 #### 示例代码 以下是一个示例代码片段,用于展示如何通过轻易云平台调用接口并处理返回的数据: ```python import requests import json # 定义请求URL和参数 url = 'https://api.kingdee.com/jdy/v2/scm/pur_inbound' params = { 'enable': '1', 'search': '', 'parent_id': '', 'isdataperm': 'false', 'create_start_time': '-1', 'create_end_time': '-1', 'modify_start_time': str(int(LAST_SYNC_TIME) * 1000), 'modify_end_time': str(int(CURRENT_TIME) * 1000), 'page': '1', 'page_size': '10', 'bill_status': 'C' } # 发起GET请求 response = requests.get(url, params=params) data = response.json() # 数据清洗与转换 processed_data = [] for record in data['data']: processed_record = { 'order_number': record['bill_no'], # 更多字段映射... } processed_data.append(processed_record) # 输出处理后的数据 print(json.dumps(processed_data, indent=4)) ``` 通过上述步骤,我们可以高效地从金蝶云星辰V2获取采购入库单数据,并对其进行必要的加工处理,为后续的数据写入做好准备。这一过程不仅提高了数据集成的效率,还确保了数据的一致性和准确性。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现采购入库单数据转换与写入旺店通·企业奇门API接口 在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据(金蝶)进行ETL转换,并转为目标平台旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,首先需要从源系统(金蝶)中提取所需的采购入库单数据。这个过程包括数据请求与清洗,确保提取的数据符合目标系统的要求。以下是一个示例配置,用于从金蝶系统中提取采购订单号: ```json { "field": "purchase_no", "label": "采购订单", "type": "string", "value": "_findCollection find purchase_no from ef23b625-309d-36b4-91f3-7498948a13d9 where api_outer_no={{material_entity.material_entity_src_bill_no}}" } ``` #### 数据转换与写入 一旦完成了数据请求与清洗,我们进入ETL过程的核心部分:数据转换与写入。这一步骤需要将提取的数据按照旺店通·企业奇门API接口的要求进行格式转换,并通过API接口将数据写入目标系统。 ##### API接口配置 在本案例中,我们使用`wdt.stockin.purchase.push` API接口来实现采购入库单的数据写入。以下是该接口的元数据配置: ```json { "api": "wdt.stockin.purchase.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "bill_no", "bodyName": "material_entity", "bodySum": ["material_entity_qty"], "header": ["material_entity_src_bill_no", "bill_no", "material_entity_stock_number"], "body": ["material_entity_material_number", "material_entity_qty", "material_entity_tax_price", "material_entity_cess", "material_entity_comment"] }, ... } ``` ##### 请求参数配置 为了确保数据能够正确传输到目标系统,需要对请求参数进行详细配置。以下是主要字段及其配置说明: 1. **外部单号(outer_no)** ```json { "field": "outer_no", "label": "外部单号", "type": "string", ... "value": "{bill_no}" } ``` 外部单号用于标识唯一单据编号,避免重复推送。 2. **仓库编号(warehouse_no)** ```json { ... "field": "warehouse_no", ... "value": "{{material_entity.material_entity_stock_number}}" } ``` 仓库编号用于区分不同仓库。 3. **货品明细节点(details_list)** ```json { ... { ... {"field":"spec_no","label":"商家编码","type":"string","describe":"ERP内单品唯一编码(SKU),代表单品(SKU)所有属性,并且为库存量出入计算最小单元。SKU概念介绍,单击这里","value":"{{material_entity.material_entity_material_number}}","parent":"goods_list"}, {"field":"stockin_num","label":"入库数量","type":"string","describe":"入库数量","value":"{{material_entity.material_entity_qty}}","parent":"goods_list"}, {"field":"stockin_price","label":"入库价","type":"string","describe":"入库价格,如推送为0默认取成本价。","value":"{{material_entity.material_entity_tax_price}}","parent":"goods_list"}, {"field":"tax","label":"税率","type":"string","describe":"对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16","value":"{{material_entity.material_entity_cess}}","parent":"goods_list"}, {"field":"remark","label":"备注","type":"string","value":"{{material_entity.material_entity_comment}}"} ... } } ``` 每个货品明细节点包含多个字段,例如商家编码、入库数量、入库价等,这些字段需要根据源系统的数据进行映射和转换。 ##### 数据加载 在完成所有必要的数据转换后,通过POST方法将处理后的数据发送到旺店通·企业奇门API接口,实现数据加载: ```json { ... { ... method: 'POST', url: 'https://api.wangdian.cn/openapi2/stockin_purchase_push.php', data: transformedData, headers: { 'Content-Type': 'application/json' } } } ``` 通过上述步骤,我们成功地将金蝶系统中的采购入库单数据转换并写入到旺店通·企业奇门API接口。这不仅实现了异构系统间的数据无缝对接,还提升了业务流程的自动化程度和效率。 以上就是使用轻易云数据集成平台进行ETL转换和数据写入的技术案例,希望能为您的项目提供参考和帮助。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)