使用轻易云平台实现金蝶云星空数据转换与写入

  • 轻易云集成顾问-吕修远
### 寄售调拨出库对接销售订单的集成方案 在当前高度依赖数据的商业环境中,如何高效、准确地进行系统对接是每个企业面临的重要课题。针对吉客云与金蝶云星空之间的数据对接,我们通过具体案例“寄售调拨出库对接销售订单-已测试”,深入探讨了从获取数据到最终写入的完整解决方案。 吉客云作为源系统,通过其API接口`erp.storage.goodsdocout.v2`实时提取寄售调拨出库数据。我们利用轻易云平台强大的数据处理能力,对这些数据进行清洗和转换,以适应目标系统金蝶云星空的需求。在此过程中,涉及到分页和限流的问题,这是确保大规模并发请求下接口稳定性的关键。 为了实现高效的数据传输,我们使用了批量写入的方法,将处理好的数据通过金蝶云星空提供的`batchSave` API接口快速导入。从性能角度来看,这种方式显著提升了吞吐量,极大缩短了整体集成时间。 此外,为保证各环节不出现漏单情况,我们部署了一套实时监控与日志记录体系,随时跟踪和分析任务状态及执行结果。一旦发现异常,可以及时告警,并根据设置自动触发重试机制,从而提高整个流程的可靠性。 本文将详细介绍从API调用、数据格式转换,到异常处理等技术要点,为类似场景下的数据集成提供脉络清晰的方法论指导。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.storage.goodsdocout.v2获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过配置元数据,调用吉客云接口`erp.storage.goodsdocout.v2`获取并加工数据。 #### 元数据配置解析 元数据配置是整个数据集成过程的基础,它定义了如何请求和处理数据。以下是对提供的元数据配置的详细解析: ```json { "api": "erp.storage.goodsdocout.v2", "effect": "QUERY", "method": "POST", "number": "goodsdocNo", "id": "goodsdocNo", "idCheck": true, "request": [ {"field": "pageIndex", "label": "分页页码", "type": "string"}, {"field": "pageSize", "label": "分页页数", "type": "string", "value": "50"}, {"field": "goodsDocNo", "label": "出库单号", "type": "string"}, {"field": "startDate", "label": "创建时间的起始时间", "type": "string", "value":"{{LAST_SYNC_TIME|datetime}}" }, {"field": "endDate", "label":"创建时间的结束时间", "type":"string", "value":"{{CURRENT_TIME|datetime}}" }, {"field":"inouttype","label":"类型","type":"string","describe":"201-销售出库 202调拨出库 203 = 盘亏出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲出库 212 包材出库 215维修还厂 231成本调整出库","value":"202"}, {"field":"sourceBillNo","label":"来源单号","type":"string"}, {"field":"warehouseCode","label":"仓库编号","type":"string"}, {"field":"vendCode","label":"供应商编号(往来单位)","type":"string"}, {"field":"billNo","label":"上游单据号(关联单号)","type":"string"}, {"field":"userName","label":"创建人名称","type":"string"}, {"field":"outBillNo","label":"外部单号(全模糊匹配)","type":"string"}, {"field":"gmtModifiedStart","label":"主表更新时间起始","type":"string"}, {"field":"gmtModifiedEnd","label":"主表更新时间截至","type":"string"}, {"field":"selelctFields", "label":"返回参数", "type":"string", "value": ["goodsdocNo,inOutDate,gmtCreate,sourceBillNo,inouttype,vendCustomerCode,warehouseCode,warehouseName,inOutReason,redStatus,financeBillStatus,goodsDocDetailList.goodsNo,goodsDocDetailList.goodsName,goodsDocDetailList.quantity,goodsDocDetailList"] } ], ... } ``` #### 请求参数详解 1. **分页参数**: - `pageIndex`:分页页码,用于控制请求结果的页数。 - `pageSize`:分页页数,默认值为50,表示每次请求返回50条记录。 2. **时间参数**: - `startDate` 和 `endDate`:用于限定查询范围内的数据创建时间。`startDate`使用上次同步时间,`endDate`使用当前时间。 3. **业务参数**: - `inouttype`:固定值为202,表示调拨出库。 - `goodsDocNo`, `sourceBillNo`, `warehouseCode`, `vendCode`, `billNo`, `userName`, `outBillNo`, `gmtModifiedStart`, `gmtModifiedEnd`等字段用于进一步筛选和过滤数据。 4. **返回参数**: - `selelctFields`:指定需要返回的字段列表,包括主表和明细表字段。 #### 数据请求与清洗 在调用接口后,平台会根据配置自动填充响应,并进行必要的数据清洗。以下是关键步骤: 1. **自动填充响应**: 配置中的`autoFillResponse: true`确保了平台会自动将API响应的数据填充到目标表中,无需手动处理。 2. **数据平铺**: 配置中的`beatFlat: ["goodsDocDetailList"]`指示平台将嵌套的明细表字段平铺展开,以便后续处理。 3. **条件过滤**: 配置中的条件过滤确保仅保留符合业务需求的数据。例如,条件 `[{"field": “goodsDocDetailList.quantity”, “logic”: “gt”, “value”: “0”}]` 确保只保留数量大于0的记录。 #### 异常处理与补救措施 为了应对可能出现的数据遗漏或异常情况,配置中还包含了异常处理和补救措施: - **定时任务**: 使用crontab表达式 `"9 2 * * *"` 定义每天凌晨2点9分执行一次补救任务。 - **接管请求**: 在异常情况下,通过接管请求重新拉取过去三天的数据,以确保数据完整性。 ```json "omissionRemedy":{ ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。 #### 1. API接口配置 在本案例中,我们使用金蝶云星空的`batchSave` API接口。该接口通过POST方法提交请求,主要参数包括单据编号(FBillNo)、销售组织(FSaleOrgId)、日期(FDate)、客户(FCustId)等。以下是元数据配置中的关键部分: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "number": "FBillNo", "id": "FBillNo", "name": "FBillNo", "idCheck": true, ... } ``` #### 2. 数据字段映射与转换 在数据转换过程中,需要将源平台的数据字段映射到目标平台的相应字段,并进行必要的格式转换。例如,销售组织、客户、调出仓库等字段需要通过`ConvertObjectParser`进行编号转换: ```json { "field": "FSaleOrgId", "label": "销售组织", "type": "string", "describe": "销售组织", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, ... } ``` 同样地,日期字段需要直接从源数据中提取并传递给目标平台: ```json { "field": "FDate", "label": "日期", "type": "datetime", ... } ``` #### 3. 子表单明细处理 对于订单明细(FSaleOrderEntry),我们需要处理多个子字段,如物料编码、销售数量、库存组织和仓库。这些子字段同样需要进行相应的转换和映射: ```json { "field": "FSaleOrderEntry", ... "children": [ { ... { "field": "FMaterialId", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)