轻易云平台助力金蝶与旺店通系统集成

  • 轻易云集成顾问-贺强
### 金蝶盘盈单至旺店通其他入库单的数据集成解决方案探讨 在实现金蝶云星空系统中的盘盈单与旺店通·企业奇门系统的其他入库单数据对接过程中,面临着诸多技术挑战。本文将通过具体案例,重点分享如何利用executeBillQuery和wdt.stockin.order.push这两个关键API接口,完成高效、可靠的数据集成。 首先,我们需要确保从金蝶云星空中获取所有待处理的盘盈单记录而不遗漏,这就涉及到executeBillQuery接口的调用及其分页和限流问题处理。在保证抓取数据完整性的同时,还需考虑如何以最快速度大量写入到旺店通·企业奇门系统,由此触发了对wdt.stockin.order.push接口性能优化的需求。 其次,不容忽视的是两大系统间的数据格式差异。例如,金蝶云星空中的字段命名可能与旺店通·企业奇门使用的不一致,从而需要进行定制化的数据映射。此外,为了提高数据传输过程中的事务性和可靠性,我们设计并实现了一套异常处理与错误重试机制,以应对各种潜在的问题,例如网络波动或服务器响应超时等情况。 整个方案还涵盖了实时监控与日志记录,通过轻易云平台提供的全生命周期管理服务,实现对每一个操作环节、每一条数据流动状态的精准追踪。这不仅提升了业务透明度,也为后续问题排查和回溯提供了坚实基础。 接下来,将逐步详细介绍各个步骤涉及的技术细节,包括API参数配置、分页策略制定、限流控制方法以及批量数据导入技巧等内容。希望这些经验能为类似场景下的数据集成工作提供参考和帮助。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取盘盈单数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置元数据,以便正确调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FBillEntry_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","value":"FBillEntry_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":"FStockerId","label":"仓管员","type":"string","value":"FStockerId"}, {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FModifierId","label":"最后修改人","type":"","value":""}, {"field":"","label":"","type":"","value":""}, ... ], ... } ``` #### 请求参数详解 1. **基本字段**:包括`FBillEntry_FEntryID`(分录主键)、`FID`(实体主键)、`FBillNo`(单据编号)等。这些字段用于标识和描述盘盈单的基本信息。 2. **分页参数**:通过设置`pageSize`为500,我们可以控制每次请求返回的数据量,确保不会因为数据量过大导致请求失败。 3. **过滤条件**:我们可以通过设置过滤条件来精确查询所需的数据。例如,使用 `FilterString: FApproveDate>='{{LAST_SYNC_TIME|datetime}}'` 来获取特定时间段内的数据。 #### 调用接口并处理响应 在配置好元数据后,我们可以通过轻易云平台发起HTTP POST请求来调用金蝶云星空的接口。以下是一个示例请求体: ```json { "FormId": "STK_StockCountGain", "FieldKeys": [ "FBillEntry_FEntryID", "FID", "FBillNo", ... ], "FilterString": "FApproveDate>='2023-01-01'", "Limit": 500, "StartRow": 0 } ``` #### 数据清洗与转换 获取到原始数据后,我们需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以使用轻易云平台提供的各种工具和功能,例如: 1. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将 `FBillNo` 映射到目标系统中的 `OrderNumber`。 2. **数据格式转换**:将日期格式从 `YYYY-MM-DD` 转换为目标系统所需的格式。 3. **数据过滤**:根据业务需求过滤掉不需要的数据。例如,只保留 `FDocumentStatus` 为已审核的数据。 #### 示例代码 以下是一个示例代码片段,用于展示如何调用接口并处理响应: ```python import requests import json url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'STK_StockCountGain', 'FieldKeys': 'FBillEntry_FEntryID,FID,FBillNo,...', 'FilterString': 'FApproveDate>=\'2023-01-01\'', 'Limit': 500, 'StartRow': 0 } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据清洗与转换 cleaned_data = [] for entry in data: cleaned_entry = { 'OrderNumber': entry['FBillNo'], 'Date': entry['FDate'], ... } cleaned_data.append(cleaned_entry) # 将清洗后的数据写入目标系统 # write_to_target_system(cleaned_data) ``` 通过上述步骤,我们成功地从金蝶云星空获取了盘盈单数据,并进行了初步加工,为后续的数据写入奠定了基础。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与数据写入旺店通·企业奇门API接口 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个关键环节,尤其是在将已经集成的源平台数据转换为目标平台所能接收的格式时。本文将详细探讨如何使用轻易云数据集成平台,将金蝶盘盈单的数据通过ETL转换,最终写入到旺店通·企业奇门API接口。 #### 接口配置与元数据解析 在进行ETL转换之前,我们需要了解目标API接口的具体配置和要求。本文中使用的目标接口是`wdt.stockin.order.push`,其主要任务是将其他入库单的数据推送到旺店通系统中。 以下是该接口的元数据配置: ```json { "api": "wdt.stockin.order.push", "effect": "EXECUTE", "method": "POST", "operation": { "method": "merge", "field": "FBillNo,FDate,FStockId_FNumber", "bodyName": "details_listss", "bodySum": ["F_UHZG_JJQty"], "header": ["FBillNo", "FStockId_FNumber", "FBillTypeID", "Fnote"], "body": ["FMaterialId_FNumber", "FQty", "FPrice", "FLOT", "F_UHZG_JJQty"] }, "idCheck": true, "request": [ {"field":"outer_no","label":"外部单号","type":"string","value":"{FBillNo}"}, {"field":"warehouse_no","label":"仓库编号","type":"string","value":"{FStockId_FNumber}"}, {"field":"remark","label":"备注","type":"string","value":"{Fnote}"}, {"field":"is_check","label":"是否审核","type":"string","value":"1"}, {"field":"reason","label":"入库原因","type":"string","value":"盘盈其他入库"}, {"field":"goods_list","label":"货品明细节点","type":"array","value":"details_listss", "children":[ {"field":"spec_no","label":"商家编码","type":"string","value":"{{details_listss.FMaterialId_FNumber}}"}, {"field":"stockin_num","label":"入库数量","type":"string","value":"{{details_listss.F_UHZG_JJQty}}"}, {"field":"src_price","label":"原价","type":"string","value":"{{details_listss.FPrice}}"}, {"field":"stockin_price","label":"入库价","type":"string","value":"{{details_listss.FPrice}}"}, {"field":"batch_no","label":"批次{{details_listss.FLOT}}", "type" : “string”}, {"field":“tax”,"label" : “税率”,"type" : “string”,"describe" : “对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16”} ] } ], “otherRequest”: [ { “field”: “stockin_info”, “label”: “stockin_info”, “type”: “string”, “describe”: “111” } ] } ``` #### 数据请求与清洗 首先,我们需要从金蝶盘盈单中提取相关数据。这些数据包括单据编号(FBillNo)、仓库编号(FStockId_FNumber)、备注(Fnote)等。在提取这些字段后,需要进行必要的数据清洗,以确保数据格式和内容符合目标API接口的要求。 例如,对于日期字段,需要确保其格式符合ISO标准;对于数值字段,需要确保其精度和单位一致。 #### 数据转换与映射 在完成数据清洗后,下一步是将这些数据按照目标接口的要求进行转换和映射。根据元数据配置,我们需要将金蝶盘盈单中的字段映射到旺店通·企业奇门API接口所需的字段。 以下是具体的映射关系: - `outer_no` 映射到 `{FBillNo}` - `warehouse_no` 映射到 `{FStockId_FNumber}` - `remark` 映射到 `{Fnote}` - `is_check` 固定值为 `1` - `reason` 固定值为 `盘盈其他入库` - `goods_list` 为一个数组节点,包含多个子字段: - `spec_no` 映射到 `{details_listss.FMaterialId_FNumber}` - `stockin_num` 映射到 `{details_listss.F_UHZG_JJQty}` - `src_price` 和 `stockin_price` 都映射到 `{details_listss.FPrice}` - `batch_no` 映射到 `{details_listss.FLOT}` #### 数据写入 完成上述步骤后,即可将转换后的数据通过POST方法写入到旺店通·企业奇门API接口。以下是一个示例请求体: ```json { "outer_no": "{FBillNo}", "warehouse_no": "{FStockId_FNumber}", "remark": "{Fnote}", "is_check": "1", "reason": "盘盈其他入库", "goods_list": [ { "spec_no": "{{details_listss.FMaterialId_FNumber}}", "stockin_num": "{{details_listss.F_UHZG_JJQty}}", "src_price": "{{details_listss.FPrice}}", "stockin_price": "{{details_listss.FPrice}}", // 批次号和税率需要根据具体业务需求进行设置 // 示例:批次号和税率 // 批次号: "{details_listss.FLOT}" // 税率: 根据实际业务需求填写,例如:0.16 表示16%的税率 // 示例代码: // batch_no: "{details_listss.FLOT}", // tax: 根据实际业务需求填写,例如:0.16 表示16%的税率 } ] } ``` 通过以上步骤,可以实现从金蝶盘盈单到旺店通·企业奇门API接口的数据无缝对接。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)