金蝶销售出库单到旺店通WMS的数据ETL转换与写入

  • 轻易云集成顾问-李国敏
### 金蝶销售出库单 => 旺店通其他出库单(组织间销售/零散出库单据类型) 在本案例中,我们将详解如何通过轻易云数据集成平台,实现金蝶云星空的销售出库单数据高效稳定地对接到旺店通WMS,生成其他出库单。该集成方案旨在确保两大系统之间的数据传输无缝衔接,并最大程度减少错误和延迟。 首先,通过调用金蝶云星空的`executeBillQuery`接口,我们可以定时、可靠地抓取销售出库单的数据。为防止漏单情况发生,设置了严格的时间窗口与状态检查机制,确保每一条有效记录都能被准确获取。同时,为处理海量数据,我们采用批量抓取并稍加分页策略,以此应对接口限流问题,提升整体效率。 其次,在写入阶段,我们利用旺店通提供的`WDT_WMS_STOCKOUT_CREATE`接口,这一步至关重要的是对不同系统间的数据格式进行转换和映射。例如,对金蝶云提供的字段进行合理调整,使其符合旺店通WMS要求。这不仅提高了兼容性,也确保了新建其他出库单据类型的一致性。 此外,为保证整个过程透明可控,每个环节均有详细日志记录及实时监控,一旦出现异常,可以迅速定位问题并触发重试机制,从而最低限度降低业务影响。这种从源头到目标系统全面覆盖的处理方式,不仅能够高效完成指定任务,也为后续维护升级提供了强有力保障。 通过这种高度自动化且具备灵活性的配置方案,大幅提升了企业信息流转速度与准确性,不再因人工操作带来不必要风险。具体实现细节将在下文逐步展开。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D23.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的`executeBillQuery`接口,获取并加工销售出库单数据。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。该接口采用POST方法,通过传递特定的参数来查询销售出库单的数据。 ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "pagination": { "pageSize": 100 }, "idCheck": true, "request": [ {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"}, {"field":"FSaleOrgId_FNumber","label":"销售组织","type":"string","describe":"组织","value":"FSaleOrgId.FNumber"}, {"field":"FCustomerID_FNumber","label":"客户","type":"string","describe":"基础资料","value":"FCustomerID.FNumber"}, {"field":"FCarriageNO","label":"运输单号","type":"string","describe":"文本","value":"FCarriageNO"}, {"field":"FStockOrgId_FNumber","label":"发货组织","type":"string","describe":"组织","value":"FStockOrgId.FNumber"}, {"field":"FLinkPhone","label":"联系电话","type":"string","describe":"文本","value":"FLinkPhone"}, {"field":"FLinkMan","label":"收货人姓名","type":"string","describe":"","value":""}, // ...更多字段配置 ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "", "", "", "{PAGINATION_START_ROW}"}, {"field": "", "", "", "", ""}, // ...更多其他请求参数 ] } ``` #### 数据请求与清洗 在配置好接口后,我们通过POST方法发送请求。请求体中包含了我们需要查询的字段和其他必要的参数。以下是一个示例请求体: ```json { "FormId": "SAL_OUTSTOCK", "FieldKeys": ["FBillNo", "FDate", ...], // 分页参数 "Limit": 100, // 查询条件 "FilterString": "FSupplierId.FNumber = 'VEN00010' and FApproveDate>='2023-01-01'" } ``` 通过上述请求,我们可以从金蝶云星空获取到原始的销售出库单数据。接下来,我们需要对这些数据进行清洗和转换,以便后续处理。 #### 数据转换与写入 在获取到原始数据后,我们需要对其进行转换。例如,将日期格式进行标准化,将不同系统中的编码进行映射等。这些操作可以通过轻易云平台提供的数据转换工具来实现。 以下是一个简单的数据转换示例: ```json { // 原始数据字段 "sourceFieldName1": { // 转换后的目标字段名 "targetFieldName1" }, ... } ``` 通过这种方式,我们可以将原始数据转换为目标系统所需的格式,并将其写入目标系统中。 #### 实时监控与错误处理 在整个数据集成过程中,实时监控和错误处理至关重要。轻易云平台提供了强大的监控工具,可以实时跟踪每个步骤的数据流动和处理状态。一旦出现错误,可以及时捕获并处理,确保数据集成过程的顺利进行。 例如,当某个字段的数据格式不符合要求时,可以设置相应的错误处理机制: ```json { // 错误处理配置 } ``` 通过以上步骤,我们成功地完成了从金蝶云星空获取销售出库单数据,并将其加工后写入目标系统的全过程。这不仅提高了业务透明度和效率,还确保了数据的一致性和准确性。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### ETL转换与写入:金蝶销售出库单到旺店通WMSAPI接口 在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何将金蝶销售出库单的数据进行ETL转换,并写入到旺店通WMSAPI接口。 #### 数据请求与清洗 首先,我们从金蝶系统中提取销售出库单数据。假设这些数据已经经过初步清洗和准备,接下来我们需要根据目标平台的要求进行进一步的转换。 #### 数据转换 轻易云数据集成平台提供了强大的元数据配置功能,可以帮助我们高效地完成数据转换。以下是具体的元数据配置和转换逻辑: ```json { "api": "WDT_WMS_STOCKOUT_CREATE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "details", "bodySum": ["FRealQty"], "header": ["FBillNo", "FDate", "FStockID", "FLinkMan", "FLinkPhone", "FReceiveAddress", "F_JZJ_Remarks_XSMS", "FCustomerID_FName", "FStockOrgId_FName", "FSalesGroupID", "FCreatorId"], "body": ["FMaterialID_FNumber", "FRealQty", "FEntity_FEntryID", "FLot", "FProduceDate", "FExpiryDate", "FMaterialID_F_JZJ_Text_SCCJ", "FMaterialID_F_JZJ_Text_ZCZH", "FTaxPrice", "FBillAllAmount"] }, ... } ``` #### 请求体构建 根据上述元数据配置,我们需要构建请求体以符合旺店通WMSAPI接口的要求。以下是具体字段映射和请求体结构: 1. **出库单信息**: - 出库单号 (`deliveryOrderCode`) 映射 `FBillNo` - 出库单类型 (`orderType`) 固定值 `QTCK` - 出库单创建时间 (`createTime`) 映射 `FDate` - 仓库编码 (`warehouseCode`) 映射 `FStockID` - 收件人信息: - 姓名 (`name`) 映射 `FLinkMan` - 移动电话 (`mobile`) 映射 `FLinkPhone` - 详细地址 (`detailAddress`) 映射 `FReceiveAddress` - 公司名称 (`company`) 映射 `FCustomerID_FName` - 备注 (`remark`) 映射 `F_JZJ_Remarks_XSMS` - 自定义属性: - 属性1 (`prop1`) 映射 `FSalesGroupID` - 属性2 (`prop2`) 映射 `FCreatorId` - 属性3 (`prop3`) 映射 `FStockOrgId_FName` 2. **单据信息**: - 商家编码 (`itemCode`) 映射 `FMaterialID_FNumber` - 单据行号 (`orderLineNo`) 映射 `FEntity_FEntryID` - 应发商品数量 (`planQty`) 映射 `FRealQty` - 批次 (`batchCode`): 使用 `_function case when '{FLot}'='0' then ' ' else {FLot} end` 表达式处理批次信息 - 生产日期 (`productDate`): 使用 `{ { FProduceDate | date } }` 格式化生产日期 - 过期日期 (`expireDate`): 使用 `{ { FExpiryDate | date } }` 格式化过期日期 - 备注 (`remark`): 合并两个字段 `{details.FMaterialID_F_JZJ_Text_ZCZH}/{details.FMaterialID_F_JZJ_Text_SCCJ}` #### 数据写入 最终,我们通过POST请求将构建好的请求体发送到旺店通WMSAPI接口,实现数据写入。以下是示例代码: ```python import requests import json url = 'https://api.wangdian.cn/openapi2/wdt_wms_stockout_create.php' headers = {'Content-Type': 'application/json'} data = { # 构建好的请求体 } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully written to WDT WMS") else: print(f"Failed to write data: {response.text}") ``` 通过以上步骤,我们实现了从金蝶销售出库单到旺店通WMSAPI接口的数据ETL转换与写入。这一过程展示了轻易云数据集成平台在异构系统间无缝对接中的强大功能和灵活性。 ![打通企业微信数据接口](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)