从金蝶数据获取到旺店通数据推送的全面实施案例

  • 轻易云集成顾问-张妍琪

金蝶盘亏单 => 旺店通委外出库单(云仓)系统集成案例分享

在复杂的业务环境中,如何确保各个系统之间的数据流转准确无误,是众多企业亟待解决的问题。本文将聚焦于一个具体的系统对接集成案例:从金蝶云星空数据集成到旺店通·企业奇门,通过技术细节探讨如何高效、可靠地实现这一过程。

此次集成方案主要涉及以下两个关键API接口:

  • 金蝶云星空数据获取接口executeBillQuery
  • 旺店通·企业奇门数据写入接口wdt.vip.wms.stockinout.order.push

数据抓取与快速写入

首先,我们使用金蝶云星空的executeBillQuery API进行定时且可靠的数据抓取。这一过程需处理分页和限流问题,以确保大规模数据可以顺利提取。为解决此类问题,采用了一种高效的异常处理机制和错误重试机制,当出现请求失败或超时时,可以自动再次尝试,从而保证不漏单、不丢单。

紧接着,成功获取的数据需要经过格式转换后批量写入到旺店通·企业奇门。这一过程中,特别关注了两者之间的数据格式差异,比如时间格式、数值单位等,并通过自定义映射规则加以解决。因此,在调用wdt.vip.wms.stockinout.order.push API时,实现了大批量、高性能地提交数据,大幅提升了效率。

下一步,将详细阐述上述环节中的每个技术要点,包括API调用示例代码、参数配置以及日志记录等内容,为您提供全面深入的技术指导。 企业微信与ERP系统接口开发配置

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

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,获取盘亏单的数据,并进行初步加工。

接口配置与请求参数

首先,我们需要配置接口的元数据。以下是我们使用的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FBillEntry_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FBillEntry_FEntryID","label":"FEntryID","type":"string","value":"FBillEntry_FEntryID"},
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
    {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
    {"field":"FDate","label":"日期","type":"string","value":"FDate"},
    {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
    {"field":"FStockerId","label":"仓管员","type":"string","value":"FStockerId"},
    {"field":"FCreatorId","label":"创建人","type":"string","value":"FCreatorId"},
    {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
    {"field":"FModifierId","label":"最后修改人","type":"string","value":"FModifierId"},
    {"field":"FModifyDate","label":"最后修改日期","type":"string","value":"FModifyDate"},
    {"field": "FApproverId", "label": "审核人", "type": "string", "value": "FApproverId"},
    {"field": "FApproveDate", "label": "审核日期", "type": "string", "value": "FApproveDate"},
    {"field": "FNoteHead", "label": "备注", "type": "string", "value": "FNoteHead"},
    {"field": "FMaterialId_FNumber", "label": "物料编码", "type": "string", "value": "FMaterialId.FNumber"},
    {"field": "FUnitID", "label": "单位", "type": "string", "value": "FUnitID"},
    {"field": "FAcctQty", "label": “账存数量”, “type”: “string”, “value”: “FAcctQty”},
    {"field”: “FLossQty”, “label”: “盘亏数量”, “type”: “string”, “value”: “FLossQty”},
    // ...其他字段省略
  ],
  // ...其他配置省略
}

该元数据配置定义了请求参数、分页信息以及需要查询的字段。特别注意以下几点:

  1. 分页参数pageSize设置为500,确保每次请求最多返回500条记录。
  2. 过滤条件:通过FilterString字段设置过滤条件,例如只查询特定库存组织和仓库的数据。
  3. 字段映射:定义了从金蝶云星空返回的数据字段到本地系统字段的映射关系。

调用接口

在轻易云平台上,我们可以通过以下步骤调用金蝶云星空的executeBillQuery接口:

  1. 构建请求体:根据元数据配置构建请求体,包括分页参数、过滤条件等。
  2. 发送请求:使用POST方法发送HTTP请求到金蝶云星空API。
  3. 处理响应:解析响应数据,并根据需要进行初步加工。

以下是一个示例代码片段,用于构建和发送请求:

import requests
import json

# 构建请求体
request_body = {
  'FormId': 'STK_StockCountLoss',
  'FieldKeys': ','.join([req['field'] for req in metadata['request']]),
  'FilterString': metadata['otherRequest'][3]['value'],
  'Limit': metadata['pagination']['pageSize'],
  'StartRow': 0,
}

# 设置请求头
headers = {
  'Content-Type': 'application/json',
}

# 发起POST请求
response = requests.post(
  url='https://api.kingdee.com/executeBillQuery',
  headers=headers,
  data=json.dumps(request_body)
)

# 检查响应状态码
if response.status_code == 200:
   data = response.json()
   # 数据处理逻辑...
else:
   print(f"Error: {response.status_code}")

数据加工

获取到原始数据后,我们需要对其进行初步加工,以便后续的数据转换与写入阶段。例如,可以对盘亏数量(FLossQty)进行汇总,或者根据业务需求筛选特定状态的单据。

以下是一个简单的数据加工示例:

# 假设data包含从API返回的数据列表
processed_data = []

for record in data:
   if record['FLossQty'] > 0:
       processed_record = {
           '单据编号': record['FBillNo'],
           '物料编码': record['FMaterialId_FNumber'],
           '盘亏数量': record['FLossQty'],
           # ...其他字段映射
       }
       processed_data.append(processed_record)

# 输出处理后的数据
print(json.dumps(processed_data, indent=2, ensure_ascii=False))

通过上述步骤,我们成功调用了金蝶云星空的executeBillQuery接口,并对返回的数据进行了初步加工。这为后续的数据转换与写入奠定了基础。 用友与MES系统接口开发配置

数据集成案例:金蝶盘亏单到旺店通委外出库单(云仓)

在数据集成的生命周期中,数据转换与写入是关键步骤之一。本文将深入探讨如何利用轻易云数据集成平台,将金蝶盘亏单的数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。

API接口元数据配置

我们使用的API接口为wdt.vip.wms.stockinout.order.push,其主要作用是将处理后的数据推送到旺店通系统。以下是该接口的元数据配置:

{
    "api": "wdt.vip.wms.stockinout.order.push",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "operation": {
        "method": "merge",
        "field": "FBillNo,FDate,FStockId_FNumber",
        "bodyName": "details_listss",
        "bodySum": ["F_UHZG_JJQty"],
        "header": ["FBillNo", "FStockId_FNumber", "FBillTypeID", "Fnote"],
        "body": ["FMaterialId_FNumber", "FQty", "FPrice", "FLOT", "F_UHZG_JJQty"]
    },
    "request": [
        {
            "field": "api_outer_no",
            "label": "接口外部单号",
            "type": "string",
            "describe": "调用本接口时推送的唯一单据编号,避免重复推送数据",
            "value": "{FBillNo}"
        },
        {
            "field": "warehouse_no",
            "label": "仓库编号",
            ...

数据请求与清洗

在数据转换之前,我们需要先从金蝶系统中获取盘亏单的数据。这一步骤涉及对原始数据进行清洗和预处理,以确保其符合目标系统的要求。

{
    // 示例请求参数
    FBillNo: 'PKD123456',
    FDate: '2023-10-01',
    FStockId_FNumber: 'WH001',
    FBillTypeID: '盘亏单',
    Fnote: '库存调整',
    details_listss: [
        {
            FMaterialId_FNumber: 'MAT001',
            FQty: 100,
            FPrice: 10.5,
            FLOT: 'BATCH001',
            F_UHZG_JJQty: 95
        }
    ]
}

数据转换与写入

在清洗后的数据基础上,我们需要将其转换为旺店通API能够接受的格式。这里我们利用元数据配置中的operation字段来定义转换规则。

  1. 头部信息映射

    • FBillNo -> api_outer_no
    • FStockId_FNumber -> warehouse_no
    • FBillTypeID -> order_type
    • Fnote -> remark
  2. 货品明细映射

    • details_listss.FMaterialId_FNumber -> spec_no
    • details_listss.F_UHZG_JJQty -> num
    • details_listss.FPrice -> price
    • details_listss.FLOT -> batch_no

以下是最终生成的请求体示例:

{
    api_outer_no: 'PKD123456',
    warehouse_no: 'WH001',
    order_type: '1',  // 出库类型
    auto_check: '1',  // 自动审核
    remark: '库存调整',
    goods_list: [
        {
            spec_no: 'MAT001',
            num: 95,
            price: 10.5,
            batch_no: 'BATCH001'
        }
    ]
}

接口调用

通过轻易云平台,我们可以直接使用POST方法将上述请求体发送到旺店通·企业奇门API接口,实现数据的写入。

const axios = require('axios');

axios.post('https://api.wangdian.cn/openapi2/wdt.vip.wms.stockinout.order.push', {
    api_outer_no: 'PKD123456',
    warehouse_no: 'WH001',
    order_type: '1', 
    auto_check: '1', 
    remark: '库存调整',
    goods_list: [
        {
            spec_no: 'MAT001',
            num: 95,
            price: 10.5,
            batch_no: 'BATCH001'
        }
    ]
})
.then(response => {
  console.log(response.data);
})
.catch(error => {
  console.error(error);
});

通过以上步骤,我们成功地将金蝶盘亏单的数据转换并写入到旺店通系统,实现了两个异构系统间的数据无缝对接。这不仅提高了业务流程的效率,也确保了数据的一致性和准确性。 打通企业微信数据接口

更多系统对接方案