从旺店通到金蝶云星空:销售出库单对接直接调拨单的技术实现
在企业信息化管理系统中,实现不同系统之间的数据无缝集成,是提升业务效率和数据准确性的关键环节。本案例重点阐述如何高效地将旺店通·企业奇门中的销售出库单(Stockout Order)通过API接口wdt.stockout.order.query.trade
,对接到金蝶云星空,将其转换为直接调拨单,并使用批量写入API batchSave
。
首先,我们需要考虑的是如何从旺店通·企业奇门可靠、高效地获取销售出库单数据。由于该平台提供了分页与限流机制,因此我们在调用接口时必须处理这些问题,以确保数据完整性和传输效率。这一过程包括设计定时抓取任务,结合集中监控和告警功能,实时跟踪每个任务的状态。一旦出现异常,可以及时采取措施进行重试和修正,从而保证集成过程不会因偶发错误而中断。
其次,在向金蝶云星空提交数据之前,需要解决两个主要挑战:一是处理来自两套系统的数据格式差异;二是在大量数据快速写入时确保性能稳定。为此,我们采用自定义的数据转换逻辑,将旺店通·企业奇门的字段映射至符合金蝶云星空要求的结构。此外,通过批量集成方式,大幅度提高了写入速度,同时降低了API调用次数,有助于保持系统负载平衡。
以下部分将详细介绍具体实现步骤、代码示例及可能遇到的问题及其应对策略。希望这个技术案例能为您的项目提供有价值的参考和指导。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成生命周期的第一步,调用源系统接口以获取原始数据是至关重要的。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置API接口的元数据,以便正确地请求所需的数据。以下是关键的元数据配置:
{
"api": "wdt.stockout.order.query.trade",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"condition_bk": [
[
{
"field": "shop_remark",
"logic": "eqv2",
"value": "直接调拨单"
}
]
],
...
}
在这个配置中,api
字段指定了我们要调用的API接口,method
字段定义了请求方法为POST。分页参数设置为每页100条记录,以确保高效的数据传输。
请求参数配置
为了实现增量数据获取,我们需要设置开始时间和结束时间等动态参数:
{
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
...
},
...
]
}
start_time
和end_time
用于定义数据查询的时间范围,其中start_time
取上次同步时间,end_time
取当前时间。status
,src_order_no
,src_tid
,stockout_no
,shop_no
,warehouse_no
,shop_nos
等字段用于进一步过滤和指定查询条件。
数据请求与清洗
在完成API调用后,我们将获得一组原始数据。这些数据需要经过初步清洗,以确保其质量和一致性。例如,可以根据特定条件过滤掉不符合要求的数据:
{
"condition_bk": [
[
{
"field": "shop_remark",
...
}
]
]
}
这里,我们仅保留备注为“直接调拨单”的记录,通过设置条件过滤器实现这一目标。
分页处理
由于可能存在大量数据,分页处理是必不可少的。我们通过以下参数实现分页:
{
...
"otherRequest": [
{
...
"value":"{PAGINATION_PAGE_SIZE}"
},
{
...
...
}
]
}
page_size
: 每页返回的数据条数。page_no
: 当前页号,从0开始。
通过循环请求不同页码的数据,可以确保所有记录都被完整获取。
异常处理与补偿机制
在实际操作中,不可避免会遇到一些异常情况,如网络中断或接口响应超时。为了应对这些问题,我们可以配置定时任务和补偿机制:
{
...
"omissionRemedy":{
...
}
}
例如,通过定时任务每天凌晨3点重新执行一次未成功的请求,以确保所有数据都能被完整捕获。
数据转换与写入
在完成上述步骤后,清洗后的数据将进入下一阶段,即转换与写入。这部分将在后续文章中详细探讨。
通过以上步骤,我们能够高效地从旺店通·企业奇门接口获取并初步加工销售出库单的数据,为后续的数据转换和写入奠定基础。这种方法不仅提高了数据处理的透明度和效率,也确保了业务流程的稳定性和可靠性。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下是一个具体的技术案例,展示如何使用轻易云数据集成平台配置元数据,实现旺店通销售出库单对接金蝶直接调拨单。
配置API接口
首先,我们需要配置金蝶云星空的API接口。根据元数据配置,API接口为batchSave
,请求方法为POST
。我们需要确保在请求中包含所有必需的字段和相应的数据格式。
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 10,
"method": "batchArraySave"
},
"request": [
{"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}"},
{"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "WDTCKD",
"parser": {"name": "ConvertObjectParser", "params":"FNumber"}},
{"field": "FBizType", "label": "业务类型", "type": "string",
... (省略部分字段)
}
],
...
}
数据字段映射与转换
在配置过程中,需要特别注意字段的映射与转换。例如:
FBillNo
(单据编号):直接从源数据中的order_no
字段映射。FBillTypeID
(单据类型):固定值为"WDTCKD",并通过ConvertObjectParser
进行解析。FSaleOrgId
,FSettleOrgId
,FStockOutOrgId
,FStockOrgId
等组织相关字段:通过查找集合并使用解析器将其转换为目标系统能够识别的编码。
{
...
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","value":"_findCollection find email from f9720649-c4cb-3d51-8bb0-e633ee48e23c where shop_no={shop_no}","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
...
}
明细信息处理
对于明细信息(即子表),我们需要使用嵌套数组来表示,并确保每个子项都包含必要的字段。例如:
FMaterialId
(物料编码):从源数据中的details_list.goods_no
映射,并通过解析器转换。FQty
(调拨数量):从源数据中的details_list.num
映射。
{
...
{"field":"FBillEntry","label":"明细信息","type":"array","describe":"1","children":[
{"field":"FMaterialId","label":"物料编码 ","type":"string","describe":"基础资料","value":"{{details_list.goods_no}}","parent":"FBillEntry","parser":{"name":"ConvertObjectParser","params":"FNumber"}},
{"field":"FCMKBarCode","label":"零售条形码","type":"string","describe":"文本","parent":"FBillEntry"},
{"field":"FQty","label":"调拨数量 ","type":"string","describe":"数量","value":"{{details_list.num}}","parent":"FBillEntry"},
...
]}
}
执行操作
在完成所有字段配置后,我们还需要定义一些操作参数,例如表单ID、执行操作、是否自动提交并审核等。
{
...
{"field": "FormId", "label": "业务对象表单Id",
"type": string,
"describe" : 必须填写金蝶的表单ID如: PUR_PurchaseOrder,
"value" : STK_TransferDirect},
{"field" : Operation,
"label" : 执行的操作,
"type" : string,
"value" : Save},
{"field" : IsAutoSubmitAndAudit,
"label" : 提交并审核,
"type" : bool,
"value" : true},
{"field" : IsVerifyBaseDataField,
"label" : 验证基础资料,
"type" : bool,
"value" : true},
{"field" : InterationFlags,
"label" : 是否允许忽略交互,
"type" : string,
"value" : true},
{"field" : BatchCount,
"type" : string,
"value:5}
}
通过以上步骤,我们可以成功地将旺店通销售出库单的数据转换为金蝶云星空API能够接收的格式,并通过轻易云数据集成平台实现无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。