轻易云平台实现销售出库单数据高效转移和处理实战

  • 轻易云集成顾问-张妍琪
### 旺店通·旗舰奇门数据集成金蝶云星空:销售出库单对接技术解析 在现代企业复杂的供应链管理中,数据的无缝流动至关重要。本文将详细探讨如何通过轻易云数据集成平台,将旺店通·旗舰奇门系统中的销售出库单精确、高效地集成到金蝶云星空系统上。 此次案例分析集中于一个具体任务:利用API接口`wdt.wms.stockout.sales.querywithdetail`从旺店通·旗舰奇门获取销售出库单数据,并通过金蝶云星空的数据写入API `batchSave`实现批量数据导入。这一过程强调了多个关键技术点,包括高吞吐量的数据处理能力、自定义数据转换逻辑以及实时监控和异常处理机制等。 首先,通过轻易云可视化的数据流设计工具,我们能够直观地配置从旺店通抓取接口所需的参数及相关逻辑。在此过程中,高频率调用`wdt.wms.stockout.sales.querywithdetail`需要解决分页和限流问题,以确保所有销售出库单都能被有效抓取并存储。然而,由于两个系统之间存在不同的数据结构,还必须进行自定义的数据转换操作,以保证格式一致性,提高集成效率。 与此同时,针对大量数据快速写入到金蝶云星空这一需求,通过优化分批次提交策略,可以显著提升性能。结合实时监控和告警系统,我们不仅可以追踪每个任务执行的状态和性能指标,而且在发生错误时迅速定位源头并触发重试机制,确保流程最终达成设定目标,不漏掉任何一个订单记录。 总而言之,本案例展示了跨平台、跨系统间实现可靠、高效数据对接的一整套解决方案,从而为业务提供坚实的数据支撑。后续我们将逐步深入各环节具体配置与调优细节,为读者呈现完整实施路径与操作技巧。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D15.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口wdt.wms.stockout.sales.querywithdetail获取并加工数据 在数据集成的生命周期中,第一步是调用源系统的API接口以获取原始数据。本文将深入探讨如何使用轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockout.sales.querywithdetail`,并对获取的数据进行初步加工。 #### 接口概述 接口`wdt.wms.stockout.sales.querywithdetail`用于查询销售出库单的详细信息。该接口采用POST请求方式,支持分页查询,并可以根据多种业务参数进行过滤。 #### 元数据配置解析 以下是元数据配置的详细内容: ```json { "api": "wdt.wms.stockout.sales.querywithdetail", "method": "POST", "number": "order_no", "id": "stockout_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "int", "value": 50, "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "int", "value": 1, "parent": "pager" } ] }, { "field": "params", ... } ], ... } ``` #### 请求参数配置 1. **分页参数**: - `page_size`: 每页返回记录数,默认值为50。 - `page_no`: 当前页码,默认值为1。 2. **业务参数**: - `start_time` 和 `end_time`: 查询时间范围,分别使用动态变量`{{MINUTE_AGO_30|datetime}}`和`{{CURRENT_TIME|datetime}}`表示过去30分钟和当前时间。 - `status_type`: 出库单状态,默认值为3(按照指定的status状态字段查询)。 - `status`: 出库单状态详细,默认值为110。 - 其他可选参数包括仓库编码、出库单编号、店铺编号、销售订单号等。 #### 条件过滤与补偿机制 元数据配置中还定义了条件过滤和补偿机制: - **条件过滤**:通过逻辑运算符对特定字段进行过滤,例如: ```json [ {"field":"shop_no","logic":"notin","value":"bf796c6,C00314,C00099"}, {"field":"src_trade_no","logic":"notlike","value":"XSDD"}, {"field":"src_trade_no","logic":"notlike","value":"CKSQD"} ] ``` - **补偿机制**:在定时任务中定义了接管字段,用于处理遗漏的数据。例如,每小时运行一次任务,将开始时间设置为当前时间前2小时,结束时间设置为当前时间前1小时: ```json { ... {"field":"params.start_time","value":"_function FROM_UNIXTIME( unix_timestamp() - 7200 , '%Y-%m-%d %H:%i:%s' )"}, {"field":"params.end_time","value":"_function FROM_UNIXTIME( unix_timestamp() - 3600 , '%Y-%m-%d %H:%i:%s' )"} ... } ``` #### 数据请求与清洗 在调用接口后,需要对返回的数据进行清洗和初步加工。这一步骤包括: 1. **去重与校验**:根据配置中的`idCheck`字段,对返回的数据进行去重和唯一性校验。 2. **格式转换**:将原始数据转换为目标系统所需的格式。例如,将日期字符串转换为标准日期格式,将数值字段统一单位等。 3. **异常处理**:对于缺失或异常的数据进行标记或修正,以确保后续处理的准确性。 #### 实践案例 假设我们需要获取过去30分钟内状态为110的销售出库单,并将其导入到金蝶系统。具体步骤如下: 1. 配置请求参数: ```json { ... {"field":"params.start_time","value":"{{MINUTE_AGO_30|datetime}}"}, {"field":"params.end_time","value":"{{CURRENT_TIME|datetime}}"}, {"field":"params.status_type","value":"3"}, {"field":"params.status","value":"110"} ... } ``` 2. 调用接口并获取数据: ```python response = requests.post(api_url, json=request_payload) data = response.json() ``` 3. 对数据进行清洗和初步加工: ```python cleaned_data = clean_and_transform(data) ``` 4. 将清洗后的数据写入目标系统(金蝶): ```python write_to_kd(cleaned_data) ``` 通过上述步骤,我们能够高效地从旺店通系统中提取销售出库单数据,并将其无缝集成到金蝶系统中。这不仅提高了数据处理的效率,也确保了业务流程的连续性和准确性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将源平台(如旺店通)的销售出库单数据进行转换,并通过金蝶云星空API接口写入目标平台。 #### API接口配置与元数据解析 首先,我们需要理解金蝶云星空API接口的配置。以下是一个典型的API请求配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","value":"XSCKD01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FBillNo","label":"单据编号","type":"string","value":"{order_no}"}, {"field":"FDate","label":"日期","type":"string","value":"{consign_time}"}, {"field":"FStockOrgId","label":"发货组织","type":"string","value":"100.01","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FSaleOrgId","label":"销售组织","type":"string","value":"{shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"},"mapping":{"target":"65693884484e3b37ea13d9f4","direction":"positive"}}, {"field":"FSettleOrgID","label":"结算组织","type":"string","value":"{shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"},"mapping":{"target":"65693884484e3b37ea13d9f4","direction":"positive"}}, {"field":"FLinkMan","label":"收货人姓名","type":"string","value":"{receiver_name}"}, {"field":"FLinkPhone","label":"联系电话","type":"string","value":"{receiver_telno}"}, {"field":"Fnote","label":"备注","type": "string", "value": "{remark}"} ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "SAL_OUTSTOCK"}, {"field": "Operation", "label": "执行的操作", "type": "string", "value": "Save"}, {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": true}, {"field": "IsVerifyBaseDataField", "label": "验证基础资料", "type": bool, value: true}, {"field: SubSystemId, label: 系统模块, type: string, value: 21}, { label: 允许负库存, field: InterationFlags, type: string, value: STK_InvCheckResult } ] } ``` #### 数据字段解析与映射 在配置过程中,关键在于正确解析和映射源数据到目标平台所需的字段格式。以下是一些重要字段的解析和映射规则: 1. **单据类型** (`FBillTypeID`): - 固定值 `"XSCKD01_SYS"`,使用 `ConvertObjectParser` 转换为金蝶系统识别的编码。 2. **单据编号** (`FBillNo`): - 动态值 `{order_no}`,直接从源数据中提取订单编号。 3. **日期** (`FDate`): - 动态值 `{consign_time}`,提取发货时间作为单据日期。 4. **发货组织** (`FStockOrgId`): - 固定值 `"100.01"`,使用 `ConvertObjectParser` 转换为金蝶系统识别的编码。 5. **销售组织** (`FSaleOrgId`) 和 **结算组织** (`FSettleOrgID`): - 动态值 `{shop_no}`,使用 `ConvertObjectParser` 并通过 `mapping` 映射到目标系统中的具体组织编码。 6. **收货人信息**: - 收货人姓名 (`FLinkMan`) 和联系电话 (`FLinkPhone`) 分别映射为 `{receiver_name}` 和 `{receiver_telno}`。 7. **备注** (`Fnote`): - 动态值 `{remark}`,从源数据中提取备注信息。 #### 明细信息处理 对于明细信息(即订单中的商品列表),需要特别处理嵌套数组结构: ```json { field: FEntity, label: 明细信息, type: array, children: [ { field: FMaterialID, label: 物料编码, type: string, parser: { name: ConvertObjectParser, params: FNumber }, value: {{details_list.goods_no}} }, { field: FRealQty, label: 实发数量, type: string, value: {{details_list.goods_count}} }, { field: FTaxPrice, label: 含税单价, type:string,value :{{details_list.sell_price}}}, { field:FStockID,label :仓库,type:string,value:{warehouse_no}}, ... ] } ``` 每个子字段都需要根据具体需求进行解析和映射。例如: - **物料编码** (`FMaterialID`):使用 `ConvertObjectParser` 转换商品编号。 - **实发数量** (`FRealQty`):直接从源数据中提取实际发货数量。 - **含税单价** (`FTaxPrice`):从源数据中提取商品销售价格。 #### 数据转换与写入 完成上述字段解析和映射后,通过配置好的API请求,将转换后的数据批量写入金蝶云星空系统。轻易云数据集成平台提供了全异步处理机制,确保高效的数据传输和处理。 ```json { "api" : "/k3cloud/api/sal/outstock/batchSave", "method" : POST, "body" : { "Model" : { ... "FBillNo" : "{order_no}", ... "SubSystemId" : 21 ... } } } ``` 通过这种方式,可以实现不同系统间的数据无缝对接,提高业务处理效率和准确性。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)