在轻易云平台上将吉客云数据转换并写入金蝶云星空

  • 轻易云集成顾问-吕修远
### 吉客云数据集成到金蝶云星空:JY-BDS组装拆卸单案例分享 在本篇技术文章中,我们将深入探讨如何通过轻易云数据集成平台,将吉客云的数据高效、可靠地集成到金蝶云星空系统中。目标是配置和实现名为“JY-BDS组装拆卸单”的实际运行方案。 首先,考虑到两大系统之间的API接口特性,吉客云提供了获取数据的 `erp.combined.get` API,而金蝶云星空则支持批量写入操作,通过其 `batchSave` API 实现。本次集成过程中,我们着重于以下关键环节: 1. **定时可靠的数据抓取**: 使用定时任务机制,从吉客云的 `erp.combined.get` 接口定期拉取最新数据,并确保每次获取的数据完整且不漏单。在处理分页和限流问题上进行了优化,以便应对大量数据请求。 2. **自定义数据转换逻辑**: 针对业务需求,对从吉客云获取的数据进行必要的格式转化,使其符合金蝶云星空要求。例如,在字段映射与值转换方面,使用自定义规则来保证转换过程准确无误。 3. **快速批量写入**: 实现从轻易平台直接向金蝶云星空的大规模高效写入。在这部分,通过运用分批处理技术以及优化并发数量,使得大量数据能够被快速且稳定地录入到目标系统中。 4. **集中监控与告警系统**: 在整个集成流程中,实时跟踪各项任务状态,包括成功率、执行耗时及异常情况等。一旦出现问题,比如网络延迟或者服务崩溃,可以即时触发告警并启动错误重试机制以保障业务连续性。 5. **异常处理与日志记录**: 详细记录每一笔操作日志,对于可能出现的任何异常都设立完善的捕捉与重试策略,从而减少因偶然因素导致的数据丢失或重复。同时,为后续复盘和调优提供充分依据。 以上几个核心步骤构建了一个健全、高效、安全可靠的数据集成模式。接下来我们将逐步展开详细讲解具体实施方案及相关技术细节。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image) ### 调用吉客云接口erp.combined.get获取并加工数据的技术实现 在数据集成生命周期的第一步,我们需要从源系统吉客云中调用接口`erp.combined.get`来获取原始数据,并对其进行初步加工。以下将详细探讨如何通过轻易云数据集成平台配置元数据,完成这一过程。 #### 接口调用配置 首先,我们需要根据提供的元数据配置来设置API调用参数。以下是具体的配置细节: ```json { "api": "erp.combined.get", "method": "POST", "number": "assNo", "id": "assId", "pagination": { "pageSize": 50 }, "idCheck": true, "request": [ { "label": "开始日期", "field": "applyStartDate", "type": "string", "value": "{{DAYS_AGO_1|datetime}}" }, { "label": "结束日期", "field": "applyEndDate", "type": "string", "value": "{{CURRENT_TIME|datetime}}" } ] } ``` #### 参数解析与配置 1. **API与方法**: - `api`: 指定了要调用的API接口为`erp.combined.get`。 - `method`: 使用POST方法进行请求。 2. **标识字段**: - `number`: 数据记录的编号字段为`assNo`。 - `id`: 数据记录的唯一标识字段为`assId`。 3. **分页设置**: - `pagination`: 设置每次请求的数据条数为50条,以便处理大批量数据时能够分批获取,避免单次请求过多导致性能问题。 4. **ID检查**: - `idCheck`: 设置为true,表示在处理数据时会进行ID检查,确保数据唯一性和完整性。 5. **请求参数**: - `request`: 包含两个时间参数,分别是开始日期和结束日期,用于限定查询的数据范围。 - `applyStartDate`: 开始日期,使用模板变量`{{DAYS_AGO_1|datetime}}`表示当前时间前一天。 - `applyEndDate`: 结束日期,使用模板变量`{{CURRENT_TIME|datetime}}`表示当前时间。 #### 数据请求与清洗 在完成上述配置后,通过轻易云平台发起API请求,从吉客云中获取符合条件的数据。以下是一个示例请求体: ```json { "applyStartDate": "<昨天的日期>", "applyEndDate": "<当前时间>" } ``` 假设我们今天是2023年10月10日,那么实际发送的请求体可能如下: ```json { "applyStartDate": "2023-10-09T00:00:00Z", "applyEndDate": "2023-10-10T23:59:59Z" } ``` #### 数据转换与写入 获取到原始数据后,需要对其进行初步清洗和转换,以便后续处理和分析。主要包括以下步骤: 1. **格式转换**:将日期、时间等字段转换为标准格式,确保一致性。 2. **字段映射**:根据业务需求,将原始数据中的字段映射到目标系统所需的字段。例如,将吉客云中的`assNo`映射到目标系统中的订单编号字段。 3. **去重与校验**:利用ID检查功能,对获取的数据进行去重和校验,确保每条记录都是唯一且有效的。 通过以上步骤,我们可以高效地从吉客云中获取并初步加工所需的数据,为后续的数据转换与写入奠定基础。这一过程中,轻易云平台提供了全透明可视化操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/S26.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何利用轻易云数据集成平台,将源数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其作用。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{assNo}"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"ZZCX01_SYS"}, {"field":"FAffairType","label":"事务类型","type":"string","describe":"下拉列表","value":"_function case {assembleType} when 1 then 'Assembly' else 'Dassembly' end"}, {"field":"FSubProOwnerIdH","label":"子件货主","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"}, {"field":"FSubProOwnTypeIdH","label":"子件货主类型","type":"string","describe":"组织","value":"BD_OwnerOrg"}, {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"成品货主","type":"string","describe":"多类别基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"}, {"field":"FDate","label":"","type":"","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""} ], "otherRequest":[ {"field":"","label":"","type":"","describe":"","value":""} ] } ``` #### 数据转换与写入 1. **请求头设置**:在请求头中,我们需要指定API路径和HTTP方法。在这个例子中,`api`字段设定为`batchSave`,表示我们将使用金蝶云星空的批量保存接口;`method`字段设定为`POST`,表示我们将使用HTTP POST方法发送请求。 2. **字段映射与转换**: - `FBillNo`:单据编号,从源数据中的`assNo`字段获取。 - `FStockOrgId`:库存组织,需要通过`ConvertObjectParser`解析器将源数据中的公司代码(`companyCode`)转换为金蝶系统识别的格式。 - `FBillTypeID`:单据类型,固定值为“ZZCX01_SYS”,同样需要通过解析器进行转换。 - `FAffairType`:事务类型,根据条件判断,如果装配类型(`assembleType`)为1,则值为“Assembly”,否则为“Dassembly”。 - `FSubProOwnerIdH`, `FOwnerIdHead`, `FOwnerIdSETY`, 等等:这些字段都需要通过解析器将公司代码转换为金蝶系统识别的格式。 3. **日期格式化**: - `FDate`: 日期字段,需要通过函数将UNIX时间戳(毫秒)转换为标准日期时间格式。 4. **嵌套数组处理**: - `FEntity`: 成品信息,包括物料编码、数量、仓库等,需要从源数据中的产品信息(product)提取并映射到相应字段。 - `FSubEntity`: 子件信息,包括物料编码、数量、仓库等,需要从源数据中的材料信息(material)提取并映射到相应字段。 5. **其他请求参数**: - `FormId`: 固定值“STK_AssembledApp”,表示业务对象表单ID。 - `IsAutoSubmitAndAudit`: 设置为true,表示自动提交并审核。 - `IsVerifyBaseDataField`: 设置为true,表示验证所有基础资料有效性。 #### 实际案例 假设我们有如下源数据: ```json { "assNo": "A12345", "companyCode": "C001", "assembleType": 1, "applyDate": 1672531199000, "remark": "测试备注", "product": [ { "goodsNo": "P001", "quantity": 10, "warehouseCode": "W001", "rowRemark": "" } ], "material": [ { "goodsNo": "", "" "" "" "" "" "" ``` 根据上述元数据配置和处理逻辑,我们可以生成如下目标平台所需的数据格式: ```json { ... } ``` 通过轻易云的数据集成平台,我们可以轻松实现复杂的数据转换和写入操作,从而确保不同系统间的数据无缝对接,提高业务效率。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)