旺店通·企业奇门数据集成到金蝶云星空:销售出库(寄售业务)案例分享
在企业信息化系统对接过程中,实现数据的无缝流转、确保不遗漏单据和快速批量写入是至关重要的。本文将详细阐述如何通过轻易云数据集成平台,成功完成旺店通·企业奇门与金蝶云星空之间的销售出库(寄售业务)数据对接。
首先,我们需要实现从旺店通获取销售信息,此过程利用了API接口wdt.stockout.order.query.trade
。该接口能够高效地从旺店通中提取所需订单数据,同时应注意处理分页和限流机制以保障API调用的稳定性。在实际项目中,通过定时任务可靠抓取这些接口上的最新销售信息,是确保不会漏单的重要手段。
其次,面对大量订单数据,我们必须执行快速、准确的数据写入到金蝶云星空。这一环节使用了金蝶提供的batchSave
API,该接口允许批量导入记录,从而极大提升了操作效率。不过,在进行批量导入时,需要特别留意源系统与目标系统间的数据格式差异问题,这就要求我们在映射过程中实施相应的数据转换策略。此外,为保证集成过程中的可靠性,还加入了异常处理与错误重试机制,以防止因意外错误引发的大规模失败。
值得一提的是,为进一步提高透明度和可控性,我们在整个对接流程中实现了实时监控与日志记录。通过这样的设置,可以动态追踪每一个步骤的数据处理状态,有助于及时发现并解决潜在的问题。
综上,通过科学合理地应用API及相关技术手段,我们成功完成了一次复杂但高效的系统对接集成。从而不仅满足了企业对于销售信息及时、高效录入ERP系统需求,也充分展示了轻易云平台强大的功能和灵活性。在后续部分,将进一步深入探讨具体实施细节,以及各关键环节代码示例及配置要点。
调用旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成的生命周期中,调用源系统API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置元数据,以确保能够正确调用接口并获取所需数据。以下是关键的元数据配置:
{
"api": "wdt.stockout.order.query.trade",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"pagination": {
"pageSize": 100
},
"idCheck": true,
"condition": [
[
{
"field": "shop_no",
"logic": "like",
"value": "JS"
}
]
],
"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:订单状态,可以过滤特定状态的订单。
- shop_no 和 warehouse_no:分别代表店铺编号和仓库编号,用于区分不同店铺和仓库的数据。
这些参数通过POST请求发送到wdt.stockout.order.query.trade
接口,以获取销售出库(寄售业务)的相关订单信息。
数据分页处理
由于接口返回的数据可能非常庞大,因此需要分页处理。配置中的pagination
字段设置了每页返回的数据条数为100条。分页参数如下:
- page_size:每页返回的数据条数,默认为100。
- page_no:页号,从0开始。
在实际调用过程中,需要循环递增page_no
,直到所有数据都被成功拉取。
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续处理和存储。以下是一些常见的清洗与转换操作:
- 字段映射:将源系统的字段映射到目标系统。例如,将
stockout_no
映射为目标系统中的出库单号。 - 数据格式转换:将日期时间字段从字符串格式转换为标准的日期时间对象。
- 异常值处理:过滤掉不符合业务规则的异常值,例如状态为“已取消”的订单。
示例代码片段:
def clean_and_transform(data):
cleaned_data = []
for record in data:
if record['status'] != '5': # 排除已取消订单
transformed_record = {
'order_number': record['order_no'],
'stockout_number': record['stockout_no'],
'shop_code': record['shop_no'],
'warehouse_code': record['warehouse_no'],
'order_date': datetime.strptime(record['start_time'], '%Y-%m-%d %H:%M:%S')
}
cleaned_data.append(transformed_record)
return cleaned_data
数据写入
经过清洗和转换后的数据可以写入目标数据库或其他存储系统。这一步通常涉及到批量插入操作,以提高效率。
示例代码片段:
def write_to_database(cleaned_data, db_connection):
with db_connection.cursor() as cursor:
for record in cleaned_data:
cursor.execute(
"""
INSERT INTO sales_orders (order_number, stockout_number, shop_code, warehouse_code, order_date)
VALUES (%s, %s, %s, %s, %s)
""",
(record['order_number'], record['stockout_number'], record['shop_code'], record['warehouse_code'], record['order_date'])
)
db_connection.commit()
通过上述步骤,我们实现了从旺店通·企业奇门接口获取销售出库(寄售业务)订单数据,并对其进行清洗、转换和写入目标数据库的全过程。这一过程不仅确保了数据的一致性和完整性,还极大地提升了业务处理效率。
使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并将其转为目标平台——金蝶云星空API接口所能够接收的格式,最终写入目标平台。以下将详细介绍如何利用轻易云数据集成平台实现这一过程。
1. API接口配置
首先,我们需要配置金蝶云星空的API接口。根据提供的元数据配置,我们使用batchSave
API,方法为POST
,并启用ID检查(idCheck: true
)。
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
...
}
2. 请求参数配置
请求参数包括单据编号、单据类型、业务类型等字段。每个字段都需要根据源数据进行相应的转换和映射。例如:
FBillNo
: 单据编号,直接从源数据中的order_no
字段获取。FBillTypeID
: 单据类型,固定值为ZJDB07_SYS
。FSaleOrgId
: 销售组织,根据不同的店铺名称(shop_name
)进行映射。
{
"field": "FBillNo",
"label": "单据编号",
"type": "string",
"describe": "单据编号",
"value": "{order_no}"
},
{
"field": "FBillTypeID",
"label": "单据类型",
"type": "string",
"describe": "单据类型",
"value": "ZJDB07_SYS",
...
},
{
...
}
3. 数据转换逻辑
对于复杂的数据转换逻辑,例如销售组织(FSaleOrgId
)和结算组织(FSettleOrgId
),我们使用条件语句进行映射:
{
"field": "FSaleOrgId",
...
"value": "_function case when '{shop_name}' like '%古神%' then 102 when '{shop_name}' like '%广州格物%' then 101 when '{shop_name}' like '%绿星%' then 104 when '{shop_name}' like '%蓝阳%' then 105 when '{shop_name}' like '%金秋%' then 106 when '{shop_name}' like '%广西格物%' then 103 ELSE 100 end"
},
{
...
}
这种方式确保了不同店铺名称对应到正确的组织ID。
4. 明细信息处理
明细信息(FBillEntry
)是一个数组,每个元素包含物料编码、调拨数量等字段。我们需要对每个字段进行相应的解析和转换:
{
...
{
"field":"FBillEntry",
...
{
...
{
"field":"FMaterialId",
...
value":"{{details_list.spec_no}}"
},
{
...
value":"{{details_list.num}}"
},
{
...
}
}
}
}
通过这种方式,可以确保每条明细记录都被正确地解析和传递。
5. 提交与审核
最后,我们需要设置一些额外的请求参数,如表单ID、操作类型等,并指定是否自动提交和审核:
{
...
{
field":"FormId",
label":"业务对象表单Id",
type":"string",
describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder",
value":"STK_TransferDirect"
},
{
field":"Operation",
label":"执行的操作",
type":"string",
value":"Save"
},
{
field":"IsAutoSubmitAndAudit",
label":"提交并审核",
type":"bool",
value":"true"
}
}
通过这些设置,可以确保数据在写入金蝶云星空后自动提交并审核,提高了处理效率。
总结
通过以上步骤,我们可以利用轻易云数据集成平台,将源平台的数据经过ETL转换后,成功写入到金蝶云星空API接口。这一过程不仅实现了不同系统间的数据无缝对接,还保证了数据的一致性和准确性。