盘亏单-p:旺店通·企业奇门数据集成到用友BIP的技术解析
在本次项目实施中,主要目标是将旺店通·企业奇门系统中的库存盘亏数据通过接口整合到用友BIP平台,以实现高效的数据同步与业务协同。本文将详细探讨这一过程中所涉及的关键技术点、具体实现步骤及常见问题解决方案。
一、确保集成过程不漏单
为了保证从旺店通·企业奇门获取的数据完整性,首先调用API wdt.stockout.order.query
定时抓取出库订单信息。这需要设置精确的定时任务来定期扫描新产生或更新的订单,并进行批量读取操作。在此基础上,我们采取增量抓取策略,仅处理自上次成功同步以来发生变化的数据,从而减轻服务器负担并提升数据传输效率。
二、大量数据快速写入到用友BIP
面对大量库存盘亏订单,需要优化写入性能以避免拥塞和卡顿。通过使用多线程异步写入机制,将从旺店通·企业奇门提取的大批量数据分段后并行发送至用友BIP。其中,每条记录都调用API /yonbip/scm/othoutrecord/single/save
完成存储操作。另外,通过设立缓存队列,可以有效缓解瞬间高并发下可能出现的问题。
三、分页与限流问题
由于旺店通·企业奇门接口对查询结果有分页限制,因此我们必须妥善处理分页逻辑。在每次接口请求中记录当前页码以及返回数量,当确认所有页面均已处理完毕后再停止请求。此外,为应对访问频率限制,可以实现在接口层面增加冷却时间或者进一步提高脚本执行延迟,以适应服务端限流策略,从而保障整个获取流程的稳定性和连续性。
上述初始准备工作为后续更深入细致的问题解决奠定了基础,在接下来的部分里,我们将探讨如何进行数据格式转换、异常重试机制以及日志监控等重要环节。
调用旺店通·企业奇门接口获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query
来获取并加工盘亏单数据。
接口调用配置
首先,我们需要了解接口的基本配置。根据元数据配置,wdt.stockout.order.query
接口采用POST方法进行调用,主要参数如下:
- api:
wdt.stockout.order.query
- method:
POST
- number:
stockout_no
- id:
stockout_no
- pagination: 每页30条记录
- condition:
stockout_reason
字段包含“盘亏”status
字段大于等于95
请求参数详解
请求参数分为两部分:基础请求参数和其他请求参数。
基础请求参数
-
start_time 和 end_time
- 用于按最后修改时间增量获取数据。
- 格式为
yyyy-MM-dd HH:mm:ss
。 - 例如:
start_time={{LAST_SYNC_TIME|datetime}}
,end_time={{CURRENT_TIME|datetime}}
-
order_type
- 出库单类型,值为7表示“其他出库”。
-
status
- 出库单状态,默认查已发货和已完成单据。
-
warehouse_no
- 仓库编号,用于区分不同仓库。
-
src_order_no
- 源单号。
-
stockout_no
- 出库单号,传该字段可以不传时间。
其他请求参数
-
page_size
- 每页返回的数据条数,默认值为40。
-
page_no
- 页号,不传值默认从0页开始。
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以确保数据的准确性和一致性。以下是一些常见的数据清洗步骤:
-
过滤无效数据
- 根据业务需求过滤掉不符合条件的数据,例如状态不为95或110的记录。
-
字段映射与转换
- 将源系统的字段映射到目标系统所需的字段。例如,将
stockout_no
映射为目标系统中的出库单号。
- 将源系统的字段映射到目标系统所需的字段。例如,将
-
格式化日期时间
- 确保所有日期时间字段格式一致,以便后续处理和分析。
-
去重处理
- 如果同一条记录多次出现,需要进行去重处理,以避免重复数据影响业务决策。
数据写入
清洗和转换后的数据需要写入目标系统。这一步通常包括以下操作:
-
批量插入
- 将处理好的数据批量插入到目标数据库,提高写入效率。
-
日志记录
- 记录每次数据处理的日志,包括成功和失败的记录,以便后续追踪和排查问题。
-
异常处理
- 对于写入过程中出现的异常情况,需要有相应的处理机制,例如重试或报警通知。
通过以上步骤,我们可以高效地调用旺店通·企业奇门接口获取盘亏单数据,并进行必要的数据清洗和转换,最终实现数据的无缝对接。这不仅提高了业务透明度,也极大提升了工作效率。
数据集成与ETL转换:用友BIPAPI接口配置案例
在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台用友BIPAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。
API接口配置
我们需要将数据通过POST方法提交到用友BIP的/yonbip/scm/othoutrecord/single/save
接口。以下是具体的元数据配置:
{
"api": "/yonbip/scm/othoutrecord/single/save",
"method": "POST",
"idCheck": true,
"BIPAudit": "/yonbip/scm/othoutrecord/batchaudit",
"request": [
{
"field": "resubmitCheckKey",
"label": "保证请求的幂等性",
"type": "string",
"describe": "该值由客户端生成",
"value": "{order_no}"
},
{
"field": "code",
"label": "单据编号",
"type": "string",
"describe": "以系统编码规则配置为准,系统设置为手工编号时必输,系统设置为自动编号时非必输;更新操作时必填 例:QTCK0000001",
"value": "{order_no}"
},
{
// ... (其他字段省略)
}
]
}
数据清洗与转换
在实际操作中,我们需要对源平台的数据进行清洗和转换,以确保其符合目标平台的要求。以下是几个关键字段及其处理方式:
-
幂等性检查键
resubmitCheckKey
:- 使用订单号
{order_no}
作为唯一标识,确保每次请求都是幂等的。
- 使用订单号
-
单据编号
code
:- 根据系统编码规则配置,如果是手工编号则必填,使用
{order_no}
。
- 根据系统编码规则配置,如果是手工编号则必填,使用
-
库存组织
org
和 会计主体accountOrg
:- 使用
_findCollection
方法从特定表中查找对应的org_code
,例如:_findCollection find org_code from 4f73f755-1c4f-33e6-b5a1-7e3b8d894800 where code={warehouse_no}
- 使用
-
单据日期
vouchdate
:- 格式化日期为
yyyy-MM-dd
,例如{consign_time}
。
- 格式化日期为
-
其他出库单子表
othOutRecords
:- 子表字段包括物料、物料SKU、批次号、生产日期、有效期至、应发数量、件数、主计量单位等。
- 示例:
{ "field": "product", "label": "物料", "type": "string", "describe": "传入id或code 例:PD0817000001", "value": "{{details_list.goods_no}}" }
子表数据处理
对于子表中的数据,需要特别注意以下几点:
-
物料信息:
- 使用物料编码
{details_list.goods_no}
和 SKU{details_list.spec_no}
。
- 使用物料编码
-
数量和件数:
- 应发数量和件数均使用
{details_list.goods_count}
。
- 应发数量和件数均使用
-
主计量单位和库存单位:
- 使用
_findCollection
方法查找对应的单位编码,例如:_findCollection find code from f9eedcc9-f1ff-31c0-9081-6aee9cf21740 where name={goods_unit}
- 使用
-
备注信息:
- 在子表中添加备注信息
{details_list.remark}
。
- 在子表中添加备注信息
提交与审核
完成数据清洗与转换后,将数据提交到用友BIPAPI接口,并调用审核接口 /yonbip/scm/othoutrecord/batchaudit
完成审核流程。
{
// 提交请求示例
// ...
}
// 调用审核接口
{
// 审核请求示例
// ...
}
通过上述步骤,我们可以实现源平台数据到目标平台用友BIPAPI接口的数据转换和写入。这一过程不仅提高了数据处理效率,还确保了数据的一致性和准确性。