案例分享:旺店通·企业奇门数据集成到金蝶云星空
在本案例中,我们将深入探讨如何利用轻易云数据集成平台,将旺店通·企业奇门的入库单数据成功集成至金蝶云星空,实现高效的数据同步与业务管理。这个具体方案名称为“旺店通入库单-金蝶其他入库单【盘盈入库】”。
确保数据不漏单
为了确保从旺店通·企业奇门获取的数据不会出现遗漏,我们首先需要调用其提供的wdt.stockin.order.query
接口,该API可以保证定时可靠地抓取最新的库存信息。在配置过程中,设置适当的轮询间隔时间,并利用轻易云的数据监控功能,确保每次请求均完整返回所需数据。
大量数据快速写入
一旦获取到足够的信息后,需要批量将这些记录高效、安全地写入金蝶云星空系统。通过调用其提供的batchSave
API,可以实现大规模、快速的数据写操作。同时,为了最大化性能,采用异步处理及多线程技术,以提高吞吐量并降低延迟。
数据格式转换与映射对接
由于两者之间涉及的数据格式存在差异,在进行实际传输之前,需要进行必要的数据清洗和转换。例如,从旺店通实例化出来的是JSON对象,而在进入金蝶之前可能需要符合特定XML或另一种结构标准。因此,通过自定义脚本或者内置映射工具,对字段进行一对一映射并转换成为目标格式。
分页和限流处理
考虑到有时会面对大量数据,必须有效构建分页机制以及实施限流措施来防止请求过载。这既能优化网络传输效率,也能保护服务器避免因频繁请求而导致崩溃。对于分页,可以设定合理的页面大小,根据实际情况动态调整,请求分批次发送;限流则根据系统容忍度配置适宜阈值。
以上介绍简要概述了该案例中的主要集成步骤,后续章节将详细讲解每个环节的具体实现方法及代码示例,包括错误重试机制、实时日志监控等高级特性的应用,以进一步保障系统稳定运行和业务连续性。
调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据
在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query
来获取并加工入库单数据。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项:
- API:
wdt.stockin.order.query
- 请求方法:
POST
- 主键字段:
order_no
- 查询条件:
- 按最后修改时间增量获取数据,使用
start_time
和end_time
作为时间范围。 - 过滤特定仓库名称,例如排除包含“百媚”的仓库。
- 查询特定类型的入库单,例如盘盈入库(order_type = 4)。
- 默认查询已完成状态的入库单(status = 80)。
- 按最后修改时间增量获取数据,使用
请求参数设置
根据元数据配置,我们需要设置以下请求参数:
-
时间范围参数:
start_time
: 按最后修改时间增量获取数据的开始时间,格式为yyyy-MM-dd HH:mm:ss
。end_time
: 按最后修改时间增量获取数据的结束时间,格式为yyyy-MM-dd HH:mm:ss
。
-
固定参数:
order_type
: 源单据类别,这里我们选择盘盈入库(值为4)。status
: 入库单状态,默认查询已完成状态(值为80)。
-
分页参数:
page_size
: 每页返回的数据条数,这里设置为50。page_no
: 页号,不传值默认从0页开始。
-
可选过滤条件:
warehouse_no
: 仓库编号,用于获取指定仓库的单据信息。src_order_no
: 上层单据编号,可以不传开始时间和结束时间。stockin_no
: 入库单号,可以不传开始时间和结束时间。
示例请求配置
{
"api": "wdt.stockin.order.query",
"method": "POST",
"request": [
{"field": "start_time", "value": "{{LAST_SYNC_TIME|datetime}}"},
{"field": "end_time", "value": "{{CURRENT_TIME|datetime}}"},
{"field": "order_type", "value": "4"},
{"field": "status", "value": "80"}
],
"otherRequest": [
{"field": "page_size", "value": "50"},
{"field": "page_no", "value": ""}
]
}
数据清洗与过滤
在获取到原始数据后,需要进行必要的数据清洗和过滤。根据元数据配置,我们可以应用以下过滤条件:
-
排除生产入库类型的记录:
{"field":"stockin_reason","logic":"notlike","value":"生产入库"}
-
包含特定仓库名称,例如“七遇”:
{"field":"warehouse_name","logic":"like","value":"七遇"}
-
根据仓库编号进行精确匹配:
{"field":"warehouse_no","logic":"eqv2","value":"02"}
这些条件可以组合使用,以确保最终的数据符合业务需求。例如:
[
[{"field":"stockin_reason","logic":"notlike","value":"生产入库"},{"field":"warehouse_name","logic":"like","value":"七遇"}],
[{"field":"stockin_reason","logic":"notlike","value":"生产入库"},{"field":"warehouse_name","logic":"like","value":"百媚"}],
[{"field":"stockin_reason","logic":"notlike","value":"生产入库"},{"field":"warehouse_no","logic":"eqv2","value":"02"}]
]
实时监控与调试
在实际操作中,通过轻易云平台提供的全透明可视化界面,可以实时监控接口调用和数据处理状态。这有助于快速发现并解决潜在问题,提高整体效率。
通过上述步骤,我们能够高效地从旺店通·企业奇门系统中获取所需的盘盈入库单数据,并进行必要的数据清洗和过滤,为后续的数据转换与写入阶段打下坚实基础。
轻易云数据集成平台:将旺店通入库单转换为金蝶其他入库单【盘盈入库】
在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据(如旺店通入库单)转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。
元数据配置解析
元数据配置是ETL过程中至关重要的一部分,它定义了源数据如何映射到目标系统的字段。以下是本文使用的元数据配置:
{
"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":"单据类型","value":"QTRKD01_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"},"mappingDirection":"positive"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{warehouse_no}","mapping":{"target":"6448b8978ae83f3ed8347076","direction":"positive"}},
{"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{stockin_time|datetime}}"},
{"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","value":"'function case when '{warehouse_no}' = '07' then '006' when '{warehouse_no}' = '06' then '006' when '{warehouse_no}' = '02' then '01201' when '{warehouse_no}' = 'wdt01_CC' then '01202' when '{warehouse_no}' = 'wdt01' then '01202' when '{warehouse_no}' = 'QYYC-JSQY-WDT-cc' then '01201' when '{warehouse_no}' = 'QYYC-JSQY-WDT' then '01201' else '006' end'", "mappingDirection": "positive", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}},
{"field": "FOwnerTypeIdHead", "label": "货主类型", "type": "string", "describe": "多类别基础资料列表", "value": "BD_OwnerOrg"},
{"field": "FOwnerIdHead", "label": "货主", "type"::string, describe:多类别基础资料, parser: {name: ConvertObjectParser, params: FNumber}, value:100},
{"field": FNOTE, label:备注, type:string, describe:多行文本, value:盘盈入库},
{
field:FEntity,
label:明细信息,
type:array,
children:[
{field:FInStockType,label:入库类型,type:string,describe:下拉列表,parent:FEntity},
{field:FMATERIALID,label:物料编码,type:string,describe:基础资料,parser:{name:ConvertObjectParser,params:FNumber},value:"{{details_list.spec_no}}",parent:FEntity},
{field:FCMKBarCode,label:零售条形码,type:string,describe:文本,parent:FEntity},
{field:FSTOCKID,label:收货仓库,type:string,describe:基础资料,parser:{name:ConvertObjectParser,params:FNumber},value:"{warehouse_no}",parent:FEntity},
{field:FStockLocId,label:仓位,type:string,describe:维度关联字段,parent:FEntity},
{field:FQty,label:实收数量,type:string,describe:数量,value:"{{details_list.goods_count}}",parent:FEntity},
{field:FPrice,label:成本价,type:string,describe:单价,parent:FEntity},
{field:FEntryNote,label:备注,type:string,describe:"多行文本,value:"{{detail_list.remark}}",parent:FEntity},
{field:"FSRCBILLNO", label:"源单编号", type:"string", describe:"源单编号", parent:"FEntity"},
{field:"FSRCBILLTYPEID", label:"源单类型", type:"string", describe:"源单类型", parent:"FEntity"},
{parent:"FEntity", label:"货主类型", field:"FOWNERTYPEID", type:"string", value:"BD_OwnerOrg"},
{parent:"FEntity", label:"货主" field"FOWNERID" type"string" value"100" parser{name"ConvertObjectParser" params"FNumber"}}
],
value="details_list"
}
],
otherRequest:[
{field"FormId" label业务对象表单Id type字符串 describe必须填写金蝶的表单ID如PUR_PurchaseOrder valueSTK_MISCELLANEOUS},
{fieldIsVerifyBaseDataField label验证基础资料 type布尔类 describe是否验证所有的基础资料有效性,布尔类,默认false(非必录) valuetrue},
{fieldOperation label执行的操作 type字符串 valueSave},
{fieldIsAutoSubmitAndAudit label提交并审核 type布尔类 valuetrue}
]
}
数据请求与清洗
在ETL流程中,首先需要从源系统(旺店通)提取数据,并进行必要的数据清洗。清洗后的数据需要符合目标系统(金蝶云星空)的要求。
- 提取订单号:通过
{order_no}
字段获取旺店通中的订单号,并映射到金蝶的FBillNo
字段。 - 库存组织:通过
{warehouse_no}
字段获取库存组织,并使用ConvertObjectParser
将其转换为金蝶所需格式。 - 日期格式转换:使用
{{stockin_time|datetime}}
将日期格式转换为金蝶接受的格式。 - 部门映射:根据不同的仓库编号,将其映射到相应的部门编号。
数据转换与写入
在完成数据清洗后,需要将数据按照目标系统的要求进行转换,并通过API接口写入金蝶云星空。
- 批量保存接口:使用
batchSave
API,通过POST方法提交数据。 - 验证基础资料:设置
IsVerifyBaseDataField
为true,以确保所有基础资料有效性。 - 自动提交并审核:设置
IsAutoSubmitAndAudit
为true,实现自动提交和审核功能。
明细信息处理
对于明细信息,需要特别注意以下几点:
- 物料编码转换:通过
details_list.spec_no
字段获取物料编码,并使用ConvertObjectParser
进行转换。 - 实收数量和成本价:分别通过
details_list.goods_count
和相应字段获取实收数量和成本价。 - 备注信息:通过
detail_list.remark
获取备注信息,并写入相应字段。
API调用示例
最终,我们可以构建一个完整的API调用请求,如下所示:
{
api : batchSave,
method : POST,
idCheck : true,
operation : {
rowsKey : array,
rows : 1,
method : batchArraySave
},
request : [
{
field : FBillNo,
label : 单据编号,
type : string,
describe : 单据编号,
value : order_no
},
...
],
otherRequest:[
{
field : FormId,
label : 业务对象表单Id,
type : string,
describe : 必须填写金蝶的表单ID如:PUR_PurchaseOrder,
value : STK_MISCELLANEOUS
},
...
]
}
通过上述步骤,我们实现了从旺店通到金蝶云星空的数据无缝对接,大大提升了业务处理效率。