聚水潭·奇门数据集成到金蝶云星辰V2的案例分享
在本次技术实践中,我们将详细探讨如何高效地实现聚水潭·奇门的数据集成到金蝶云星辰V2系统,具体针对销售退货单进行数据对接。本案实际采用的方案名称为:聚水潭-销售退货单-->星辰-销售退货单-恩比。
1. 确保集成不漏单
为了确保聚水潭·奇门的数据在传输过程中不出现遗漏,首先需要调用其专用接口jushuitan.refund.list.query
进行数据抓取。该接口支持分页查询,这意味着我们可以分批次获取所有待处理的记录。在配置定时任务时,通过周期性的API调用,可以保证新产生的数据被实时捕获和处理。同时,为了应对网络波动或服务故障等偶发问题,还需设计重试机制来自动重新拉取失败的数据段,从而确保每个订单都能完整无误地进入后续流程。
2. 大量数据快速写入到金蝶云星辰V2
大量数据从聚水潭·奇门成功获取之后,将面临写入到金蝶云星辰V2的问题。为了解决这一难题,我们使用了/jdy/v2/scm/sal_in_bound
API,该接口优化了批量导入策略,使得大规模数据能够在短时间内高效完成插入操作。此外,在执行批量写入时,还会对返回结果进行监控与验证,一旦发现异常情况即刻触发错误处理机制,以便及时修正可能存在的问题。
3. 数据格式差异及转换
不同系统之间常常存在着各自特有的数据格式,为此需设计相应的映射规则来解决格式上的差异。例如,聚水潭·奇门中的字段名称、类型以及结构可能与金蝶云星辰V2要求的不一致。因此必须通过中间件或脚本对原始数据进行预处理,包括字段映射、单位转换以及数值计算等,以使其符合目标系统的标准。这一过程不仅提升了两者之间的兼容性,也保证最终业务逻辑的一致性。
上述三点是整个项目实施过程中至关重要的步骤,它们共同保障了从源头数据提取到目标系统录入这一路径上,各环节均流畅衔接、准确交付。而针对复杂场景下遇到的一些特殊需求,例如限流管理和实时监控等细节,还有更多适配方法将在后文逐步展开阐述。
调用聚水潭·奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台配置元数据,调用聚水潭·奇门接口 jushuitan.refund.list.query
获取销售退货单数据,并进行相应的数据加工。
接口配置与请求参数
首先,我们需要配置接口的元数据,以便正确调用 jushuitan.refund.list.query
接口。以下是该接口的元数据配置:
{
"api": "jushuitan.refund.list.query",
"effect": "QUERY",
"method": "POST",
"number": "as_id",
"id": "as_id",
"name": "as_id",
"idCheck": true,
"formatResponse": [
{"format": "string", "old": "as_id", "new": "as_id_new"},
{"format": "string", "old": "type", "new": "type_new"}
],
"request": [
{"field": "page_index", "label": "第几页", "type": "int",
"describe": "从第一页开始,默认1",
"value":"1"},
{"field": "page_size",
"label":"每页多少条",
"type":"int",
"describe":"默认30,最大50",
"value":"50"},
{"field":"start_time",
"label":"修改起始时间",
"type":"string",
"describe":"起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
"value":"{{LAST_SYNC_TIME|datetime}}"},
{"field":"end_time",
"label":"修改结束时间",
"type":"string",
"describe":"结束时间,和起始时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空",
"value":"{{CURRENT_TIME|datetime}}"},
{"field":"date_type","label":"时间类型","type":"int","describe":"修改时间:0 ; 创建时间:1; 确认时间: 2;非必填,默认0"},
{"field":"type","label":"售后类型","type":"string","describe":"普通退货,其它,拒收退货,仅退款,投诉,补发,换货,维修"},
{"field":"status","label":"售后单状态","type":"string","describe":"(WaitConfirm:待确认,Confirmed:已确认,Cancelled:作废,Merged:被合并)"},
{"field":"good_status","label":"货物状态","type":"string","describe":"(BUYER_NOT_RECEIVED:买家未收到货,BUYER_RECEIVED:买家已收到货,BUYER_RETURNED_GOODS:买家已退货,SELLER_RECEIVED:卖家已收到退货","value":"SELLER_RECEIVED"},
{"field":"wms_co_id","label":"分仓编号","type":"string","value":"13599842"}
],
...
}
请求参数详解
- page_index 和 page_size:用于分页请求,从第一页开始,每页最多50条记录。
- start_time 和 end_time:用于指定查询的时间范围,这两个字段必须同时存在且间隔不超过七天。
- date_type:指定查询的时间类型,可选值为修改时间、创建时间或确认时间。
- type:售后类型,如普通退货、拒收退货等。
- status:售后单状态,如待确认、已确认等。
- good_status:货物状态,此处默认值为“SELLER_RECEIVED”表示卖家已收到退货。
- wms_co_id:分仓编号,用于指定具体的仓库。
数据格式化与转换
在获取到原始数据后,需要对部分字段进行格式化和转换。根据元数据配置中的 formatResponse
字段,我们将对以下字段进行处理:
- 将
as_id
转换为as_id_new
- 将
type
转换为type_new
这种转换有助于统一不同系统之间的数据格式,提高数据处理的一致性和可读性。
自动填充响应与条件过滤
元数据配置中还包含了自动填充响应 (autoFillResponse
) 和条件过滤 (condition
) 的设置:
{
...
"autoFillResponse": true,
...
}
启用自动填充响应功能,可以确保在返回的数据中自动包含所有必要字段,无需手动处理。此外,通过条件过滤,可以进一步筛选符合特定条件的数据。例如:
{
...
"condition_bk":[[{"field":"items.type","logic":"in","value":"退货"}]],
...
}
上述条件表示仅筛选出类型为“退货”的记录。
异常处理与补救机制
为了确保数据集成过程的稳定性和可靠性,还需要设置异常处理和补救机制。例如,通过定时任务 (crontab
) 定期检查并接管请求,以防止因网络或系统问题导致的数据丢失:
{
...
"omissionRemedy":{
...
"crontab": "*\/3 * * * *"
...
}
上述设置表示每三小时执行一次检查任务,以确保所有请求都能被正确处理。
通过以上步骤,我们可以高效地调用聚水潭·奇门接口获取销售退货单数据,并进行必要的数据加工和转换,为后续的数据写入和业务处理打下坚实基础。
将源平台数据转换为金蝶云星辰V2API接口格式并写入目标平台
在数据集成生命周期的第二阶段,我们将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星辰V2API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程。
API接口配置
首先,我们需要了解金蝶云星辰V2API接口的配置要求。根据提供的元数据配置,目标API接口为/jdy/v2/scm/sal_in_bound
,使用POST方法提交数据。以下是具体字段及其对应关系:
bill_date
: 入库日期,对应源数据中的items.receive_date
customer_number
: 客户,对应源数据中的shop_id
bill_no
: 单据编码,对应源数据中的as_id
custom_field
: 自定义字段,包括聚水潭线上单号和售后类型custom_field__1__3urq4xiepxie3tbl
: 聚水潭线上单号,对应源数据中的so_id
custom_field__1__3wioxie6qd2ffz
: 售后类型,对应源数据中的type
operation_key
: 操作类型,固定值为audit
remark
: 备注,对应源数据中的remark
bill_dis_amount
: 单折扣额,根据条件判断,如果free_amount
大于0,则取其值,否则为0material_entity
: 商品分录,包括多个子字段is_free
: 是否赠品,根据条件判断,如果金额为0或类型为换货,则为true,否则为falsematerial_number
: 商品id,对应源数据中的items.sku_id
price
: 单价qty
: 数量,对应源数据中的items.r_qty
stock_number
: 仓库id,根据条件判断,生成不同格式的仓库idtax_price
: 含税单价,根据条件判断,如果类型为换货,则为0,否则取原始价格unit_id
: 单位id,固定值为4custom_entity_field
: 自定义字段,包括进仓时间custom_entity_field__1__3xblftg6dyhs67
: 进仓时间,对应源数据中的items.receive_date
数据转换与映射
在进行ETL转换时,我们需要对以上字段进行映射和转换。以下是具体步骤:
-
提取并转换基本信息:
{ "bill_date": "{{items.receive_date}}", "customer_number": "{shop_id}", "bill_no": "{as_id}", "operation_key": "audit", "remark": "{remark}", "bill_dis_amount": "_function IF('{free_amount}' > 0 , '{free_amount}' , 0 )" }
-
处理自定义字段:
{ "custom_field": { "custom_field__1__3urq4xiepxie3tbl": "{so_id}", "custom_field__1__3wioxie6qd2ffz": "{type}" } }
-
处理商品分录:
{ "material_entity": [ { "is_free": "_function case when '{{items.amount}}' = 0 or '{type_new}' = '换货' then 'true' else 'false' end", "material_number": "{{items.sku_id}}", "price": "{{items.price}}", "qty": "{{items.r_qty}}", "stock_number": "_function CASE '{wh_id}' WHEN 1 THEN '{wms_co_id}' ELSE '{wms_co_id}-{wh_id}' END", "tax_price": "_function CASE '{type_new}' WHEN '换货' THEN '0' ELSE '{{items.price}}' END", "unit_id": "4", "custom_entity_field": { "custom_entity_field__1__3xblftg6dyhs67": "{{items.receive_date}}" } } ] }
数据写入目标平台
完成上述转换后,我们将生成的数据通过POST请求写入金蝶云星辰V2API接口。以下是示例请求体:
{
"bill_date": "2023-10-01",
"customer_number": "CUST001",
"bill_no": "AS123456",
...
}
通过轻易云的数据集成平台,可以实现对上述过程的全生命周期管理和实时监控,确保每个环节清晰透明,从而极大提升业务效率。