调用MySQL接口及数据加工的实战分享

  • 轻易云集成顾问-曾平安
### MySQL数据集成到金蝶云星空的技术案例分享:GYB生产用料清单新新增-半成品-好 在一次项目中,我们遇到了一个复杂的数据对接需求,要求将MySQL数据库中的生产用料清单数据实时写入到金蝶云星空系统。这一任务不仅需要保证高吞吐量和准确性,还要处理两者之间的数据格式差异以及异常情况的智能重试机制。为此,我们采用了轻易云数据集成平台,实现了"GYB生产用料清单新新增-半成品-好"方案。 首先,我们使用MySQL接口`select`从源数据库中定时可靠地抓取最新的用料清单数据。在这一过程中,通过支持自定义的数据转换逻辑,确保了适应特定业务需求和复杂的数据结构。同时,对获取到的原始数据进行了必要的数据质量监控,及时发现并处理任何可能出现的问题,进一步提高了系统的稳定性。 在完成初步的数据提取和转换后,下一步是将这些大量且经过优化处理后的数据迅速写入到金蝶云星空。利用API接口`batchSave`执行批量操作,使得大部分事务能够一次性完成,大幅减少网络开销和提升性能。另外,为了解决分页和限流问题,通过合理设计批次大小以及并发控制来平衡读取与写入操作,将潜在瓶颈降至最低。 同时,在整个数据传输过程当中,我们只需要通过可视化的平台界面对每个环节进行实时监控,就能掌握当前所有任务运行状态,并及时响应告警信息。这种集中监控方式极大提升了我们对系统运行状况的把控能力。通过精准配置具备弹性的错误处理策略,即便发生连接超时等意外情况,也能实现自动重试,从而确保最终结果的一致性与完整性。 这个系统对接案例展示了如何有效地整合MySQL与金蝶云星空,通过先进灵活的平台解决方案,让传统企业关键业务流程更为智能、高效、无缝运作。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用MySQL接口获取并加工数据的技术案例 在数据集成生命周期的第一步,我们需要从源系统MySQL中调用接口`select`来获取并加工数据。以下将详细介绍如何配置和使用元数据进行这一操作。 #### 元数据配置解析 我们使用的元数据配置如下: ```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" } ] } ], "otherRequest": [ { "field": "main_sql", "label": "main_sql", "type": "string", "describe": "111", "value": " select a.dispatch_prefix as 生产订单号, b.part_no as 成品编号, date(a.update_time) as 日期, b.order_num as 生产数量, b.bom_no as 计划跟踪号, CONCAT('0599',a.current_process_code) as '物料编号', a.req_material_num as '分子', b.order_num as '分母', a.id as sourceid, a.req_material_num as 领料数量 from mes_whole_out_purchase a left join oms_order_bom b on a.bom_uuid=b.bom_uuid where a.company_code='gdTY' and b.material_source='2' and a.is_success !='1' and a.current_process_code<>'MJF' and b.is_close='1' and b.kingdee_fwl='0' limit :limit offset :offset" } ], “autoFillResponse”: true, “omissionRemedy”: { “crontab”: “1 1 1 1 1”, “takeOverRequest”: [] } } ``` #### 配置解析与应用 1. **API调用方式**: - `api`: 使用`select`接口。 - `effect`: 操作类型为`QUERY`,表示查询操作。 - `method`: 使用HTTP POST方法。 2. **主参数设置**: - `request`字段定义了主参数,其中包含一个对象`main_params`,其子字段包括`limit`和`offset`,用于分页控制。 - 默认情况下,`limit`设置为100条记录。 3. **SQL查询语句**: - `otherRequest`字段中定义了主要的SQL查询语句,通过占位符`:limit`和`:offset`实现分页查询。 - SQL语句从两个表(mes_whole_out_purchase和oms_order_bom)中联接查询所需的数据,并根据特定条件进行过滤。 4. **自动填充响应**: - `autoFillResponse`: 设置为true,表示自动填充响应结果。 5. **遗漏补救机制**: - `omissionRemedy`: 定义了定时任务(crontab)和接管请求(takeOverRequest),用于处理遗漏的数据请求。 #### 实际操作步骤 1. **配置接口调用**: 在轻易云平台上,根据上述元数据配置创建一个新的API调用任务。确保正确填写所有字段,特别是SQL查询语句中的占位符。 2. **执行查询**: 使用POST方法调用配置好的API,并传递必要的参数(如limit和offset)。例如: ```json { “main_params”: { “limit”: “100”, “offset”: “0” } } ``` 3. **处理响应数据**: 平台会自动处理并返回查询结果。由于设置了autoFillResponse为true,响应结果会自动填充到指定的数据结构中。 4. **监控与调试**: 利用平台提供的实时监控功能,查看数据流动和处理状态。如果出现问题,可以通过日志和调试工具进行排查。 #### 技术要点总结 - **异步处理**:轻易云平台支持全异步操作,确保高效的数据处理。 - **多系统集成**:能够无缝对接不同系统,实现跨平台的数据集成。 - **透明化管理**:全生命周期管理和可视化界面,使得每个环节都清晰可见,提高业务透明度。 - **灵活性与扩展性**:通过元数据配置,可以灵活定义各种复杂的查询和处理逻辑,适应不同业务需求。 通过以上步骤,我们成功实现了从MySQL源系统获取并加工数据,为后续的数据转换与写入奠定了基础。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API接口 在轻易云数据集成平台的生命周期中,数据请求与清洗是第一步,而第二步则是将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下将详细介绍这一过程。 #### 配置API接口元数据 我们需要配置金蝶云星空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 ce5b116a-97a3-30ea-bfdf-a7a3fa3be3cd where FMoBillNo={{生产订单号}}" }, { "field": "FEntity", "label": "子项明细", "type": "array", "describe": "子项明细", "children": [ { ... } ] }, { ... } ], ... } ``` #### 数据转换与映射 在配置过程中,最关键的一步是将源平台的数据字段映射到目标平台所需的字段。以下是一些关键字段及其映射规则: 1. **生产订单编号(FMoBillNo)**: - 源数据字段:`{{生产订单号}}` - 转换规则:直接映射。 2. **子项物料编码(FMaterialID2)**: - 源数据字段:`{{物料编号}}` - 转换规则:使用`ConvertObjectParser`解析器,将物料编号转换为金蝶系统识别的编码。 3. **标准用量(FStdQty)**: - 源数据字段:`{{领料数量}}` - 转换规则:使用函数`ROUND`对领料数量进行四舍五入处理,保留三位小数。 4. **发料组织(FSupplyOrg)**: - 固定值:`T04` - 转换规则:使用`ConvertObjectParser`解析器,将固定值转换为金蝶系统识别的编码。 #### API请求构建 根据上述元数据配置和映射规则,我们需要构建一个符合金蝶云星空API要求的请求体。以下是一个示例请求体: ```json { "FormId": "PRD_PPBOM", "Operation": { ... }, ... } ``` 其中,关键部分包括: - `FormId`: 表单ID,指定业务对象类型。 - `Operation`: 操作类型,这里使用批量保存操作。 - `Request`: 包含所有需要写入的数据字段及其对应的值。 #### 执行ETL转换并调用API 完成上述配置后,我们可以通过轻易云的数据集成平台执行ETL转换,并调用金蝶云星空的API接口,将处理后的数据写入目标系统。具体步骤如下: 1. **提取源数据**:从源系统中提取原始生产订单和物料信息。 2. **清洗与转换**:按照元数据配置和映射规则,对提取的数据进行清洗和转换。 3. **构建请求体**:根据转换后的数据,构建符合金蝶云星空API要求的请求体。 4. **调用API接口**:使用HTTP POST方法,将请求体发送到金蝶云星空API接口进行批量保存操作。 通过以上步骤,我们可以实现从源系统到目标系统的数据无缝对接,确保业务流程顺畅高效。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)