轻易云平台ETL转换:对接旺店通API接口实现

  • 轻易云集成顾问-陈洁琳
### 案例分析:用友U8数据集成到旺店通·企业奇门 在本次技术案例中,我们将探讨如何使用轻易云平台,将用友U8系统中的其他出库数据无缝对接至旺店通·企业奇门,并实现高效、稳定的数据传输和处理。 首先,我们需要解决的是如何确保从用友U8系统中准确、及时地获取到所有类型的其他出库数据。我们采用了定时可靠的抓取机制,通过调用用友U8提供的API接口 `/apilink/u8api` 来执行这一任务。这一过程不仅保证了数据不漏单,还能根据实际需求进行分页抓取,避免接口限流问题。 在成功获取到原始数据后,下一步是快速且批量写入到目标系统——旺店通·企业奇门。为此,我们利用其专属写入API `wdt.vip.wms.stockinout.order.push` 实现大量数据的高效导入。此外,为应对可能的数据格式差异与映射问题,我们设计了一套定制化的数据转换规则,以确保每条记录都能够正确匹配并顺利进入目标数据库。 为了进一步提升对接过程中的稳定性和容错性,我们还增加了异常处理与错误重试机制。一旦检测到任意接口调用失败或响应超时,平台会自动尝试重新请求,并实时记录日志以便于后期追溯和排查。同样重要的是,对整个集成过程进行了全程监控,使得每一步操作都明确可见,并随时可以查看最新状态及历史记录。 通过这种细致严谨的方案配置,不仅实现了两大系统间的数据无缝对接,还显著提高了业务运作效率和透明度。在实际运行过程中,每天数千笔交易信息能够准时、准确地同步至旺店通·企业奇门,为客户提供强有力的数字支持。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image) ### 用友U8接口调用与数据加工技术案例 在轻易云数据集成平台中,调用用友U8接口获取并加工数据是生命周期的第一步。本文将详细探讨如何通过配置元数据来实现这一过程,重点关注接口调用和数据处理的技术细节。 #### 调用用友U8接口获取数据 首先,我们需要通过配置元数据来定义如何调用用友U8的API接口。根据提供的元数据配置,我们使用`/apilink/u8api`作为API路径,并采用POST方法进行请求。 ```json { "api": "/apilink/u8api", "effect": "QUERY", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ { "field": "data", "label": "消息体参数", "type": "object", "children": [ { "field": "过滤条件_1", "label": "开始时间", "type": "object", "children": [ {"field": "名称", "label": "字段名", "type": "string", "value":"dnverifytime"}, {"field": "比较符号", "label":"大于等于", "type":"string", "value":"="}, {"field":"值","label":"短日期","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"} ] }, { ... } ] } ], ... } ``` #### 配置请求参数 在请求参数中,我们需要设置多个过滤条件,包括开始时间、结束时间和指定仓库。这些条件将用于筛选符合要求的数据记录。 - **开始时间**:字段名为`dnverifytime`,比较符号为`>=`,值为上次同步时间。 - **结束时间**:字段名为`dnverifytime`,比较符号为`<=`,值为当前时间。 - **指定仓库**:字段名为`cwhcode`,比较符号为`in`,值为特定仓库编号列表(如10,32,12,03)。 此外,还需要设置分页参数以控制每次请求的数据量和页码。 ```json { ... { "field":"apicontext", ... { {"field":"pagesize","label":"分页大小","type":"string","value":"100"}, {"field":"pageindex","label":"页码","type":"string","value":"1"} } } } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以确保数据格式符合目标系统的要求。以下是一些常见的数据清洗操作: 1. **字段映射**:将源系统中的字段映射到目标系统中的对应字段。例如,将用友U8中的仓库编码映射到目标系统中的仓库ID。 2. **数据类型转换**:确保所有字段的数据类型一致。例如,将日期字符串转换为标准的日期格式。 3. **异常数据处理**:过滤掉不符合业务规则的数据记录,例如缺失关键字段或格式错误的数据。 #### 写入目标系统 经过清洗和转换后的数据,需要写入到目标系统中。在轻易云平台中,这一步通常通过配置相应的写入接口来实现。根据元数据配置,可以使用以下接口: - 列表接口:用于批量写入多条记录,例如`otherout/list` - 详情接口:用于写入单条记录,例如`otherout/get` ```json { ... { {"field":"apiurl","label":"列表接口","type":"string","describe":"productin/list","value":"otherout/list"}, {"field":"apidetail","label":"详情接口","type":"string","describe":"productin/get","value":"otherout/get"} } } ``` 通过上述步骤,我们可以实现从用友U8系统中获取并加工其他出库类型的数据,并将其无缝集成到目标系统中。这一过程不仅提高了数据处理的效率,还确保了业务流程的透明性和可追溯性。 ![打通钉钉数据接口](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换:对接旺店通·企业奇门API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,以适配目标平台——旺店通·企业奇门API接口的格式,并最终写入目标平台。以下是详细的技术实现过程。 #### API接口配置 首先,我们需要了解目标API接口的元数据配置。根据提供的元数据配置,目标API为`wdt.vip.wms.stockinout.order.push`,采用POST方法进行数据推送,以下是具体字段及其描述: - `api_outer_no`: 接口外部单号,确保唯一性,避免重复推送。 - `warehouse_no`: 仓库编号,用于区分不同仓库。 - `order_type`: 出入类型,可选值为1(出库)或2(入库)。 - `logistics_fee`: 邮资,默认为0。 - `other_fee`: 其他费用。 - `province`, `city`, `district`, `address`: 地址相关信息。 - `contact`, `mobile`: 联系人信息。 - `remark`: 备注信息。 - `auto_check`: 自动审核标志,默认值为1。 - `goods_list`: 货品明细节点,包括商家编码、入库数量等详细信息。 #### 数据映射与转换 在进行ETL转换时,需要将源平台的数据字段映射到目标API所需的字段格式。以下是具体的映射关系和转换逻辑: 1. **接口外部单号 (`api_outer_no`)**: - 来源字段:`{ccode}` - 描述:调用本接口时推送的唯一单据编号。 2. **仓库编号 (`warehouse_no`)**: - 来源字段:`{cwhcode}` - 描述:代表仓库所有属性的唯一编码。 3. **出入类型 (`order_type`)**: - 固定值:`1` - 描述:出库类型固定为1。 4. **邮资 (`logistics_fee`)**: - 固定值:`0` - 描述:物流或者快递运输货物产生的费用。 5. **其他费用 (`other_fee`)**: - 固定值:空 - 描述:其他费用。 6. **地址相关信息 (`province`, `city`, `district`, `address`)**: - 来源字段分别对应省、市、县(区)、详细地址。 7. **联系人信息 (`contact`, `mobile`)**: - 来源字段分别为联系人姓名 `{chandler}` 和手机号。 8. **备注 (`remark`)**: - 来源字段组合 `{cmemo}-{cbuscode}`。 9. **自动审核 (`auto_check`)**: - 固定值:`1` - 描述:自动审核标志。 10. **货品明细节点 (`goods_list`)**: 包含以下子节点: - 商家编码 (`spec_no`): `{body.cinvcode}` - 入库数量 (`num`): `{body.iquantity}` - 货位编号 (`position_no`) - 价格 (`price`) - 批次 (`batch_no`) - 备注 (`remark`) 11. **其他属性**: - 出库单号 (`prop1`): `{cbuscode}` - 部门 (`prop2`): `{cdepname}` - 出库类别 (`prop3`): 根据 `{crdcode}` 的不同取值进行条件判断和映射。 - 出库日期 (`prop4`): `{ddate}` #### 实现步骤 1. **提取源数据**: 从源平台提取所需的数据字段,例如订单编号、仓库编号、联系人信息等。 2. **数据清洗与转换**: 根据上述映射关系,将提取的数据进行清洗和格式转换。例如,将订单编号映射为接口外部单号,将联系人姓名和手机号分别映射到对应的API字段中。 3. **构建请求体**: 根据目标API的要求,构建JSON格式的请求体。示例如下: ```json { "api_outer_no": "{ccode}", "warehouse_no": "{cwhcode}", "order_type": "1", "logistics_fee": "0", "other_fee": "", "province": "{province}", "city": "{city}", "district": "{district}", "address": "{address}", "contact": "{chandler}", "mobile": "{mobile}", "remark": "{cmemo}-{cbuscode}", "auto_check": "1", "goods_list": [ { "spec_no": "{body.cinvcode}", "num": "{body.iquantity}" // ...其他子节点 } ], "prop1": "{cbuscode}", "prop2": "{cdepname}", "prop3": "_function case when '{crdcode}'='206' then '组装出库' ... else '' end", "prop4": "{ddate}" } ``` 4. **发送请求并处理响应**: 使用HTTP POST方法将构建好的请求体发送到目标API接口,并处理返回结果。如果成功,则记录日志;如果失败,则记录错误信息并进行必要的重试或告警处理。 通过以上步骤,我们可以实现将源平台的数据经过ETL转换后,无缝对接到旺店通·企业奇门API接口,从而实现高效的数据集成和业务流程自动化。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T27.png~tplv-syqr462i7n-qeasy.image)