利用轻易云实现高效的数据转换和批量写入金蝶云星空

  • 轻易云集成顾问-冯潇
### 管易云数据集成到金蝶云星空:销售退货单案例分享 在系统集成的实际应用中,如何确保数据从一个平台无缝地传输到另一个平台,是我们需要解决的重要问题之一。本文将重点介绍管易云的数据通过轻易云数据集成平台对接至金蝶云星空,并以`gk_销售退货单`作为具体案例进行技术解析。 对于此次项目,我们主要采用了管易云接口`gy.erp.trade.return.get`来获取相关的销售退货数据,并借助金蝶云星空的API `batchSave`实现大量快速写入。由于涉及到批量处理和大规模的数据流动,关键点之一是如何确保在高效运行同时避免漏单现象。 首先,我们需要准确调用管易云的接口并处理分页及限流问题,保证每一次API调用都能捕获完整而有效的数据。从而通过定时任务,可靠地抓取管易云中的销售退货记录,实现自动化和稳定性。在这个过程中,通过实时监控与日志记录功能,可以追踪每一次操作并及时发现可能的问题,提高整体透明度。 其次,当把数据从管易云提取出来后,需要处理两种系统之间的数据格式差异。这包括字段映射、值转换等环节,使得原始数据能够被金蝶云星空顺利识别和接收。针对不同类型的数据,对应正确的字典或编码是成功对接的一部分。 最后,为了防止在传输过程中出现异常情况影响业务运营,我们设计了一套完善的错误重试机制。一旦检测到某次写入失败,将会触发自动重试策略,以保障最终所有必要信息都能被正确传递到目标系统。此外,对于个性化需求,还可以利用金蝶云星空提供的定制化映射功能做进一步适配优化。 以上只是这项复杂工程中的一小部分细节,在后续内容中,我们将深入探讨具体实施方案及代码实现步骤。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D4.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云接口gy.erp.trade.return.get获取并加工数据 在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将深入探讨如何通过调用管易云的`gy.erp.trade.return.get`接口来获取销售退货单数据,并进行必要的数据加工。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用`gy.erp.trade.return.get`接口。以下是元数据配置的详细说明: ```json { "api": "gy.erp.trade.return.get", "method": "POST", "number": "code", "id": "code", "pagination": { "pageSize": 100 }, "idCheck": true, "request": [ {"field":"code","label":"单据编号","type":"string"}, {"field":"start_create","label":"创建时间开始段","type":"datetime"}, {"field":"end_create","label":"创建时间结束段","type":"datetime"}, {"field":"in_begin_time","label":"入库时间开始段","type":"datetime","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"in_end_time","label":"入库时间结束段","type":"datetime","value":"{{CURRENT_TIME|datetime}}"}, {"field":"shop_code","label":"店铺代码","type":"string"}, {"field":"drp_tenant_name","label":"分销商名称","type":"string"}, {"field":"platform_code","label":"平台单号","type":"string"}, {"field":"return_type","label":"退货类型代码","type":"string"}, {"field":"express_no","label":"快递单号","type":"string"}, {"field":"vip_name","label":"会员名称","type":"string"}, {"field":"agree","label":"同意状态","type":"string"}, {"field":"receive","label":"入库状态","type":"string", "value": "1"}, {"field":"cancel","label":"作废状态","type": "string"}, {"field": "no_parcel", "label": "是否三无包裹", "type": "string"}, {"field": "receiver_name", "label": "退货人姓名", "type": "string"}, {"field": "receiver_phone", "label": "退货人手机", "type": "string"}, {"field": "warehousein_code", "label": "退入仓库代码", "type": "string"}, {"field": "warehouseout_code", "label":"退出仓库代码", ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S1.png~tplv-syqr462i7n-qeasy.image) ### 利用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成的生命周期中,将源平台的数据进行ETL转换,并最终写入目标平台是关键的一步。本文将详细探讨如何通过轻易云数据集成平台,将销售退货单数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。 #### API接口配置与元数据解析 首先,我们需要理解金蝶云星空API接口的配置和元数据要求。以下是一个典型的元数据配置示例,用于批量保存销售退货单: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSTHD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"{code}"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FDate","label":"日期","type":"string","value":"{{receive_date|date}}"}, {"field":"FStockOrgId","label":"库存组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FRetcustId","label":"退货客户","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shop_name}"}, {"field":"FStockDeptId","label":"库存部门","type":"string","value":"{shop_name}","parser":{"name":"ConvertObjectParser","params":"FNumber"}} ], "otherRequest":[ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "SAL_RETURNSTOCK"}, {"field": "Operation", "label": "执行的操作", "type": "string", "value": "Save"}, {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": true}, {"field": "IsVerifyBaseDataField", "label": "验证基础资料", "type": bool, value: false} ] } ``` #### 数据请求与清洗 在进行ETL转换之前,首先要确保源数据已经被正确请求和清洗。假设我们从一个电商平台获取了销售退货单的数据,这些数据通常包含订单编号、日期、客户信息、商品明细等。 #### 数据转换 利用轻易云提供的可视化界面,我们可以轻松地将这些源数据映射到金蝶云星空所需的格式。以下是一些关键字段的转换规则: - **FBillTypeID(单据类型)**:固定值`XSTHD01_SYS`,通过`ConvertObjectParser`解析。 - **FBillNo(单据编号)**:直接映射为源数据中的订单编号`{code}`。 - **FSaleOrgId(销售组织)**:固定值`100`,通过`ConvertObjectParser`解析。 - **FDate(日期)**:使用模板语言将接收日期格式化为目标系统可接受的格式`{{receive_date|date}}`。 - **FRetcustId(退货客户)**:映射为源数据中的客户名称,通过`ConvertObjectParser`解析。 对于明细信息(FEntity),我们需要逐条处理每个商品项: - **FMaterialId(物料编码)**:映射为商品SKU编码,通过`ConvertObjectParser`解析。 - **FRealQty(实退数量)**:直接映射为实际退货数量。 - **FPrice(单价)**和**FTaxPrice(含税单价)**:通过自定义函数计算得到。 例如: ```json { field: 'FPrice', label: '单价', type: 'string', value: '_function {{details.amount_after}}/{{details.real_in}}' } ``` #### 数据写入 完成所有字段的映射和转换后,通过配置好的API接口,将处理后的数据批量写入金蝶云星空系统。使用POST方法调用`batchSave`接口,并传递已格式化好的JSON对象。 #### 实践案例 假设我们有如下源数据: ```json { code: 'THD20231001', receive_date: '2023-10-01', shop_name: '客户A', details: [ { sku_code: 'P001', real_in: '10', amount_after: '100.00' } ], note: '退货备注' } ``` 经过上述步骤处理后,生成的目标系统可接受的数据格式如下: ```json { FBillTypeID: { FNumber: 'XSTHD01_SYS' }, FBillNo: 'THD20231001', FSaleOrgId: { FNumber: '100' }, FDate: '2023-10-01', FStockOrgId: { FNumber: '100' }, FRetcustId: { FNumber: '客户A' }, FStockDeptId: { FNumber: '客户A' }, F_QKIQ_Remarks:'退货备注', FEntity:[ { FRowType:'Standard', FMaterialId:{FNumber:'P001'}, FRealQty:'10', FPrice:'10.00', FTaxPrice:'10.00' } ] } ``` 通过调用API接口,该数据将被成功写入金蝶云星空系统,实现了无缝对接。 以上过程展示了如何利用轻易云数据集成平台,将源平台的数据进行ETL转换,并最终写入目标平台金蝶云星空。这一过程不仅简化了复杂的数据处理工作,还大大提高了业务效率和透明度。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)