MySQL数据集成到金蝶云星空案例分享:GLY生产领料单新增-原材料-好
在实现企业信息化过程中,数据的有效整合和实时同步是一个关键环节。本文将围绕"GLY生产领料单新增-原材料-好"这一具体场景,详述如何通过配置MySQL与金蝶云星空的数据接口,实现高效、可靠的数据集成。
数据获取与转换
首先,通过MySQL提供的select API从数据库中定时抓取生产领料单相关数据。为了确保无遗漏,我们设计了批量抓取机制,同时处理分页和限流问题,以保证在高并发环境下依然能稳定运行。此外,为解决两端之间的数据格式差异,我们自定义了数据转换逻辑,使得每条记录都能够准确映射至金蝶云星空所需字段格式。
集成过程可视化及监控
利用轻易云平台提供的可视化数据流设计工具,我们构建了一条完整且直观的数据管道。从MySQL抽取后的源数据会进行清洗、验证,并经过必要的业务逻辑处理后,再调用金蝶云星空batchSave API进行写入。同时,通过平台提供的集中监控系统,全程跟踪每个Data Pipeline节点的状态和性能,大大提升了调试效率和任务管理能力。在出现异常情况时,系统还具备错误重试机制,有效保障了数据一致性。
高吞吐量写入与API资产管理
对于大量生产领料单新增记录,在集成过程中,我们充分利用轻易云平台支持的大容量、高吞吐量特性,使得这些记录能快速地被批量写入到金蝶云星空中。基于统一视图和控制台,对API资产使用情况进行全面掌握,从而实现资源最大程度上的优化配置。
本案例展示的不仅是技术方案,更重要的是通过合理运用各种功能来提升整体集成质量及效率。在接下来的部分,将进一步深入探讨各步骤中的具体技术实现细节,包括数据抓取、转换、批量写入等操作方法,以及相应代码示例以供参考。
使用轻易云数据集成平台从MySQL接口select获取并加工数据
在数据集成过程中,调用源系统的接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用MySQL接口select
获取并加工数据。我们将重点探讨元数据配置中的各个字段及其作用,并结合具体案例进行说明。
元数据配置解析
在本次集成方案中,我们需要从MySQL数据库中获取生产领料单的相关信息。以下是元数据配置的详细内容:
{
"api": "select",
"effect": "QUERY",
"method": "POST",
"number": "生产订单号",
"id": "领料单号",
"request": [
{
"field": "main_params",
"label": "主参数",
"type": "object",
"describe": "对应其它请求字段内SQL语句的主参数,必须一一对应。",
"value": "1",
"children": [
{
"field": "limit",
"label": "限制结果集返回的行数",
"type": "int",
"describe": "必要的参数!LIMIT 子句用于限制查询结果返回的行数。它指定了查询应该返回的最大行数。例如,LIMIT 10 表示查询结果只包含最多 10 行数据。这对于分页查询非常有用,可以在每次查询中返回一定数量的结果。",
"value": "{PAGINATION_PAGE_SIZE}"
},
{
"field": "offset",
"label": "偏移量",
"type": "int",
"describe": "OFFSET 子句用于指定查询结果的起始位置或偏移量。它表示查询应该从结果集的哪一行开始返回数据。例如,OFFSET 20 表示查询应该从结果集的第 21 行开始返回数据。结合 LIMIT 子句使用时,OFFSET 指定了查询结果的起始行数。",
"value": "{PAGINATION_START_ROW}"
}
]
}
],
...
}
主参数配置
主参数main_params
包含两个子字段:limit
和offset
。
- limit:用于限制查询结果返回的行数,是分页查询的重要参数。
- offset:用于指定查询结果的起始位置,与
limit
结合使用,实现分页功能。
这两个参数在实际请求中会被替换为具体值,以控制每次查询的数据范围。
主SQL语句
主SQL语句定义了具体的数据查询逻辑:
select b.dispatch_prefix as 生产订单号,
CONCAT(c.business_no,'_',a.id) as 领料单号,
date(a.update_time) as 日期,
(select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
a.part_no as 物料编号,
a.confirm_numb as 数量,
a.picking_remark as 备注,
a.create_name,
a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit :limit offset :offset
该SQL语句通过多表连接和条件过滤,从多个表中提取所需的数据字段,并通过limit
和offset
实现分页。
参数绑定与执行
在执行上述SQL语句之前,需要将动态字段:limit
和:offset
替换为具体值。这可以通过参数绑定的方法实现:
- 将动态字段
:limit
和:offset
替换为占位符(例如?
)。 - 在执行查询之前,将请求参数与占位符进行绑定。
这种方式提高了SQL语句的可读性和维护性,并确保了动态字段与请求参数的一一对应关系,从而保证了查询的准确性和安全性。
实际应用案例
假设我们需要获取第2页,每页10条记录的数据,可以设置以下请求参数:
{
main_params: {
limit: 10,
offset: 10 // 第二页,从第11条记录开始
}
}
执行后的SQL语句如下:
select b.dispatch_prefix as 生产订单号,
CONCAT(c.business_no,'_',a.id) as 领料单号,
date(a.update_time) as 日期,
(select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
a.part_no as 物料编号,
a.confirm_numb as 数量,
a.picking_remark as 备注,
a.create_name,
a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit ? offset ?
通过绑定参数,最终生成如下实际执行的SQL:
select b.dispatch_prefix as 生产订单号,
CONCAT(c.business_no,'_',a.id) as 领料单号,
date(a.update_time) as 日期,
(select prod_part_no from mes_dispatch_record_process d where b.dispatch_prefix=d.dispatch and d.company_code='GDTY' LIMIT 1) as 成品料号,
a.part_no as 物料编号,
a.confirm_numb as 数量,
a.picking_remark as 备注,
a.create_name,
a.uuid as sourceid
from wms_outstock_confirm_task_detail a
left join wms_outstock_confirm_main_task_detail b on a.connect_uuid=b.uuid
left join wms_outstock_confirm_main_task c on c.uuid=b.confirm_task_uuid
left join oms_order_bom f on b.bom_uuid=f.bom_uuid
where a.company_code='gdTY' and a.flag = '1' and a.is_success !='1'
and f.kingdee_FWL='0'
limit 10 offset 10
通过上述步骤,我们成功地调用了MySQL接口并获取了所需的数据。这种方法不仅简化了复杂的数据处理过程,还提高了系统集成效率。
数据集成与ETL转换:将源平台数据写入金蝶云星空API接口
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是一个详细的技术案例,展示如何使用轻易云数据集成平台完成这一过程。
API接口配置
首先,配置API接口以便与金蝶云星空进行交互。我们使用的是batchSave
接口,该接口支持批量保存操作,并且可以通过POST方法提交数据。
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"number": "FBillNo",
"id": "FID",
"name": "FBillNo",
"idCheck": true,
...
}
请求参数构建
在构建请求参数时,需要将源平台的数据字段映射到金蝶云星空API所需的字段。以下是主要字段的映射和转换规则:
- 单据编号 (FBillNo): 映射到源数据中的
领料单号
- 单据类型 (FBillType): 固定值
SCLLD01_SYS
- 日期 (FDate): 映射到源数据中的
日期
- 发料组织 (FStockOrgId): 固定值
T04
- 生产订单号 (FMOBillNO1): 映射到源数据中的
生产订单号
- 产品编码 (FMaterialID1): 映射到源数据中的
成品料号
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"value": "{{领料单号}}"
},
{
"field": "FDate",
"label": "日期",
"type": "string",
"value": "{{日期}}"
},
{
...
}
明细项配置
对于明细项(即物料清单),我们需要处理每一项物料的具体信息,包括物料编码、数量、仓库等。这些信息同样需要映射和转换:
- 产品编码 (FParentMaterialId): 映射到源数据中的
成品料号
- 物料编码 (FMaterialId): 映射到明细项中的
物料编号
- 申请数量 (FAppQty) 和 实发数量 (FActualQty): 映射并四舍五入处理明细项中的
数量
{
...
},
{
"field": "FEntity",
"label": "明细",
"type": "array",
...
}
子字段配置
在每个明细项中,还包含了多个子字段,这些子字段需要进一步映射和转换。例如:
- 系统源单内码 (FEntrySrcInterId) 和 系统源单分录内码 (FEntrySrcEnteryId): 使用查询函数从其他表中获取相应值
- 更新库存标志 (FStockFlag): 固定值
false
{
...
},
{
...
}
完整请求示例
以下是一个完整的请求示例,展示了如何将所有配置整合在一起,以便发送给金蝶云星空API:
{
...
{
{
...
},
{
{
...
}
}
}
}
通过上述步骤,我们实现了从源平台到金蝶云星空API接口的数据ETL转换,并成功将数据写入目标平台。这一过程充分利用了轻易云数据集成平台的强大功能,实现了高效、准确的数据集成。