利用轻易云平台实现数据转换与目标平台写入

  • 轻易云集成顾问-李国敏
### 简道云数据集成到金蝶云星空:仓库盘点单(月盘)=> 其他出库单(盘亏) 在实现企业内部各大系统的无缝衔接中,如何高效且准确地进行数据迁移和整合是关键。本技术案例将介绍如何通过轻易云数据集成平台,将简道云中的“仓库盘点单(月盘)”无缝对接到金蝶云星空,并形成对应的“其他出库单(盘亏)”。 首先,通过调用简道云提供的数据获取API `/api/v2/app/{app_id}/entry/{entry_id}/data` 实现精准的数据抓取。在处理过程中,必须注意分页和限流问题,以确保海量数据在传输过程中的稳定性。我们采用定时任务机制来可靠地抓取这些接口数据,实现了定期批量同步。 紧接着,我们面临的是两个系统间的数据格式不一致的问题。为了确保有效对接,需要进行详细的数据映射与转换。在这一过程中,我们自定义了一套映射规则,使得每一个字段都能正确匹配至金蝶云星空所要求的格式规范。同时,为了应对链接中偶发的异常情况,我们设计并实现了一套错误重试机制。 当所有准备工作完成后,就可以使用金蝶云星空提供的 `batchSave` API 将整理好的信息快速写入目标数据库。这一步极大提升了整体操作效率,特别是在大量数据同步情况下表现尤为显著。此外,通过实时监控记录日志,我们能够掌握整个流程运行状态,一旦出现问题可以迅速定位并解决。 本案例展示了从源头获取,到中间处理,再到最终存储,每个环节均衡有序、条理清晰,有力保障了企业业务运营的一体化协同。这种严谨、高效的方法论,不仅提高了系统间互操作性的灵活度,同时也增强了实际应用中的实用性和稳定性。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/D2.png~tplv-syqr462i7n-qeasy.image) ### 调用简道云接口获取并加工数据的技术实现 在轻易云数据集成平台中,调用源系统简道云接口获取并加工数据是生命周期的第一步。本文将深入探讨如何通过配置元数据来实现这一过程。 #### 接口配置与请求参数 首先,我们需要调用简道云提供的API接口`/api/v2/app/{app_id}/entry/{entry_id}/data`。该接口支持POST请求,主要用于查询指定应用和表单的数据。以下是关键的元数据配置: ```json { "api": "/api/v2/app/{app_id}/entry/{entry_id}/data", "effect": "QUERY", "method": "POST", "number": "_widget_1688538649501", "id": "_id", "idCheck": true, "request": [ { "field": "appId", "label": "应用ID", "type": "string", "describe": "应用ID", "value": "642307c010703500087839ac" }, { "field": "entryId", "label": "表单ID", "type": "string", "describe": "表单ID", "value": "64a3bc03392c700008450082" }, { "field": "fields", "label": "需要查询的字段", "type": "string", "describe": "多个字段以逗号隔开,默认不传入则输出所有字段", "parser": { "name": "StringToArray", "params": "," } }, { "field": "limit", "label": "每页返回数量", "type": "string", "describe": "查询的数据条数,1~100,默认10", "value": 100 }, { ... } ], ... } ``` #### 数据过滤与条件设置 为了确保获取的数据符合业务需求,我们需要设置过滤参数。以下是一个典型的过滤参数配置示例: ```json { ... { ... { ... }, { ... }, { ... }, { ... }, { field: 'filter', label: '过滤参数', type: 'object', describe: '过滤参数', children: [ { field: 'rel', label: '过滤参数逻辑', type: 'string', describe: '"rel":"and", // 或者"or"', value: 'and' }, { field: 'cond_1', label: '自定义字段过滤', type: 'object', describe: '自定义字段过滤', children: [ { field: 'field', label: '过滤字段', type: 'string', describe: '过滤字段', value: 'updateTime' }, { field: 'type', label: '过滤类型', type: 'string', describe: 'text\\number\\flowstate', value: 'datetime' }, { field: 'method', label: '过滤方法', type: 'string', describe: '"not_empty"(不为空),"empty"(为空),"eq"(等于),"in"(等于任意一个),"range"(在x与y之间,并且包含x和y本身),"nin"(不等于任意一个),"ne"(不等于), “like”(文本包含)', value: 'range' }, { field: 'value', label: '过滤值', type: 'string', describe: '"{{LAST_SYNC_TIME|datetime}}" // 动态时间变量替换为实际值时使用模板语法。', parser:{ name:"StringToArray", params:"," } } ] }, ... ] } ] } ``` #### 请求示例 基于上述配置,我们可以构建一个完整的请求体,并通过HTTP POST方法发送请求: ```json { appId:"642307c010703500087839ac", entryId:"64a3bc03392c700008450082", fields:["field1","field2"], limit:"100", filter:{ rel:"and", cond_1:{ field:"updateTime", type:"datetime", method:"range", value:["2023-01-01T00:00:00Z","2023-12-31T23:59:59Z"] }, cond_2:{ field:"FlowState", type:"FlowState", method:"in", value:["1"] } } } ``` #### 数据处理与转换 在获取到源系统的数据后,需要对数据进行清洗和转换,以便后续写入目标系统。在轻易云平台中,可以通过内置的转换工具或自定义脚本来完成这些操作。例如,将日期格式统一转换为目标系统所需的格式,或者对特定字段进行计算和合并。 #### 自动填充响应 为了简化后续处理步骤,可以启用`autoFillResponse`选项,使得响应结果自动填充到预定义的数据结构中。这有助于减少手动解析和映射数据的工作量,提高集成效率。 ```json { autoFillResponse:true, condition_bk:[ [ {field:"_widget_1602228805384._widget_1682216483273", logic:"gt", value:"0"} ] ], condition:[ [ {field:"_widget_1602228805384._widget_1682216483273", logic:"gt", value:"0"}, {field:"_widget_1602228805094", logic:"egt","value":"2024-04-01timestamp"} ] ] } ``` 通过以上步骤,我们可以高效地调用简道云接口获取并加工数据,为后续的数据集成奠定坚实基础。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将仓库盘点单转换为金蝶云星空API格式并写入目标平台 在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将仓库盘点单(月盘)的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 1. 数据请求与清洗 首先,我们需要从源系统中提取仓库盘点单的数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和加载打下基础。 #### 2. 数据转换与写入 在完成数据清洗后,接下来是将这些数据转换为金蝶云星空API接口所能接受的格式。以下是具体的元数据配置及其解析: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "标准其他出库单:QTCKD01_SYS\n资产出库:QTCKD02_SYS\nVMI出库:QTCKD03_SYS\n费用物料出库:QTCKD04_SYS\n库存调整:QTCKD05_SYS", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "QTCKD14_SYS" }, { "field": "FStockOrgId", "label": "库存组织", "type": "string", "describe": "组织", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "{_widget_1706800675381}" }, { ... } ], ... } ``` 在这个配置中,我们定义了多个字段,每个字段都有特定的属性和解析方式。例如: - `FBillTypeID`:这是单据类型字段,使用`ConvertObjectParser`解析器,将值转换为金蝶云星空所需的格式。 - `FStockOrgId`:库存组织字段,同样使用`ConvertObjectParser`解析器。 - `FPickOrgId`、`FStockDirect`等字段也按照类似方式进行配置。 #### 明细信息处理 对于明细信息,我们采用数组形式进行处理,每个子项都包含多个字段,例如: ```json { ... { "field": "FEntity", "label": "明细信息", "type": "array", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... {"field":"Flot","label":"批号","type":"string","value":"123","parser":{"name":"ConvertObjectParser","params":"FNumber"}} } } } } } } } } } } }, ... } ``` 每个明细项都包含物料编码、实发数量、发货仓库等信息,这些信息通过相应的解析器进行转换,以符合金蝶云星空API接口要求。 #### 最终写入目标平台 所有字段配置完成后,通过POST方法调用金蝶云星空API接口,将转换后的数据批量保存到目标平台。以下是其他请求参数配置: ```json { ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"STK_MisDelivery"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"true"}, {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"Save"}, {"field":"InterationFlags","label":"可以负库存","type":"string","describe":"可以负库存","value":"STK_InvCheckResult"} } ``` 这些参数确保了数据在写入目标平台时能够自动提交并审核,同时验证基础资料的有效性。 通过上述步骤,我们成功地将仓库盘点单的数据转换为金蝶云星空API接口所能接受的格式,并批量保存到目标平台。这一过程充分利用了轻易云数据集成平台提供的强大功能,实现了不同系统间的数据无缝对接。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)