旺店通其他出库-金蝶其他出库(盘亏出库)集成案例分享
在实际企业管理中,数据的精确对接与处理至关重要。本文将聚焦于旺店通·企业奇门的数据如何通过轻易云数据集成平台高效地实时写入金蝶云星空,以实现业务环节中的“其他出库”场景。
首先,我们需要保证从旺店通获取到的数据具有高度准确性和完整性。为此,通过调用wdt.stockout.order.query
接口,实现定时可靠的抓取工作是关键。从该接口实现分页读取来解决多量大订单信息,同时应对接口限流问题,提高整体系统稳定性。
其次,在处理这些数据时,需要特别注意两者之间的数据格式差异。在集成过程中,利用轻易云的平台特性进行数据转化,为批量数据写入金蝶云星空打下基础。在此过程中,金蝶云API batchSave
将被用作主要操作点,以确保海量订单能够快速且一致地录入云端系统。
此外,为避免漏单现象发生,不仅要实施细致的日志记录及监控,还需设计健全的异常处理机制。例如,当因网络波动等原因导致部分请求失败时,应即时启用错误重试机制以保持整个流水线平滑运转。同时,通过轻易云透明可视化界面,可实时监控每个步骤状态,大幅提高故障检测和修复效率。
上述方法不仅有效解决了传统手工输入繁琐、容易错漏的问题,也大幅提升了整体业务流程自动化和智能化水平。在后续章节中,将详细描述具体配置步骤及代码样例,以期为类似需求提供清晰可行的参考方案。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据
在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取初始数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,调用旺店通·企业奇门接口wdt.stockout.order.query
来获取并加工出库单数据。
接口配置与调用
首先,我们需要配置API接口的基本信息和请求参数。根据提供的元数据配置,以下是具体的配置细节:
- API名称:
wdt.stockout.order.query
- 请求方法:
POST
- 主要字段:
order_no
: 出库单号order_type_name
: 出库单类型名称start_time
: 开始时间end_time
: 结束时间order_type
: 出库单类型(此处为盘亏出库,值为4)status
: 出库单状态(已完成,值为110)warehouse_no
: 仓库编号stockout_no
: 出库单号
请求参数设置
为了实现按时间增量获取数据,我们需要设置开始时间和结束时间参数。以下是具体的请求参数配置:
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
"order_type": "4",
"status": "110",
"warehouse_no": "wdt01"
}
其中,start_time
和end_time
分别表示上次同步时间和当前时间,用于实现增量数据获取。
分页处理
由于接口返回的数据可能较多,我们需要进行分页处理。根据元数据配置,每页返回条数默认为40,可以通过设置page_size
和page_no
来控制分页:
{
"page_size": "100",
"page_no": "0"
}
数据过滤与条件设置
为了确保获取的数据符合业务需求,我们可以设置一些过滤条件。例如,仅获取特定仓库编号且出库原因不为“工厂生产领用”的出库单:
"condition": [
{
"field": "warehouse_no",
"logic": "eqv2",
"value": "wdt01"
},
{
"field": "stockout_reason",
"logic": "neqv2",
"value": "工厂生产领用"
}
]
数据清洗与转换
在获取到原始数据后,需要对其进行清洗与转换,以便后续写入目标系统。常见的数据清洗操作包括:
- 字段映射:将源系统字段映射到目标系统字段。
- 数据格式转换:例如,将日期格式从字符串转换为标准日期格式。
- 异常数据处理:过滤掉不符合业务规则的数据。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for record in raw_data:
if record['stockout_reason'] != '工厂生产领用':
cleaned_record = {
'order_no': record['order_no'],
'order_type_name': record['order_type_name'],
'warehouse_no': record['warehouse_no'],
'status': record['status']
}
cleaned_data.append(cleaned_record)
return cleaned_data
实时监控与日志记录
在整个数据集成过程中,实时监控和日志记录是确保数据准确性和及时发现问题的重要手段。通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态,并记录每一步操作日志,以便追溯和排查问题。
综上所述,通过合理配置元数据并调用旺店通·企业奇门接口wdt.stockout.order.query
,我们可以高效地获取并加工出库单数据,为后续的数据转换与写入奠定基础。这一步骤不仅确保了数据的一致性和准确性,还极大提升了业务透明度和效率。
使用轻易云数据集成平台实现旺店通其他出库到金蝶云星空的ETL转换
在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,使其符合目标平台API接口所能接收的格式,并最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台,将旺店通其他出库的数据转换为金蝶云星空API接口可接受的格式,并成功写入金蝶云星空。
元数据配置解析
首先,我们需要了解元数据配置中的各个字段及其作用。以下是关键字段的解析:
-
API与方法
api: "batchSave"
method: "POST"
-
请求字段
FBillNo
: 单据编号,对应{order_no}
。FBillTypeID
: 单据类型,固定值QTCKD01_SYS
,使用ConvertObjectParser
进行解析。FStockOrgId
和FPickOrgId
: 库存组织和领用组织,均对应{warehouse_no}
,使用ConvertObjectParser
进行解析,并有映射配置。FDate
: 日期,对应{consign_time|datetime}
。FDeptId
: 领料部门,根据{warehouse_no}
的不同值进行条件判断。FOwnerTypeIdHead
和FOwnerIdHead
: 货主类型和货主,分别固定值为BD_OwnerOrg
和100
。FEntity
: 明细信息,包括物料编码、零售条形码、实发数量、发货仓库等。
-
其他请求字段
FormId
: 业务对象表单ID,固定值为STK_MisDelivery
。IsAutoSubmitAndAudit
: 提交并审核,布尔值为true
。IsVerifyBaseDataField
: 验证基础资料有效性,布尔值为true
。Operation
: 执行的操作,固定值为Save
。
数据转换与写入过程
在轻易云数据集成平台上,我们通过配置上述元数据,实现从旺店通到金蝶云星空的数据转换与写入。具体步骤如下:
-
提取源数据 从旺店通系统提取出库单据的数据,包括单据编号、仓库编号、日期、明细列表等。
-
字段映射与转换 根据元数据配置,将源数据字段映射到目标字段。例如:
- 将源数据中的订单号
{order_no}
映射到目标字段FBillNo
。 - 将仓库编号
{warehouse_no}
映射到库存组织和领用组织,并使用映射配置进行转换。
- 将源数据中的订单号
-
特殊处理逻辑 对于某些字段,需要根据特定逻辑进行处理。例如:
case when '{warehouse_no}' = '07' then '006' when '{warehouse_no}' = '06' then '006' when '{warehouse_no}' = '02' then '01201' when '{warehouse_no}' = 'wdt01_CC' then '01202' when '{warehouse_no}' = 'wdt01' then '01202' when '{warehouse_no}' = 'QYYC-JSQY-WDT-cc' then '01201' when '{warehouse_no}' = 'QYYC-JSQY-WDT' then '01201' end
-
构建请求体 根据元数据配置构建符合金蝶云星空API要求的请求体,包括所有必要的字段和明细信息。
-
发送请求并处理响应 使用POST方法将构建好的请求体发送至金蝶云星空API接口,并处理响应结果。如果成功,则记录日志;如果失败,则记录错误信息并进行相应处理。
示例代码片段
以下是一个示例代码片段,用于展示如何构建请求体并发送请求:
import requests
import json
from datetime import datetime
# 构建请求体
request_body = {
"FormId": "STK_MisDelivery",
"IsAutoSubmitAndAudit": True,
"IsVerifyBaseDataField": True,
"Operation": "Save",
"Model": {
"FBillNo": order_no,
"FBillTypeID": {"FNumber": "QTCKD01_SYS"},
"FStockOrgId": {"FNumber": warehouse_no},
"FPickOrgId": {"FNumber": warehouse_no},
"FDate": consign_time.strftime('%Y-%m-%d'),
"FDeptId": get_dept_id(warehouse_no),
# ... 其他字段 ...
"FEntity": [
{
"FMaterialId": {"FNumber": detail['spec_no']},
# ... 其他明细字段 ...
} for detail in details_list
]
}
}
# 发送POST请求
response = requests.post(
url="https://api.kingdee.com/batchSave",
headers={"Content-Type": "application/json"},
data=json.dumps(request_body)
)
# 处理响应
if response.status_code == 200:
print("Data successfully saved to Kingdee Cloud.")
else:
print(f"Failed to save data: {response.text}")
以上代码展示了如何根据元数据配置构建请求体,并通过HTTP POST方法将其发送至金蝶云星空API接口。通过这种方式,可以实现从旺店通系统到金蝶云星空系统的数据无缝对接。