金蝶组装拆卸成品出库对接聚水潭技术案例分享
在企业资源规划系统与电商ERP平台的对接中,数据的高效流转和可靠处理是至关重要的。本文将详细解析如何借助轻易云数据集成平台,将金蝶云星空中的组装拆卸成品出库数据无缝对接至聚水潭,从而实现业务流程的自动化。
本次集成方案以executeBillQuery API从金蝶云星空提取相关订单信息,并通过优化后的批量写入机制,将数据高效且准确地上传到聚水潭系统中的 /open/jushuitan/otherinout/upload 接口。在这个过程中,我们利用了以下关键特性:
- 集中监控和告警系统: 实时跟踪并展示每个任务节点的数据处理状态,确保问题能被即刻发现和解决。
- 自定义数据转换逻辑: 针对不同系统之间的数据格式差异,通过灵活配置转换规则,实现完美适配。
- 分页与限流策略: 为了应对API接口请求频率限制,我们采用了智能分页机制,提高了抓取效率并避免因限流导致的数据缺失。
此外,在实施过程中,还需考虑在接口调用过程中的异常处理及重试机制,例如如何面对网络波动、超时等意外情况进行补偿,以保证整个集成链路稳定运行。这些细节都将在后续文章中进行具体说明。
初步看来,高吞吐量的数据写入能力显著提高了我们的响应速度,而定制化的数据映射功能则让复杂多变的业务需求得到了合理支持。通过这些技术手段,我们不仅成功搭建起了一条健壮、高效的信息通道,还为未来可能出现的问题提供了充足的预防措施和解决方案。
以上便是此次“金蝶组装拆卸成品出库对接聚水潭”项目集成方案开端部分核心要点,下文我们将深入探讨每一个环节所面临的挑战及其对应解决策略。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取和加工数据。
接口调用配置
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery
接口。以下是关键配置项:
- API:
executeBillQuery
- Method:
POST
- Pagination: 支持分页,每页500条记录
- ID Check: 启用ID检查
请求参数配置
请求参数包括实体主键、分录主键、单据编号等多个字段。以下是具体的请求参数配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FEntity_FEntryID","label":"分录主键","type":"string","value":"FEntity_FEntryID"},
{"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_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
{"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
{"field":"FEE","label":"费用","type": "string", "value": "FEE"}
],
"otherRequest":[
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
{"field": FilterString, label: 过滤条件, type: string, describe: 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=, value: FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FAffairType='Dassembly' and FStockOrgId.FNumber='101'},
{ field: FieldKeys, label: 需查询的字段key集合, type: array, describe: 金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber, parser:{ name:ArrayToString, params:,}},
{ field: FormId, label: 业务对象表单Id, type:string, describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder", value:"STK_AssembledApp"}
]
}
数据请求与清洗
在调用接口时,我们需要特别注意以下几点:
- 分页处理:由于每次请求最多返回500条记录,因此需要实现分页逻辑,确保所有数据都能被完整获取。
- 过滤条件:通过
FilterString
字段设置过滤条件,例如根据上次同步时间和事务类型进行过滤。 - 字段选择:使用
FieldKeys
字段指定需要查询的数据字段,确保只获取必要的数据。
示例代码如下:
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'STK_AssembledApp',
'FieldKeys': 'FID,FEntity_FEntryID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate',
'FilterString': f"FApproveDate>='{last_sync_time}' and FAffairType='Dassembly' and FStockOrgId.FNumber='101'",
'Limit': 500,
'StartRow': start_row
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
数据转换与写入
获取到数据后,需要对其进行清洗和转换,以便写入目标系统。常见的数据清洗操作包括:
- 数据类型转换:将字符串类型的数据转换为日期、数字等合适的类型。
- 缺失值处理:填补或删除缺失值,确保数据完整性。
- 格式化处理:根据目标系统要求,对数据进行格式化处理。
示例代码如下:
import pandas as pd
# 假设 data 是从 API 获取到的数据列表
df = pd.DataFrame(data)
# 数据类型转换
df['FDate'] = pd.to_datetime(df['FDate'])
# 缺失值处理
df.fillna(0, inplace=True)
# 格式化处理
df['FBillNo'] = df['FBillNo'].str.upper()
# 写入目标系统(例如数据库)
df.to_sql('target_table', con=database_connection)
通过上述步骤,我们可以高效地调用金蝶云星空接口获取所需数据,并对其进行清洗和转换,为后续的数据写入和使用打下坚实基础。这一过程不仅提高了数据集成效率,还保证了数据质量和一致性。
使用轻易云数据集成平台实现金蝶组装拆卸成品出库对接聚水潭API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细介绍如何利用轻易云数据集成平台,将金蝶系统中的组装拆卸成品出库数据转换为聚水潭API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
在进行ETL转换之前,首先需要理解元数据配置。以下是一个典型的元数据配置示例:
{
"api": "/open/jushuitan/otherinout/upload",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "FBillNo",
"bodyName": "items",
"bodySum": ["FQty"],
"header": ["FStockID", "FBillNo"],
"body": ["FQty", "FMaterialID_FNumber"]
},
"request": [
{"field": "is_confirm", "label": "是否自动确认单据", "type": "string", "describe": "是否自动确认单据", "value":"1"},
{"field": "wms_co_id", "label": "分仓编号", "type": "string", "describe": "分仓编号",
"value":"{FStockID}",
"mapping":"636a1b6595944d1d4c3c871b",
"mappingDirection":"positive"},
{"field": "type",
"label":"出入库类型: in是入库 out是出库",
"type":"string",
"describe":"出入库类型: in是入库 out是出库",
"value":"out"},
{"field":"external_id",
"label":"外部单号",
"type":"string",
"describe":"外部单号",
"value":"{FBillNo}"},
{"field":"warehouse",
"label":"主仓=1,销退仓=2,进货仓=3,次品仓=4",
"type":"string",
"describe":"主仓=1,销退仓=2,进货仓=3,次品仓=4",
"value":"1"},
{"field":"drp_co_name",
"label":"出库类型",
"type":"string",
"describe":"出库类型",
"value":"组装拆卸成品出库单"},
{"field":"items",
"label":"商品列表",
"type":"array",
"describe":"商品列表",
"children":[
{"field":"sku_id","label":"商品编码","type":"string","describe":"商品编码","value":
"{{items.FMaterialID_FNumber}}","parent":
items},
{"field":
qty,"label":
数量,"type":
string,"describe":
数量,"value":
{{items.FQty}},"parent":
items}
]
}
]
}
数据请求与清洗
在ETL过程中,首先需要从源系统(金蝶)请求数据并进行清洗。假设我们已经成功获取了金蝶系统中的组装拆卸成品出库数据,并且这些数据已经过初步清洗,现在我们需要将这些数据转换为聚水潭API接口所能接收的格式。
数据转换与写入
根据元数据配置,我们需要将金蝶系统的数据字段映射到聚水潭API接口所需的字段。以下是具体的字段映射和转换逻辑:
- is_confirm:固定值为“1”,表示自动确认单据。
- wms_co_id:映射自金蝶系统的
FStockID
字段。 - type:固定值为“out”,表示出库。
- external_id:映射自金蝶系统的
FBillNo
字段。 - warehouse:固定值为“1”,表示主仓。
- drp_co_name:固定值为“组装拆卸成品出库单”。
- items:包含商品列表,其中每个商品项包括:
- sku_id:映射自金蝶系统的
FMaterialID_FNumber
字段。 - qty:映射自金蝶系统的
FQty
字段。
- sku_id:映射自金蝶系统的
通过轻易云平台,我们可以使用可视化界面进行上述字段映射和转换配置。以下是一个示例代码片段,用于展示如何通过API接口将转换后的数据写入聚水潭:
import requests
import json
# 聚水潭API URL
url = 'https://api.jushuitan.com/open/jushuitan/otherinout/upload'
# 构建请求头
headers = {
'Content-Type': 'application/json',
}
# 构建请求体
payload = {
'is_confirm': '1',
'wms_co_id': source_data['FStockID'],
'type': 'out',
'external_id': source_data['FBillNo'],
'warehouse': '1',
'drp_co_name': '组装拆卸成品出库单',
'items': [
{
'sku_id': item['FMaterialID_FNumber'],
'qty': item['FQty']
} for item in source_data['items']
]
}
# 将请求体转为JSON格式
data = json.dumps(payload)
# 发起POST请求
response = requests.post(url, headers=headers, data=data)
# 检查响应状态码
if response.status_code == 200:
print('Data successfully uploaded to Jushuitan.')
else:
print(f'Failed to upload data. Status code: {response.status_code}')
总结
通过上述步骤,我们成功地将金蝶系统中的组装拆卸成品出库数据转换为聚水潭API接口所能接收的格式,并通过POST请求将其写入目标平台。在实际应用中,可以根据业务需求进一步优化和调整元数据配置,以实现更复杂的数据集成场景。