利用轻易云实现金蝶云星辰V2的数据ETL转换与写入流程

  • 轻易云集成顾问-彭萍

汤臣倍健营销云数据集成到金蝶云星辰V2案例分享

在本案例中,我们将详细探讨如何高效实现汤臣倍健营销云与金蝶云星辰V2的系统对接。项目方案命名为“新版订单-出库单-(佰嘉)广州闽康”,其核心任务是确保从汤臣倍健营销云获取的订单数据能够快速、准确地写入到金蝶云星辰V2系统,并保证整个数据处理流畅无误。

首先,利用轻易云的数据集成平台,我们需要调用汤臣倍健营销云提供的API接口/api/openapi/v1/erp/order/honour/agreement/header,定时抓取最新的订单信息。为了避免漏单,可以设置精细化调度策略和错误重试机制,以确保每次抓取操作都能成功完成并记录日志。

然后,为了处理大量订单数据快速写入到金蝶云星辰V2,需要有效应用批量操作技术。通过轻易云的平台能力,可以优化数据传输路径,将所需信息批量推送至金蝶提供的API接口/jdy/v2/scm/sal_out_bound。这不仅提升了整体效率,还保障了大规模数据同步过程中的稳定性。

在具体实施过程中,还涉及到对分页和限流问题的解决。例如,当从汤臣倍健营销云读取多页结果时,需要精准控制分页逻辑,同时配合限流措施,从而维持网络请求平稳负载。这部分工作的成功实施有赖于详尽的信息反馈机制及实时监控功能,这些特性共同构筑起一个高可靠性的对接环境。

此外,两套系统之间的数据格式常存在差异,这就要求我们进行必要的数据映射和转换。在这个环节中,通过编写自定义脚本或使用现有工具,对不同字段进行对应调整,以适应各自系统要求,使得输入输出内容格式一致,进一步降低潜在异常风险。

最后,对于任何可能出现的问题,比如由于网络波动或其他原因导致的数据同步失败,可启用异常处理与错误重试流程,应及时捕捉异常事件,并采取二次尝试等措施以防止关键业务中断。这些综合手段最终确保“新版订单-出库单-(佰嘉)广州闽康”方案中的所有技术环节得到最优执行。 数据集成平台API接口配置

调用汤臣倍健营销云接口获取并加工数据的技术案例

在数据集成生命周期的第一步中,我们需要调用源系统汤臣倍健营销云的接口/api/openapi/v1/erp/order/honour/agreement/header,以获取订单相关的数据,并进行初步的加工处理。本文将详细探讨这一过程中的技术细节和实现方法。

接口调用与元数据配置

首先,我们需要根据提供的元数据配置来构建请求参数。以下是元数据配置的关键部分:

{
  "api": "/api/openapi/v1/erp/order/honour/agreement/header",
  "effect": "QUERY",
  "method": "POST",
  "number": "no",
  "id": "id",
  "idCheck": true,
  "request": [
    {"field":"orgId","label":"组织ID","type":"string","describe":"111","value":"88f30672ee924192a0ccce38b4c2a65c"},
    {"field":"page","label":"页码","type":"string","describe":"111","value":"1"},
    {"field":"id","label":"订单id","type":"string","describe":"111"},
    {"field":"applyerId","label":"要货方id","type":"string","describe":"111"},
    {"field":"supplierId","label":"供货方id","type":"string","describe":"111"},
    {"field":"no","label":"订单号","type":"string","describe":"111"},
    {"field":"distributionType","label":"分销类型","type":"string","describe":"111"},
    {"field":"distributorId","label":"分销商id","type":"string","describe":"111"},
    {"field":"orderStatus","label":"订单状态","type":"string","describe":"111", "value": "WAIT_DELIVERY,PART_DELIVERY,ALL_DELIVERY,WAIT_OUT_STORAGE,PART_OUT_STORAGE,ALL_OUT_STORAGE,PART_CONFIRM,CONFIRM,AUDIT_SUCCESS,FINISH"},
    {"field":"createDt","label":"创建时间","type":"string","describe":"111"},
    {"field": "orderTypeCode", "label": "订单类型", "type": "string", "describe": "111"},
    {"field": "isDeliveryFreezed", "label": "是否暂停发货", "type": "string", "describe": "111"},
    {"field": "nature", "label": "单据类型", "type": "string", "describe": "111", "value": "1"},
    {"field": "relatedApplyerId", "label": "关联交易经销商id", "type": "string", "describe": "" },
    {"field": "saleDistribution", 
![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image)
### 利用轻易云数据集成平台实现金蝶云星辰V2 API接口的数据ETL转换与写入

在数据集成过程中,将源平台的数据转换为目标平台所能接受的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台将源平台的数据进行ETL转换,并最终写入金蝶云星辰V2 API接口。

#### 配置API接口元数据

首先,我们需要配置金蝶云星辰V2 API接口的元数据。以下是具体的配置项:

```json
{
  "api": "/jdy/v2/scm/sal_out_bound",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "id",
  "id": "id",
  "name": "id",
  "idCheck": true,
  "request": [
    {"field":"bill_source","label":"单据来源,固定传入ISV","type":"string","describe":"单据来源,固定传入APP","value":"ISV"},
    {"field":"bill_date","label":"出库日期,格式:2019-01-01","type":"datetime","describe":"出库日期,格式:2019-01-01","value":"{{approveDt|date}}"},
    {"field":"customer_id","label":"客户id","type":"string","describe":"客户信息","value":"_findCollection find id from 2571be32-59cc-3353-9ba0-2fb855f844d0 where number={clientAppNo}"},
    {"field":"remark","label":"单据备注","type":"string","value":"{remark}"},
    {"field":"contact_linkman","label":"联系信息-联系人","type":"string","value":"{contacts}"},
    {"field":"contact_phone","label":"联系信息-联系方式","type":"string","value":"{phone}"},
    {"field":"contact_address","label":"联系信息-详细地址","type":"string","value":"{shippingAddress}"},
    {"field":"dept_id","label":"部门","type":"string","value":"100000"},
    {
      "field": "custom_field",
      "label": "自定义字段",
      "type": "object",
      "children": [
        {"field": "custom_field__1__2uvgd1jiapcazg", "label": "营销云单号", "type": "string", "value": "{no}"},
        {"field": "custom_field__1__2xf8ohpvbytn", "label": "下单人", "type": "string", "value": "{salesmanName}"}
      ]
    },
    {
      "field": "material_entity",
      "label": "商品分录",
      "type": "array",
      "describe": "商品分录",
      "value": "{{details}}",
      "children":[
        {"field": "material_number", 
            "label":    "商品", 
            "type" :    "string", 
            "describe" :    "商品", 
            "value" : "{{details.extNo}}"
        },
        {"field" :  "stock_id", 
            "label" :   "仓库", 
            "type" :    "string", 
            "describe" :    "仓库", 
            "value" :   1535522410315392000
        },
        {"field" :  "qty", 
            "label" :   "数量", 
            "type" :    "string", 
            "describe" :    "数量", 
            "value" : "{{details.quantity}}"
        },
        {"field" :  "unit_id", 
            "label ":  单位id,  
            类型: string,
            描述: 单位(只能填商品关联的单位,来源于商品单位查询接口或商品详情中的baseunitid_id、fixunit1_id等),
            值: _findCollection find base_unit_id from b5d1f599-d90a-3a38-bc95-1ea455bced41 where number={{details.extNo}}
        },
        {
          field: tax_price,
          label: 含税单价,
          类型: string,
          描述: 单价(如果在“系统参数”的“基础资料参数”中勾选了“商品价格为含税单价”,则price指示含税单价),
          值: {{details.price}}
        },
        {
          field: is_free,
          label: 是否赠品,
          类型: string,
          描述: 是否赠品;true-是,false-否(默认),
          值: false
        },
        {
          field: batch_no,
          label: 批次,
          类型: string,
          描述: 库位_id,
          值: {{details._Flot}}
        },
        {
          field: kf_date,
          label: 生产日期,
          类型: string,
          描述: 生产日期,
          值: {{details._Fmfg}}
        },
        {
          field: valid_date,
          label: 有效日期,
          类型: string,
          描述: 有效日期,
           值:{{details._Fexp}}
       },
       {
           field:kf_period,
           label:保质期天数,
           类型:string,
           描述:保质期天数,
           值:2
       },
       {
           field:kf_type,
           label:保质期类型,
           类型:string,
           描述:保质期类型,
           值:3
       }
     ]
   }
 ]
}

数据转换与清洗

在进行数据转换时,我们需要特别注意以下几个关键字段:

  1. bill_date - 出库日期,需要确保格式为YYYY-MM-DD
  2. customer_id - 客户ID,通过_findCollection函数从源数据中提取。
  3. material_entity - 商品分录,这是一个数组类型,需要对每个商品进行详细的字段映射。

例如,对于material_entity中的每个商品,我们需要将源数据中的extNoquantityprice等字段分别映射到目标API所需的字段中。

{
  ...
  {
    field:"material_entity",...
    children:[
      ...
      { field:"material_number", value:"{{details.extNo}}" },
      { field:"qty", value:"{{details.quantity}}" },
      { field:"tax_price", value:"{{details.price}}" },
      ...
    ]
  }
}

数据写入目标平台

完成数据转换后,我们通过POST请求将处理后的数据发送至金蝶云星辰V2 API接口。以下是一个简化的请求示例:

{
  method:"POST",...
  data:{
     bill_source:"ISV",...
     bill_date:"2023-10-10",...
     customer_id:"12345",...
     material_entity:[
       { material_number:"ABC123", qty:"10", tax_price:"100.00"... },...
     ]
   }
}

通过这种方式,我们可以确保源平台的数据经过ETL转换后,能够无缝对接到金蝶云星辰V2,从而实现高效的数据集成和业务流程自动化。

总之,通过轻易云数据集成平台的强大功能和灵活配置,我们能够高效地完成复杂的数据ETL任务,并确保数据准确无误地写入目标系统。 如何对接金蝶云星空API接口

更多系统对接方案