报损单数据集成:旺店通·企业奇门与用友BIP对接案例
在复杂的业务环境中,如何实现不同系统之间的数据无缝对接,是企业信息化建设中的一大挑战。此次我们分享一个实际运行的系统集成方案——将旺店通·企业奇门(WDT)数据集成到用友BIP,以报损单为例,详细探讨技术细节和关键步骤。
1. 确保数据不漏单
为了确保从旺店通获取的数据完整无误,我们调用wdt.stockout.order.query
接口,对每个时间段逐条抓取出库订单,并通过定时任务保证实时更新。这一步骤至关重要,因为它能够避免因网络波动或接口异常导致的数据遗漏。
2. 快速写入到用友BIP
处理完成后,将这些报损单快速、高效地批量写入到用友BIP。该过程使用/yonbip/scm/othoutrecord/single/save API进行操作,实现高并发情况下的大量数据同步。同时,通过轻易云平台的优化算法,显著提升了写入速度和成功率。
3. 调用了特定API接口
在这个过程中,调用wdt.stockout.order.query
接口来拉取数据是必要的一步。我们设置了分页机制来应对可能出现的大量数据,同时考虑限流问题以确保不会过载。在实际应用中,我们发现通过适配分页参数,可以有效减少请求次数,提高效率。
4. 数据格式差异处理
由于两套系统的数据格式存在差异,我们在转换过程中采用映射表针对字段类型、名称及格式进行了严格匹配。例如,将WDT返回的JSON结构解析后再重新封装为符合用友BIP要求的格式。在这一环节,特别注意了一些日期时间戳以及枚举值等字段的转化规则,以确保兼容性和准确性。
5. 异常处理与错误重试机制
面对真实业务场景中的各种不可预测因素,我们设计并实现了一套完备的异常处理机制。一旦捕捉到错误,比如网络超时或响应码非正值,会立即触发重试逻辑。此外,还记录了详细日志供事后审计分析,从而提高整体可靠性。
这几个关键步骤展示了如何利用轻易云平台快速构建一个可靠且高效的数据集成解决方案,使两个看似独立运行的信息系统顺畅衔接,为企业运营提供稳定支撑。
调用旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据
在数据集成生命周期的第一步,我们需要从源系统中获取数据,并对其进行初步的清洗和加工。本文将详细探讨如何通过调用旺店通·企业奇门接口wdt.stockout.order.query
来实现这一过程。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是具体的配置细节:
{
"api": "wdt.stockout.order.query",
"method": "POST",
"number": "stockout_no",
"id": "stockout_no",
"pagination": {
"pageSize": 30
},
"condition": [
[
{
"field": "stockout_reason",
"logic": "like",
"value": "报损"
},
{
"field": "status",
"logic": "egt",
"value": "95"
}
]
],
"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}}"
},
{
...
请求参数详解
-
start_time 和 end_time:
start_time
和end_time
用于指定数据的时间范围,确保我们只获取在此期间内修改过的数据。这两个参数使用了模板变量{{LAST_SYNC_TIME|datetime}}
和{{CURRENT_TIME|datetime}}
,分别代表上次同步时间和当前时间。
-
order_type:
order_type
设置为"7",表示我们只关注出库单类型为"其他出库"的数据。
-
status:
status
字段用于过滤出库单状态,默认查找已发货(95)和已完成(110)的单据。
-
warehouse_no、src_order_no、stockout_no:
- 这些字段用于进一步过滤特定仓库、源单号或出库单号的数据。
-
分页参数:
page_size
和page_no
用于控制分页,每页返回的数据条数默认为30。
数据请求与清洗
通过上述配置,我们可以发送HTTP POST请求到指定API以获取原始数据。以下是一个示例请求体:
{
...
{
...
{
...
}
}
}
在接收到响应后,我们需要对数据进行初步清洗和验证。主要步骤包括:
-
ID检查:
- 确保每条记录都有唯一的标识符(即
stockout_no
),避免重复数据。
- 确保每条记录都有唯一的标识符(即
-
条件过滤:
- 根据条件过滤掉不符合要求的数据,例如非报损原因或状态小于95的记录。
-
字段转换:
- 对某些字段进行必要的转换或格式化,以便后续处理。例如,将日期字符串转换为标准日期格式。
实际案例
假设我们从接口获取到以下原始数据:
[
{
...
{
...
}
}
]
经过清洗和转换后的数据可能如下所示:
[
{
...
{
...
}
}
]
这些处理后的数据将被传递到下一阶段进行进一步的转换与写入操作。
小结
通过调用旺店通·企业奇门接口并对返回的数据进行清洗和加工,我们能够高效地获取并准备好所需的数据,为后续的数据处理步骤奠定基础。在实际操作中,灵活运用元数据配置和条件过滤,可以大大提升数据集成过程的效率和准确性。
轻易云数据集成平台:将源平台数据转换为用友BIPAPI接口格式并写入目标平台
在使用轻易云数据集成平台进行数据集成时,第二阶段的ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何将已经集成的源平台数据转换为用友BIPAPI接口所能接收的格式,并最终写入目标平台。
API接口配置
为了实现数据的无缝对接,我们需要配置用友BIPAPI接口。根据提供的元数据配置,目标API为/yonbip/scm/othoutrecord/single/save
,请求方法为POST
。以下是主要字段及其配置:
-
保证请求的幂等性:
{"field":"resubmitCheckKey","label":"保证请求的幂等性","type":"string","describe":"该值由客户端生成","value":"{order_no}"}
该字段用于确保请求的幂等性,由客户端生成唯一标识符。
-
单据编号:
{"field":"code","label":"单据编号","type":"string","describe":"以系统编码规则配置为准,系统设置为手工编号时必输,系统设置为自动编号时非必输;更新操作时必填 例:QTCK0000001","value":"{order_no}"}
单据编号根据系统编码规则生成,在更新操作时必须填写。
-
库存组织和会计主体:
{"field":"org","label":"库存组织","type":"string","describe":"传入id或code 例:wzyqzn","value":"_findCollection find org_code from 4f73f755-1c4f-33e6-b5a1-7e3b8d894800 where code={warehouse_no}"} {"field":"accountOrg","label":"会计主体","type":"string","describe":"传入id或code 例:wzyqzn","value":"_findCollection find org_code from 4f73f755-1c4f-33e6-b5a1-7e3b8d894800 where code={warehouse_no}"}
库存组织和会计主体字段传入相应的ID或代码,通过查询获取对应值。
-
单据日期:
{"field":"vouchdate","label":"单据日期","type":"string","describe":"日期格式:yyyy-MM-dd 例:2021-03-05","value":"{consign_time}"}
单据日期需要按照指定格式传递。
-
交易类型:
{"field":"bustype","label":"交易类型","type":"string","describe":"传入id或code 例:A10001","value":"002"}
固定值“002”表示特定交易类型。
-
仓库:
{"field":"warehouse","label":"仓库","type":"string","describe":"传入id或code 例:ck01","value":"{warehouse_no}"}
仓库字段传递相应ID或代码。
-
备注:
{"field":"memo","label":"备注","type": "string", "describe": "例:单子备注", "value": "{remark}"}
-
操作标识:
{"field": "_status", "label": "操作标识", "type": "string", "describe": "Insert:新增、Update:更新", "value": "Insert"}
-
其他出库单子表(othOutRecords): 子表包含多个字段,如物料、物料名称、数量等,每个字段都需要进行相应的映射和转换。例如:
-
物料:
{"field": "product", "label": "物料", "type": "string", "describe": "传入id或code 例:PD0817000001", "value": "{{details_list.goods_no}}"}
-
数量:
{"field": "qty", "label": "数量", "type": "string", "describe": "有来源时:出库时正数,退库时负数 例:10", "value": "{{details_list.goods_count}}"}
-
数据清洗与转换
在实际操作中,首先需要从源平台提取数据,并进行必要的数据清洗和转换,以满足目标API接口的要求。以下是一些关键步骤:
-
提取源数据:
-
数据清洗与验证:
-
字段映射与转换:
数据写入目标平台
完成上述步骤后,即可将处理好的数据通过POST请求写入用友BIP系统。以下是一个示例请求体:
{
"resubmitCheckKey": "{order_no}",
"code": "{order_no}",
...
...
...
}
通过轻易云数据集成平台,可以实现对不同系统间的数据无缝对接,并且每个环节都能够实时监控和管理,大大提升了业务效率和透明度。在实际项目中,根据具体需求进行灵活配置和调整,以确保数据准确、高效地流转至目标平台。