金蝶云星空数据集成到旺店通·企业奇门的案例分享:组装父项入库
在实际业务中,如何实现金蝶云星空与旺店通·企业奇门之间的数据对接,是许多企业面临的一大挑战。本文将以“组装父项入库”为方案名称,深入探讨其实现过程,并重点关注关键技术点。
确保数据不漏单
在进行系统对接时,第一步是确保从金蝶云星空获取的数据完整且无遗漏。为此,我们利用了executeBillQuery
接口,这个API提供了强大的查询功能,可以精确抓取所需的所有订单数据。这一过程中需要注意分页处理和限流问题,以保证批量数据抓取的效率和稳定性。
{
"method": "POST",
"url": "https://api.kingdee.com/kdcloud/executeBillQuery",
"headers": {
"Content-Type": "application/json"
},
"body": {
//请求参数
}
}
数据格式差异处理及快速写入
金蝶云星空与旺店通·企业奇门的数据格式存在一定差异,为了平滑转换,我们设计了一套定制化的数据映射逻辑。同时,为确保大量数据能快速、准确地写入到旺店通·企业奇门系统中,通过调用wdt.stockin.order.push
接口推进至目标系统。
{
"method": "POST",
"url": "/openapi/v1/stockin/order/push",
"headers": {
// 请求头信息
},
"body":{
// 请求体内容,包括转换后的批量订单数据等
}
}
以上示例展示了整体流程中的两个核心环节——从金蝶云星空提取有价值的数据,并通过适当的转化逻辑推动到目标平台。在后续部分,将进一步揭示如何应对更加复杂的情况,例如异常处理和错误重试机制,以及实时监控和日志记录等细节工作的具体实现方法。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是一个典型的元数据配置示例:
{
"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":"","value":""},
{"field":"","label":"","type":"","value":""}
],
"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":"","describe":"","value":"",
},
{
field: 'FilterString',
label: '过滤条件',
type: 'string',
describe: '示例写法 FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=',
value: 'FApproveDate>=\'{{LAST_SYNC_TIME|datetime}}\' and FAFFAIRTYPE = \'Assembly\' and FStockID.FNumber <>\'39\''
},
{
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'
},
{
field:'FBillNo',
label:'FBillNo',
type:'string'
}
]
}
请求参数详解
- API与方法:
api
字段指定了要调用的接口名称executeBillQuery
,而method
字段则指定了HTTP请求方法为POST。 - 分页设置:通过
pagination
字段设置每页的数据量为500条。 - 请求字段:在
request
数组中定义了需要从源系统获取的数据字段,如实体主键(FID)、单据编号(FBillNo)、单据状态(FDocumentStatus)等。这些字段将用于后续的数据处理和分析。 - 其他请求参数:
Limit
和StartRow
用于分页控制。FilterString
用于定义过滤条件,以确保只获取符合特定条件的数据。例如,过滤条件可以设置为“审核日期大于等于上次同步时间,并且事务类型为‘Assembly’,且仓库编号不等于‘39’”。FieldKeys
用于指定需要查询的字段集合。FormId
指定业务对象表单ID,这里为“STK_AssembledApp”。
数据请求与清洗
在完成元数据配置后,我们可以发起HTTP POST请求来调用金蝶云星空的接口。以下是一个示例请求体:
{
"FormId": "STK_AssembledApp",
"FieldKeys": ["FID", ...],
...
}
通过这个请求,我们能够从源系统中获取到所需的数据。接下来,需要对这些数据进行清洗和转换,以便后续的数据处理和写入。
数据转换与写入
在清洗过程中,可以根据业务需求对数据进行各种转换操作,例如:
- 格式化日期字段
- 转换货币单位
- 合并或拆分字段
完成清洗和转换后,将处理好的数据写入目标系统,确保数据的一致性和完整性。
实时监控与错误处理
在整个过程中,轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。如果出现错误,可以及时进行排查和修复,确保数据集成过程顺利进行。
通过上述步骤,我们成功实现了从金蝶云星空获取并加工数据,为后续的数据处理奠定了基础。这一过程不仅提高了业务透明度,还极大提升了工作效率。
使用轻易云数据集成平台将源数据转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。
API接口元数据配置
在进行ETL转换时,首先需要理解目标API接口的元数据配置。以下是旺店通·企业奇门API接口wdt.stockin.order.push
的具体元数据配置:
{
"api": "wdt.stockin.order.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{
"field": "outer_no",
"label": "外部单号",
"type": "string",
"value": "{FBillNo}"
},
{
"field": "warehouse_no",
"label": "仓库编号",
"type": "string",
"value": "{FStockID_FNumber}"
},
{
"field": "remark",
"label": "备注",
"type": "string",
"value": "组装单父项入库"
},
{
"field": "is_check",
"label": "是否审核",
"type": "string",
"value": "1"
},
{
"field": "goods_list",
"label": "货品明细节点",
"type": "array",
...
数据请求与清洗
首先,我们需要从源系统中提取原始数据,并进行必要的清洗操作。假设我们从ERP系统中获取了如下原始数据:
{
FBillNo: 'SO20231001',
FStockID_FNumber: 'WH001',
FEntity: [
{
FMaterialID_FNumber: 'P001',
FQty: 100,
FYXQDate: '2023-10-01',
FSCDate: '2024-10-01'
},
...
]
}
数据转换
接下来,我们需要将上述原始数据转换为目标API接口所需的格式。根据元数据配置,我们可以使用轻易云的数据映射功能,将字段一一对应:
outer_no
对应{FBillNo}
warehouse_no
对应{FStockID_FNumber}
remark
固定值为组装单父项入库
is_check
固定值为1
-
goods_list
对应{FEntity}
,其中每个子字段也需要进行相应的映射:spec_no
对应{FMaterialID_FNumber}
stockin_num
对应{FQty}
production_date
对应{FYXQDate}
expire_date
对应{FSCDate}
通过轻易云的数据转换工具,我们可以生成如下目标格式的数据:
{
outer_no: 'SO20231001',
warehouse_no: 'WH001',
remark: '组装单父项入库',
is_check: '1',
goods_list: [
{
spec_no: 'P001',
stockin_num: 100,
production_date: '2023-10-01',
expire_date: '2024-10-01'
},
...
]
}
数据写入
最后一步是将转换后的数据通过POST请求写入到旺店通·企业奇门API接口。我们使用轻易云提供的HTTP请求功能,配置好目标URL和请求头信息,并将上述JSON数据作为请求体发送出去。
import requests
url = 'https://api.wangdian.cn/openapi2/stockin_order_push.php'
headers = {'Content-Type': 'application/json'}
data = {
# 转换后的JSON数据
}
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
print('Data successfully written to Wangdian API')
else:
print('Failed to write data:', response.text)
通过以上步骤,我们成功地完成了从源系统到目标系统的数据ETL过程,实现了不同系统间的数据无缝对接。这不仅提高了业务流程的自动化程度,也确保了数据处理过程中的准确性和一致性。