其他入库(其他)V2.0:旺店通·企业奇门数据集成到金蝶云星辰V2的技术分享
在实施系统对接和数据集成时,确保数据的准确性和高效传输是至关重要的。在这篇文章中,我们将重点探讨如何利用API接口将旺店通·企业奇门的数据高效、安全地集成到金蝶云星辰V2。具体案例命名为“其他入库(其他)V2.0”。
首先,通过调用旺店通·企业奇门的wdt.stockin.order.query
接口,我们可以获取所需的数据。这一接口支持分页查询,因此需要处理相应的分页逻辑和限流问题,以避免请求过载。同时,为了确保不漏单,每次抓取都必须精确记录上一次同步的位置,并设置定时抓取机制以保证数据实时更新。
在获取旺店通的数据后,下一步就是快速、大量地写入到金蝶云星辰V2,这里我们使用的是其提供的/jdy/v2/scm/inv_other_in
API进行写操作。为了匹配两端的数据格式,需要先进行必要的数据转换与映射。这包括字段对应关系、值域校正等细节工作,使之符合目标系统的要求。
此外,在实际操作中,对接过程中的异常处理与错误重试机制也是必须考虑的一部分。当调用API出现失败或返回错误信息时,应及时捕获并进行日志记录,并根据预设条件自动重试,以尽可能降低人工干预频率,提高系统稳定性。
通过这些配置,不仅能有效解决双系统之间的数据传递,还能实现业务流程全透明化管理,大幅提升整体运行效率。以下章节将详细介绍各个步骤及代码实现,请继续阅读了解更多技术细节。
调用源系统旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockin.order.query
来获取并加工数据。
接口调用配置
首先,我们需要配置接口的元数据。以下是一个典型的元数据配置示例:
{
"api": "wdt.stockin.order.query",
"method": "POST",
"number": "order_no",
"id": "stockin_id",
"pagination": {
"pageSize": 50
},
"condition": [
[
{
"field": "warehouse_no",
"logic": "neq",
"value": "WH2024052601"
}
]
],
"idCheck": true,
"request": [
{
"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": "order_type",
"label": "源单据类别",
"type": "string",
"describe":"源单据类别 1采购入库, 2调拨入库, 4盘盈入库, 5生产入库, 6其他入库, 7保修入库, 8纠错入库, 9初始化入库,10预入库,11JIT退货入库,12委外入库",
"value":"6"
},
{
"field":"status",
...
请求参数详解
-
开始时间和结束时间:通过
start_time
和end_time
字段,我们可以实现按最后修改时间增量获取数据。这两个字段分别使用了动态变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
,确保每次调用都能获取最新的数据。 -
源单据类别:字段
order_type
用于指定源单据类别。在本案例中,我们设置为“6”,表示其他入库。 -
状态过滤:字段
status
用于过滤特定状态的入库单。在本案例中,我们设置为“60,80”,表示待结算和已完成的单据。 -
仓库编号排除:通过条件配置,我们排除了仓库编号为“WH2024052601”的记录。
分页处理
为了处理大批量的数据,接口支持分页功能。我们在元数据中配置了分页参数:
{
...
“otherRequest”: [
{
“field”: “page_size”,
“label”: “分页大小”,
“type”: “string”,
“describe”: “每页返回的数据条数,输入值范围1~100,不传本参数,输入值默认为40”,
“value”: “{PAGINATION_PAGE_SIZE}”
},
{
“field”: “page_no”,
“label”: “页号”,
“type”: “string”,
“describe”: “不传值默认从0页开始”,
“value”: “{PAGINATION_START_PAGE}”
}
]
}
通过设置分页大小和页号,可以有效地控制每次请求返回的数据量,从而避免一次性拉取大量数据导致的性能问题。
数据清洗与转换
在获取到原始数据后,需要进行清洗与转换,以满足目标系统的需求。常见的数据清洗操作包括:
- 字段映射:将源系统中的字段映射到目标系统中的对应字段。
- 格式转换:例如,将日期格式从“yyyy-MM-dd HH:mm:ss”转换为目标系统所需的格式。
- 数据过滤:根据业务规则过滤掉不需要的数据记录。
实时监控与日志记录
为了确保数据集成过程的透明度和可追溯性,实时监控和日志记录是必不可少的。轻易云平台提供了详细的日志记录功能,可以实时监控每个接口调用的状态、请求参数及响应结果,从而快速定位并解决问题。
通过上述步骤,我们可以高效地调用旺店通·企业奇门接口wdt.stockin.order.query
获取并加工所需的数据,为后续的数据处理和写入打下坚实基础。
将源平台数据转换并写入金蝶云星辰V2API接口的技术案例
在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将源平台的数据进行ETL转换,并通过金蝶云星辰V2API接口写入目标平台。
元数据配置解析
首先,我们来看一下元数据配置:
{
"api": "/jdy/v2/scm/inv_other_in",
"effect": "EXECUTE",
"method": "POST",
"number": "id",
"id": "id",
"name": "id",
"idCheck": true,
"request": [
{
"field": "bill_date",
"label": "单据日期",
"type": "string",
"value": "{stockin_time}"
},
{
"field": "bill_no",
"label": "单据编码",
"type": "string",
"value": "{order_no}"
},
{
"field": "trans_type_id",
"label": "业务类型id",
"type": "string",
"value": "12"
},
{
"field": "operation_key",
"label": "操作类型",
"type": "string",
"value": "audit"
},
{
...
}
]
}
数据请求与清洗
在数据请求阶段,我们需要从源系统中提取原始数据。假设我们已经完成了这一步,接下来我们需要对这些数据进行清洗和转换,以符合目标系统的要求。
数据转换与写入
为了将清洗后的数据转换为金蝶云星辰V2API接口所能接收的格式,我们需要按照元数据配置中的要求进行字段映射和处理。
-
单据日期(bill_date):
- 从源数据中提取
stockin_time
字段,并将其映射到bill_date
。
- 从源数据中提取
-
单据编码(bill_no):
- 从源数据中提取
order_no
字段,并将其映射到bill_no
。
- 从源数据中提取
-
业务类型ID(trans_type_id):
- 固定值为"12",表示特定的业务类型。
-
操作类型(operation_key):
- 固定值为"audit",表示审核操作。
-
商品分录(material_entity):
- 商品分录是一个数组,每个分录包含多个字段,如商品ID、数量、单位和仓库等。
- 对于每个商品分录,需要执行以下操作:
- 商品ID(material_id):通过MongoDB查询,根据
details_list.goods_no
找到对应的商品ID。 - 数量(qty):直接从
details_list.goods_count
获取。 - 单位(unit_id):通过MongoDB查询,根据
details_list.goods_no
找到对应的单位ID。 - 仓库(stock_id):通过集合查询,根据
details_list.warehouse_no
找到对应的仓库ID。
- 商品ID(material_id):通过MongoDB查询,根据
示例代码
以下是一个示例代码片段,用于展示如何实现上述转换逻辑:
import requests
import json
# 假设我们已经从源系统获取了原始数据
source_data = {
'stockin_time': '2023-10-01',
'order_no': 'ORD123456',
'details_list': [
{
'goods_no': 'G001',
'goods_count': '100',
'warehouse_no': 'W001'
}
# 可以有更多的商品分录
]
}
# 构建请求体
request_body = {
'bill_date': source_data['stockin_time'],
'bill_no': source_data['order_no'],
'trans_type_id': '12',
'operation_key': 'audit',
'material_entity': []
}
# 模拟MongoDB查询和集合查询
def mongo_query(goods_no):
# 模拟返回结果
return {'material_id': f'MID_{goods_no}', 'unit_id': f'UNIT_{goods_no}'}
def collection_query(warehouse_no):
# 模拟返回结果
return f'STOCK_{warehouse_no}'
# 构建商品分录部分
for detail in source_data['details_list']:
material_info = mongo_query(detail['goods_no'])
material_entry = {
'material_id': material_info['material_id'],
'qty': detail['goods_count'],
'unit_id': material_info['unit_id'],
'stock_id': collection_query(detail['warehouse_no'])
}
request_body['material_entity'].append(material_entry)
# 发起POST请求到金蝶云星辰V2API接口
api_url = '/jdy/v2/scm/inv_other_in'
headers = {'Content-Type': 'application/json'}
response = requests.post(api_url, headers=headers, data=json.dumps(request_body))
# 打印响应结果
print(response.status_code)
print(response.json())
以上代码展示了如何根据元数据配置,将源平台的数据进行ETL转换,并最终通过POST请求写入到金蝶云星辰V2API接口。通过这种方式,可以确保不同系统间的数据无缝对接,实现高效的数据集成。