金蝶云星辰V2到旺店通·企业奇门数据集成案例
在实现采购入库单数据从金蝶云星辰V2系统流转至旺店通·企业奇门的过程中,我们充分利用了两者公开的API接口,确保数据无缝对接及业务流程高效运作。本文将重点分享如何通过调用金蝶云星辰V2 /jdy/v2/scm/pur_inbound
接口抓取数据,并使用 wdt.stockin.purchase.push
接口快速、准确地写入到旺店通·企业奇门。
为了应对大量数据的处理需求,我们设计了一套批量集成方案,通过定时任务可靠抓取金蝶云星辰V2接口的数据。在此过程中,为了解决分页和限流问题,我们采用了多线程并行处理和智能重试机制,显著提升了整体效率。此外,为应对两端系统间的数据格式差异,我们制定了精细化的数据映射规则,对接异常处理与错误重试机制也被纳入其中,以保证系统运行的稳定性。
以下是具体操作步骤及技术细节解析:
调用金蝶云星辰V2接口/jdy/v2/scm/pur_inbound获取并加工数据的技术案例
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星辰V2接口/jdy/v2/scm/pur_inbound
获取采购入库单数据,并对其进行加工处理。
接口调用与请求参数配置
我们使用GET方法调用金蝶云星辰V2的采购入库单接口/jdy/v2/scm/pur_inbound
。该接口的请求参数配置如下:
{
"api": "/jdy/v2/scm/pur_inbound",
"effect": "QUERY",
"method": "GET",
"number": "bill_no",
"id": "id",
"name": "bill_no",
"idCheck": true,
"request": [
{"field":"enable","label":"可用状态","type":"string","describe":"可用状态,1:可用,0:禁用,-1:全部","value":"1"},
{"field":"search","label":"模糊搜索","type":"string","describe":"模糊搜索-名称、编码、规格、条形码"},
{"field":"parent_id","label":"商品类别","type":"string","describe":"商品类别ID"},
{"field":"isdataperm","label":"数据权限","type":"string","describe":"是否添加数据权限校验,默认false"},
{"field":"create_start_time","label":"创建开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),创建时间"},
{"field":"create_end_time","label":"创建结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),创建时间"},
{"field":"modify_start_time","label":"修改开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),修改时间", "value": "_function {LAST_SYNC_TIME}*1000"},
{"field":"modify_end_time","label":"修改结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),修改时间", "value": "_function {CURRENT_TIME}*1000"},
{"field":"page","label":"当前页","type":"string","describe":"当前页(默认1)", "value": "1"},
{"field":"page_size","label":"每页显示条数","type":"string", "describe": "每页显示条数(默认10,最大100)", "value": "10"},
{"field": "bill_status", "label": "单据状态", "type": "string", "describe": "单据状态", "value": "C"}
],
...
}
请求参数详解
- enable: 设置为"1",表示只查询可用状态的数据。
- search: 支持模糊搜索,可以根据名称、编码、规格或条形码进行查询。
- parent_id: 商品类别ID,用于过滤特定类别的商品。
- isdataperm: 数据权限校验,默认为false。
- create_start_time和create_end_time: 用于过滤特定创建时间范围内的数据。
- modify_start_time和modify_end_time: 用于过滤特定修改时间范围内的数据。这里特别注意,我们使用了函数
_function {LAST_SYNC_TIME}*1000
和_function {CURRENT_TIME}*1000
来动态获取上次同步和当前的Unix时间戳。 - page和page_size: 分页参数,默认第一页,每页显示10条记录。
- bill_status: 单据状态,设置为"C"表示只查询已审核的单据。
数据加工与处理
在获取到原始数据后,我们需要对其进行必要的清洗和转换,以确保数据符合目标系统的要求。以下是一些常见的数据处理步骤:
-
字段映射与转换
- 将源系统中的字段映射到目标系统中对应的字段。例如,将金蝶云星辰中的
bill_no
映射到旺店通中的订单编号字段。
- 将源系统中的字段映射到目标系统中对应的字段。例如,将金蝶云星辰中的
-
数据清洗
- 去除无效或冗余的数据,例如删除空值或重复记录。
- 格式化日期和数值类型的数据,使其符合目标系统的格式要求。
-
业务逻辑处理
- 根据业务需求对数据进行进一步处理,例如计算总金额、生成唯一标识符等。
-
错误处理与日志记录
- 在数据处理过程中捕获并记录错误信息,以便后续排查和修复。
示例代码
以下是一个示例代码片段,用于展示如何通过轻易云平台调用接口并处理返回的数据:
import requests
import json
# 定义请求URL和参数
url = 'https://api.kingdee.com/jdy/v2/scm/pur_inbound'
params = {
'enable': '1',
'search': '',
'parent_id': '',
'isdataperm': 'false',
'create_start_time': '-1',
'create_end_time': '-1',
'modify_start_time': str(int(LAST_SYNC_TIME) * 1000),
'modify_end_time': str(int(CURRENT_TIME) * 1000),
'page': '1',
'page_size': '10',
'bill_status': 'C'
}
# 发起GET请求
response = requests.get(url, params=params)
data = response.json()
# 数据清洗与转换
processed_data = []
for record in data['data']:
processed_record = {
'order_number': record['bill_no'],
# 更多字段映射...
}
processed_data.append(processed_record)
# 输出处理后的数据
print(json.dumps(processed_data, indent=4))
通过上述步骤,我们可以高效地从金蝶云星辰V2获取采购入库单数据,并对其进行必要的加工处理,为后续的数据写入做好准备。这一过程不仅提高了数据集成的效率,还确保了数据的一致性和准确性。
使用轻易云数据集成平台实现采购入库单数据转换与写入旺店通·企业奇门API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据(金蝶)进行ETL转换,并转为目标平台旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。
数据请求与清洗
在开始ETL转换之前,首先需要从源系统(金蝶)中提取所需的采购入库单数据。这个过程包括数据请求与清洗,确保提取的数据符合目标系统的要求。以下是一个示例配置,用于从金蝶系统中提取采购订单号:
{
"field": "purchase_no",
"label": "采购订单",
"type": "string",
"value": "_findCollection find purchase_no from ef23b625-309d-36b4-91f3-7498948a13d9 where api_outer_no={{material_entity.material_entity_src_bill_no}}"
}
数据转换与写入
一旦完成了数据请求与清洗,我们进入ETL过程的核心部分:数据转换与写入。这一步骤需要将提取的数据按照旺店通·企业奇门API接口的要求进行格式转换,并通过API接口将数据写入目标系统。
API接口配置
在本案例中,我们使用wdt.stockin.purchase.push
API接口来实现采购入库单的数据写入。以下是该接口的元数据配置:
{
"api": "wdt.stockin.purchase.push",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"operation": {
"method": "merge",
"field": "bill_no",
"bodyName": "material_entity",
"bodySum": ["material_entity_qty"],
"header": ["material_entity_src_bill_no", "bill_no", "material_entity_stock_number"],
"body": ["material_entity_material_number", "material_entity_qty",
"material_entity_tax_price", "material_entity_cess",
"material_entity_comment"]
},
...
}
请求参数配置
为了确保数据能够正确传输到目标系统,需要对请求参数进行详细配置。以下是主要字段及其配置说明:
-
外部单号(outer_no)
{ "field": "outer_no", "label": "外部单号", "type": "string", ... "value": "{bill_no}" }
外部单号用于标识唯一单据编号,避免重复推送。
-
仓库编号(warehouse_no)
{ ... "field": "warehouse_no", ... "value": "{{material_entity.material_entity_stock_number}}" }
仓库编号用于区分不同仓库。
-
货品明细节点(details_list)
{ ... { ... {"field":"spec_no","label":"商家编码","type":"string","describe":"ERP内单品唯一编码(SKU),代表单品(SKU)所有属性,并且为库存量出入计算最小单元。SKU概念介绍,单击这里","value":"{{material_entity.material_entity_material_number}}","parent":"goods_list"}, {"field":"stockin_num","label":"入库数量","type":"string","describe":"入库数量","value":"{{material_entity.material_entity_qty}}","parent":"goods_list"}, {"field":"stockin_price","label":"入库价","type":"string","describe":"入库价格,如推送为0默认取成本价。","value":"{{material_entity.material_entity_tax_price}}","parent":"goods_list"}, {"field":"tax","label":"税率","type":"string","describe":"对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16","value":"{{material_entity.material_entity_cess}}","parent":"goods_list"}, {"field":"remark","label":"备注","type":"string","value":"{{material_entity.material_entity_comment}}"} ... } }
每个货品明细节点包含多个字段,例如商家编码、入库数量、入库价等,这些字段需要根据源系统的数据进行映射和转换。
数据加载
在完成所有必要的数据转换后,通过POST方法将处理后的数据发送到旺店通·企业奇门API接口,实现数据加载:
{
...
{
...
method: 'POST',
url: 'https://api.wangdian.cn/openapi2/stockin_purchase_push.php',
data: transformedData,
headers: {
'Content-Type': 'application/json'
}
}
}
通过上述步骤,我们成功地将金蝶系统中的采购入库单数据转换并写入到旺店通·企业奇门API接口。这不仅实现了异构系统间的数据无缝对接,还提升了业务流程的自动化程度和效率。
以上就是使用轻易云数据集成平台进行ETL转换和数据写入的技术案例,希望能为您的项目提供参考和帮助。