基于轻易云平台的金蝶云星空API数据转换实例解析

  • 轻易云集成顾问-孙传友
### 旺店通·旗舰奇门退款不退货单集成至金蝶云星空技术案例 在系统对接与数据集成的过程中,处理和整合不同平台的数据是一项复杂且关键的任务。本文将分享如何通过轻易云数据集成平台,实现旺店通·旗舰奇门的数据无缝对接到金蝶云星空,为企业构建高效、透明的数据流动体系。 在此次案例中,我们主要关注的是实现“09 旺店通退换货单To金蝶云(退款不退货)”这一方案,通过调用`wdt.aftersales.refund.refund.search`接口获取旺店通中的退换货单数据,然后使用金蝶云星空的`batchSave`接口进行批量写入。在这个过程中,我们不仅需要确保数据完整性,还要快速、高效地处理大量数据,同时应对分页和限流等问题。 **1. 确保退款不退货单据全覆盖** 为了避免遗漏任何订单,首先我们需要定时可靠地抓取旺店通·旗舰奇门的API接口(`wdt.aftersales.refund.refund.search`)提供的数据。这要求我们精确配置任务调度,并实施容错机制,以保证每个周期都能成功获取并处理所有待办工单。此外,通过轻易云可视化界面,我们可以实时监控整个抓取过程,随时检查日志记录并进行必要调整。 **2. 快速批量写入到金蝶云星空** 获取到退款不退货单据后,将其快速、安全地写入到金蝶云星空是下一步关键。在此我们使用了`batchSave`接口来实现批量操作,这种方法不仅提高了速度,也减少了API调用次数,从而降低网络延迟和资源消耗。同时,需要特别注意两端系统之间的数据映射差异,根据实际需求进行字段转换,以确保目标系统能够正确理解和存储这些数据。 **3. 解决分页与限流问题** 在处理大规模交易记录时,一个常见挑战是源系统API所设置的分页及限流限制。为了解决这个问题,我们设计了一套自动化策略,对每次请求返回结果中的分页信息进行分析,并根据设定的范围分段发起多次请求,从而收集全部所需信息。此外,对于频繁触发限流保护机制的情况,我们加入了智能重试逻辑,在一定时间间隔后重新发起请求,直至完成所有任务。 通过上述技术手段,不仅确保了从旺店通·旗舰奇门到金蝶云星空的大规模数据信息无损迁移,同时也实现了高效稳定的数据传输。这一系列步骤展示了如何利用先进的平台功能,有条不紊地克 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 使用旺店通·旗舰奇门接口获取并加工数据的技术案例 在数据集成过程中,调用源系统接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.aftersales.refund.refund.search`,并对获取的数据进行初步加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是该接口的元数据配置: ```json { "api": "wdt.aftersales.refund.refund.search", "effect": "QUERY", "method": "POST", "number": "refund_no", "id": "refund_id", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "50", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": "string", "value": "1", "parent": "pager" } ] }, { "field": "params", "label": "业务参数", "type": "object", "children": [ { "field": "modified_from", "label": "修改开始时间", "type": "string", "value":"{{LAST_SYNC_TIME|datetime}}", ... }, ... ] } ], ... } ``` #### 请求参数解析 在请求参数中,分页参数和业务参数是两个主要部分: - **分页参数**:用于控制每次请求的数据量和页码。 - `page_size`:每页返回的数据条数,这里设为50。 - `page_no`:当前请求的页码,从1开始。 - **业务参数**:用于过滤和查询特定条件下的数据。 - `modified_from` 和 `modified_to`:分别表示修改开始时间和结束时间,用于筛选一定时间范围内的数据。 - `shop_nos`:店铺编号,可以多个编号用英文逗号分隔。 - `refund_no`:退换单号,用于精确查询特定退换单。 - `type`:退换单类型,用于区分不同类型的退换单。 #### 条件过滤 为了确保获取到符合业务需求的数据,我们需要设置条件过滤: ```json "condition":[ [ {"field":"status","logic":"gt","value":"20"}, {"field":"type","logic":"eqv2","value":"4"} ], [ {"field":"type","logic":"eqv2","value":"2"}, {"field":"status","logic":"gt","value":"20"}, {"field":"reason_name","logic":"eqv2","value":"仓库发错"} ], [ {"field":"type","logic":"eqv2","value":"2"}, {"field":"status","logic":"gt","value":"20"}, {"field":"reason_name","logic":"eqv2","value":"客户退错"} ] ] ``` 这些条件确保了我们只获取到状态大于20且符合特定类型和原因的退换货单。 #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗与转换,以便后续处理和写入目标系统。以下是一个简单的示例: 1. **字段映射**: 将源系统中的字段映射到目标系统中对应的字段。例如,将`refund_no`映射为目标系统中的订单编号,将`modified_time`映射为更新时间等。 2. **数据格式转换**: 根据目标系统的要求,对日期、金额等字段进行格式转换。例如,将日期格式从YYYY-MM-DD HH:MM:SS转换为YYYY/MM/DD。 3. **数据校验**: 对获取的数据进行校验,确保所有必填字段都有值,并且值符合预期范围。例如,校验退款金额是否大于零,订单编号是否符合特定规则等。 #### 实践案例 假设我们需要将符合条件的退换货单数据从旺店通导入到金蝶云,我们可以按照以下步骤进行操作: 1. **调用接口**: 使用上述配置,通过轻易云平台调用旺店通·旗舰奇门接口,获取符合条件的退换货单数据。 2. **数据清洗与转换**: 对获取的数据进行清洗与转换,确保其符合金蝶云的要求。 3. **写入目标系统**: 将清洗后的数据通过轻易云平台写入金蝶云,实现数据的无缝对接。 通过以上步骤,我们可以高效地实现从旺店通到金蝶云的数据集成,为企业提供可靠的数据支持。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据ETL转换 在数据集成的生命周期中,将源平台的数据转换为目标平台可接受的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台将旺店通退换货单的数据通过ETL转换,最终写入金蝶云星空API接口。 #### 数据请求与清洗 在数据请求与清洗阶段,我们从源平台(旺店通)获取退换货单数据,并进行初步的清洗和预处理。这一步确保了数据的完整性和准确性,为后续的ETL转换打下基础。 #### 数据转换与写入 接下来,我们进入数据转换与写入阶段。此阶段的目标是将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并通过API接口将数据写入金蝶云系统。 ##### 元数据配置解析 以下是我们使用的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","value":"{refund_no}"}, {"field":"FDate","label":"日期","type":"datetime","value":"{{modified| datetime}}"}, {"field":"Fguarantee_refund_amount","label":"平台退款金额","type":"float","value":"{guarantee_refund_amount}"}, {"field":"FSalOrgId","label":"销售组织","type":"string","value":"_findCollection find zip from ec445d8c-9d91-3845-9175-79fb0588e1b3 where shop_no={shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"Factual_refund_amount","label":"实退金额","type":"float","value":"{actual_refund_amount}"}, {"field":"Frefunddes","label":"退货原因","type":"string","value":"{refund_reason}"}, {"field":"FEntity","label":"表体明细","type":"array","value":"detail_list", "children":[ {"field":"FMATERIALID","label":"物料编码","type":"string", "value": "{{detail_list.spec_no}}", "parser":{"name": "ConvertObjectParser", "params": "FNumber"}}, {"field": "FRefundQty", "label": "退货数量", "type": "int", "value": "{{detail_list.refund_num}}"}, {"field": "FPrice", "label": "原价", "type": "float"}, {"field": "Ftid", "label": "原始单号", "type": "string", "value": "{{detail_list.tid}}"}, {"field": "Frefund_amount", "label": "实退金额", "type": ":float",  "value" : "{{detail_list.refund_amount}}"}, {"field" : "Foid" , "label" : "子原始单号" , "type" : "string" , "value" : "{{detail_list.oid}}"}, {"field" : "FENote" , "label" : "明细备注" , "type" : "string" , "value" : "{{detail_list.remark}}"}, {"field" : "Fplatform_id" , "label" : “平台id” , “type” : “string” , “value” : “{{detail_list.platform_id}}”}, {"field” : “FETHIRDBILLNO”, “label” : “第三方订单”, “type” : “string”, “value”: “{{detail_list.trade_no}}”} ]}, {"field”: ”fcustid”, ”label”: ”客户代码”, ”type”: ”string”, ”value”: ”_function case ‘{shop_no}’ when ‘eca8a82’ then ‘’ else ‘{shop_no}’ end”, ”parser”: {”name”: ”ConvertObjectParser”, ”params”: ”FNumber”}}, {“field”: ”FReqNote”, ”label”: ”备注”, ”type”: ”string”, ”value”: ”{remark}”}, {“field”: ”Ffenxiao_nick_name”, ”label”: ”分销商妮称”, ”type”: ”string”, ”value”: ”{fenxiao_nick_name}”}, {“field”: ”Ftype”, ”label”: “退换类型”, “type”: “string”, “value”: “{type}”}, {“field”: “Fstatus”, “label”:”退换单状态”,” type”:” string”, value:"{status}" }, {“ field”:”“ Ffrom_type”,“ label”:”“ 单据来源”,“ type”:”“ string”,“ value”:”“ {from_type} }, {“ field”:”“ Freturn_logistics_no”,“ label”:”“ 退运物流单号”,“ type”:”“ string”,“ value”:”“ {return_warehouse_no } } ], otherRequest:[ {“ field”:”“ FormId”,“ label”:”“ 单据标识”,“ type”:”“ string”, describe:”“ 必须填写金蝶的表单ID如:PUR_PurchaseOrder”,“ value”:KD_wdtrefundbill }, {“ field”:”“ Operation”,“ label”:”“ 操作类型”,“ type”:”“ string”, describe:111, value:Save }, {“ field”:IsAutoSubmitAndAudit,“ label”:提交并审核,“ type”:bool, describe:111, value:true }, {“ field”:IsVerifyBaseDataField,“ label”:验证基础资料,“ type”:bool, describe:是否验证所有的基础资料有效性,布尔类,默认false(非必录), value:false } ] } ``` ##### 数据字段解析 1. **FBillNo(单据编号)**: 从源数据中的`refund_no`字段提取。 2. **FDate(日期)**: 使用模板语言`{{modified| datetime}}`进行时间格式转换。 3. **FSalOrgId(销售组织)**: 利用`_findCollection`函数从特定集合中查找并解析`shop_no`。 4. **其他字段**: 类似地,根据元数据配置中的映射规则,将源数据字段转换为目标字段。 ##### 表体明细处理 对于表体明细部分,我们使用了嵌套结构: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)