旺店通·企业奇门数据集成金蝶云星空案例分享
在企业信息化管理过程中,系统间的数据集成是提升效率与保障数据一致性的关键环节。本篇文章将聚焦一个实际运行的测试方案:旺店通销售退货单与金蝶云星空的退货通知单对接。我们通过调用旺店通·企业奇门接口wdt.stockin.order.query.refund
来获取销售退货单数据,并使用金蝶云星空API batchSave
实现批量写入。
为了确保集成过程中不漏单,我们采用了定时可靠的数据抓取机制,对接全程进行实时监控并记录日志。这不仅让每个处理环节都清晰可见,同时也能够及时发现并解决异常情况。此外,为有效处理大规模数据传输,通过分页和限流策略保证稳定性。
在具体实施方案中,还涉及到如何应对旺店通·企业奇门与金蝶云星空之间的数据格式差异以及针对特殊业务需求的定制化映射。通过这些技术手段,成功实现了两个系统间的数据无缝衔接,大幅提升了业务处理效率和准确性。
下面将详细介绍这一解决方案的具体技术细节。
调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query.refund
,并对获取的数据进行加工处理。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是元数据配置的详细说明:
{
"api": "wdt.stockin.order.query.refund",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockin_id",
"name": "order_no",
"formatResponse": [
{
"old": "created_time",
"new": "created_time_new",
"format": "date"
}
],
"idCheck": true,
"joinBatch": "wdt.stockin.batch.detail",
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "datetime",
"describe": "增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "datetime",
"describe": "增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "status",
"label": "状态",
"type": "string",
"describe":"入库单状态 10已取消20编辑中30待审核60待结算80已完成(默认查询80已完成单据)",
"value":"80"
},
{
“field”: “shop_nos”,
“label”: “店铺编号(批量)”,
“type”: “string”,
“describe”: “代表店铺所有属性的唯一编码,用于店铺区分,ERP内支持自定义(ERP店铺界面设置),用于获取指定店铺单据数据信息”,
“value”: “002,003,004,005,006,007,0072,0081,0091,0082,0093”
}
],
“otherRequest”: [
{
“field”: “page_size”,
“label”: “分页大小”,
“type”: “string”,
“describe”:“每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40,使用举例单击这里”,
“value”:“30”
},
{
“field”:“page_no”,
“label”:“页号”,
“type”:“string”,
“describe”:“不传值默认从0页开始”
}
],
“autoFillResponse”: true,
”beatFlat“: [“details_list”, ”_batch_list“],
”condition“: [
[
{
”field“: ”details_list.src_price“,
”logic“: ”neqv2“,
”value“: ”0“
}
]
],
”delay“:50
}
请求参数解析
- start_time 和 end_time:用于增量获取数据,这两个字段分别表示数据的开始时间和结束时间。通过模板变量
{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
动态生成。 - status:指定查询的入库单状态,这里默认查询状态为80(已完成)的单据。
- shop_nos:批量指定店铺编号,用于区分不同店铺的数据。
- page_size 和 page_no:用于分页控制,每次请求返回的数据条数和页号。
数据格式化与条件过滤
- formatResponse:对返回的数据进行格式化处理,将原始字段
created_time
转换为新的字段created_time_new
并格式化为日期类型。 - condition:设置过滤条件,仅保留
details_list.src_price
不等于0的数据。
数据处理与写入
在获取到源系统的数据后,需要对其进行清洗和转换,以便写入目标系统。以下是一个示例流程:
-
数据清洗:
- 去除无效或重复的数据。
- 根据业务需求过滤特定字段,例如仅保留价格不为0的记录。
-
数据转换:
- 将源系统的字段映射到目标系统的字段。
- 格式化日期、数值等字段类型。
-
数据写入:
- 将处理后的数据批量写入目标系统。
- 确保写入过程中的事务一致性和错误处理机制。
通过上述步骤,我们可以高效地实现从旺店通·企业奇门接口获取销售退货单数据,并对其进行必要的加工处理,为后续的数据分析和业务决策提供可靠的数据支持。
将源平台数据转换并写入金蝶云星空API接口的技术实现
在数据集成过程中,ETL(提取、转换、加载)是关键的一步。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能接收的格式,最终写入目标平台。
元数据配置解析
元数据配置是整个ETL过程的核心。以下是对提供的元数据配置的详细解析:
{
"api": "batchSave",
"effect": "EXECUTE",
"method": "POST",
"operation": {
"method": "merge",
"field": "shop_no,created_time_new",
"bodyName": "list",
"bodySum": ["details_list__batch_list_num"],
"header": ["shop_no", "created_time_new", "logistics_no", "refund_remark"],
"body": ["details_list_goods_no", "details_list__batch_list_num",
"details_list_goods_unit", "details_list_remark",
"warehouse_no", "details_list__batch_list_batch",
"details_list_src_price"]
},
...
}
该配置定义了如何将源平台的数据映射到金蝶云星空API接口所需的数据结构中。具体步骤如下:
-
API接口调用:
api
字段指定了调用的接口为batchSave
。method
字段指定了HTTP请求方法为POST
。effect
字段表示此次操作的效果为执行。
-
操作定义:
operation
字段定义了具体的数据操作方式,包括合并方法(merge)、关键字段(shop_no, created_time_new)以及请求体结构(header和body)。
-
请求参数映射:
request
数组定义了各个字段如何从源数据中提取,并映射到目标系统中相应的位置。
请求参数详细解析
以下是部分关键请求参数及其解析方式:
-
单据类型 (
FBillTypeID
):{ "field": "FBillTypeID", "label": "单据类型", ... "value": "THTZD01_SYS" }
单据类型被固定为标准退货通知单 (
THTZD01_SYS
)。 -
旺店通订单号 (
F_QDUT_Text1
):{ ... "field": "F_QDUT_Text1", ... "value": "{shop_no}" }
旺店通订单号直接映射自源数据中的
shop_no
。 -
库存组织 (
FRetorgId
) 和 销售组织 (FSaleOrgId
):{ ... "field": "FRetorgId", ... "value": "{shop_no}", ... }, { ... "field": "FSaleOrgId", ... ... }
库存组织和销售组织均通过
ConvertObjectParser
进行解析,值来源于源数据中的shop_no
。 -
日期 (
FDate
):{ ... "field": "FDate", ... ... }
日期直接映射自源数据中的
created_time_new
.
明细信息处理
明细信息(FEntity
)是整个请求体中最复杂的一部分,需要处理多个子字段:
{
"field":"FEntity","label":"明细信息","type":"array","describe":"明细信息","value":"list","children":[{"field":"FMaterialId","label":"物料编码","type":"string","describe":"物料编码","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{list.details_list_goods_no}}"},{"field":"FQty","label":"销售数量","type":"string","describe":"销售数量","value":"{{list.details_list__batch_list_num}}"},{"field":"FASEUNITID","label":"基本单位","type":"string","describe":"基本单位","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{{list.details_list_goods_unit}}"},{"field":"FEntryDescription","label":"备注","type":"string","describe":"备注","value":"{{list.details_list_remark}}"},{"field":"FTaxPrice","label":"含税单价---原价是否可以","type":"string","describe":"含税单价","value
每个子字段都通过特定的映射规则从源数据中提取,并转换为目标系统所需的格式。例如,物料编码(`FMaterialId`)通过解析器从 `details_list_goods_no` 提取;销售数量(`FQty`)直接取自 `details_list__batch_list_num`.
#### 财务信息处理
财务信息(`SubHeadEntity`)包含结算组织和结算币别等关键字段:
```json
{
"field" : SubHeadEntity,
"label" : 财务信息,
"type" : object,
"describe" : 财务信息,
"value" : list,
"children":[{"field" : FSettleOrgId,
label:结算组织,
type: string,
describe:结算组织,
parser:{name: ConvertObjectParser, params: FNumber},
value:{ shop_no},
mapping:{target:65fa83373cdfb908e629214d,direction:positive}},
{"field:FSettleCurrId,
label:结算币别,
type:string,
describe:结算币别,
parser:{name: ConvertObjectParser, params:FNumber},
value:PRE001}]
}
结算组织(FSettleOrgId
)同样通过解析器从 shop_no
提取,而结算币别(FSettleCurrId
)则被固定为 PRE001
.
执行操作
最后,通过以下配置执行批量保存操作,并自动提交和审核:
{
...
{"field" : Operation,"label" : 执行的操作,"type" : string,"describe" : 执行的操作,"value" : BatchSave},
{"field:IsAutoSubmitAndAudit,"label:"提交并审核,"type:"bool,"describe:"提交并审核,"value:true},
{"field:IsVerifyBaseDataField,"label:"验证基础资料,"type:"bool,"describe:"是否验证所有基础资料有效性,布尔类,默认false(非必录),"value:true}
}
这些配置确保在完成所有字段映射后,系统会自动提交并审核生成的退货通知单,同时验证所有基础资料的有效性。
通过上述步骤,我们实现了将源平台的数据转换为金蝶云星空API接口可接收的数据格式,并成功写入目标平台。这一过程不仅提高了数据处理效率,还确保了业务流程的一致性和准确性。