利用轻易云平台进行MySQL与金蝶云星空的数据映射与集成

  • 轻易云集成顾问-杨嫦
### MySQL数据集成到金蝶云星空——SR新建调拨单外部供应商-全-带-深圳天一 在本技术案例中,我们将详细讨论如何高效、安全地实现MySQL数据库中的数据集成到金蝶云星空系统,具体应用场景为“SR新建调拨单外部供应商-全-带-深圳天一”。通过使用轻易云平台的强大功能,我们能够确保整个数据交换过程透明、高效,并且最大限度地减少潜在错误。 #### 数据获取与写入API接口配置 首先,在MySQL中我们需要通过`select` API来定时可靠地抓取所需的数据。该API接口不仅支持分页和限流处理,还能实时监控整个数据处理过程并记录日志,以确保任何异常情况都能被及时检测和纠正。而对于数据的写入操作,金蝶云星空提供了一个`batchSave` API,使得大量数据可以快速批量导入目标系统,从而显著提升我们的工作效率。 #### 实现自定义的数据转换逻辑 为了符合特定业务需求及其复杂的数据信息结构,有必要进行一定程度的数据转换。在这个案例中,通过轻易云平台可视化的数据流设计工具,可以方便地对不同格式的数据进行映射和转换。这一步骤确保了从MySQL提取出来的数据形式能够无缝适配于金蝶云星空的要求,不会因为格式问题导致后续处理出现瓶颈。 #### 集中的监控与告警机制 执行如此关键任务时,拥有一个集中、可靠的监控和告警系统至关重要。该系统可以实时跟踪每个集成任务的状态与性能,使得任何异常情况或潜在问题都能得到即时反馈。例如,当遇到网络延迟或者服务器响应缓慢等突发状况时,该机制会自动触发相应报警措施,同时也提供详细日志供后续分析,这样极大保障了集成过程的稳定性和高有效率运行。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/D23.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用MySQL接口select获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用MySQL接口`select`获取并加工数据。 #### 元数据配置解析 元数据配置是实现数据请求和清洗的关键。以下是我们需要关注的元数据配置项: - `api`: 表示我们使用的API类型,这里为`select`。 - `effect`: 定义了操作类型,这里为`QUERY`,即查询操作。 - `method`: 指定了方法类型,这里为`SQL`。 - `number`, `id`, `name`: 这些字段用于标识和描述返回的数据结构。 - `request`: 包含了主参数配置,如返回记录数(`limit`)和数据偏移量(`offset`)。 - `otherRequest`: 包含了主查询语句(`main_sql`),这是实际执行的SQL语句模板。 #### 主参数配置 主参数配置定义了查询时需要动态传递的参数: ```json { "field": "main_params", "label": "主参数", "type": "object", "describe": "对应主查询语句内的动态参数对象", "children": [ { "field": "limit", "label": "返回的记录数", "type": "int", "describe": "你可以使用 LIMIT 属性来设定返回的记录数。", "value": "100" }, { "field": "offset", "label": "数据偏移量", "type": "int", "describe": "你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。" } ] } ``` 在这个配置中,我们可以看到两个重要参数:`limit`和`offset`。这两个参数将用于控制查询结果的分页。 #### 主查询语句 主查询语句是实际执行的SQL语句模板,其中包含动态参数占位符: ```sql select CONCAT(d.confrim_no,'_',CAST(c.id AS CHAR)) as 单据编号, c.create_time as 日期, b.mode_no as 计划跟踪号, b.part_no as 物料编号, c.confirm_numb as 数量, b.business_no as 采购单号, b.ser_code as 条码, b.supplier_uuid as 供应商, c.id as sourceid, m.delivery_org as 供应组织 from wms_instock_confirm_task_detail c left join wms_instock_confirm_main_task_detail a on c.connect_uuid=a.uuid left join wms_instock_purchase_task_detail b on b.uuid=a.connect_uuid left join wms_instock_confirm_task d on d.uuid=c.confirm_detail_task_uuid left join basic_supplier_info e on e.supplier_uuid=b.supplier_uuid left join mbs_order_plan_bom l on b.mode_no=l.bom_no left join mbs_order_bom m on m.bom_uuid=l.bom_uuid where a.company_code='TYZN' and b.task_type in ('2') and b.out_type='1' and ((a.matterial_type='3' and b.next_process_code is null) or a.matterial_type='4') and c.create_time>(select config_value from sys_config where config_id=340) and e.is_inner=1 and m.delivery_org='T01.01' and c.is_success5<>'1' and c.is_success3='1' limit :limit offset :offset ``` 在这个SQL模板中,`:limit`和`:offset`将被实际值替换,以实现分页查询。 #### 数据请求与清洗 在实际操作中,我们会通过API调用传递具体参数,并执行上述SQL查询。例如: ```json { "main_params": { "limit": 100, "offset": 0 } } ``` 系统会将这些参数替换到SQL模板中的占位符位置,生成最终执行的SQL语句: ```sql select CONCAT(d.confrim_no,'_',CAST(c.id AS CHAR)) as 单据编号, c.create_time as 日期, b.mode_no as 计划跟踪号, b.part_no as 物料编号, c.confirm_numb as 数量, b.business_no as 采购单号, b.ser_code as 条码, b.supplier_uuid as 供应商, c.id as sourceid, m.delivery_org as 供应组织 from wms_instock_confirm_task_detail c left join wms_instock_confirm_main_task_detail a on c.connect_uuid=a.uuid left join wms_instock_purchase_task_detail b on b.uuid=a.connect_uuid left join wms_instock_confirm_task d on d.uuid=c.confirm_detail_task_uuid left join basic_supplier_info e on e.supplier_uuid=b.supplier_uuid left join mbs_order_plan_bom l on b.mode_no=l.bom_no left join mbs_order_bom m on m.bom_uuid=l.bom_uuid where a.company_code='TYZN' and b.task_type in ('2') and b.out_type='1' and ((a.matterial_type='3' and b.next_process_code is null) or a.matterial_type='4') and c.create_time>(select config_value from sys_config where config_id=340) and e.is_inner=1 and m.delivery_org='T01.01' and c.is_success5<>'1' and c.is_success3='1' limit 100 offset 0 ``` #### 数据处理结果 执行上述SQL后,系统会返回符合条件的数据集。这些数据将进一步进入生命周期的下一个阶段:数据转换与写入。在此过程中,可以根据业务需求对数据进行清洗、转换和存储。 通过这种方式,我们实现了从MySQL源系统高效、灵活地获取并加工数据,为后续的数据处理打下坚实基础。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/S2.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将数据转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二阶段,关键任务是将已集成的源平台数据进行ETL(提取、转换、加载)处理,并将其转化为目标平台——金蝶云星空API接口所能接收的格式。以下是一个详细的技术案例,展示如何通过轻易云数据集成平台实现这一过程。 #### 元数据配置解析 元数据配置是整个ETL过程的核心,它定义了从源平台到目标平台的数据映射和转换规则。以下是元数据配置中的关键字段及其作用: 1. **基本信息字段** - `FBillNo`:单据编号,类型为字符串,通过模板变量`{{单据编号}}`动态获取。 - `FBillTypeID`:单据类型,固定值为`ZJDB01_SYS`。 - `FBizType`:业务类型,固定值为`NORMAL`。 - `FTransferDirect`:调拨方向,固定值为`GENERAL`。 - `FTransferBizType`:调拨类型,固定值为`OverOrgTransfer`。 2. **组织信息字段** - `FSaleOrgId`, `FSettleOrgId`, `FStockOutOrgId`, `FStockOrgId`: 这些字段均涉及组织信息,通过使用解析器(如`ConvertObjectParser`)将组织编码转换为目标系统可识别的格式。 - 示例: ```json { "field": "FSaleOrgId", "label": "销售组织", "type": "string", "describe": "组织", "parser": {"name": "ConvertObjectParser", "params": "FNumber"} } ``` 3. **日期和备注** - `FDate`: 日期字段,通过模板变量动态获取,例如`{{日期}}`。 - `FNote`: 备注字段,可以包含多行文本。 4. **明细信息** 明细信息是数组类型,每个元素代表一条明细记录。关键字段包括: - `FMaterialId`: 物料编码,通过模板变量动态获取,例如`{{物料编号}}`。 - `FCMKBarCode`: 零售条形码,文本类型。 - `FQty`: 调拨数量,通过模板变量动态获取,例如`{{数量}}`。 - 仓库和仓位信息,如调出仓库(`FSrcStockId`)和调入仓库(`FDestStockId`)等。 5. **其他请求参数** - `FormId`: 业务对象表单ID,必须填写金蝶的表单ID,如`STK_TransferDirect`. - `IsAutoSubmitAndAudit`: 提交并审核,布尔值,默认设置为true。 - `IsVerifyBaseDataField`: 验证基础资料有效性,布尔值,默认设置为true。 #### 数据转换与写入过程 1. **提取数据**: 从源系统中提取需要的数据,这些数据可能存储在数据库、文件系统或其他服务中。提取的数据需要符合元数据配置中的要求。 2. **数据清洗**: 对提取的数据进行清洗,包括去除无效或重复的数据、修正错误等。这一步确保后续的数据转换能够顺利进行。 3. **数据转换**: 根据元数据配置,将清洗后的数据转换为目标系统所需的格式。例如,将源系统中的组织编码通过解析器转换为金蝶云星空识别的编码格式。 4. **构建请求体**: 根据元数据配置构建API请求体。以JSON格式构建请求体,并填充相应的字段。例如: ```json { "FormId": "STK_TransferDirect", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": true, "Operation": "Save", "InterationFlags": ["STK_InvCheckResult"], ... } ``` 5. **发送请求**: 使用HTTP POST方法将构建好的请求体发送到金蝶云星空API接口。确保请求头部包含必要的认证信息和Content-Type设置。 6. **处理响应**: 接收并处理金蝶云星空返回的响应,根据响应结果判断操作是否成功,并记录日志或错误信息以便后续分析和处理。 #### 实际应用示例 假设我们有以下源系统中的原始数据: ```json { "单据编号": "D20231001", "日期": "2023-10-01", "物料编号": ["M001", "M002"], "数量": [100, 200], ... } ``` 通过轻易云数据集成平台,我们可以按照上述步骤,将这些原始数据转换并写入到金蝶云星空中: 1. 提取并清洗原始数据; 2. 根据元数据配置,将每个字段映射到目标系统所需格式; 3. 构建如下API请求体: ```json { "FormId": "STK_TransferDirect", ... "FBillNo": "D20231001", ... "FBillEntry":[ { ... "FMaterialId":"M001", ... "FQty":"100" }, { ... "FMaterialId":"M002", ... "FQty":"200" } ] } ``` 4. 将请求体发送至金蝶云星空API接口,并处理返回结果。 通过这种方式,可以高效地实现不同系统间的数据无缝对接,提高业务流程的自动化程度和效率。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)