ETL转换:将旺店通出库单数据同步至金蝶云星空

  • 轻易云集成顾问-贺强
### 旺店通出库单同步金蝶其他出库同步CK 在本文章中,我们将探讨如何通过数据集成平台高效地实现旺店通·企业奇门的出库单数据与金蝶云星空的无缝对接。本次案例名为“旺店通出库单同步金蝶其他出库同步CK”,主要聚焦API接口调用与数据处理技术细节。 首先,为确保集成过程中不漏单,我们使用了定时可靠的抓取策略,从旺店通·企业奇门系统获取出库订单数据。具体来说,利用`wdt.stockout.order.query`接口我们可以定时拉取最新的订单信息,并进行全面的数据验证和过滤。 大量的数据快速写入到金蝶云星空是本次集成方案中的一大挑战。通过并行批量处理机制,以及调用`batchSave`接口,我们能够高效地将整理后的数据写入到金蝶云星空。此外,针对分页和限流问题,我们实现了一套健壮的分页逻辑和请求速率控制,确保整个过程平稳运行,不产生过载错误或遗漏记录。 另外,本方案特别重视两端系统之间的数据格式差异。为了满足不同业务需求,对每条记录进行了精确映射转换,以符合双方平台的数据标准。同时,通过自定义映射规则,有效提升了对特殊字段及复杂结构化数据处理的灵活性。 最后一个关键环节是异常处理与错误重试机制。当出现网络波动或者意外情况导致某些请求失败时,该部分设计允许自动识别并重新尝试提交未成功的数据包,从而保障全流程操作的一致性和完整性。在实时监控方面,每个步骤均提供详细日志记录,实现全过程透明管理,使得调试与维护变得直观易行。 总之,这一案例展示了如何通过优化API调用、强化实时监控及完善异常处理等多维度措施来构建一个可靠、高效且稳定的跨平台数据集成解决方案。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何使用轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query`来获取出库单数据,并进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是针对`wdt.stockout.order.query`接口的详细配置: ```json { "api": "wdt.stockout.order.query", "method": "POST", "number": "order_no", "id": "stockout_id", "pagination": { "pageSize": 30 }, "condition_bk": [[]], "request": [ {"field":"start_time","label":"开始时间","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"结束时间","type":"string","value":"{{CURRENT_TIME|datetime}}"}, {"field":"order_type","label":"出库单类型","type":"string","value":"7"}, {"field":"status","label":"出库单状态","type":"string"}, {"field":"warehouse_no","label":"仓库编号","type":"string"}, {"field":"src_order_no","label":"源单号","type":"string"}, {"field":"stockout_no","label":"出库单号","type":"string"} ], "otherRequest": [ {"field":"page_size","label":"分页大小","type":"string","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"page_no","label":"页号","type":"string","value":"{PAGINATION_START_PAGE}"} ] } ``` #### 参数解析与动态填充 在上述配置中,关键参数包括: - `start_time` 和 `end_time`:用于定义数据同步的时间范围,分别使用上次同步时间和当前时间。 - `order_type`:固定值为7,表示特定类型的出库单。 - `status`, `warehouse_no`, `src_order_no`, `stockout_no`:这些字段用于进一步过滤查询结果,可以根据业务需求动态设置。 - `page_size` 和 `page_no`:用于分页控制,确保能够处理大批量数据。 #### 数据请求与清洗 通过上述配置,我们可以发起POST请求,从旺店通获取出库单数据。以下是一个示例请求体: ```json { "start_time": "2023-10-01T00:00:00Z", "end_time": "2023-10-02T00:00:00Z", "order_type": "7", "status": "", "warehouse_no": "", "src_order_no": "", "stockout_no": "", "page_size": "30", "page_no": "1" } ``` 在接收到响应后,需要对数据进行清洗和初步处理。例如,可以过滤掉无效记录、标准化日期格式、转换字段名称等操作。这些操作可以通过轻易云平台提供的数据处理工具实现。 #### 数据转换与写入 在完成初步清洗后,下一步是将数据转换为目标系统所需的格式,并写入目标系统。在本案例中,目标系统为金蝶其他出库同步CK。具体步骤包括: 1. 映射字段:将源系统中的字段映射到目标系统中的对应字段。 2. 数据转换:根据业务逻辑对某些字段进行转换,例如单位换算、状态码映射等。 3. 数据写入:通过轻易云平台提供的写入工具,将处理后的数据批量写入目标系统。 #### 实时监控与日志记录 为了确保整个过程的透明性和可追溯性,轻易云平台提供了实时监控和日志记录功能。可以实时查看每个环节的数据流动和处理状态,并在出现异常时及时报警和处理。 通过上述步骤,我们实现了从旺店通获取出库单数据并同步到金蝶系统的全过程。这个案例展示了如何利用轻易云平台高效地进行异构系统间的数据集成,并确保每个环节都透明可控。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:将旺店通出库单同步至金蝶云星空 在数据集成生命周期的第二步中,我们需要将已经从源平台(如旺店通)获取的数据进行ETL转换,并将其转化为目标平台(金蝶云星空API接口)能够接收的格式,最终写入目标平台。以下是具体的技术实现过程。 #### 1. API接口配置 在本案例中,我们使用金蝶云星空的`batchSave` API接口来实现数据写入。该接口采用POST方法,支持批量保存操作。以下是元数据配置的详细说明: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","value":"{order_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD01_SYS"}, {"field":"FStockOrgId","label":"库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FPickOrgId","label":"领用组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FDate","label":"日期","type":"string","value":"{consign_time}"}, {"field":"FDeptId","label":"领料部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM003"}, {"field":"FNote","label":"备注","type":"string","value":"{remark}"}, { "field": "FEntity", "label": "明细信息", "type": "array", "children": [ {"field": "FMaterialId", "label": "物料编码", "type": "string", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{{details_list.goods_no}}", "parent": "FEntity"}, {"field": "FCMKBarCode", "label": "零售条形码", "type": "string", "parent": "FEntity"}, {"field": "FQty", "label": "实发数量", "type": "string",  "value": "{{details_list.goods_count}}",  "parent":  "FEntity"}, {"field":  "FStockId",  "label":  "发货仓库",  "type":  "string",  "parser":{"name":  "ConvertObjectParser",  "params":  "FNumber"},  "value": "{warehouse_no}",  "parent":  "FEntity"}, {"field":  "FLot",  "label":  "批号",   type:   string,   parser:{"name": ConvertObjectParser,   params:   FNumber},   value:{{details_list.batch_no_1}},   parent:FEntity}, {field:FPrice,label:成本价,type:string,parent:FEntity}, {field:FEntryNote,label:备注,type:string,parent:FEntity} ], value:"details_list" } ], otherRequest:[ { field:"FormId", label:"业务对象表单Id", type:"string", value:"STK_MisDelivery" }, { field:"IsAutoSubmitAndAudit", label:"提交并审核", type:"bool", value:true }, { field:"IsVerifyBaseDataField", label:"验证基础资料", type:"bool", value:true }, { field:"Operation", label:"执行的操作", type:"string", value:"Save" } ] } ``` #### 2. 数据字段解析与转换 在进行ETL转换时,需特别注意以下几个关键字段及其解析方式: - **FBillNo(单据编号)**:直接映射为源数据中的订单编号 `{order_no}`。 - **FBillTypeID(单据类型)**:固定值 `QTCKD01_SYS`,通过 `ConvertObjectParser` 转换为目标系统所需格式。 - **FStockOrgId(库存组织)** 和 **FPickOrgId(领用组织)**:均设置为固定值 `100`,同样通过 `ConvertObjectParser` 转换。 - **FDate(日期)**:映射为源数据中的发货时间 `{consign_time}`。 - **FDeptId(领料部门)**:固定值 `BM003`,通过 `ConvertObjectParser` 转换。 - **FNote(备注)**:映射为源数据中的备注 `{remark}`。 对于明细信息 `FEntity` 的处理,需要特别注意数组结构和每个子字段的解析: - **FMaterialId(物料编码)**:映射为明细列表中的商品编码 `{{details_list.goods_no}}`,通过 `ConvertObjectParser` 转换。 - **FCMKBarCode(零售条形码)**、**FQty(实发数量)**、**FLot(批号)** 等字段均直接从明细列表中提取相应值。 #### 3. 执行批量保存操作 最后,通过配置其他请求参数来完成整个保存操作: - **FormId**:业务对象表单ID,设置为 `STK_MisDelivery`。 - **IsAutoSubmitAndAudit**:自动提交并审核设置为 `true`。 - **IsVerifyBaseDataField**:验证基础资料设置为 `true`。 - **Operation**:执行的操作设置为 `Save`。 这些配置确保了数据能够正确地写入金蝶云星空,并且在写入后自动提交和审核,以提高工作效率。 综上所述,通过合理配置元数据并进行ETL转换,可以高效地将旺店通出库单同步至金蝶云星空,实现不同系统间的数据无缝对接。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)