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

  • 轻易云集成顾问-曹润
### MySQL数据集成到金蝶云星空的技术实施案例分享 在此次系统集成项目中,我们将重点探讨如何使用轻易云数据集成平台,将MySQL的数据高效、准确地写入到金蝶云星空。在实际运行案例“SYD生产用料清单新增-深圳天一-单工序-好”中,我们面对的是由MySQL数据库接口`select`获取的数据,需要通过金蝶云星空的API `batchSave`进行批量写入,这其中涉及多方面的技术要点和挑战。 首先,为了确保大量数据能快速而稳定地从MySQL读取,并安全、无遗漏地传输至金蝶云星空,必须处理好接口调用的分页与限流问题。轻易云平台提供了一组强大的工具和功能,例如集中监控与告警系统,使我们能实时追踪数据集成任务的状态和性能,从而及时发现并解决任何潜在问题。此外,还可以利用平台提供的数据质量监控及异常检测机制,以保证每一条记录都符合业务需求,并在出现异常时能够迅速响应和修复。 其次,在具体实现过程中,自定义的数据转换逻辑是不可或缺的一环。由于源端MySQL数据库中的数据结构可能与目标端金蝶云星空存在差异,通过可视化的数据流设计工具,可以灵活地对不同字段进行映射,并运用定制化转换规则来满足特定业务要求。例如,对照应的API参数进行格式调整,使得两套系统间能够顺利完成数据信息匹配。此外,考虑到企业资源配置优化的重要性,充分利用轻易云提供的信息视图,有助于全面掌握整个过程中的关键节点及其状态。 为了验证上述方案,我们设置了多个实验场景,包括模拟大规模并发请求,以及随机出现错误码重试等情况,通过实践证明该方案具有较高可靠性。同时,对于流程日志记录也进行了精确管理,一旦发现异常,即可迅速定位并排除故障,从根本上保障了集成任务持续、高效运作。这种严密管理体系使得最终结果不仅满足当前项目需求,也为后续扩展埋下夯实基础。 上述介绍仅是整个技术方案的一部分,在接下来的内容中,我会详细阐述各个步骤包括如何调用MySQL API获取所需数据、批量写入至金蝶云星空以及处理两者间复杂转换关系。敬请期待完整实施细节分享。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D8.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用MySQL接口select获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何使用轻易云数据集成平台配置元数据,通过调用MySQL接口select获取生产用料清单数据,并进行必要的加工处理。 #### 配置元数据 首先,我们需要配置元数据来定义如何从MySQL数据库中提取所需的数据。以下是我们使用的元数据配置: ```json { "api": "select", "effect": "QUERY", "method": "POST", "number": "生产订单号", "id": "{{生产订单号}}{{物料编号}}", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "111", "value": "1", "children": [ { "field": "limit", "label": "limit", "type": "string", "value": "100" }, { "field": "offset", "label": "offset", "type": "string" } ] } ], ... } ``` #### SQL查询语句 核心部分是SQL查询语句,它定义了我们需要从数据库中提取的数据字段和条件。以下是具体的SQL查询语句: ```sql SELECT CASE m.delivery_org WHEN 'T01.01' THEN CONCAT('HJ', CAST(i.id AS CHAR)) WHEN 'T04' THEN CONCAT('HJGD', CAST(i.id AS CHAR)) END AS 生产订单号, a.part_no AS 成品编号, DATE(a.update_time) AS 日期, a.req_num AS 生产数量, a.mold_no AS 计划跟踪号, CONCAT(a.part_no, CONCAT('_', p.process_code)) AS 物料编号, 1 AS 分子, 1 AS 分母, i.id AS sourceid, a.req_num AS 领料数量, m.delivery_org AS 供应组织 FROM mbs_nuclear_price_info i LEFT JOIN mbs_nuclear_price_task a ON i.nuclear_price_task_uuid = a.nuclear_price_task_uuid LEFT JOIN mbs_nuclear_price_process p ON i.nuclear_price_task_uuid = p.nuclear_price_task_uuid LEFT JOIN mbs_order_plan_bom l ON a.mold_no = l.bom_no LEFT JOIN mbs_order_bom m ON m.bom_uuid = l.bom_uuid WHERE a.is_cancel = '1' AND a.company_code = 'TYZN' AND i.create_time > (SELECT config_value FROM sys_config WHERE config_id = 337) AND a.if_close = '1' AND i.out_type = '3' AND i.is_success3 != '1' AND i.is_success = '1' LIMIT :limit OFFSET :offset ``` #### 参数化查询 为了提高查询的灵活性和安全性,我们使用参数化查询。参数 `:limit` 和 `:offset` 用于控制返回结果的分页。这些参数在请求体中定义: ```json { ... "request":[ { ... "children":[ { ... {"field":"limit","label":"limit","type":"string","value":"100"}, {"field":"offset","label":"offset","type":"string"} } ] } ], ... } ``` #### 数据请求与清洗 在执行上述SQL查询时,轻易云平台会通过POST方法向MySQL数据库发送请求,并根据配置的参数进行分页处理。返回的数据将包含多个字段,如生产订单号、成品编号、日期、生产数量等。 这些数据在返回后会经过初步清洗和转换,以确保其格式和内容符合后续处理步骤的要求。例如,将日期字段格式化为标准日期格式,将生产订单号和物料编号组合生成唯一ID等。 #### 自动填充响应 为了简化后续处理,轻易云平台提供了自动填充响应功能。通过设置 `autoFillResponse: true`,平台会自动将查询结果填充到预定义的结构中,减少手动处理的工作量。 ```json { ... "autoFillResponse": true, ... } ``` #### 异常处理与补偿机制 在实际操作过程中,可能会遇到各种异常情况,如网络故障、数据库连接失败等。为了应对这些情况,轻易云平台提供了异常处理与补偿机制。例如,可以通过设置定时任务(crontab)来定期重新执行失败的请求: ```json { ... "omissionRemedy":{ ... {"crontab":"1 1 * * *"} ... } } ``` 以上就是使用轻易云数据集成平台调用MySQL接口select获取并加工数据的详细技术案例。通过合理配置元数据和SQL查询语句,我们可以高效地从源系统提取所需的数据,并进行初步清洗和转换,为后续的数据处理奠定基础。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成的生命周期中,将源平台的数据进行ETL转换并写入目标平台是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 我们将通过一个具体的元数据配置案例来说明如何实现这一过程。以下是元数据配置的主要内容: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FID", "label": "FID", "type": "string", "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}" }, { "field": "FEntity", "label": "子项明细", "type": "array", ... }, { ... } ], ... } ``` #### 数据转换与写入过程 1. **API接口调用配置** - `api`: 设置为`batchSave`,表示批量保存操作。 - `method`: 设置为`POST`,表示使用HTTP POST方法。 - `idCheck`: 设置为`true`,表示需要进行ID检查。 2. **请求参数配置** - `FID`: 使用 `_findCollection` 方法从数据库中查找对应的 `FID`。 - `FEntity`: 子项明细数组,包含多个字段,如 `FMaterialID2`, `FMaterialType`, `FDosageType`, 等等。 3. **子项明细字段解析** - `FMaterialID2`: 子项物料编码,通过 `ConvertObjectParser` 转换物料编号。 - `FDosageType`: 用量类型,设置为固定值 `2`(变动)。 - `FStdQty`, `FNeedQty2`, `FMustQty`: 标准用量、需求数量和应发数量,通过 `_function ROUND( {{领料数量}} , 3 )` 函数进行四舍五入处理。 4. **其他请求参数** - `FormId`: 设置业务对象表单Id,例如:`PRD_PPBOM`。 - `Operation`: 执行操作类型,设置为`batchSave`。 - `IsAutoSubmitAndAudit`: 是否自动提交并审核,设置为布尔值 `false`。 #### 实现步骤 1. **准备源数据** 首先,需要从源系统获取生产订单号、物料编号、领料数量等必要信息。这些信息将作为输入参数传递给ETL过程。 2. **ETL转换** 使用轻易云数据集成平台的ETL工具,根据元数据配置对源数据进行转换。例如,将物料编号通过解析器转换为目标系统所需格式,将领料数量进行四舍五入处理等。 3. **API请求构建** 根据转换后的数据构建API请求体。确保所有字段都符合金蝶云星空API接口的要求,并且所有必填字段都有相应值。 4. **发送请求** 使用HTTP POST方法将构建好的请求体发送到金蝶云星空API接口。根据返回结果判断操作是否成功,并进行相应处理。 #### 技术要点 - **异步处理**: 确保整个ETL过程和API调用都是异步执行,以提高效率和响应速度。 - **错误处理**: 在每个关键步骤添加错误处理机制,确保任何异常情况都能被及时捕获和处理。 - **日志记录**: 对每次操作进行详细日志记录,以便后续审计和问题排查。 通过以上步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星空系统中,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/T21.png~tplv-syqr462i7n-qeasy.image)