旺店通·企业奇门数据集成到用友BIP案例分享:采购退货单=>采购入库单(下推)-p
在本文中,我们将深入探讨如何通过轻易云数据集成平台,将旺店通·企业奇门的数据高效地对接到用友BIP系统,实现采购退货单至采购入库单的自动化下推。我们主要专注于处理大量数据的快速写入、接口分页及限流问题,以及异常处理和错误重试机制等技术细节。
为了实现这个数据集成方案,我们首先需要调用旺店通·企业奇门提供的API wdt.stockout.order.query.return
获取商品退货信息,然后通过用友BIP API /yonbip/scm/purinrecord/mergeSourceData/save
将这些数据批量写入到用友BIP中。在这一过程中,确保不漏单是至关重要的一环。我们采用定时抓取机制,可靠地从旺店通·企业奇门接口获取最新的数据,并实时监控和日志记录整个处理过程,以及时发现并解决潜在的问题。
由于旺店通·企业奇门与用友BIP之间存在一定的数据格式差异,因此我们还需进行必要的数据映射和转换。此外,为了提高系统性能和响应速度,在处理大规模数据时,我们会考虑分页抓取以及限流控制,避免因一次性请求过多导致接口超时或失败。
下面将详细介绍该案例实际运行中的具体配置方案与技术实现方法,包括接口调用、数据转换、异常处理等关键环节,以供参考。
使用轻易云数据集成平台调用旺店通·企业奇门接口获取并加工数据
在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.return
来获取并加工采购退货单数据。
接口调用配置
首先,我们需要配置接口的元数据。以下是接口wdt.stockout.order.query.return
的元数据配置:
{
"api": "wdt.stockout.order.query.return",
"method": "POST",
"number": "order_no",
"id": "stockout_id",
"pagination": {
"pageSize": 50
},
"idCheck": true,
"request": [
{
"field": "start_time",
"label": "开始时间",
"type": "string",
"value": "{{LAST_SYNC_TIME|datetime}}"
},
{
"field": "end_time",
"label": "结束时间",
"type": "string",
"describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss",
"value": "{{CURRENT_TIME|datetime}}"
},
{
"field": "warehouse_no",
"label": "仓库编号",
"type": "string"
},
{
"field": "status",
"label": "出库单状态",
"type": "string",
"describe":"出库单状态5:已取消,50:待审核,55:已审核,95:已发货,110:已完成(默认查已发货已完成单据)"
},
{
"field":"page_no",
"label":"页号",
"type":"string",
"value":"{PAGINATION_START_PAGE}"
},
{
"field":"page_size",
"label":"分页大小",
"type":"string",
“describe”:”每页返回的数据条数,输入值范围1~30,不传本参数,输入值默认为30,”,
“value”:”{PAGINATION_PAGE_SIZE}”
},
{
“field”:”src_order_no”,
“label”:”上层单据编号”,
“type”:”string”
}
]
}
参数详解
start_time
和end_time
: 用于定义查询的时间范围。start_time
通常设置为上次同步的时间点,而end_time
则为当前时间,以确保获取到最新的数据。warehouse_no
: 指定仓库编号,用于过滤特定仓库的数据。status
: 出库单状态,可以根据需求过滤不同状态的出库单,例如已发货、已完成等。page_no
和page_size
: 分页参数,用于控制每次请求返回的数据量和分页位置。
数据请求与清洗
在配置好元数据后,通过轻易云平台发起POST请求,从旺店通·企业奇门接口获取原始数据。以下是一个示例请求体:
{
“start_time”: “2023-09-01 00:00:00”,
“end_time”: “2023-09-30 23:59:59”,
“warehouse_no”: “WH001”,
“status”: “95,110”,
“page_no”: “1”,
“page_size”: “50”
}
该请求将返回指定时间范围内、特定仓库中、状态为“已发货”和“已完成”的采购退货单。
数据转换与写入
获取到原始数据后,需要对其进行清洗和转换,以便后续处理。例如,将日期格式统一、字段名称标准化等。这一步骤可以通过轻易云平台提供的可视化工具实现,无需编写复杂代码。
清洗后的数据可以直接写入目标系统,如ERP或数据库中。以下是一个示例转换规则:
{
“order_id”: ”stockout_id”,
”order_number”: ”order_no”,
”warehouse_code”: ”warehouse_no”,
”status_code”: ”status”
}
通过上述规则,可以将原始字段映射到目标系统所需的字段格式。
实时监控与调试
轻易云平台提供实时监控功能,可以随时查看数据流动和处理状态。一旦出现异常,可以快速定位问题并进行调试。例如,如果某个字段的数据类型不匹配,可以在监控界面中查看详细错误信息,并及时修正。
综上所述,通过轻易云数据集成平台,我们能够高效地调用旺店通·企业奇门接口,获取并加工采购退货单数据,为后续的数据处理和业务决策提供可靠支持。
轻易云数据集成平台ETL转换:采购退货单到采购入库单
在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台用友BIP API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现采购退货单到采购入库单的转换和写入。
接口配置与请求参数
为了将采购退货单的数据转换并写入到用友BIP系统,我们需要调用/yonbip/scm/purinrecord/mergeSourceData/save
API接口。该接口支持POST方法,并且需要确保请求的幂等性。以下是具体的请求参数配置:
-
resubmitCheckKey
- 字段类型: string
- 描述: 保证请求的幂等性,该值由客户端生成,并且必须是全局唯一的长度不能超过32位。
- 示例值:
{order_no}_1
-
mergeSourceData
- 字段类型: string
- 描述: 固定值传入true。
- 示例值:
true
-
needCalcLines
- 字段类型: string
- 描述: 表体行计算标识,固定值传入true。
- 示例值:
true
-
calcLinesKey
- 字段类型: string
- 描述: 表体行计算依据,固定值传入
oriTaxUnitPrice
。 - 示例值:
oriTaxUnitPrice
-
code
- 字段类型: string
- 描述: 单据编号,以系统编码规则配置为准。
- 示例值:
{order_no}
-
vouchdate
- 字段类型: string
- 描述: 单据日期,格式为YYYYMMDD。
- 示例值:
{{consign_time|date}}
-
bustype
- 字段类型: string
- 描述: 交易类型id或交易类型code。
- 示例值:
A20003
-
warehouse
- 字段类型: string
- 描述: 仓库id或仓库code。
- 示例值:
{warehouse_no}
-
memo
- 字段类型: string
- 描述: 备注信息。
- 示例值:
{remark}
-
_status
- 字段类型: string
- 描述: 操作标识,新增时传入Insert。
- 示例值:
Insert
子表配置
对于采购入库单子表(purInRecords
),我们需要配置以下字段:
-
makeRuleCode
- 字段类型:string
- 描述:生单规则编码,固定值为
st_purchaseorder_return
。 - 示例值:
st_purchaseorder_return
-
其他子表字段包括:
[ { "field": "sourceid", "label": "上游单据主表id", "type": "string", "value": "_mongoQuery 39bc45c8-c417-37df-8f20-d136f76b1a7a findField=content.new_id where={\"content.code\":{\"$eq\":\"{pr_api_outer_no}\"},\"content.product_cCode\":{\"$eq\":\"{{details_list.goods_no}}\"}}" }, { "field": "sourceautoid", "label": "上游单据子表id", "type": "string", "value": "_mongoQuery 39bc45c8-c417-37df-8f20-d136f76b1a7a findField=content.new_purchaseOrders_id where={\"content.code\":{\"$eq\":\"{pr_api_outer_no}\"},\"content.product_cCode\":{\"$eq\":\"{{details_list.goods_no}}\"}}" }, { "field": "qty", "label": "数量", "type": "string", "describe": "默认上游带入,若传入数量请确保表体行计算标识needCalcLines=true,并确认calcLinesKey是否符合实际业务场景。", "value": "_function {{details_list.goods_count}}*(-1)" }, { "field": "oriUnitPrice", "label": "无税单价", "type": "string", "describe": "仅在表头参数表体行计算标识needCalcLines=true,且calcLinesKey指定当前字段为计算依据时生效。", "value": "{{details_list.sell_price}}" }, { "field": "oriTaxUnitPrice", "label": "含税单价", "type": "string", "describe": "", // 使用MongoDB查询获取含税单价信息 // 示例代码中省略了具体实现细节,请根据实际情况补充完整 }, { // 其他必要的子表字段配置... } ]
实现步骤
- 配置API接口及其请求参数,将上述元数据配置填充至轻易云数据集成平台中。
- 确保所有必需的参数均已正确映射并验证其有效性。
- 执行ETL过程,通过API接口将转换后的数据写入用友BIP系统。
通过以上步骤,我们能够实现从采购退货单到采购入库单的数据转换和写入。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。