### MySQL数据集成到金蝶云星空案例分享:SD生产订单新增深圳天一-好
在现代企业的数据管理中,如何高效地实现MySQL数据库与ERP系统之间的数据流通是一个关键性课题。本次案例将重点探讨通过轻易云数据集成平台,将MySQL数据库中的生产订单数据可靠地集成到金蝶云星空(Kingdee Cloud Cosmic)内部的具体技术实现。
本方案命名为"SD生产订单新增深圳天一-好",其目标是在保障数据完整性和实时性的前提下,实现大规模的高吞吐量数据写入。首先,我们需要解决从MySQL获取数据并进行及时、准确处理的问题,尤其是接口调用的分页、限流以及异常处理机制等技术细节。
#### 核心要点解析
1. **API接口调用方法**:
- MySQL侧使用`select` API提取所需的生产订单数据。
- 金蝶云星空采用`batchSave` API批量写入接收到的数据。
2. **高效的数据抓取与传输**:
通过定时任务设定可靠抓取MySQL接口中的新生成的生产订单信息。采用分页查询方式确保大量数据不会一次性过载,同时利用限流机制避免因瞬间压力导致系统响应缓慢或崩溃。
3. **自定义转换逻辑与格式适配**:
在实际操作中,源端(MySQL)和目的端(金蝶云星空)之间的数据结构通常存在差异。我们通过自定义转换逻辑,将不同来源字段一致化,并根据业务需求动态调整映射关系以满足特定场景要求,实现无缝对接。
4. **实时监控与异常处理**
结合轻易云平台提供的集中监控和告警功能,全程追踪每个集成任务状态,一旦发现问题立即触发预设应对策略,如错误重试或通知相关负责人,以减少因突发事件导致的数据丢失风险,从而最大化保证业务连续性。
以上,通过多个环节精细化配置及调优,使得整个流程不仅透明可见且具有高度灵活性,为后续深入优化提供了坚实基础。在继续探讨具体实施步骤之前,我们先来了解整体设计思路以及可能遇到的一些挑战...
![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/D8.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"
}
]
}
],
...
}
```
该配置定义了一个`select`类型的API调用,主要用于查询操作。请求方法为`POST`,并且指定了查询参数如`limit`和`offset`,以控制返回结果的数量和偏移量。
#### 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))
else
CONCAT('HJ', CAST(i.id AS CHAR))
end as 生产订单号,
a.mold_no AS 计划跟踪号,
a.part_no AS 成品编号,
if(weekday(i.create_time)=6,date_sub(i.create_time, interval 1 day),i.create_time) AS 计划开工时间,
if(weekday(i.create_time)=6,date_sub(i.create_time, interval 1 day),i.create_time) 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_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 TIMESTAMPDIFF(MINUTE,i.create_time,now())>=120) OR i.outsourced_type = '1')
and i.is_success !='1'
limit :limit offset :offset
```
该查询语句从多个表中联接获取数据,并根据特定条件进行筛选。特别地,它使用了条件判断、日期处理等高级SQL功能,以确保返回的数据符合业务需求。
#### 请求参数设置
在请求参数部分,我们定义了两个主要参数:`limit`和`offset`。这些参数将被传递到SQL查询中,以控制返回结果的分页:
```json
{
...
{
"field": "main_params",
...
{
"field": ":limit",
...
},
{
...
":offset"
}
}
}
```
通过这种方式,我们可以灵活地控制每次查询返回的数据量,从而有效管理大规模数据集的处理。
#### 数据请求与清洗
在实际操作中,调用MySQL接口获取数据后,我们通常需要对原始数据进行清洗。这一步骤包括但不限于:
- **去除无效或重复记录**:确保每条记录都是唯一且有效的。
- **格式转换**:将日期、数字等字段转换为标准格式。
- **字段映射**:根据业务需求,将数据库字段映射到目标系统所需的字段。
例如,在上述SQL查询中,我们已经通过条件判断和日期处理对原始数据进行了初步清洗。
#### 数据转换与写入
在完成数据请求与清洗后,下一步是将清洗后的数据转换并写入目标系统。这一步骤通常涉及以下操作:
- **字段映射**:将源系统中的字段映射到目标系统中的对应字段。
- **格式转换**:确保所有字段的数据类型和格式符合目标系统的要求。
- **批量写入**:将处理后的数据批量写入目标系统,以提高效率。
通过轻易云平台提供的全异步、多异构系统支持,我们可以轻松实现不同系统间的数据无缝对接,从而确保整个数据集成过程高效、可靠。
综上所述,通过合理配置元数据并利用轻易云平台强大的功能,我们可以高效地完成从MySQL接口获取并加工数据的任务,为后续的数据转换与写入打下坚实基础。
![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image)
### 将源平台数据转换为金蝶云星空API接口格式并写入目标平台
在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,最终转为金蝶云星空API接口所能够接收的格式,并写入目标平台。
#### API接口配置
根据提供的元数据配置,我们需要调用金蝶云星空的`batchSave` API接口。该接口采用POST请求方法,支持批量保存生产订单数据。以下是具体的请求字段及其配置:
1. **FBillNo(单据编号)**:
- 类型:string
- 描述:单据编号
- 值:`{{生产订单号}}`
2. **FBillType(单据类型)**:
- 类型:string
- 描述:单据类型
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`SCDD09_SYS`
3. **Fdate(单据日期)**:
- 类型:string
- 描述:单据日期
- 值:`{{计划开工时间}}`
4. **FPrdOrgId(生产组织)**:
- 类型:string
- 描述:生产组织
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:
```sql
_function
case '{{供应组织}}'
when 'T01.01' then 'T01.06'
when 'T04' then 'T04'
else ''
end
```
5. **FTreeEntity(明细)**:
明细字段是一个数组,包含多个子项。每个子项的具体字段如下:
1. **FMaterialId(物料编码)**:
- 类型:string
- 描述:子项物料编码
- 解析器:`ConvertObjectParser`
- 参数:`FNumber`
- 值:`{{成品编号}}`
2. **Fqty(数量)**:
- 类型:string
- 描述:数量
- 值:`{{生产数量}}`
3. **FProductType(产品类型)**:
- 类型:string
- 描述:产品类型
- 值:1
4. **FPlanFinishDate(计划结束时间)**:
- 类型:string
- 描述:计划结束时间
- 值:`{{计划完工时间}}`
5. **FPlanStartDate(计划开工时间)**:
- 类型:string
- 描述:计划开工时间
- 值:`{{计划开工时间}}`
6. **FMTONO(计划跟踪号)**:
- 类型:string
- 描述:计划跟踪号
- 值:`{{计划跟踪号}}`
7. **FWorkShopID(生产车间)**:
- 类型:string
- 描述:生产车间
- 解析器:`ConvertObjectParser`
- 参数:
```sql
_function
case '{{供应组织}}'
when 'T01.01' then '13051101'
when 'T04' then 'TY880000'
else ''
end
```
#### 其他请求参数
除了上述主要字段外,还需要配置一些其他请求参数:
- **FormId(业务对象表单Id)**:
- 类型: string
- 描述: 业务对象表单Id
- 值: `PRD_MO`
- **Operation(执行的操作)**:
- 类型: string
- 描述: 执行的操作
- 值: `BatchSave`
- **IsAutoSubmitAndAudit(提交并审核)**:
- 类型: bool
- 描述: 提交并审核
- 值: false
- **IsVerifyBaseDataField(验证基础资料)**:
– 类型: bool
– 描述: 验证基础资料
– 值: true
#### 数据转换与写入流程
1. **提取数据**:
从源平台提取所需的数据,包括生产订单号、计划开工时间、供应组织等。
2. **数据清洗与转换**:
使用轻易云的数据清洗功能,将提取的数据进行清洗和格式化。例如,将供应组织代码根据规则转换为目标平台所需的代码。
3. **构建请求体**:
根据上述API配置,将清洗后的数据映射到相应的字段中,构建符合金蝶云星空API要求的请求体。
4. **发送请求并处理响应**:
使用POST方法调用金蝶云星空的batchSave API,将构建好的请求体发送到目标平台,并处理返回结果。
通过上述步骤,我们可以实现将源平台的数据成功转换并写入到金蝶云星空系统中。这不仅确保了数据的一致性和准确性,也极大地提升了业务流程的自动化程度。
![金蝶与外部系统打通接口](https://pic.qeasy.cloud/T7.png~tplv-syqr462i7n-qeasy.image)