轻易云平台ETL转换与写入案例:U8到旺店通

  • 轻易云集成顾问-彭萍
### 用友U8数据集成到旺店通·企业奇门案例分享 在本技术案例中,我们将详细解析如何通过轻易云平台实现用友U8系统与旺店通·企业奇门的数据对接,具体操作实例为:将用友U8销售出库单集成到旺店通的其他出库单。该方案命名为“A 销售管理-线下 U8销售出库单 => 旺店通其他出库单”,以下是实施这一解决方案的关键步骤和技术细节。 首先,为了确保数据的完整性和准确性,需通过定时可靠的抓取机制从用友U8接口(/apilink/u8api)获取所需数据。由于API调用可能涉及分页和限流的问题,需要进行优化处理,以保障大规模数据能够高效、无遗漏地传输。此外,实现实时监控与日志记录,有助于及时发现并解决潜在问题,从而提升整体流程可靠性。 接下来,将抓取的数据快速写入到旺店通·企业奇门系统,对应使用其API接口(wdt.vip.wms.stockinout.order.push)。此环节需要特别注意两大方面:一是处理两者间的数据格式差异,二是针对异常情况设计错误重试机制,以确保每条数据信息都安全、正确地导入目标系统。 数据映射方面,则要根据实际业务需求进行精细化定制,使得源系统中的字段能无缝转化至目标系统。这种定制化不仅包括基本的信息匹配,还有更复杂的规则转换,例如单位换算、状态码映射等。 综上所述,通过详尽且严谨的方法论及工具应用,我们成功实现了从用友U8销售出库单到旺店通其他出库单的高效、安全集成。在后续部分,我们将进一步深入探讨具体实施步骤及相关代码示例。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image) ### 调用用友U8接口获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用用友U8接口`/apilink/u8api`,获取销售出库单数据并进行初步加工,以便后续的数据转换与写入。 #### 接口调用配置 首先,我们需要配置API请求参数。根据元数据配置,我们的请求体主要包含以下几个部分: 1. **时间过滤条件**: - 开始时间:字段名为`dnmaketime`,比较符号为`>=`,值为上次同步时间(`{{LAST_SYNC_TIME|datetime}}`)。 - 结束时间:字段名为`dnmaketime`,比较符号为`<=`,值为当前时间(`{{CURRENT_TIME|datetime}}`)。 2. **分页参数**: - 分页大小:字段名为`pagesize`,值为100。 - 页码:字段名为`pageindex`,值为1。 3. **仓库过滤条件**: - 仓库编码:字段名为`cwhcode`,比较符号为in,值为特定仓库编码(如10,12,32)。 4. **排除制单人**: - 制单人字段:字段名为`cmaker`,比较符号为!=,值为"ASUSER"。 #### 请求示例 以下是一个完整的POST请求示例: ```json { "data": { "过滤条件_1": { "名称": "dnmaketime", "比较符号": ">=", "值": "{{LAST_SYNC_TIME|datetime}}" }, "过滤条件_2": { "名称": "dnmaketime", "比较符号": "<=", "值": "{{CURRENT_TIME|datetime}}" }, "apicontext": { "pagesize": 100, "pageindex": 1 }, "过滤条件_3": { "名称": "cwhcode", "比较符号": "in", "值": "10,12,32" }, "过滤条件_4": { "名称": "cmaker", "比较符号": "!=", "值": "ASUSER" } } } ``` #### 数据处理逻辑 在获取到数据后,需要进行初步的数据清洗和加工。根据元数据配置中的条件,我们需要确保以下几点: 1. **数量大于0**: - 字段名为 `body.iquantity`, 逻辑运算符是 `gt`, 值是 `0`. 2. **业务代码不包含特定字符**: - 字段名是 `cbuscode`, 逻辑运算符是 `notlike`, 值是 `CK`. 这些条件可以通过编写相应的脚本或使用轻易云平台提供的可视化工具来实现。 #### 数据清洗示例 假设我们已经获取到了原始数据列表,可以使用以下伪代码进行初步清洗: ```python def clean_data(data_list): cleaned_data = [] for data in data_list: if data['body']['iquantity'] > 0 and 'CK' not in data['cbuscode']: cleaned_data.append(data) return cleaned_data ``` #### 接口调用与数据处理流程 1. **调用ID列表接口**: - 使用 `/apilink/u8api/saleout/list` 获取符合条件的销售出库单ID列表。 2. **逐个获取详情**: - 对于每个ID,通过 `/apilink/u8api/saleout/get` 获取详细信息。 3. **数据清洗与加工**: - 根据上述清洗逻辑,对获取到的数据进行处理。 4. **存储或传输至下游系统**: - 将清洗后的数据传输至目标系统,如旺店通其他出库单模块。 通过以上步骤,可以高效地从用友U8系统中提取并处理销售出库单数据,为后续的数据转换和写入打下坚实基础。这种方法不仅提高了数据处理的效率,也确保了数据的一致性和准确性。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与写入旺店通·企业奇门API接口技术案例 在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将源平台U8销售出库单的数据进行ETL转换,并写入目标平台——旺店通·企业奇门API接口。 #### 数据请求与清洗 在数据集成生命周期的第一步,我们已经完成了从源平台U8提取销售出库单数据并进行初步清洗。接下来,我们将重点关注如何将这些清洗后的数据转换为旺店通·企业奇门API所能接受的格式,并最终写入目标平台。 #### 数据转换与写入 为了实现这一目标,我们需要配置元数据,使得源平台的数据能够正确映射到目标平台的API字段中。以下是具体的元数据配置及其应用: ```json { "api": "wdt.vip.wms.stockinout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "contact", "label": "联系人", "type": "string", "value": "{ccusname}" }, { "field": "api_outer_no", "label": "接口外部单号", "type": "string", "value": "{ccode}" }, { "field": "warehouse_no", "label": "仓库编号", "type": "string", "describe": "代表仓库所有属性的唯一编码,用于仓库区分,ERP内支持自定义(ERP仓库界面设置)", "value": "{cwhcode}", "mapping": { "target": "640163621499f14120278f6f", "direction": "positive" } }, { "field": "order_type", "label": "出入类型", "type": "string", "value": 1 }, { "field": "remark", "label": "备注", ... ``` #### 元数据字段解析 1. **联系人 (contact)**: - **字段**: `contact` - **类型**: `string` - **值**: `{ccusname}` - **描述**: 映射U8系统中的客户名称字段`ccusname`到目标API的联系人字段。 2. **接口外部单号 (api_outer_no)**: - **字段**: `api_outer_no` - **类型**: `string` - **值**: `{ccode}` - **描述**: 将U8系统中的单据编码`ccode`映射到目标API的外部单号字段。 3. **仓库编号 (warehouse_no)**: - **字段**: `warehouse_no` - **类型**: `string` - **值**: `{cwhcode}` - **描述**: 映射U8系统中的仓库编码`cwhcode`到目标API的仓库编号字段,并通过映射配置确保方向正确。 4. **出入类型 (order_type)**: - **字段**: `order_type` - **类型**: `string` - **值**: `1` - **描述**: 固定值1表示出库操作。 5. **备注 (remark)**: - **字段**: `remark` - **类型**: `string` - **值**: `{cmemo},发货单{cbdlcode},出库单{ccode}` - **描述**: 将多个U8系统中的备注信息拼接后映射到目标API的备注字段。 6. **货品列表节点 (goods_list)**: - 包含多个子节点,每个子节点对应一个货品属性。 - 商家编码 (`spec_no`): 映射为`{{body.cinvcode}}` - 出库数量 (`num`): 映射为`{{body.iquantity}}` 7. 其他字段如来源单号、部门客户、出库类别、出库日期等也都根据相应规则进行映射。 #### 实际应用案例 假设我们有一条从U8系统提取的数据如下: ```json { ... ccusname: '张三', ccode: 'SO123456', cwhcode: 'WH001', cmemo: '紧急订单', cbdlcode: 'DL7890', body:[ {cinvcode:'INV001', iquantity:'10'}, {cinvcode:'INV002', iquantity:'5'} ], iordercode:'ORD123456', crdname:'普通出库', ddate:'2023-10-01' } ``` 通过上述元数据配置,该条记录将被转换为如下格式并发送至旺店通·企业奇门API: ```json { contact: '张三', api_outer_no: 'SO123456', warehouse_no: 'WH001', order_type: '1', remark: '紧急订单,发货单DL7890,出库单SO123456', goods_list:[ {spec_no:'INV001', num:'10'}, {spec_no:'INV002', num:'5'} ], prop1:'ORD123456', prop2:'张三', prop3:'普通出库', prop4:'2023-10-01' } ``` 通过这种方式,我们实现了从源平台到目标平台的数据无缝对接和转换,确保了数据的一致性和完整性。这不仅提高了业务流程的自动化程度,还极大地提升了工作效率。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)