轻易云平台:ETL转换与金蝶云星辰V2API对接实践

  • 轻易云集成顾问-卢剑航

线上旺店通销售出库单对接星辰销售订单-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: 出库单ID
    • consign_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_sizepage_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}"
}

数据清洗与转换

在接收到原始数据后,我们需要对其进行清洗和转换,以便后续处理。以下是主要的清洗与转换操作:

  1. 字段重命名:

    • 将原始字段consign_time重命名为consign_date
  2. 日期格式转换:

    • 将字段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来实现。

综上所述,通过轻易云数据集成平台调用旺店通·企业奇门接口并对数据进行初步加工,可以高效地实现不同系统间的数据无缝对接,为后续的数据处理和分析奠定坚实基础。 如何对接钉钉API接口

轻易云数据集成平台: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"
                }
            ]
        }
    ]
}

数据字段解析与转换

  1. 订单基础信息

    • bill_no:从源数据中的stockout_no字段提取,用于标识销售订单编码。
    • remark:从源数据中的remark字段提取,作为单据备注。
    • customerid_id:直接映射旺店通订单上的店铺编码。
    • bill_date:从源数据中的consign_time字段提取,表示销售订单日期。
    • customer_number:从源数据中的shop_no字段提取,表示客户编码。
    • operation_key:固定值为audit,表示操作类型。
  2. 仓库信息

    • bill_stock_id: 使用MongoDB查询,根据仓库编号获取对应的仓库ID。
  3. 业务员信息

    • emp_number: 固定值为ZY00007.
  4. 自定义字段

    • custom_field__1__4xieazfpq8cdhjia: 映射源数据中的订单编号(trade_no)。
    • custom_field__1__45nbzlh8blt7: 映射源数据中的分销名称(fenxiao_nick)。
  5. 分录明细

    • 每个分录明细包含多个字段,如物料编码、数量、单位、单价等:
      • 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接口。整个过程确保了数据格式符合目标平台的要求,并且每个字段都进行了适当的处理和映射。

这种方法不仅提高了数据集成的效率,还确保了数据的一致性和准确性。在实际应用中,可以根据具体需求进一步优化和调整元数据配置,以满足不同业务场景的需求。 电商OMS与WMS系统接口开发配置

更多系统对接方案