利用轻易云平台实现ETL和金蝶云星空集成

  • 轻易云集成顾问-何语琴
### 旺店通·企业奇门数据集成到金蝶云星空:销售订单对接方案详解 在系统集成中,不同平台之间的数据流动和一致性是关键问题。本文将详细介绍一个实际运行的案例——如何利用轻易云数据集成平台,将旺店通·企业奇门的数据无缝对接到金蝶云星空,实现自动化销售订单处理。 在这个项目中,我们设计了一个名为“销售订单对接(非一键代发)-新组织”的解决方案。该方案需要解决以下几个核心技术难题: 1. **确保集成过程中的数据不漏单** 通过调用`wdt.trade.query`接口,从旺店通·企业奇门定时获取最新的交易数据,并保障在网络波动或系统异常情况下,依然能保持高可靠性的数据抓取。 2. **处理分页和限流问题** 由于每次API调用可能会受到分页限制,以及平台的限流策略,需要特别关注如何合并多次请求结果并避免短时间内过度频繁访问引发限流。 3. **批量写入到金蝶云星空** 基于金蝶云星空提供的`batchSave`接口,高效、快速地实现大量订单数据写入,同时保证数据的一致性和完整性。在此过程中,还必须注意两者之间的数据格式差异,并进行必要的数据映射与转换。 4. **实时监控与日志记录** 为了确保整个流程可追溯且透明,我们配备了实时监控机制,能够随时查看每一步操作状态及其执行结果。同时,通过日志记录功能,可以迅速定位任何出现的问题并采取相应措施。 5. **错误重试机制与异常处理** 当出现网络故障或API报错等情况时,为了最大化稳定性和可靠性,该方案还设计了一套完善的错误重试机制,以及各种异常处理策略,以确保不会因为偶发错误导致整合流程中断或者丢失重要业务数据。 上述步骤形成了我们此次系统对接及元数据信息管理的重要基础。在后续部分,将进一步解析具体实现细节、代码示例以及性能优化技巧,以便为类似需求提供有价值的参考。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.trade.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台,调用旺店通·企业奇门接口`wdt.trade.query`来获取并加工销售订单数据。 #### 接口配置与调用 首先,我们需要理解`wdt.trade.query`接口的元数据配置。该接口主要用于查询销售订单信息,支持多种查询条件和参数设置。以下是该接口的关键配置项: - **API名称**: `wdt.trade.query` - **请求方法**: `POST` - **请求参数**: - `status`: 订单状态 - `start_time`: 开始时间 - `end_time`: 结束时间 - `src_tid`: 原始单号 - `trade_no`: 订单编号 - `shop_nos`: 店铺编号 - `warehouse_no`: 仓库编号 - `goodstax`: 使用税率 - `has_logistics_no`: 物流单号限制 - `src`: 是否返回交易流水号、付款状态、付款时间 - `logistics_no`: 物流单号 此外,还有分页相关参数: - `page_size`: 每页返回的数据条数,默认值为40。 - `page_no`: 页号,默认从0页开始。 #### 请求参数设置 在实际应用中,我们通常会根据业务需求设置具体的请求参数。例如,为了增量获取最近修改的订单数据,可以设置`start_time`和`end_time`参数: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}" } ``` 这里使用了模板变量`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`,分别代表上次同步时间和当前时间。 #### 条件过滤与数据清洗 为了确保获取的数据符合业务需求,我们可以在请求中添加条件过滤。例如,仅获取已发货且不在特定仓库中的订单,可以使用以下条件: ```json { "condition": [ {"field": "trade_status", "logic": "egt", "value": "95"}, {"field": "warehouse_no", "logic": "notlike", "value": "WH"} ] } ``` 这些条件将确保只返回状态大于等于95(已发货)的订单,并且仓库编号不包含"WH"。 #### 数据处理与转换 一旦成功调用接口并获取到原始数据,我们需要对数据进行处理和转换,以便后续写入目标系统。轻易云平台提供了自动填充响应功能(autoFillResponse),可以自动将响应数据映射到预定义的字段中,简化了数据处理过程。 例如,对于每个订单记录,可以提取并转换以下字段: - `trade_id` - `trade_no` - `status` - 等等 这些字段可以直接映射到目标系统的相应字段中,实现无缝对接。 #### 实际案例应用 假设我们需要从旺店通获取某一时间段内所有已发货且不在特定仓库中的订单,并将其写入ERP系统。具体步骤如下: 1. **配置请求参数**: ```json { "api": "wdt.trade.query", "method": "POST", "request": { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "", ... }, ... } ``` 2. **添加过滤条件**: ```json { "condition": [ {"field": "trade_status", "logic": "egt", "value": "95"}, {"field": "warehouse_no", "logic": "notlike", "value": "WH"} ] } ``` 3. **调用接口并处理响应**: ```python response = call_api(config) processed_data = process_response(response) ``` 4. **写入目标系统**: ```python write_to_erp(processed_data) ``` 通过上述步骤,我们可以高效地从旺店通获取所需的销售订单数据,并进行必要的数据清洗和转换,最终实现与ERP系统的无缝对接。这不仅提高了数据处理效率,也确保了业务流程的连续性和准确性。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/S9.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成的生命周期中,ETL(提取、转换、加载)是至关重要的一步。本文将详细介绍如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台——金蝶云星空API接口。 #### 1. 数据请求与清洗 在开始ETL转换之前,首先需要从源平台获取原始数据,并进行必要的清洗。这一步骤确保了数据的准确性和一致性,为后续的转换和加载打下基础。 #### 2. 数据转换与写入 接下来,我们进入本文的重点:将清洗后的数据按照金蝶云星空API接口所需的格式进行转换,并通过API接口写入目标平台。以下是具体步骤和技术细节: ##### 2.1 配置元数据 根据提供的元数据配置,我们可以看到需要调用金蝶云星空的`batchSave` API接口,使用POST方法提交数据。元数据配置如下: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{trade_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSDD11_SYS"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"销售组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shop_no}","mapping":{"target":"66cda0088d50f9081f21353a","direction":"positive"}}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{trade_time}"}, {"field":"FCustId","label":"客户","type":"string","describe":"客户","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shop_no}","mapping":{"target":"6530a4924293641e341cf8b7","direction":"positive"}}, {"field":"FSaleDeptId","label":"销售部门","type":"string","value":"BM003","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field": "F_RDIY_Text", "label": "原始订单", "type": "string", "value": "{src_tids}"}, {"field": "FSalerId", "label": "销售员", "type": "string", "describe": "销售员", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "YG0002_GW002_1"}, {"field": "FNote", "label": "备注", "type": "string", "describe": "备注", "value": "{remark}"}, {"field": "F_RDIY_Text2", "label": "F分销商", "type": "string", "value": "{fenxiao_nick}"} ], ... } ``` ##### 2.2 数据字段解析与映射 在配置中,每个字段都有特定的解析器和映射规则。例如: - `FBillNo`(单据编号):直接映射为源数据中的`trade_no`。 - `FSaleOrgId`(销售组织):使用`ConvertObjectParser`解析器,将源数据中的`shop_no`转化为目标系统可识别的格式,并通过映射规则关联到特定目标。 - `FCustId`(客户):同样使用`ConvertObjectParser`解析器,将源数据中的客户编号转化为目标系统格式。 ##### 2.3 嵌套对象处理 对于复杂的数据结构,如嵌套对象,需要特别处理。例如,财务信息和订单明细: ```json { ... { field: 'FSaleOrderFinance', label: '财务信息', type: 'object', describe: '财务信息', children: [ { field: 'FSettleCurrId', label: '结算币别', type: 'string', describe: '人民币:PRE001\n香港元:PRE002\n欧元:PRE003\n日本日圆:PRE004\n新台币元:PRE005\n英镑:PRE006\n美元:PRE007', parser: { name: 'ConvertObjectParser', params: 'FNumber' }, value: 'PRE001' }, { field: 'FRecConditionId', label: '收款条件', type: 'string', value: "_function CASE '{delivery_term}' WHEN '1' THEN '001' WHEN '2' THEN 'SKTJ01_SYS' WHEN '4' THEN '002' END", parser: { name: 'ConvertObjectParser', params: 'FNumber' } } ] }, { field: 'FSaleOrderEntry', label: '订单明细', type: 'array', describe: '订单明细', children: [ { field: 'FMaterialId', label: '物料编码', type: 'string', describe: '物料编码', parser:{ name:'ConvertObjectParser', params:'FNumber'}, value:'{{goods_list.spec_no}}' }, ... ] } } ``` ##### 2.4 特殊字段处理 某些字段需要特殊处理,例如布尔值或计算字段: - `FIsFree`(是否赠品):通过函数判断价格是否为0,如果是则标记为赠品。 - `FTaxPrice`(含税单价):直接从源数据中提取并映射。 ```json { ... { field:'FIsFree', label:'是否赠品', type:'string', value:"_function case {{goods_list.order_price}} when '0.0000' then 'true' else 'false' end" }, ... } ``` ##### 2.5 提交与审核 最后,通过设置操作参数实现自动提交并审核: ```json { ... { field:"IsAutoSubmitAndAudit", label:"提交并审核", type:"bool", describe:"提交并审核", value:"true" } } ``` #### 总结 通过以上步骤,我们成功地将源平台的数据进行了ETL转换,并通过轻易云数据集成平台写入到了金蝶云星空API接口。这一过程不仅确保了数据的一致性和准确性,还大大提升了业务流程的自动化程度。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)