轻易云平台中的数据ETL及其在金蝶云星空中的应用

  • 轻易云集成顾问-彭萍
### 旺店通·企业奇门数据集成到金蝶云星空:旺店通委外出库同步金蝶其他出库 在实现旺店通·企业奇门系统与金蝶云星空的无缝对接过程中,数据流转的高效性和准确性是关键。本次案例分享展示了如何通过定制化的数据映射及可靠的API调用,实现从旺店通委外出库到金蝶其他出库的数据集成。本文将详细解析这一过程中的核心技术点与实际操作经验。 首先,通过调用旺店通·企业奇门接口`wdt.vip.stock.outside.wms.query`获取所需的库存和物流信息。在该接口调用中,我们特别注重分页处理和限流问题,以确保大批量数据能够被高效、稳定地抓取。对于每一次API请求,无论成功或失败,均进行了实时监控与日志记录,从而保障整个流程的可追溯性。 为了使大量数据快速且安全写入到金蝶云星空平台,我们采用了分步式批量写入策略,并利用其提供的`batchSave`接口进行多条记录的一次性提交。同时,为应对可能出现的数据格式差异,我们设计了一套自定义转换规则,将旺店通返回的数据字段精准映射至金蝶所需格式。这一步骤不仅提高了数据传递效率,还有效减少了人工干预带来的误差风险。 针对两系统之间的不一致情况,如异常处理机制方面,实施了一套自动错误重试机制。当某条记录因网络波动等原因导致写入失败时,该机制能够检测并重新尝试提交,从而保证所有关键业务节点不会遗漏任何有效数据信息。此外,对于涉及的重要业务环节,设置有完备的告警体系,一旦发生非预期情况,可及时通知相关人员采取措施。 此次集成项目不仅彻底解决了以往手工录入带来的人力成本和错误率问题,同时也大幅提升了整体运营效率。接下来,我们将进一步深入分析具体实现步骤及代码示例,以供参考借鉴。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.vip.stock.outside.wms.query`,获取并加工数据,以实现委外出库同步金蝶其他出库的需求。 #### 接口调用配置 首先,我们需要配置元数据以调用`wdt.vip.stock.outside.wms.query`接口。以下是关键的元数据配置: ```json { "api": "wdt.vip.stock.outside.wms.query", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "order_id", "name": "order_no", "idCheck": true, "request": [ {"field": "warehouse_no", "label": "仓库编号", "type": "varchar", "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置),用于获取指定仓库单据信息(不支持一次推送多个仓库编号)"}, {"field": "status", "label": "单据状态", "type": "int", "describe": "可选值:10 取消 20编辑中 30待审核 40待推送 50推送失败 60待出库 65待入库 70 部分出库 75部分入库 80 已完成", "value":"80"}, {"field": "order_type", "label": "出入类别", "type": "int", "describe":"可选值:1(出库),2(入库)","value":"1"}, {"field": "outer_no", "label":"外部单号","type":"varchar","describe":"外部单号"}, {"field":"api_outer_no","label":"接口外部单号","type":"varchar","describe":"接口外部单号"}, {"field":"order_no","label":"委外单号","type":"varchar","describe":"创建委外出入库单成功后系统生产的单号,示例“WK201905280002”,通过“vip_wms_stockinout_order_push.php”创建委外出入库单成功后响应参数会返回此单号"}, {"field":"start_time","label":"开始时间","type":"datetime","describe":"按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"结束时间","type":"datetime","describe":"按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{CURRENT_TIME|datetime}}"}, {"field":"page_size","label":"分页大小","type":"int","describe":"每页返回数据条数,参数输入值范围1~30,不传此参数默认page_size=30,使用举例单击这里"}, {"field":"page_no","label":"页号","type":"int","describe":"不传值默认从0页开始"} ], "autoFillResponse": true, "condition":[[{"field":"api_outer_no","logic":"isnull"}]] } ``` #### 请求参数详解 1. **仓库编号 (`warehouse_no`)**: - 类型:`varchar` - 描述:代表仓库所有属性的唯一编码,用于区分不同仓库。 2. **单据状态 (`status`)**: - 类型:`int` - 描述:用于筛选不同状态的订单。我们选择已完成状态,即 `80`。 3. **出入类别 (`order_type`)**: - 类型:`int` - 描述:用于区分订单类型。我们选择出库,即 `1`。 4. **外部单号 (`outer_no`)** 和 **接口外部单号 (`api_outer_no`)**: - 类型:均为 `varchar` - 描述:用于标识和关联外部系统中的订单。 5. **委外单号 (`order_no`)**: - 类型:`varchar` - 描述:系统生成的唯一订单编号。 6. **开始时间 (`start_time`)** 和 **结束时间 (`end_time`)**: - 类型:均为 `datetime` - 描述:用于按最后修改时间增量获取数据。 - 示例值分别为 `{{LAST_SYNC_TIME|datetime}}` 和 `{{CURRENT_TIME|datetime}}`。 7. **分页大小 (`page_size`)** 和 **页号 (`page_no`)**: - 类型:均为 `int` - 描述:用于控制每次请求返回的数据条数和分页。 #### 数据请求与清洗 在实际操作中,我们通过POST请求将上述参数发送到接口,并接收返回的数据。由于配置了 `autoFillResponse: true`,平台会自动填充响应结果,这极大简化了开发工作。 在接收到原始数据后,需要进行清洗和转换,以确保数据符合目标系统的要求。例如,可以对日期格式进行标准化处理,对数值字段进行单位转换等。 #### 数据转换与写入 经过清洗后的数据将被转换为目标系统所需的格式,并写入相应的数据存储或直接推送到目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具进行实时监控和调试,以确保每一步操作都准确无误。 通过以上步骤,我们实现了从旺店通·企业奇门接口获取并加工数据,为后续的数据处理和业务决策提供了可靠的数据基础。这一过程不仅提升了数据处理效率,也增强了业务透明度和可追溯性。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并最终写入金蝶云星空API接口。 #### 数据请求与清洗 首先,我们从源系统获取原始数据,并进行必要的清洗和预处理。假设我们已经完成了这一阶段,接下来我们将重点放在如何将这些清洗后的数据转换为金蝶云星空API接口所能接受的格式。 #### 数据转换与写入 为了实现这一目标,我们需要根据金蝶云星空API接口的要求,对数据进行格式转换。以下是元数据配置,用于指导如何将源平台的数据映射到目标平台: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "标准其他出库单:QTCKD01_SYS\n资产出库:QTCKD02_SYS\nVMI出库:QTCKD03_SYS\n费用物料出库:QTCKD04_SYS\n库存调整:QTCKD05_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "QTCKD01_SYS" }, { ... } ], ... } ``` #### 配置解析 1. **单据编号 (FBillNo)**: - 字段类型:`string` - 描述:单据编号 - 值来源:`{order_no}`,表示从源数据中的订单编号字段获取值。 2. **单据类型 (FBillTypeID)**: - 字段类型:`string` - 描述:标准其他出库单类型 - 值固定为:`QTCKD01_SYS` - 使用了 `ConvertObjectParser` 解析器,将内部编码转化为目标系统识别的编码。 3. **领用组织 (FPickOrgId) 和库存组织 (FStockOrgId)**: - 字段类型:`string` - 描述:组织编码 - 值来源:`{warehouse_no}` - 使用了 `ConvertObjectParser` 解析器,将仓库编号转化为目标系统识别的编码。 4. **日期 (FDate)**: - 字段类型:`string` - 描述:日期 - 值来源:`{modified}`,表示从源数据中的修改时间字段获取值。 5. **领料部门 (FDeptId)**: - 字段类型:`string` - 描述:基础资料 - 值固定为:`BM000009` - 使用了 `ConvertObjectParser` 解析器,将内部编码转化为目标系统识别的编码。 6. **明细信息 (FEntity)**: - 字段类型:`array` - 描述:明细信息,包括物料编码、实发数量、发货仓库等字段。 在明细信息中,每个字段都需要进行相应的映射和解析。例如: - **物料编码 (FMaterialId)**: - 字段类型:`string` - 描述:基础资料 - 值来源于明细列表中的 `goods_no` - **实发数量 (FQty)** 和 **实发数量(基本单位) (FBaseQty)**: - 字段类型分别为 `string` 和 `float` - 描述均为数量 - 值来源于明细列表中的 `inout_num` - **发货仓库 (FStockId)**: - 字段类型:`string` - 描述:基础资料 - 值来源于 `warehouse_no` #### 执行操作 最后,我们通过调用金蝶云星空API接口来执行保存操作: ```json { ... "otherRequest": [ { ... } ], ... } ``` 在这里,我们指定了业务对象表单ID (`FormId`) 为 `STK_MisDelivery`,并设置了一些额外参数如是否自动提交并审核 (`IsAutoSubmitAndAudit`) 和验证基础资料 (`IsVerifyBaseDataField`) 等。 通过以上配置和操作,我们可以确保源平台的数据经过ETL转换后,能够无缝对接到金蝶云星空API接口,实现高效的数据集成和同步。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)