旺店通·旗舰奇门数据集成到金蝶云星空的技术实现
在本案例中,我们聚焦于“其他出库对接”方案,该方案旨在高效、可靠地将旺店通·旗舰奇门的数据集成至金蝶云星空。为此,采用了多种先进的技术手段,以确保数据无缝对接和系统稳定运行。
首先,通过调用旺店通·旗舰奇门提供的API接口wdt.wms.stockout.otherquery.querywithdetail
抓取必要的数据。在这个过程中,需要特别处理分页和限流问题,以避免大批量请求导致接口超时或限制。同时,为了保证及时性,我们设计了定时任务来按预设频率从接口抓取最新数据,这些行为都将在轻易云平台上进行配置,并设置相关监控与日志记录功能以实时追踪过程中的异常情况。
在数据获取之后,面临的挑战之一是如何处理两者系统之间的数据格式差异。为了应对这一问题,在进入写入步骤前通过自定义映射规则标准化数据。这一步骤极为关键,因为它直接影响后续写入环节的成功与否。
然后,使用金蝶云星空提供的API接口batchSave
将规范化后的大量数据快速、高效地导入到目标系统中。这里同样设置错误重试机制,一旦出现意外故障,可以自动重新尝试提交,而不需要人工介入,从而提升整体流程的鲁棒性和可靠性。
以上就是我们对于“其他出库对接”方案初步技术实现的一些说明,具体细节还包括更多针对性能优化,每个环节独立监控等高级特性的应用,将在后续展开详述。
调用旺店通·旗舰奇门接口获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口wdt.wms.stockout.otherquery.querywithdetail
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置调用接口的元数据。根据提供的metadata,我们可以看到该接口使用POST方法,并且需要传递分页参数和业务参数。
{
"api": "wdt.wms.stockout.otherquery.querywithdetail",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"idCheck": true,
"beatFlat": ["detail_list"],
"request": [
{
"field": "pager",
"label": "分页参数",
"type": "object",
"children": [
{
"field": "page_size",
"label": "分页大小",
"type": "string",
"value": "50",
"parent": "pager"
},
{
"field": "page_no",
"label": "页号",
"type": "string",
"value": "1",
"parent": "pager"
}
]
},
{
"field": "params",
...
}
]
}
分页参数设置
分页参数是为了控制每次请求返回的数据量和页码。在本例中,我们设置每页返回50条记录,初始页码为1。
{
field: 'pager',
label: '分页参数',
type: 'object',
children: [
{ field: 'page_size', label: '分页大小', type: 'string', value: '50', parent: 'pager' },
{ field: 'page_no', label: '页号', type: 'string', value: '1', parent: 'pager' }
]
}
业务参数设置
业务参数包含了时间类型、开始时间、结束时间、仓库编号、源单号、出库单号、业务单据状态等信息。这些参数用于过滤和查询特定条件下的出库单信息。
{
field: 'params',
label: '业务参数',
type: 'object',
children: [
{ field: 'time_type', label: '时间类型', type: 'string', describe: '1:发货时间;2:创建时间;3:最后修改时间不传默认为发货时间', parent: 'params' },
{ field: 'start_time', label: '开始时间', type: 'string', describe: '起始时间,若无出库单号或源单号,则为必填。', value:'{{LAST_SYNC_TIME|datetime}}', parent:'params' },
{ field:'end_time', label:'结束时间', type:'string', describe:'结束时间,上同开始时间.', value:'{{CURRENT_TIME|datetime}}', parent:'params' },
...
{ field:'status', label:'业务单据状态', type:'string', describe:'其他出库业务单据状态:1:编辑中;10:待审核;20:已审核;60:部分出库;65:待结算;70:已完成;80:已取消','value':'70','parent':'params'}
]
}
数据请求与清洗
在配置好请求参数后,通过轻易云平台发起API请求,获取到原始的出库单数据。由于该平台支持全异步操作,可以有效提升数据处理效率。
response = requests.post(api_url, json=request_payload)
data = response.json()
获取到的数据通常是嵌套结构,需要进行初步清洗和转换。例如,将detail_list
字段平铺展开,以便后续的数据处理和分析。
def flatten_detail_list(data):
for record in data:
details = record.pop('detail_list')
for detail in details:
flat_record = {**record, **detail}
yield flat_record
cleaned_data = list(flatten_detail_list(data['data']))
数据转换与写入
清洗后的数据需要进一步转换为目标系统所需的格式,并写入目标数据库或系统。在这个过程中,可以利用轻易云平台提供的可视化工具进行映射和转换操作,确保数据准确无误地传输到目标系统。
# Example transformation function
def transform_data(record):
return {
'order_id': record['order_no'],
...
}
transformed_data = [transform_data(record) for record in cleaned_data]
# Write to target system/database
write_to_target_system(transformed_data)
通过上述步骤,我们成功地调用了旺店通·旗舰奇门接口wdt.wms.stockout.otherquery.querywithdetail
,并对获取的数据进行了清洗和初步加工,为后续的数据处理奠定了基础。这一过程充分展示了轻易云数据集成平台在异构系统集成中的强大能力。
轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空API接口
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。
数据请求与清洗
在进入ETL转换之前,首先需要完成数据的请求与清洗。这一步骤确保了源数据的准确性和完整性,为后续的转换和写入奠定基础。
数据转换
在轻易云数据集成平台上,我们可以通过配置元数据来实现复杂的数据转换。以下是一个详细的元数据配置示例,用于将其他出库单的数据转换为金蝶云星空API接口所需的格式。
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"groupCalculate": {
"headerGroup": ["order_no", "consign_time", "detail_list_spec_code"],
"bodyGroup": ["detail_list_spec_no", "warehouse_no", "detail_list_defect"],
"bodyName": "detail_list",
"targetBodyName": "FEntity",
"bodyMaxLine": 50,
"calculate": {
"detail_list_goods_count": "$sum"
}
},
"request": [
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{order_no}_{detail_list_spec_code}"
},
{
...
},
{
...
}
],
...
}
数据写入
一旦数据被成功转换为目标格式,下一步就是通过金蝶云星空API接口将其写入目标系统。以下是一个具体的API调用示例:
{
...
{
field: 'FormId',
label: '业务对象表单Id',
type: 'string',
describe: '必须填写金蝶的表单ID如:PUR_PurchaseOrder',
value: 'STK_MisDelivery'
},
{
field: 'IsAutoSubmitAndAudit',
label: '提交并审核',
type: 'bool',
value: false
},
{
field: 'IsVerifyBaseDataField',
label: '验证基础资料',
type: 'bool',
describe: '是否验证所有的基础资料有效性,布尔类,默认false(非必录)',
value: false
},
{
field: 'Operation',
label: '执行的操作',
type: 'string',
value: 'Save'
}
}
实际案例分析
假设我们有一个其他出库单,需要将其转换并写入金蝶云星空系统。以下是具体步骤:
- 提取源数据:从源系统提取其他出库单的数据,包括订单号、发货时间、物料编码等。
- 清洗与验证:确保所有字段符合预期格式,并进行必要的数据清洗。
- 配置元数据:使用上述元数据配置,将提取到的数据映射到金蝶云星空API所需的字段。
- 调用API:通过HTTP POST请求,将转换后的数据发送到金蝶云星空系统。
例如,一个具体的数据条目可能如下:
{
FBillNo: 'ORD12345_ABC123',
FBillTypeID: { FNumber: 'QTCKD01_SYS' },
FStockOrgId: { FNumber: 'ABC123' },
FPickOrgId: { FNumber: 'ABC123' },
FStockDirect: 1,
FDate: '2023-10-01T00:00:00Z',
FDeptId:{ FNumber:'HY1018'},
FOwnerTypeIdHead:'BD_OwnerOrg',
FOwnerIdHead:{FNumber:'ABC123'},
FNote:'其他出库单',
FEntity:[
{
FMaterialId:{FNumber:'MAT001'},
FQty:'100',
FStockId:{FNumber:'WH001'},
FAamount:'1000',
FPrice:'10',
FOwnerTypeId:'BD_OwnerOrg',
FOwnerId:{FNumber:'ABC123'},
FEntryNote:'备注信息',
FSTOCKSTATUSID:{FNumber:'KCZT01_SYS'}
}
],
...
}
通过上述步骤和配置,我们可以确保源平台的数据能够无缝地转化为目标平台所需的格式,并顺利写入金蝶云星空系统。这不仅提升了数据处理效率,还保证了业务流程的一致性和准确性。