旺店通·旗舰奇门数据集成到金蝶云星空的技术实现案例
在本文中,我们将详细探讨如何通过构建系统对接,实现旺店通·旗舰奇门中的其他出库数据与金蝶云星空平台的数据同步。该项目的方案名称为“18 旺店通其他出库-金蝶云其他出库同步”,旨在保证数据不漏单,并能够高效、稳定地完成大量数据的快速写入。
首先,通过调用旺店通·旗舰奇门接口wdt.wms.stockout.otherquery.querywithdetail
,我们可以实时获取最新的其他出库数据信息。为了处理分页和限流问题,我们设置了合理的参数及请求频率,以确保从源头抓取的数据准确无误,不遗漏任何记录。这些前置条件是后续成功集成的重要保障。
随后,对于从API返回的大量原始数据,需要进行清洗和格式转换,以适配金蝶云星空所需的数据结构。在这个过程中,我们重点关注了两个平台之间的数据格式差异,并利用自定义映射机制来解决这些兼容性问题。
针对批量数据写入,调用金蝶云星空提供的batchSave
接口,这不仅提高了操作效率,还支持事务管理,减少了由于网络波动等原因导致部分写入失败的问题。同时,为应对可能出现的异常情况以及错误重试需求,我们设计并实现了一套完备的监控与日志记录机制。一旦检测到异常,会及时触发重新尝试或报警通知,从而最大程度上保障业务连续性和系统稳定性。
下一步,将深入解析具体实施细节,包括各环节代码示例、关键配置项以及性能优化策略等内容。通过这个实践案例,希望能为类似需求场景提供借鉴参考,高效完成复杂系统间的数据集成任务。
调用旺店通·旗舰奇门接口获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统旺店通·旗舰奇门接口wdt.wms.stockout.otherquery.querywithdetail
来获取并加工数据。本文将深入探讨该接口的技术细节和元数据配置。
接口概述
接口wdt.wms.stockout.otherquery.querywithdetail
用于查询其他出库单的详细信息。通过POST请求方式,传递分页参数和业务参数,从而获取符合条件的数据。
元数据配置解析
元数据配置如下:
{
"api": "wdt.wms.stockout.otherquery.querywithdetail",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"idCheck": true,
"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",
...
}
],
...
}
请求参数详解
-
分页参数:
page_size
: 每页返回的数据条数,默认值为50。page_no
: 当前页码,默认值为1。
-
业务参数:
time_type
: 查询时间限制类型,1表示最后修改时间,2表示审核时间,默认值为1。start_time
: 查询开始时间,使用占位符{{LAST_SYNC_TIME|datetime}}
动态替换为上次同步时间。end_time
: 查询结束时间,使用占位符{{CURRENT_TIME|datetime}}
动态替换为当前时间。status
: 出库单状态,110表示已完成。warehouse_no
,stockout_no
,src_order_no
,reason_name
: 分别表示仓库编号、入库单号、业务单号和出库原因,可根据具体需求进行设置。
条件过滤
为了确保获取的数据符合业务需求,我们设置了多组条件过滤:
"condition":[
[
{"field":"status","logic":"eqv2","value":"110"},
{"field":"remark","logic":"like","value":"py;type;"},
{"field":"src_order_no","logic":"notlike","value":"ZJDB"},
{"field":"src_order_no","logic":"notlike","value":"QTCK"},
{"field":"remark","logic":"notlike","value":"正残转换:"},
{"field":"warehouse_no","logic":"neqv2","value":"CK037"},
{"field":"reason","logic":"neqv2","value":"预入库转其它出库(系统默认)"}
],
...
]
这些条件确保了我们只获取状态为已完成、备注包含特定关键词且不属于特定业务单号和仓库编号的数据。
数据请求与清洗
在调用接口后,我们会得到一个JSON格式的响应数据。接下来,需要对这些数据进行清洗,包括但不限于以下步骤:
- 字段映射:将响应中的字段映射到目标系统所需的字段格式。
- 数据过滤:根据业务逻辑进一步筛选数据,例如剔除无效或重复的数据。
- 格式转换:将日期、数值等字段转换为目标系统所需的格式。
实践案例
假设我们需要获取2023年10月1日至2023年10月7日之间所有已完成的其他出库单信息,并同步到金蝶云。我们可以设置如下请求参数:
{
...
"params":{
...
"start_time":"2023-10-01T00:00:00Z",
"end_time":"2023-10-07T23:59:59Z"
}
}
通过调用接口并处理响应数据,我们可以实现从旺店通到金蝶云的无缝数据同步。这不仅提高了数据处理效率,还确保了业务流程的连续性和准确性。
综上所述,通过合理配置元数据并调用旺店通·旗舰奇门接口,我们能够高效地获取并加工其他出库单信息,为后续的数据转换与写入奠定坚实基础。
数据集成中的ETL转换与写入:轻易云数据集成平台对接金蝶云星空API
在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将深入探讨如何利用元数据配置实现这一过程。
API接口配置
在对接金蝶云星空API时,首先需要明确API接口的基本配置。根据提供的元数据配置,我们使用的是batchSave
接口,通过POST方法提交数据。以下是具体的请求字段及其配置:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}"},
{"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型",
"parser": {"name":"ConvertObjectParser","params":"FNumber"},
"value":"QTCKD01_SYS"
},
{"field": "FPickOrgId", "label": "领用组织",
"type":"string","value":"106",
"parser":{"name":"ConvertObjectParser","params":"FNumber"}
},
{"field": "FStockOrgId",
...
}
],
...
}
数据转换与清洗
在数据转换过程中,需要特别注意字段的映射和数据格式的转换。例如,FBillNo
字段对应的是源平台中的订单编号{order_no}
,而FDate
字段则需要将源平台中的日期字段进行格式化处理。
{
...
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{consign_time|datetime}}"},
...
}
这里使用了模板引擎语法,将源平台中的consign_time
字段转换为符合金蝶云星空API要求的日期格式。
多级嵌套结构处理
对于复杂的数据结构,例如包含明细信息的多级嵌套结构,需要特别处理。以下是一个示例:
{
...
{"field":"FEntity","label":"明细信息","type":"array","children":[
{"field":"FMaterialId","label":"物料编码","type":"string","describe":"基础资料",
...
,"value":"{{detail_list.spec_no}}"
},
{"field":"FQty","label":"实发数量","type":"string",
...
,"value":"{{detail_list.goods_count}}"
},
...
],"value":"detail_list"}
}
在这个例子中,FEntity
字段表示明细信息,是一个数组类型,其中包含多个子字段,如物料编码、实发数量等。这些子字段通过模板引擎语法从源平台的数据中提取并转换为目标平台所需的格式。
基础资料验证与转换
为了确保数据的一致性和准确性,需要对基础资料进行验证和转换。例如,对于某些字段,如FBillTypeID
、FPickOrgId
等,需要使用特定的解析器(如ConvertObjectParser
)将值转换为目标系统能够识别的格式:
{
...
{"field":"FBillTypeID","label":"单据类型","type":"string",
...
,"parser":{"name":"ConvertObjectParser","params":"FNumber"}
,"value":"QTCKD01_SYS"
},
...
}
提交与审核
最后,在完成所有数据转换和清洗后,可以通过设置额外参数来控制是否自动提交并审核,以及是否验证基础资料有效性:
{
...
{"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"false"},
{"field":"IsVerifyBaseDataField","label":"验证基础资料",
...
,"value":"false"
},
...
}
这些参数确保了在将数据写入金蝶云星空时,可以根据业务需求灵活控制提交和审核流程。
通过以上步骤,我们可以实现从源平台到目标平台的数据无缝对接,并确保数据格式和内容符合目标系统的要求。这不仅提升了业务流程的自动化程度,还显著提高了数据处理效率和准确性。