销售出库单无缝集成:轻易云平台实战分享

  • 轻易云集成顾问-吕修远
### 领星ERP数据集成到金蝶云星空:实战案例分享 在本技术案例中,我们将探讨如何高效地将领星ERP系统中的销售出库单自发货数据集成到金蝶云星空平台。通过使用轻易云数据集成平台,我们实现了一个定时可靠、批量处理的解决方案,以确保数据流动的精准和实时性。本次方案命名为“领星销售出库单=>金蝶销售出库单(自发货)”。 首先,通过调用领星ERP接口`/erp/sc/routing/wms/order/wmsOrderList`,我们能够定时抓取最新的销售信息。在这过程中,我们特别注意了分页和限流问题,确保每次请求的数据量恰当,同时防止因频繁请求造成接口超载。 接下来的关键步骤是大量数据快速写入到金蝶云星空。这一步骤利用了其提供的`batchSave` API,有效地缩短了大规模数据同步所需时间。同时,为保证多元化业务需求,这里还实现了一套灵活且高效的数据映射机制,将不同格式的数据进行转换与匹配。 在整个对接过程中,不可避免会遇到异常情况。例如,当某一API请求失败时,可以触发错误重试机制。这不仅提高了对接的鲁棒性,也减少了手工干预。同时,在两者之间存在显著差异的数据格式方面,通过编写特定转换脚本来处理,使得数据一致性得到保障,并最终成功对接至目标系统。 最后,所有操作都具备实时监控与日志记录功能,让管理人员可以随时掌握任务执行状态、大致进度以及可能出现的问题,从而极大提升运维效率。这种全透明可视化管理就是轻易云平台最显著的特点之一,但同样重点是实际应用给业务带来的便利。 此次分享旨在通过具体实例展示复杂系统间无缝衔接,实现从源头获取、处理再到目标存储的一整套完整解决方案。关于更多细节及代码实现,请参阅后续部分内容。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统领星ERP接口/erp/sc/routing/wms/order/wmsOrderList获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用领星ERP接口`/erp/sc/routing/wms/order/wmsOrderList`,并对获取的数据进行初步加工处理。 #### API接口调用配置 首先,我们需要配置API接口的元数据,以便正确地请求数据。以下是元数据配置的详细信息: ```json { "api": "/erp/sc/routing/wms/order/wmsOrderList", "method": "POST", "number": "wo_number", "id": "wo_id", "idCheck": true, "request": [ {"label": "店铺ID", "field": "sid", "type": "int"}, {"label": "时间查询类型", "field": "time_type", "type": "string", "value": "stock_delivered_at"}, {"label": "开始日期", "field": "start_date", "type": "string", "value": "{{LAST_SYNC_TIME|date}}"}, {"label": "结束日期", "field": "end_date", "type": "string", "value": "{{CURRENT_TIME|date}}"}, {"label": "页数", "field": "page", "type": "string", "value":"1"}, {"label":"行数","field":"page_size","type":"string","value":"50"}, {"field":"status_arr","label":"状态","type":"string","value":"3"}, {"field":"logistics_status_arr","label":"物流状态","type":"string"} ] } ``` #### 请求参数解析 - **店铺ID (sid)**: 用于指定需要查询的店铺。 - **时间查询类型 (time_type)**: 固定值为`stock_delivered_at`,表示按出库时间查询。 - **开始日期 (start_date)** 和 **结束日期 (end_date)**: 分别表示查询的时间范围。这里使用了模板变量`{{LAST_SYNC_TIME|date}}`和`{{CURRENT_TIME|date}}`,确保每次请求都能获取最新的数据。 - **页数 (page)** 和 **行数 (page_size)**: 用于分页请求,默认值分别为1和50。 - **状态 (status_arr)**: 固定值为3,表示只查询特定状态的数据。 - **物流状态 (logistics_status_arr)**: 可选参数,用于进一步过滤物流状态。 #### 数据请求与清洗 在完成API配置后,我们可以通过轻易云平台发起POST请求以获取数据。以下是一个示例请求体: ```json { "sid": 123, "time_type": "stock_delivered_at", "start_date": "{{LAST_SYNC_TIME|date}}", "end_date": "{{CURRENT_TIME|date}}", "page": 1, "page_size": 50, "status_arr": [3], // 可选字段 // “logistics_status_arr”: [1,2,3] } ``` 收到响应后,需要对数据进行初步清洗和转换,以便后续处理。常见的数据清洗操作包括: 1. **字段映射**:将API返回的数据字段映射到目标系统所需的字段。例如,将`wo_number`映射到金蝶系统中的订单编号字段。 2. **格式转换**:确保日期、数字等字段格式符合目标系统要求。 3. **数据过滤**:根据业务需求过滤掉不必要的数据,例如只保留特定状态或物流状态的订单。 #### 数据转换与写入 在完成数据清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。在本案例中,我们需要将领星ERP的销售出库单数据转换并写入金蝶系统。 以下是一个简单的数据转换示例: ```json { // 原始数据 { "_id" : ObjectId("5f4e8b9b7c213e6a6a5d5e8b"), ... // 清洗后的数据 { ... // 映射后的字段 “orderNumber”: “wo_number”, “orderDate”: “stock_delivered_at”, ... } } ``` 通过轻易云平台,可以实现自动化的数据转换和写入过程,大大提高了效率和准确性。 #### 实时监控与异常处理 为了确保整个流程顺利进行,需要实时监控数据流动和处理状态。一旦发现异常(如API请求失败、数据格式错误等),应及时记录日志并发送告警通知,以便快速定位问题并解决。 以上就是调用领星ERP接口获取并加工数据的详细技术方案,通过合理配置API元数据、精细化的数据清洗与转换,以及实时监控与异常处理,可以有效提升业务透明度和效率。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何配置和使用这些元数据,以实现这一过程。 #### 配置元数据 我们需要配置一系列字段,这些字段将从源平台的数据中提取,并转换为金蝶云星空API所需的格式。以下是关键字段及其配置方式: 1. **单据类型(FBillTypeID)** - 类型:字符串 - 描述:标准销售出库单 - 值:`XSCKD01_SYS` - 解析器:`ConvertObjectParser` - 参数:`FNumber` 2. **单据编号(FBillNo)** - 类型:字符串 - 描述:单据编号 - 值:`{platform_order_no}` 3. **日期(FDate)** - 类型:字符串 - 描述:日期 - 值:`{delivered_at}` 4. **发货组织(FStockOrgId)** - 类型:字符串 - 描述:组织 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 值:`107` 5. **销售组织(FSaleOrgId)** - 类型:字符串 - 描述:组织 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 值:`107` 6. **销售部门(FSaleDeptID)** - 类型:字符串 - 描述: ```json { "name": "ConvertObjectParser", "params": "FNumber" } ``` 查找条件: ```json { "content.FName": {"$eq": "{deliverer}"} } ``` 7. **货主类型(FOwnerTypeIdHead)** - 类型:字符串 - 描述:货主类型 - 值:`BD_OwnerOrg` 8. **货主(FOwnerIdHead)** - 类型:字符串 - 描述: ```json { "name": "ConvertObjectParser", "params": "FNumber" } ``` 值:`107` 9. **客户(FCustomerID)** ```json { "field": "FCustomerID", "label": "客户", "type": "string", "describe": "基础资料", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value":"{sid}" } ``` 10. **明细信息(FEntity)** 明细信息是一个数组,包含多个子字段,如物料编码、实发数量、含税单价等。每个子字段的配置如下: ```json { "field":"FMaterialID", "label":"物料编码", "type":"string", "describe":"基础资料", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"{{product_info.sku}}" }, { "field":"FRealQty", "label":"实发数量", "type":"string", "describe":"数量", "value":"{{product_info.count}}" }, { ... } ``` 11. **财务信息(SubHeadEntity)** 财务信息是一个对象,包含结算组织、结算币别等子字段。每个子字段的配置如下: ```json { ... { "field":"FSettleOrgID", ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ``` #### 数据转换与写入 在完成上述元数据配置后,我们需要通过轻易云的数据处理功能,将源平台的数据按照上述配置进行转换,并调用金蝶云星空的API接口进行写入。 1. **数据请求与清洗**: 2. **数据转换**: 3. **数据写入**: 以下是一个示例代码片段,用于调用金蝶云星空API接口并传递转换后的数据: ```python import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { 'FormId': 'SAL_OUTSTOCK', 'Operation': 'Save', 'IsAutoSubmitAndAudit': False, 'IsVerifyBaseDataField': True, 'SubSystemId': '21', 'InterationFlags': 'STK_InvCheckResult', 'Model': transformed_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接口](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)