### 案例分享:拆卸单(父项)金蝶=》马帮(待写入测试)
在本技术案例中,我们将详细介绍如何通过轻易云数据集成平台,实现金蝶云星空的数据无缝对接到马帮系统,具体涉及拆卸单(父项)的集成。本次方案主要聚焦于以下几个关键点:
1. **定时可靠的抓取金蝶云星空接口数据**
我们采用了定期调度机制,通过调用`executeBillQuery` API接口,从金蝶云星空精准获取最新的拆卸单信息。为了避免漏单现象产生,每次检索都会记录上一次成功获取的位置,并进行增量式的数据提取。
2. **处理分页和限流问题**
金蝶云星空API具有分页限制,为确保稳定性和高效性,我们在设计流程时加入了智能分页读取策略,同时对限流情况进行了充分考量与优化,保证了大规模数据抓取的平稳运行。
3. **大量数据快速写入到马帮**
在完成从金蝶云星空的数据抽取后,将批量整理后的拆卸单信息通过调用马帮提供的`warehouse-do-add-storage-out` API接口,高效地导入到目标系统。这一步骤特别注重传输速度和数据完整性,以满足商业需求中的及时更新要求。
4. **应对数据格式差异与映射挑战**
由于两个系统间的数据结构存在显著差异,本方案在中间环节实施了自定义字段映射逻辑,对源数据进行必要转换,使其符合目标API接受标准。这种灵活且准确的数据映射保障了跨系统整合的一致性。
5. **异常处理与错误重试机制**
数据集成过程中不可避免会遇到异常状况,如网络不稳定或API响应失败等。为此我们设置了一套详细的错误捕捉和重试机制,一旦出现问题即刻报警并自动启动重试程序,以最大化提高整体操作的可靠性。此外,还引入多级日志记录功能,用以实时监控各个环节,便于事后审计及问题追溯。
这只是技术实现的一部分开篇说明,在接下来的部分里,我们将深入展示完整流程配置步骤及实际操作细节。
![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台的生命周期管理中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用金蝶云星空接口`executeBillQuery`来获取并加工数据,以实现拆卸单(父项)的数据集成。
#### 接口配置与请求参数
首先,我们需要配置元数据以便正确调用金蝶云星空的API。以下是我们使用的元数据配置:
```json
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
{"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
{"field":"FEE","label":"费用","type":"string","value":"FEE"},
{"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
{"field":"FNote","label":"备注","type":"string","value":"FNote"},
{"field":...}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field":...}
]
}
```
#### 请求示例
为了获取拆卸单的数据,我们需要构建一个POST请求,包含必要的字段和过滤条件。以下是一个示例请求体:
```json
{
"FormId": "STK_AssembledApp",
"FieldKeys": [
"FID",
"FBillNo",
...
],
"FilterString": "FApproveDate>='2023-01-01' and FAFFAIRTYPE = 'Dassembly'",
...
}
```
#### 数据清洗与转换
在接收到来自金蝶云星空的数据后,我们需要对其进行清洗和转换,以确保数据符合目标系统(如马帮)的要求。
1. **字段映射**:将金蝶返回的数据字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的订单编号。
2. **数据格式转换**:根据目标系统的要求,对日期、数字等字段进行格式转换。例如,将日期格式从`YYYY-MM-DD`转换为`MM/DD/YYYY`。
3. **数据过滤**:根据业务需求,过滤掉不必要的数据。例如,只保留状态为“已审核”的记录。
#### 实际案例
假设我们需要将金蝶云星空中的拆卸单(父项)数据写入到马帮系统中,以下是一个实际操作步骤:
1. **调用API**:使用上述配置和请求体,通过轻易云平台调用金蝶云星空的`executeBillQuery`接口。
2. **处理响应**:解析API响应,提取所需的数据字段,并进行清洗和转换。
3. **写入目标系统**:将处理后的数据通过轻易云平台写入到马帮系统中。
```python
import requests
import json
# 构建请求体
payload = {
...
}
# 调用API
response = requests.post("https://api.kingdee.com/executeBillQuery", data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换
cleaned_data = []
for record in data['Result']:
cleaned_record = {
'订单编号': record['FBillNo'],
'日期': record['FDate'],
...
}
cleaned_data.append(cleaned_record)
# 写入目标系统(例如马帮)
else:
print(f"Error: {response.status_code}")
```
通过以上步骤,我们可以高效地实现从金蝶云星空到马帮系统的数据集成。
![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入马帮API接口
在数据集成生命周期的第二阶段,我们需要将源平台的数据进行ETL转换,使其符合目标平台(马帮API接口)的要求,并最终写入目标平台。以下是一个详细的技术案例,展示如何利用轻易云数据集成平台配置元数据,实现这一过程。
#### 1. 配置元数据
首先,我们需要根据提供的元数据配置文件,了解目标API接口的要求。以下是我们要处理的元数据配置:
```json
{
"api": "warehouse-do-add-storage-out",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "goods_list",
"header": ["FBillNo", "FNote", "FStockID_FNumber"],
"body": ["FMaterialID_FNumber", "FQty"]
},
"request": [
{
"field": "warehouseName",
"label": "仓库名称",
"type": "string",
"value": "_findCollection find name from edd9129b-4566-36f5-b5f0-84e12a4414fd where finance_code={FStockID_FNumber}"
},
{
"field": "employeeName",
"label": "员工名称",
"type": "string",
"value": "金蝶单据同步"
},
{
"field": "remark",
"label": "备注",
"type": "string",
"value": "{FNote}"
},
{
"field": "data",
...
```
#### 2. 数据请求与清洗
在这个阶段,我们从源系统(金蝶)请求相关数据,并对其进行清洗。假设我们从金蝶系统获取到如下原始数据:
```json
{
...
}
```
#### 3. 数据转换
接下来,我们根据马帮API接口的要求,对数据进行ETL转换。具体步骤如下:
1. **提取并映射字段**:
- 从金蝶系统中提取字段 `FBillNo`, `FNote`, `FStockID_FNumber`, `FMaterialID_FNumber` 和 `FQty`。
- 映射这些字段到马帮API所需的字段。
2. **生成请求体**:
- 根据元数据配置中的`operation`部分,将提取到的数据重新组织为马帮API所需的格式。
- 例如,将 `FBillNo` 映射为请求头中的 `FBillNo`,将 `goods_list` 中的 `FMaterialID_FNumber` 和 `FQty` 分别映射为 `stockSku` 和 `quantity`。
以下是生成的请求体示例:
```json
{
...
}
```
#### 4. 写入目标平台
最后一步是将转换后的数据通过HTTP POST方法发送到马帮API接口。我们使用轻易云的数据集成平台提供的HTTP客户端功能来实现这一点。
```python
import requests
url = 'https://api.mabang.com/warehouse-do-add-storage-out'
headers = {'Content-Type': 'application/json'}
data = {
...
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print("Data successfully written to MaBang API")
else:
print(f"Failed to write data: {response.status_code}")
```
#### 小结
通过以上步骤,我们成功地将源平台(金蝶)的数据经过ETL转换后,写入到了目标平台(马帮)。在整个过程中,轻易云数据集成平台提供了全透明可视化操作界面和实时监控功能,使得每个环节都清晰易懂,大大提升了业务透明度和效率。
![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)