企业供应链系统的数据获取与转换策略

  • 轻易云集成顾问-何语琴

金蝶云星空数据集成到易仓的技术方案分享

在企业物流和供应链管理中,金蝶云星空与易仓系统的无缝对接能够显著提高业务的运营效率。本文将详细分享一个实际案例——将金蝶云星空中的采购退料单自动集成到易仓生成出库单,实现批量处理和实时监控。

为了确保每一笔交易都能准确、快速地从金蝶云星空传输并写入至易仓,我们采用了轻易云数据集成平台进行配置。整个方案主要通过调用金蝶云星空提供的数据获取接口executeBillQuery来抓取采购退料单,并利用指定的写入API createAndEditServiceTransferPlanOrder 将数据批量导入到易仓系统。同时,通过定时任务保证了数据抓取的可靠性,以及分页和限流策略解决大规模数据处理问题,从而避免漏单现象.

此外,为了解决两个系统之间的数据格式差异,我们进行了细致的数据映射设计,以确保所有关键字段正确对接。在这个过程中,对异常情况进行了周全考量,设置了错误重试机制,以及针对可能出现的问题进行实时日志记录,通过这些措施实现对整个流程状态的透明化监控。

随后章节将进一步探讨这一集成过程中的具体实施步骤、遇到的问题以及相应的解决办法。 钉钉与WMS系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取并加工采购退料单的数据。

接口配置与调用

首先,我们需要了解executeBillQuery接口的基本配置。根据提供的元数据配置,接口采用POST方法进行调用,主要用于查询操作(effect: QUERY)。以下是请求参数的详细配置:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FMATERIALID","label":"FMATERIALID","type":"string","describe":"111","value":"FMATERIALID"},
    {"field":"FNumber","label":"FNumber","type":"string","describe":"111","value":"FNumber"},
    // 省略其他字段
  ],
  "otherRequest": [
    {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
    {"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"FilterString","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"},
    {"field":"FieldKeys","label":"FieldKeys","type":"array","describe":"金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber","value":"{MAIN_REQUEST}"},
    {"field":"FormId","label":"FormId","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value": "BD_MATERIAL"}
  ],
  "autoFillResponse": true
}

请求参数详解

  1. 请求字段(request)

    • FMATERIALID, FNumber, FName, 等等:这些字段代表了我们需要从金蝶系统中获取的数据项。每个字段都有其特定的标签、类型和描述。
  2. 其他请求参数(otherRequest)

    • Limit: 用于分页查询,表示每页返回的数据条数。
    • StartRow: 用于分页查询,表示从第几行开始返回数据。
    • TopRowCount: 表示返回前多少行数据。
    • FilterString: 用于过滤条件,例如根据供应商编号和审批日期进行过滤。
    • FieldKeys: 指定要返回的字段键值。
    • FormId: 必须填写金蝶系统中的表单ID,这里为BD_MATERIAL

实际调用与数据处理

在实际调用过程中,我们需要构建一个HTTP POST请求,将上述配置作为请求体发送到金蝶云星空系统。以下是一个示例代码片段:

import requests
import json

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
    "FormId": "BD_MATERIAL",
    "FieldKeys": ["FMATERIALID", "FNumber", ...], # 根据需求添加更多字段
    "FilterString": "FApproveDate>='2023-01-01'",
    "Limit": 100,
    "StartRow": 0
}

response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()

# 数据处理逻辑
for item in data:
    process_item(item) # 自定义的数据处理函数

数据清洗与转换

获取到原始数据后,我们通常需要对其进行清洗和转换,以便后续写入目标系统。在轻易云平台上,可以通过可视化界面配置清洗规则,例如去除空值、格式转换等。

def process_item(item):
    # 示例:将物料编号转换为大写
    item['FNumber'] = item['FNumber'].upper()

    # 示例:检查并填充缺失值
    if not item['FDescription']:
        item['FDescription'] = '无描述'

    # 更多自定义清洗逻辑...

总结

通过上述步骤,我们可以高效地调用金蝶云星空的executeBillQuery接口,获取所需的数据并进行必要的清洗和转换。这一过程不仅提高了数据集成的效率,也确保了数据的一致性和准确性。在实际项目中,根据具体需求调整请求参数和清洗规则,可以实现更加灵活和精准的数据集成。 数据集成平台API接口配置

将金蝶采购退料单数据转换并写入易仓出库单

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台所能够接收的格式。本文将详细探讨如何将金蝶采购退料单的数据通过ETL转换,最终写入易仓API接口。

API接口配置与元数据解析

在进行数据转换和写入之前,我们需要了解目标平台易仓API接口的具体配置。以下是易仓API createAndEditServiceTransferPlanOrder 的元数据配置:


{
  "api": "createAndEditServiceTransferPlanOrder",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "1",
  "id": "1",
  "name": "1",
  "idCheck": true,
  "request": [
    {"field":"action_type","label":"操作类型","type":"string","describe":"操作类型:\nADD 新增\nEDIT 编辑"},
    {"field":"stpo_code","label":"头程计划单号","type":"string","describe":"编辑时必填"},
    {"field":"service_code","label":"海外仓服务商代码","type":"string","describe":"备注:可以通过接口getTransferService获取,比如:4PX ,WINIT),注意当想通过货件单号(service_number字段去拉取FBA货件信息时,该字段请填写:OTHER,此功能和页面功能操作保持一致,编辑时不可修改"},
    {"field":"stpo_delivery_type","label":"发货方式","type":"int","describe":"1 供应商代发到目的仓\n2 中转仓发货到目的仓"},
    {"field":"warehouse_id","label":"中转仓库ID","type":"int","describe":"编辑时不可修改"},
    {"field":"to_warehouse_id","label":"发往仓库ID","type":"int","describe":"目的仓在创建时必填 。\n 修改时,只有当接口参数中填写了service_number ,才可以修改。"},
    {"field":"stpo_weight","label":"预计总重量(KG)","type":"float","describe":"预计总重量(KG)"},
    {"field":"stpo_volume","label":"预计总体积(m³)","type":"float","describe":"预计总体积(m³)"},
    {"field":"stpo_date_eta","label":"预计发货日期","type":"date","describe":"格式(2021-03-20)"},
    {"field":"sm_code","label":"运输方式","type":"string","describe":"运输方式"},
    {"field":"user_account","label":"店铺账号","type":"string","describe":"备注:当货件单号:service_number字段填写了之后,该字段必填"},
    {"field": "service_number", "label": "货件单号", "type": "string", "describe": "备注:\n1、即AMAZON的 shipment_id\n\n2、填写了service_number,可以填写参数 to_warehouse_id的,因为拉取货件单号信息需要to_warehouse_id字段,但是如果service_number为空,就不能填写to_warehouse_id\n\n3、填写了service_number的时候,产品信息是以拉取货件的产品信息作为产品信息,不是以在接口中填写的产品信息作为产品信息"},
    {"field": "stpo_remark", "label": "备注信息", "type": "string", "describe": "备注信息"},
    {
      "field": "product_barcode_info",
      "label": "产品信息",
      "type": "array",
      "describe": "当 service_number为空时,该字段必填",
      "children":[
        {"field": "product_barcode", "label": "产品代码", "type": "string", "describe": "产品代码"},
        {"field": "quantity", "label":"产品数量", 
![如何对接钉钉API接口](https://pic.qeasy.cloud/T11.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案