线上旺店通销售出库单对接星辰销售订单-ok
成功实现企业信息化的关键在于高效、准确的数据集成。本案例将深入探讨如何通过轻易云数据集成平台,将旺店通·企业奇门中的销售出库单数据无缝对接并写入到金蝶云星辰V2中。该解决方案不仅确保了数据的实时性和完整性,还大幅提升了业务运作效率。
为实现这一目标,我们需使用两个关键API:wdt.stockout.order.query.trade
用于从旺店通·企业奇门系统中获取销售出库单数据,/jdy/v2/scm/sal_order
则是向金蝶云星辰V2写入相应的销售订单。
首先,通过调用 wdt.stockout.order.query.trade
接口,从旺店通获取原始的销售出库单数据。在这个过程中,需要考虑API接口分页和限流问题,以确保所有订单都能被顺利抓取。此外,针对不同业务场景,可根据具体需求自定义数据转换逻辑,确保从源头上处理好数据格式差异,并准备好适合金蝶云星辰V2输入的数据结构。
其次,在传输大量销售信息至金蝶云星辰时,高吞吐量的数据写入能力成为决定项目成功与否的重要因素。利用 /jdy/v2/scm/sal_order
API,可以将批量整理后的销售信息快速、稳定地写入到金蝶云系统,为后续业务环节提供精准的数据支持。同时,通过设置可靠的错误重试机制,能够有效应对在网络波动或API响应异常情况下造成的失败请求,保证最终的一致性。
此外,为预防因意外导致的信息丢失及加强整体任务管理,我们还引入了集中监控和告警系统。这些工具可以实时跟踪每个数据集成任务状态与性能,并及时发出异常报警,让技术团队迅速定位问题并进行修复。
最后,为实现全流程可视化管理,本方案借助轻易云的平台特性,通过统一视图展示整个数据流设计,这使得优化配置更加直观,使得技术人员可以更加灵活地调整各项参数,以达到最佳效果。
调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据
在数据集成生命周期的第一步中,调用源系统接口以获取原始数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query.trade
,并对获取的数据进行初步加工。
接口调用配置
首先,我们需要配置接口调用的元数据。以下是该接口的详细配置:
- API:
wdt.stockout.order.query.trade
- 请求方法:
POST
- 主要字段:
order_no
: 订单编号stockout_id
: 出库单IDconsign_time
: 发货时间(需转换为consign_date
)
请求参数配置
为了实现增量数据获取,我们需要设置请求参数。以下是关键的请求参数及其描述:
- start_time: 开始时间,用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。该值通常取自上次同步时间({{LAST_SYNC_TIME|datetime}}
)。 - end_time: 结束时间,用于增量获取数据,格式为
yyyy-MM-dd HH:mm:ss
。该值通常取当前时间({{CURRENT_TIME|datetime}}
)。 - status: 状态过滤,取值范围包括:5已取消,55已审核,95已发货,105部分打款,110已完成,113异常发货。我们选择了95、105、110和113状态。
- shop_no: 店铺编号,用于区分不同店铺的数据。
- warehouse_no: 仓库编号,用于区分不同仓库的数据。
- page_size和page_no: 分页参数,每页返回的数据条数和页号。
以下是一个示例请求配置:
{
"start_time": "{{LAST_SYNC_TIME|datetime}}",
"end_time": "{{CURRENT_TIME|datetime}}",
"status": "95,105,110,113",
"shop_no": "指定店铺编号",
"warehouse_no": "指定仓库编号",
"page_size": "{PAGINATION_PAGE_SIZE}",
"page_no": "{PAGINATION_START_PAGE}"
}
数据清洗与转换
在接收到原始数据后,我们需要对其进行清洗和转换,以便后续处理。以下是主要的清洗与转换操作:
-
字段重命名:
- 将原始字段
consign_time
重命名为consign_date
。
- 将原始字段
-
日期格式转换:
- 将字段
consign_date
的日期格式进行标准化处理。
- 将字段
示例代码如下:
def transform_data(raw_data):
transformed_data = []
for record in raw_data:
transformed_record = {
"order_no": record["order_no"],
"stockout_id": record["stockout_id"],
"consign_date": format_date(record["consign_time"])
}
transformed_data.append(transformed_record)
return transformed_data
def format_date(date_str):
# 假设输入日期格式为 'yyyy-MM-dd HH:mm:ss'
from datetime import datetime
date_obj = datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S')
return date_obj.strftime('%Y-%m-%d')
条件过滤
根据业务需求,我们可能需要对返回的数据进行条件过滤。例如,仅保留特定店铺和仓库的数据:
"condition":[
[
{"field":"shop_no","logic":"neqv2","value":"KH01181"},
{"field":"warehouse_no","logic":"in","value":"CK00001,CK00002,CK00008,CK00009,CK00010,CK00011,CK00012,CK00013,CK00014"}
]
]
通过上述条件过滤,可以确保仅处理符合业务需求的数据,从而提高数据处理效率。
自动填充响应
为了简化后续处理流程,我们可以启用自动填充响应功能,使得平台自动将处理后的数据填充到目标系统中。这一步骤可以通过配置元数据中的autoFillResponse:true
来实现。
综上所述,通过轻易云数据集成平台调用旺店通·企业奇门接口并对数据进行初步加工,可以高效地实现不同系统间的数据无缝对接,为后续的数据处理和分析奠定坚实基础。
轻易云数据集成平台:ETL转换与金蝶云星辰V2API接口对接技术案例
在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据转换为金蝶云星辰V2API接口所能接收的格式,并最终写入目标平台。
API接口配置
根据元数据配置,我们需要将线上旺店通销售出库单的数据转换并写入金蝶云星辰V2。以下是具体的API接口配置:
{
"api": "/jdy/v2/scm/sal_order",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field":"bill_no","label":"订单编码","type":"string","describe":"销售订单编码","value":"{stockout_no}"},
{"field":"remark","label":"单据备注","type":"string","describe":"备注","value":"{remark}"},
{"field":"customerid_id","label":"客户ID","type":"string","describe":"旺店通订单上店铺编码"},
{"field":"bill_date","label":"订单日期","type":"string","describe":"销售订单日期{consign_time}","value":"{consign_time}"},
{"field":"customer_number","label":"客户编码","type":"string","describe":"单据来源","value":"{shop_no}"},
{"field":"operation_key","label":"操作类型","type":"string","value":"audit"},
{"field":"bill_stock_id","label":"仓库","type":"string",
"value": "_mongoQuery dcf15639-66d6-3904-821c-5bc5e2d89a62 findField=content.id where={\"content.number\":{\"$eq\":\"{warehouse_no}\"}}"},
{"field":"emp_number","label":"业务员","type":"string","value": "ZY00007"},
{
"field": "custom_field",
"label": "自定义字段",
"type": "object",
"children": [
{"field": "custom_field__1__4xieazfpq8cdhjia", "label": "订单编号", "type": "string", "value": "{trade_no}"},
{"field": "custom_field__1__45nbzlh8blt7", "label": "分销名称", "type": "string", "value": "{fenxiao_nick}"}
]
},
{
"field": "material_entity",
"label": "分录明细",
"type": "array",
"describe": "分录明细",
"value": "details_list",
"children":[
{"field": "material_number",
"label": 物料编码,
type: string,
describe: 物料编码,
value: {{details_list.spec_no}}},
{"field": qty,
label: 数量,
type: string,
describe: 数量,
value: {{details_list.goods_count}}},
{
field: unit_id,
label: 单位,
type: string,
describe: 单位,
value: _mongoQuery b88a7889-af5d-3efd-aac4-d4960eae6748 findField=content.base_unit_id where={\"content.number\":{\"$eq\":\"{{details_list.spec_no}}\"}},
default: 6
},
{
field: price,
label: 单价,
type: string,
describe: 单价,
value: _function ('{{details_list.sell_price}}'*'{{details_list.goods_count}}'+'{{details_list.share_post}}')\/{{details_list.goods_count}}
},
{
field: sp_id,
label: 仓位ID,
type: string,
value: _function case '{warehouse_no}' when 'CK00001' then '1099179991205176320' else '' end
},
{
field:is_free,label:"是否赠品",type:"string",value:"_function case '{{details_list.sell_price}}' when '0.0000' then 'true' else 'false' end"
},
{
field:"stock_id",label:"仓库id",type:"string",value:"_mongoQuery dcf15639-66d6-3904-821c-5bc5e2d89a62 findField=content.id where={\"content.number\":{\"$eq\":\"{warehouse_no}\"}}"
},
{
field:"comment",label:"商品行备注",type:"string",value:"_function case when '{shop_no}' in ('KH01227','KH01310','KH00772') then '{trade_no}({cs_remark})' when '{{details_list.sell_price}}' ='0.0000' then '{src_trade_no}({cs_remark})' else '' end"
}
]
}
]
}
数据字段解析与转换
-
订单基础信息
bill_no
:从源数据中的stockout_no
字段提取,用于标识销售订单编码。remark
:从源数据中的remark
字段提取,作为单据备注。customerid_id
:直接映射旺店通订单上的店铺编码。bill_date
:从源数据中的consign_time
字段提取,表示销售订单日期。customer_number
:从源数据中的shop_no
字段提取,表示客户编码。operation_key
:固定值为audit
,表示操作类型。
-
仓库信息
bill_stock_id
: 使用MongoDB查询,根据仓库编号获取对应的仓库ID。
-
业务员信息
emp_number
: 固定值为ZY00007
.
-
自定义字段
custom_field__1__4xieazfpq8cdhjia
: 映射源数据中的订单编号(trade_no
)。custom_field__1__45nbzlh8blt7
: 映射源数据中的分销名称(fenxiao_nick
)。
-
分录明细
- 每个分录明细包含多个字段,如物料编码、数量、单位、单价等:
material_number
: 映射源数据中的规格编号(spec_no
)。qty
: 映射源数据中的商品数量(goods_count
)。unit_id
: 使用MongoDB查询,根据规格编号获取对应的单位ID,默认值为6。price
: 使用函数计算每个商品的单价,公式为(sell_price * goods_count + share_post
) / goods_count。sp_id
: 使用条件判断,根据仓库编号设置仓位ID。is_free
: 使用条件判断,如果售价为0,则标记为赠品。stock_id
: 使用MongoDB查询,根据仓库编号获取对应的仓库ID。comment
: 根据不同条件设置商品行备注。
- 每个分录明细包含多个字段,如物料编码、数量、单位、单价等:
数据写入目标平台
通过上述配置和转换,将处理后的数据发送到金蝶云星辰V2API接口。整个过程确保了数据格式符合目标平台的要求,并且每个字段都进行了适当的处理和映射。
这种方法不仅提高了数据集成的效率,还确保了数据的一致性和准确性。在实际应用中,可以根据具体需求进一步优化和调整元数据配置,以满足不同业务场景的需求。