使用轻易云平台实现金蝶云星空API接口的ETL转换

  • 轻易云集成顾问-叶威宏
### 销售单对接(8:售后退货-退货)——吉客云·奇门数据集成到金蝶云星空 在本案例中,我们将详细探讨如何通过轻易云数据集成平台,实现吉客云·奇门的数据无缝对接至金蝶云星空,重点聚焦于销售单的对接过程。具体操作集中在获取吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`返回的数据,并批量写入至金蝶云星空的API `batchSave`。 为了确保集成过程中不漏单,我们采用了定制化的查询和处理机制。在调用`jackyun.tradenotsensitiveinfos.list.get`接口时,通过分页抓取吉客云中的大量交易数据并实时监控日志记录。这样不仅能有效应对限流问题,还能保障每次请求都成功获取预期的数据。 实现大规模数据快速写入到金蝶云星空,是此次系统集成的重要一环。我们利用轻易云提供的高效批量处理能力,将从吉客云获取的大量销售单信息,以最优化的格式转换并传输到金蝶的平台。针对两端系统间可能存在的数据格式差异,设计了专门的数据映射层,对字段进行灵活映射与转换,从而确保兼容性及准确性。 此外,在实际项目操作中,异常处理与错误重试机制是极为关键的一部分。当发生网络抖动或服务响应异常时,该机制会自动记录错误日志、触发报警,并依据设定好的策略重新尝试提交未成功的数据。因此,这套方案不仅强化了连接稳定性,还提升了整体效率和可靠性。 总之,通过合理运用各项技术特性,我们顺利构建了一套完整且高效的数据集成方案,实现了业务流程自动化管理,为企业数字化升级提供坚实基础。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get获取并加工数据 在轻易云数据集成平台中,调用源系统接口并对数据进行初步加工是数据处理生命周期的第一步。本文将详细探讨如何通过吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`获取销售单数据,并进行必要的清洗和转换。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,接口请求采用POST方法,主要参数如下: - `api`: `jackyun.tradenotsensitiveinfos.list.get` - `method`: `POST` - `pagination`: 每页记录数为20 - `request`字段包含了请求所需的所有参数 例如,请求参数可以包括起始时间、结束时间、销售单号等。这些参数确保我们能够准确地过滤和分页获取所需的数据。 ```json { "api": "jackyun.tradenotsensitiveinfos.list.get", "method": "POST", "pagination": { "pageSize": 20 }, "request": [ {"field":"modified_begin","label":"起始时间","type":"string"}, {"field":"modified_end","label":"结束时间","type":"string"}, {"field":"tradeNo","label":"销售单号","type":"string"}, {"field":"pageSize","label":"每页记录数","type":"string","value":"20"}, {"field":"pageIndex","label":"页码","type":"string","value":"0"} ] } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换。元数据配置中定义了具体的字段映射和格式转换规则。例如,将`consignTime`字段重命名为`consignTime_new`并格式化为日期类型。 ```json { "formatResponse": [ {"old": "consignTime", "new": "consignTime_new", "format": "date"} ] } ``` 此外,还需要对某些字段进行补充处理。例如,通过定时任务(crontab)来自动填充缺失的发货时间区间: ```json { "omissionRemedy": { "crontab": "30 6,18,1 * * *", "takeOverRequest": [ {"field": "startConsignTime", "value": "{{DAYS_AGO_2|datetime}}"}, {"field": "endConsignTime", "value": "{{CURRENT_TIME|datetime}}"} ] } } ``` #### 数据过滤与校验 为了确保数据质量,我们还需要设置条件过滤和ID校验。例如,过滤订单状态大于等于6000且商品编号不等于A0000000120的记录: ```json { "condition": [ [{"field": "tradeStatus", "logic": "egt", "value": "6000"}], [{"field": "goodsDetail.goodsNo", "logic": "neqv2", "value": "A0000000120"}] ], "idCheck": true } ``` #### 实际案例应用 假设我们需要获取最近两天内所有状态为9090的售后退货订单,并且这些订单不包含特定商品编号。以下是一个实际请求示例: ```json { "apiName": "jackyun.tradenotsensitiveinfos.list.get", "methodType": "POST", "params": { "startConsignTime": "{{DAYS_AGO_2|datetime}}", "endConsignTime": "{{CURRENT_TIME|datetime}}", "tradeStatus": 9090, ... } } ``` 通过上述配置和请求,我们能够高效地从吉客云·奇门系统中提取所需的数据,并在轻易云平台上进行进一步处理和分析。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。 总结来说,通过合理配置元数据、设置请求参数、执行数据清洗与转换以及应用条件过滤,我们能够充分利用吉客云·奇门接口实现高效的数据集成。这一过程在轻易云平台上得到了全生命周期管理的支持,使得每个环节都透明可控。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现销售单对接金蝶云星空API接口的ETL转换 在数据集成过程中,将源平台的数据转换为目标平台可接收的格式是关键步骤。本文将详细介绍如何利用轻易云数据集成平台,将售后退货的销售单数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。 #### 配置元数据 我们需要根据提供的元数据配置来构建请求,以确保数据能够正确地传递给金蝶云星空API。以下是主要配置项及其解释: 1. **API和请求方法**: - `api`: "batchSave" - `method`: "POST" 2. **请求头部和主体字段映射**: - 请求头部字段包括:`FBillTypeID`, `FBillNo`, `FSaleOrgId`, `FDate`, `FStockOrgId`, `FRetcustId`, 等。 - 请求主体字段包括:`FEntity`,其中包含多个子字段,如`FMaterialId`, `FUnitID`, `FRealQty`, 等。 #### 数据转换逻辑 1. **单据类型**: ```json {"field":"FBillTypeID","value":"XSTHD01_SYS"} ``` 这里直接指定了单据类型为"XSTHD01_SYS"。 2. **单据编号**: ```json {"field":"FBillNo","value":"{tradeNo}"} ``` 单据编号直接映射为源数据中的`tradeNo`。 3. **销售组织**: ```json {"field":"FSaleOrgId","value":"_function case '{shopCode}' when '10002480' then '104' else '103' end"} ``` 根据`shopCode`的值,动态选择销售组织。 4. **日期**: ```json {"field":"FDate","value":"{consignTime_new}"} ``` 日期字段直接映射为源数据中的`consignTime_new`。 5. **库存组织**: ```json {"field":"FStockOrgId","value":"103"} ``` 固定值为"103"。 6. **退货客户**: ```json {"field":"FRetcustId","value":"{shopCode}"} ``` 退货客户直接映射为源数据中的`shopCode`。 7. **明细信息(FEntity)**: 明细信息包含多个子字段,每个子字段对应具体的数据项。例如: - 物料编码: ```json {"field":"FMaterialId","value":"{{details.goodsDetail_goodsNo}}"} ``` 映射为明细中的`goodsDetail_goodsNo`。 - 实退数量: ```json {"field":"FRealQty","value":"_function {{details.goodsDetail_goodsDelivery_sendCount}}*(-1)"} ``` 实退数量取自明细中的`goodsDetail_goodsDelivery_sendCount`,并取负值表示退货。 - 含税单价: ```json {"field":"FTaxPrice","value":"_function {{details.goodsDetail_goodsDelivery_batchamount}}\/{{details.goodsDetail_goodsDelivery_sendCount}}"} ``` 含税单价计算公式为:批次金额除以发送数量。 8. **财务信息(SubHeadEntity)**: 财务信息同样包含多个子字段,例如: - 结算组织: ```json {"field":"FSettleOrgId","value":"_function case '{shopCode}' when '10002480' then '104' else '103' end"} ``` 根据`shopCode`动态选择结算组织。 - 第三方单据编号和平台单号: ```json {"label":"第三方单据编号","field":"FThirdBillNo","value":"{tradeNo}"} {"label":"第三方单据平台单号","field":"FThirdBillId","value":"{sourceTradeNos}"} ``` #### 构建请求示例 基于上述配置,我们可以构建一个完整的POST请求示例: ```json { "FormId": "SAL_RETURNSTOCK", "Operation": "Save", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": true, "SubSystemId": "21", "Model": { "FBillTypeID": { "FNumber": "XSTHD01_SYS" }, "FBillNo": "{tradeNo}", "FSaleOrgId": { "FNumber": "_function case '{shopCode}' when '10002480' then '104' else '103' end" }, "FDate": "{consignTime_new}", ... "SubHeadEntity": { ... "FSettleOrgId": { "FNumber": "_function case '{shopCode}' when '10002480' then '104' else '103' end" }, ... }, ... } } ``` 通过以上配置和示例,我们实现了将售后退货销售单的数据从源平台转换并写入到金蝶云星空系统。利用轻易云数据集成平台,我们能够高效、准确地完成这一ETL过程,确保业务流程顺畅进行。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)