通过轻易云数据集成实现吉客云与金蝶云星空的采购数据转换

  • 轻易云集成顾问-贺强
### 案例分享:吉客云数据集成到金蝶云星空 在实际业务操作中,采购入库的数据对接常常成为企业ERP系统整合的一大挑战。本篇文章将探讨如何通过轻易云数据集成平台实现吉客云的采购入库数据无缝对接至金蝶云星空,并确保这一过程中的数据完整性和实时性。 此次案例采用了“采购入库对接--正数--已测试”的方案,我们借助轻易云平台强大的高吞吐量支持以及可视化的操作界面,将大量的采购入库数据从吉客云成功、高效地写入到了金蝶云星空。具体而言,通过调用吉客云API接口`erp.storage.goodsdocin.v2`获取原始的数据并进行必要处理后,再利用金蝶云星空提供的`batchSave`接口实现批量导入。 为确保集成过程中没有任何漏单现象发生,我们设计了一系列机制,包括定时可靠的数据抓取、集中监控与告警系统,以及自定义的数据转换逻辑。同时,为应对分页及限流问题,我们也进行了细致调整,确保每个步骤都有详细配置和监控记录。下文将逐一展开这些技术要点,为您还原一个高效且稳定的系统对接全过程。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/D10.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocin.v2获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过配置元数据来调用吉客云的`erp.storage.goodsdocin.v2`接口,以获取并加工采购入库数据。 #### 接口配置与请求参数 首先,我们需要了解接口的基本配置和请求参数。根据提供的元数据配置,`erp.storage.goodsdocin.v2`接口采用POST方法进行调用,主要用于查询(effect: QUERY)。以下是请求参数的详细说明: - **pageIndex**: 分页页码,类型为字符串。 - **pageSize**: 分页页数,类型为字符串,默认值为50。 - **startDate**: 创建时间的起始时间,类型为字符串,值为上次同步时间({{LAST_SYNC_TIME|datetime}})。 - **endDate**: 创建时间的结束时间,类型为字符串,值为当前时间({{CURRENT_TIME|datetime}})。 - **selelctFields**: 返回字段列表,包括goodsdocNo, inOutDate, gmtCreate, inouttype, vendCustomerCode, warehouseCode, warehouseName, redStatus, financeBillStatus, goodsDocDetailList.goodsNo, goodsDocDetailList.estCost, goodsDocDetailList.quantity, goodsDocDetailList。 - **inouttype**: 入库类型,固定值为101。 - **vendCode**: 往来供应商代码。 这些参数确保了我们能够准确地获取所需的数据,并且可以根据需求进行分页处理。 #### 条件过滤与数据清洗 在数据请求过程中,我们需要对返回的数据进行过滤和清洗,以确保数据的准确性和有效性。元数据配置中定义了两组条件: 1. **基础条件(condition_bk)**: - `inouttype` 等于 101 - `goodsDocDetailList.quantity` 大于 0 2. **扩展条件(condition)**: - `inouttype` 等于 101 - `goodsDocDetailList.quantity` 大于 0 - `warehouseName` 不包含 "VMI" - `warehouseName` 不包含 "爱尚直发" 这些条件确保了我们只获取符合特定业务逻辑的数据。例如,我们排除了仓库名称包含"VMI"和"爱尚直发"的数据,以避免不必要的数据干扰。 #### 数据平铺与自动填充 为了便于后续的数据处理,我们需要将嵌套结构的数据进行平铺处理。元数据配置中的`beatFlat`字段指定了需要平铺的字段,即`goodsDocDetailList`。这意味着我们会将该字段中的每个子项单独提取出来作为独立记录进行处理。 此外,配置中的`autoFillResponse`设置为true,这表示系统会自动填充响应结果中的某些字段,以简化后续的数据处理步骤。 #### 异常处理与补救措施 在实际操作中,不可避免地会遇到一些异常情况,例如网络故障或接口响应超时等。为了应对这些情况,我们可以使用元数据配置中的补救措施(omissionRemedy)。例如,通过定时任务(crontab)定期重新请求未成功的数据: ```json { "crontab": "1 2 * * *", "takeOverRequest": [ { "field": "startDate", "value": "_function FROM_UNIXTIME( unix_timestamp() -259200 , '%Y-%m-%d %H:%i:%s' )", "label": "接管字段", "formModel": {"enable": false}, "tableModel": {"enable": false}, "physicalModel": {"enable": false}, "type": "string" } ] } ``` 上述配置表示每天凌晨2点1分执行一次任务,请求过去三天内未成功的数据,以确保数据的完整性和连续性。 #### 总结 通过以上技术细节,我们可以看到如何利用轻易云数据集成平台调用吉客云接口获取并加工采购入库数据。从接口配置、请求参数、条件过滤、数据平铺到异常处理,每一步都至关重要且不可或缺。这些技术细节不仅提升了业务透明度和效率,也确保了数据处理过程的可靠性和稳定性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:采购入库对接至金蝶云星空API接口的ETL转换 在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL转换,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何通过轻易云数据集成平台实现这一过程,重点关注元数据配置和API接口的应用。 #### 数据请求与清洗 在进行ETL转换之前,我们需要确保源数据已经过清洗和预处理。假设我们从源系统获取了以下结构的数据: ```json { "goodsdocNo": "DOC12345", "inOutDate": "2023-10-01", "vendCustomerCode": "VEND001", "goodsDocDetailList_ownerName": "ORG001", "goodsDocDetailList": [ { "goodsNo": "MAT001", "quantity": 100, "estPrice": 50, "warehouseCode": "WH001", "estCost": 5000 } ] } ``` #### 数据转换与写入 为了将上述数据转换为金蝶云星空API接口所能接收的格式,我们需要遵循以下元数据配置: ```json { "api":"batchSave", "effect":"EXECUTE", "method":"POST", ... } ``` ##### 配置解析 1. **主表字段映射** - `FBillTypeID`: 单据类型,固定值为`RKD01_SYS`。 - `FBusinessType`: 业务类型,固定值为`CG`。 - `FJKYNo`: 吉客云单号,对应源数据中的`goodsdocNo`。 - `FDate`: 入库日期,对应源数据中的`inOutDate`。 - `FStockOrgId`, `FOwnerIdHead`, `FPurchaseOrgId`: 收料组织、货主、采购组织均对应源数据中的`goodsDocDetailList_ownerName`。 - `FSupplierId`: 供应商,对应源数据中的`vendCustomerCode`。 - `FSettleCurrId`: 结算币别,固定值为`PRE001`。 2. **明细信息字段映射** - `FMaterialId`: 物料编码,对应明细列表中的`goodsNo`。 - `FStockId`: 仓库,对应明细列表中的`warehouseCode`。 - `FRealQty`: 实收数量,对应明细列表中的`quantity`。 - `FAllAmount`: 价税合计,对应明细列表中的`estCost`。 ##### API请求体构建 根据上述映射关系,我们可以构建出如下的API请求体: ```json { "FormId": "STK_InStock", "IsAutoSubmitAndAudit": true, "Operation": "Save", ... "Model": { "FBillTypeID": {"FNumber": "RKD01_SYS"}, "FBusinessType": {"FNumber": "CG"}, ... "FInStockEntry": [ { ... "FMaterialId": {"FNumber": "{{goodsDocDetailList_goodsNo}}"}, ... } ] ... } ``` ##### 调用金蝶云星空API接口 通过轻易云的数据集成平台,我们可以使用POST方法将上述请求体发送至金蝶云星空的批量保存接口,实现采购入库单据的创建和自动提交审核。 ```python import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print("Failed to write data:", response.text) ``` #### 小结 通过以上步骤,我们详细阐述了如何利用轻易云数据集成平台,将源系统的数据进行ETL转换,并通过调用金蝶云星空API接口,实现采购入库单据的数据写入。这一过程不仅提升了业务流程的自动化程度,也确保了不同系统之间的数据无缝对接。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T7.png~tplv-syqr462i7n-qeasy.image)