旺店通销售出库单&金蝶应收单---货品类型为1,销售价格为0-配置ok--集成案例解析
在处理企业数据对接过程中,高效、准确地实现不同系统间的数据同步是关键。本篇文章将聚焦于旺店通·企业奇门与金蝶云星空的系统对接,通过一个实际运行的方案:旺店通销售出库单&金蝶应收单---货品类型为1,销售价格为0-配置ok--,展示如何利用高吞吐量的数据写入能力和实时监控功能,实现无缝数据集成。
数据获取和接口调用
首先,我们需要从旺店通·企业奇门中抓取相关订单数据。通过调用API wdt.stockout.order.query.trade
来获取所有满足条件的销售出库单信息。为了确保不漏掉任何订单,我们设置了定时任务以可靠地抓取接口数据,同时处理分页和限流问题,以保证大批量数据能够顺利取得。
def fetch_data_from_wangdiantong(api_endpoint, params):
"""
从旺店通·企业奇门API获取销售信息,并处理分页。
"""
all_records = []
has_more = True
while has_more:
response = requests.get(api_endpoint, params=params)
data = response.json()
all_records.extend(data['orders'])
# 更新分页参数,如果没有更多记录则跳出循环
if not data['has_next']:
has_more = False
else:
params['page_no'] += 1
return all_records
这个函数应用了分页机制,从而确保能够完整拉取到所有目标数据信息。
数据转换与映射策略
接下来,需要将从旺店通·企业奇门获取到的数据进行适当的转换,以匹配金蝶云星空要求的数据结构。在这一步,通过自定义的数据转换逻辑,可以灵活调整字段格式和内容,为后续批量保存操作做好准备。
def transform_data(records):
transformed_records = []
for record in records:
transformed_record = {
"GoodsType": record["goods_type"],
"SalesPrice": record["sale_price"],
# 更多字段对应关系...
}
transformed_records.append(transformed_record)
return transformed_records
数据批量写入及错误重试机制
对于已经转换好的数据,将其通过batchSave
API 批量写入到金蝶云星空系统中。在此过程中,为保障每条记录都能正确保存,引入了错误重试机制并结合集中式监控告警系统,实时跟踪任务状态与性能指标。一旦发生任何异常情况,例如网络故障或API超
使用轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行加工处理。
接口配置与调用
首先,我们需要配置接口的元数据,以便正确地请求和处理数据。以下是接口wdt.stockout.order.query.trade
的元数据配置:
{
"api": "wdt.stockout.order.query.trade",
"effect": "QUERY",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"name": "order_no",
"idCheck": true,
"formatResponse": [
{
"old": "consign_time",
"new": "consign_time_new",
"format": "date"
}
],
"joinBatch": "wdt.stockout.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",
...
请求参数设置
在请求参数中,我们设置了多个字段来确保我们能够准确地获取所需的数据:
start_time
和end_time
用于定义数据获取的时间范围。status
设置为110
,表示只获取已完成的订单。shop_nos
和warehouse_no
分别用于指定店铺和仓库编号。
这些参数确保我们能够精确地控制请求范围,从而提高数据处理效率。
数据清洗与转换
在获取到原始数据后,我们需要对其进行清洗和转换。以下是一些关键步骤:
- 字段重命名:将原始字段
consign_time
重命名为consign_time_new
并格式化为日期类型。 - 条件过滤:根据条件过滤掉不符合要求的数据。例如,只保留货品类型为1且销售价格为0的记录。
- 批次合并:使用
joinBatch
参数,将出库单与批次详情进行合并,以便后续处理。
{
...
'formatResponse': [
{
'old': 'consign_time',
'new': 'consign_time_new',
'format': 'date'
}
],
...
}
自动填充与分页处理
为了确保所有请求都能顺利执行,我们还设置了自动填充响应和分页处理:
- 自动填充响应:通过设置
autoFillResponse: true
,平台会自动填充缺失的响应字段。 - 分页处理:通过设置
page_size
和page_no
参数,我们可以控制每页返回的数据条数,并逐页获取完整的数据集。
{
...
'autoFillResponse': true,
'otherRequest': [
{
'field': 'page_size',
'label': '分页大小',
'type': 'string',
'describe': '每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40',
'value': '30'
},
{
'field': 'page_no',
'label': '页号',
'type': 'string',
...
}
延迟与条件配置
为了避免过多的API调用导致系统负载过高,我们可以设置适当的延迟:
{
...
delay: 70,
}
同时,通过条件配置可以进一步细化我们的查询逻辑:
{
...
condition: [
[
{ field: 'details_list.goods_type', logic: 'eqv2', value: '1' },
{ field: 'details_list.sell_price', logic: 'eqv2', value: '0' },
{ field: 'consign_time', logic: 'egt', value: '2023-12-28timestamp' }
]
]
}
以上步骤展示了如何通过轻易云数据集成平台调用旺店通·企业奇门接口,并对获取的数据进行清洗和转换。这些技术细节确保了我们能够高效、准确地完成数据集成任务。
使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口
在数据集成的生命周期中,数据转换与写入是至关重要的一环。本文将详细介绍如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。
1. 数据请求与清洗
在开始数据转换之前,首先需要从源系统中请求并清洗数据。假设我们已经完成了这一步,并且获得了如下结构的源数据:
{
"shop_no": "005",
"consign_time_new": "2023-10-01",
"modified": "2023-10-02",
"details_list": [
{
"goods_no": "P001",
"goods_count": 100,
"remark": "",
"batch_list": [
{
"batch": "B001",
"product_date": "2023-09-01",
"expire_date": "2024-09-01",
"num": 50
}
],
"warehouse_no": "W001"
}
]
}
2. 数据转换与写入
接下来,我们将使用轻易云数据集成平台提供的元数据配置,将上述源数据转换为金蝶云星空API接口所需的格式。
配置API接口信息
根据提供的元数据配置,我们需要调用金蝶云星空的batchSave
API接口。该接口采用POST方法,主要字段如下:
{
"api": "batchSave",
"method": "POST",
...
}
配置请求头部和主体
在请求头部和主体中,我们需要根据业务逻辑填充相应的数据字段。以下是关键字段及其配置方式:
-
单据类型(FBillTypeID):
{ "field": "FBillTypeID", ... "value": "YSD01_SYS" }
-
单据编号(FBillNo):
{ "field": "FBillNo", ... }
-
业务日期(FDATE):
{ "field": "FDATE", ... "value": "{modified}" }
-
结算组织(FSETTLEORGID):
{ ... "_function case when '{shop_no}' in ('005', '006', '007','0081', '0091') then 'DZ' when '{shop_no}' in ('002', '003', '004','0072') then 'BZ' end" }
-
客户(FCUSTOMERID):
{ ... "_function case when '{shop_no}'='002' then 'CUST0018' when '{shop_no}'='003' then 'CUST0677' ... end" }
-
销售部门(FSALEDEPTID):
{ ... "_function case when '{shop_no}' in ('007', '006') then '3002' ... end" }
-
明细(FEntityDetail):
- 物料编码(FMATERIALID):
{ ... "{{list.details_list_goods_no}}" }
- 计价数量(FPriceQty):
{ ... "{{list.details_list__batch_list_num}}" }
- 批号(FLot):
{ ... "_mongoQuery ... findField=content.FLot_FNumber ..." }
- 物料编码(FMATERIALID):
完整请求示例
基于上述配置,生成的完整请求示例如下:
{
"FormId": "AR_receivable",
"Operation": "BatchSave",
...
{
...
{
...
"_function case when '{shop_no}' in ('005', '006', '007','0081', '0091') then 'DZ' ... end"
},
...
[
{
...
"{{list.details_list_goods_no}}"
"{{list.details_list__batch_list_num}}"
"_mongoQuery ... findField=content.FLot_FNumber ..."
...
[
{
...
"_mongoQuery ... findField=content.FBillNo ..."
"_mongoQuery ... findField=content.FEntity_FENTRYID ..."
}
]
}
]
}
}
通过以上步骤,我们成功地将源平台的数据转换为金蝶云星空API接口所需的格式,并准备好进行写入操作。此过程不仅确保了数据的一致性和准确性,还提升了整体业务流程的自动化程度和效率。