线上退换货查询-销售退货单
在电子商务运营中,处理客户的退换货请求是企业必须面对的重要环节。本文将分享一个成功的系统集成案例:如何实现旺店通·企业奇门的数据集成到金蝶云星空,以便形成线上退换货查询及销售退货单。
在该技术方案中,我们使用了wdt.refund.query
API进行旺店通·企业奇门平台数据的获取,并通过金蝶云星空的batchSave
API实现高效的数据写入。整个过程需要解决以下几项关键技术问题:
-
确保数据不漏单:定时抓取并处理旺店通·企业奇门接口返回的数据,通过可靠性机制避免任何可能发生的丢失情况。
-
分页与限流管理:由于旺店通API响应数据量大,必须设计分页策略,同时要注意限流设置以符合API调用频率限制。
-
数据格式差异处理:磨平两个系统之间的数据结构差异,这涉及自定义转换逻辑以及复杂字段映射。
-
质量监控和异常检测:引入实时监控和日志记录功能,当出现错误或异常状况时能即时告警并执行重试机制。
-
批量快速写入: 支持高吞吐量的数据操作,加速大量退款订单的信息同步至金蝶云星空,提高整体流程效率。
-
完整生命周期管理(简要提及):从初始配置、持续调优到最终业务上线,每个步骤都经过严密规划和测试,保证全程透明可视化可跟踪。
接下来,我们将详细介绍各个技术环节中的具体实施方法与代码示例,包括如何调用相关API、分页策略设计、异常重试机制等内容。
使用旺店通·企业奇门接口wdt.refund.query进行数据集成
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何使用旺店通·企业奇门接口wdt.refund.query
获取并加工线上退换货查询-销售退货单的数据。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是具体的配置细节:
{
"api": "wdt.refund.query",
"method": "POST",
"number": "refund_no",
"id": "refund_no",
"pagination": {
"pageSize": 40
},
"idCheck": true,
"condition": [
[
{"field":"shop_no","logic":"neq","value":"01"},
{"field":"shop_no","logic":"neq","value":"02"},
{"field":"shop_no","logic":"neq","value":"03"},
{"field":"shop_no","logic":"neq","value":"04"},
{"field":"shop_no","logic":"neq","value":"05"},
{"field":"shop_no","logic":"neq","value":"06"},
{"field":"shop_no","logic":"neq","value":"07"},
{"field":"shop_no","logic":"neq","value":"08"},
{"field":"shop_no","logic":"neq","value":"09"},
{"field":"shop_no","logic":"neq","value":"10"},
{"field":"shop_no","logic":"neq","value":"11"},
{"field":"shop_no","logic":"neq","value":"12"},
{"field":"shop_no","logic":"neq","value":"13"},
{"field":"shop_no","logic":"neq","value":"14"},
{"field": "type", "logic": "eq", "value": "2"}
],
[
{"field": "shop_no", "logic": "neq", "value": "01"},
{"field": "shop_no", "logic": "neq", "value": "02"},
{"field": "shop_no", "logic": "neq", "value": "03"},
{"field": "shop_no", "logic": "neq", "value": "04"},
{"field": "shop_no", "logic": "neq", "value": "05"},
{"field": "shop_no", "logic": "neq", "value": "06"},
{"field": "shop_no", "logic": "neq", "value": ":07},
{"field": ":08},
{"field: ":09},
{:"10},
{:"11},
{:"12},
{:"13},
{:"14},
{:"3}
]
],
request: [
{
field: process_status,
label: 退换单处理状态,
type: string,
describe: 退换单处理状态 5 补款 10已取消 20待审核 30已同意 40已拒绝 50待财审 60待收货 63待推送 64推送失败 65委外待收货 69待收货(已结算)70部分到货71部分到货(已结算)80待结算90已完成,
value:90
},
{
field: time_type,
label: 时间类型,
type: string,
describe:0,最后更新时间,1,结算时间。默认值0
},
{
field:start_time,
label:开始时间,
type:string,
describe:按最后修改(结算)时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss,
value:{{LAST_SYNC_TIME|datetime}}
},
{
field:end_time,
label:结束时间,
type:string,
describe:按最后修改时间(结算)增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss,
value:{{CURRENT_TIME|datetime}}
},
{
field: shop no,
label: 店铺编号,
type: string,
describe: 店铺编号
},
{
field: refund no,
label: Erp内退换单编号,
type: string,
describe: Erp内退换单编号,传该字段可以不传时间
},
{
field: src refund no,
label: 平台原始退换单号,
type: string,
describe: 平台原始退换单号,传该字段可以不传时间
},
{
field trade no,
label 系统订单编号,
type string,
describe 系统订单编号,传该字段可以不传时间
},
{
field tid,
label 原始单号,
type string,
describe 原始单号,传该字段可以不传时间
}
]
}
数据请求与清洗
在调用wdt.refund.query
接口时,我们需要注意以下几点:
-
请求方法:
- 使用POST方法进行数据请求。
-
分页处理:
- 每次请求的数据条数为40条,通过分页机制确保能够完整获取所有符合条件的数据。
-
条件过滤:
- 根据店铺编号和退换单类型进行过滤,以确保只获取特定店铺和类型的退换货数据。
- 条件示例:
[ {“field”: “type”, “logic”: “eq”, “value”: “2”} ]
-
增量获取:
- 利用
start_time
和end_time
参数实现增量数据获取,从而避免重复拉取历史数据,提高效率。
- 利用
数据转换与写入
在成功获取到源系统的数据后,需要对其进行必要的清洗和转换,以便写入目标系统。以下是一些常见的数据清洗操作:
-
字段映射:
- 将源系统中的字段映射到目标系统对应的字段。例如,将源系统中的
refund_no
映射为目标系统中的return_order_id
。
- 将源系统中的字段映射到目标系统对应的字段。例如,将源系统中的
-
数据格式转换:
- 将日期格式从
yyyy-MM-dd HH:mm:ss
转换为目标系统所需的格式。
- 将日期格式从
-
异常数据处理:
- 对于缺失或异常的数据进行处理,例如填充默认值或丢弃无效记录。
通过上述步骤,我们能够高效地从旺店通·企业奇门接口中获取并加工线上退换货查询-销售退货单的数据,为后续的数据集成打下坚实基础。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现步骤和细节。
1. 配置API接口
首先,我们需要配置金蝶云星空的API接口。根据元数据配置,使用batchSave
API进行批量保存操作。该API使用POST
方法,并且支持ID检查。
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
}
}
2. 请求参数配置
在请求参数中,我们需要配置具体的字段及其对应的值。这些字段包括单据类型、单据编号、销售组织、日期、库存组织、退货客户等。以下是详细的字段配置:
{
"request": [
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"parser": {
"name": "ConvertObjectParser",
"params": "FNumber"
},
"value": "XSTHD01_SYS"
},
{
"field": "FBillNo",
"label": "单据编号",
...
},
...
]
}
3. 数据转换与解析
为了确保数据能够被目标平台正确接收,我们需要对部分字段进行解析和转换。例如,销售组织(FSaleOrgId)、库存组织(FStockOrgId)等字段需要通过特定的查询语句从源数据中提取并转换为目标格式。
{
...
{
"field": "FSaleOrgId",
"label": "销售组织",
...
"value": "_findCollection find FSaleOrgId_FNumber from 9b7e7d5b-6768-3b31-9910-af21746cbc34 where FNumber={shop_no}",
...
},
...
}
4. 明细信息处理
对于明细信息(FEntity),我们需要处理多个子字段,包括物料编码(FMaterialId)、实退数量(FRealQty)、价税合计(FALLAMOUNT)等。这些字段通常以数组形式存在,需要逐一解析和赋值。
{
...
{
"field": "FEntity",
...
{
...
{
"field": "FMaterialId",
...
"value": "{{refund_order_list.spec_no}}"
},
{
...
{
...
{
...
{
...
...
...
}
}
}
}
}
}
}
5. 财务信息处理
财务信息(SubHeadEntity)也需要特别处理,包括结算组织(FSettleOrgId)、第三方单据编号(FThirdBillNo)等。这些信息通常与业务逻辑密切相关,需要准确无误地映射到目标平台。
{
...
{
...
{
...
{
...
...
...
...
...
...
...
...
}
}
}
}
6. 提交并审核
在所有字段配置完成后,我们可以将数据提交到金蝶云星空,并选择是否自动提交和审核。在本案例中,我们选择自动提交并审核。
{
...
{
...
{
...
{
...
{
...
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
{
true
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
}
]
]
}
通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入了金蝶云星空API接口。这个过程不仅确保了数据的一致性和准确性,还大大提升了业务处理效率。