利用轻易云平台实现吉客云到金蝶云的数据转换

  • 轻易云集成顾问-彭亮
### 吉客云数据高效集成到金蝶云星空:解决方案分享 在企业信息系统的复杂环境中,实现高效、可靠的数据对接是保证业务顺畅运行的重要一环。本文将详细介绍如何通过一个实际案例,即从吉客云(ERP系统)到金蝶云星空(Kingdee Cloud Galaxy)的数据集成,确保其他出库单的数据能够无缝、高效地在两大平台间流动。 针对具体场景中的技术挑战,我们主要探讨以下几个关键点: 1. **调用吉客云接口`erp.storage.goodsdocout.v2`**来获取其他出库单数据,并确保集成过程不漏单。这不仅需要精确调度,还要处理好分页和限流问题,使得API调用效率最大化。 2. 通过金蝶云星空的批量写入API——`batchSave`, 实现大量数据快速且稳定地写入,从而提高系统整体性能。在这个过程中,需要特别关注如何定制化映射吉客云与金蝶之间的数据字段,以满足不同数据库结构和业务逻辑需求。 3. **抓取数据的定时性与可靠性管理**, 确保所有处理能够按预定计划执行,通过实时监控以及日志记录工具,完整掌握各个流程步骤及其状态。任何异常都需要迅速响应并自动触发错误重试机制,以减少人为干预和潜在故障风险。 4. 可以使用轻易云提供的平台功能进行全程可视化操作,对整个生命周期进行持续观测,这样既能增强透明度,又能及时发现并处理可能的问题,提高项目成功率。 5. 对接过程中的细节把控同样不可忽略,包括格式差异转换、错误重试机制、异常状况下的应急策略等。例如,在面对大规模数据导入时,如果出现部分失败的情况,该如何自动生成报表并触发相应修复流程? 以上内容为后续解决方案详细阐述奠定了基础,将逐步深入解析每个关键点及其实现方法,通过实战案例帮助读者更好掌握这一复杂但极具价值的技术技能。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D10.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口获取并加工数据的技术案例 在数据集成生命周期的第一步,我们需要从源系统吉客云调用接口`erp.storage.goodsdocout.v2`,以获取其他出库单的数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台配置元数据,完成这一过程。 #### 配置元数据 首先,我们需要配置元数据,以便正确调用吉客云的API接口。以下是关键的元数据配置项: ```json { "api": "erp.storage.goodsdocout.v2", "effect": "QUERY", "method": "POST", "number": "goodsdocNo", "id": "recId", "idCheck": true, "request": [ {"field": "pageIndex", "label": "pageIndex", "type": "string", "describe": "111", "value": "{PAGINATION_START_PAGE}"}, {"field": "pageSize", "label": "pageSize", "type": "string", "describe": "111", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "inouttype", "label": "出入库类型", "type": "string", "describe":"出入库类型(201-销售出库 202调拨出库 204-其他出库 205采购退货 206生产领料 207组装拆卸出库 208翻新出库 209报废出库 210残次品出库 211倒冲领料 212 包材出库 215维修还厂 299可用库存修正 231成本调整出库)", "value":"204"}, {"field":"selelctFields","label":"selelctFields","type":"string","value":"recId,goodsdocNo,billNo,inOutDate,gmtCreate,inouttype,inouttypeName,vendCustomerCode,vendCustomerName,currencyCode,currencyRate,userName,warehouseCode,warehouseName,comment,memo,logisticName,logisticNo,companyId,companyName,logisticType,logisticCode,inOutReason,sourceBillNo,channelId,channelCode,channelName,redStatus,field1,field2,field3,field4,field5,financeBillStatus,applyCompanyId,applyCompanyName,applyCompanyCode,applyDepartId,applyDepartName,departCode,applyUserId,applyUserName,outBillNo,gmtModified,..."}, {"field":"gmtModifiedStart","label":"gmtModifiedStart","type":"string","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"gmtModifiedEnd","label":"gmtModifiedEnd","type":"string","value":"{{CURRENT_TIME|datetime}}"} ], ... } ``` #### 请求参数解析 1. **分页参数**: - `pageIndex` 和 `pageSize` 用于控制分页请求,确保我们可以逐页获取所有数据。 - `{PAGINATION_START_PAGE}` 和 `{PAGINATION_PAGE_SIZE}` 是动态参数,分别代表起始页和每页大小。 2. **业务参数**: - `inouttype` 固定为 `204`,表示我们只获取“其他出库”的单据。 - `selelctFields` 列出了我们需要从API响应中提取的字段,包括单据编号、日期、仓库信息、物流信息等。 3. **时间参数**: - `gmtModifiedStart` 和 `gmtModifiedEnd` 分别表示上次同步时间和当前时间,用于增量同步。 #### 调用API接口 使用POST方法调用API接口时,需要构建请求体。以下是一个示例请求体: ```json { "method": "erp.storage.goodsdocout.v2", ... // 动态生成的业务参数 { ... // 分页参数 { pageIndex: "{PAGINATION_START_PAGE}", pageSize: "{PAGINATION_PAGE_SIZE}" }, // 出入库类型 { inouttype: '204' }, // 时间范围 { gmtModifiedStart: "{{LAST_SYNC_TIME|datetime}}", gmtModifiedEnd: "{{CURRENT_TIME|datetime}}" } } } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。主要包括以下步骤: 1. **字段映射**:将吉客云返回的数据字段映射到目标系统所需的字段。例如,将 `goodsdocNo` 映射为目标系统中的单据编号。 2. **格式转换**:根据目标系统要求,对日期、金额等字段进行格式转换。例如,将日期格式从 `yyyy-MM-dd HH:mm:ss` 转换为 `yyyyMMddHHmmss`。 3. **数据过滤**:根据业务需求,过滤掉不需要的数据。例如,只保留状态为“已审核”的单据。 4. **异常处理**:对于缺失或异常的数据进行处理,例如记录日志或发送告警通知。 #### 实际案例分析 假设我们从吉客云获取到以下原始数据: ```json { recId: '12345', goodsdocNo: 'GD20230901', billNo: 'BILL20230901', inOutDate: '2023-09-01T10:00:00', gmtCreate: '2023-09-01T09:00:00', ... } ``` 经过清洗与转换后,我们得到如下结构的数据: ```json { document_id: '12345', document_number: 'GD20230901', bill_number: 'BILL20230901', transaction_date: '20230901100000', created_date: '20230901090000', ... } ``` 这些清洗后的数据即可用于后续写入目标系统金蝶云,实现完整的数据集成流程。 通过以上步骤,我们完成了从吉客云调用接口获取并加工其他出库单数据的全过程。这一过程不仅确保了数据的一致性和准确性,还为后续的数据处理和分析打下了坚实基础。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S24.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将吉客云其他出库单转换并写入金蝶云星空 在轻易云数据集成平台上,我们可以通过ETL(Extract, Transform, Load)过程,将吉客云的其他出库单数据转换为金蝶云星空API接口能够接收的格式,并最终写入目标平台。以下是详细的技术实现步骤和元数据配置说明。 #### 数据请求与清洗 首先,我们从吉客云获取其他出库单的数据。这一步通常涉及到调用吉客云的API接口,获取原始的JSON数据。假设我们已经成功获取到这些数据,接下来我们需要进行数据转换。 #### 数据转换与写入 在这一步中,我们使用轻易云提供的元数据配置,将吉客云的数据字段映射到金蝶云星空API所需的字段格式。以下是具体的元数据配置解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{goodsdocNo}" }, { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "QTCKD01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }, { ... } ], ... } ``` 1. **FBillNo**: 单据编号,直接映射为`{goodsdocNo}`。 2. **FBillTypeID**: 单据类型,固定值`QTCKD01_SYS`,并使用`ConvertObjectParser`进行解析。 3. **FStockOrgId**: 库存组织,固定值`100`,同样使用`ConvertObjectParser`解析。 4. **FStockDirect**: 库存方向,固定值为`GENERAL`。 5. **FDate**: 日期,映射为`{inOutDate}`。 6. **FDeptId**: 领料部门,固定值`02`,并使用`ConvertObjectParser`解析。 7. **FNote**: 备注,包括出库原因,映射为字符串模板`出库原因:{inOutReason}`。 对于明细信息部分,我们使用数组来处理: ```json { ... { "field": "FEntity", ... "children": [ { ... { ... { ... { ... { ... { ... } } } } } } ] } } ``` - **FMaterialId**: 物料编码,映射为子字段中的`{{goodsDocDetailList.goodsNo}}`, 并使用`ConvertObjectParser`解析。 - **FQty**: 数量,对应子字段中的数量 `{{goodsDocDetailList.quantity}}`. - **FStockId**: 仓库,对应子字段中的仓库代码 `{{goodsDocDetailList.warehouseCode}}`, 并使用 `ConvertObjectParser`. - **FLot**: 批次号,通过函数 `_function IF('{{goodsDocDetailList.batchNo}}'<>'DEFAULT','{{goodsDocDetailList.batchNo}}',NULL)` 来处理批次号是否为默认值。 #### 配置其他请求参数 除了上述主要字段外,还需要配置一些其他请求参数以确保API调用成功: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_MisDelivery"}, {"field":"IsAutoSubmitAndAudit","label":"IsAutoSubmitAndAudit","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"IsVerifyBaseDataField","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}, {"field":"Operation","label":"Operation","type":"string","value":"Save"} } } } } } } } } } ``` - **FormId**: 表单ID,这里设置为 `STK_MisDelivery`. - **IsAutoSubmitAndAudit**: 自动提交和审核,这里设置为 `true`. - **IsVerifyBaseDataField**: 是否验证所有基础资料有效性,这里设置为 `false`. - **Operation**: 操作类型,这里设置为 `Save`. #### 最终操作 最后,通过调用金蝶云星空的API接口,将转换后的数据批量保存至目标平台。轻易云的数据集成平台支持全异步操作,并提供实时监控功能,可以确保每个环节都透明可见,从而极大提升了业务处理效率。 通过以上步骤,我们成功地将吉客云的其他出库单数据转换并写入到金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了数据处理效率,也确保了业务流程的一致性和准确性。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)