从金蝶到旺店通:数据无缝迁移的关键技术

  • 轻易云集成顾问-彭亮

案例分享:金蝶云星空数据集成到旺店通·企业奇门

在系统对接和数据集成的实际工作中,如何确保高效、精准地传输数据始终是一个技术挑战。本文将深入探讨一个具体案例,即将金蝶云星空中的其他出库单有效集成至旺店通·企业奇门,并最终生成委外出库单(云仓)。以下是采用轻易云数据集成平台配置元数据的一些关键技术点。

确保金蝶云星空接口的数据不漏单

首先,通过调用金蝶云星空的executeBillQuery API,我们能够定时可靠地抓取接口提供的数据。为了防止漏单情况的发生,我们设置了周期性调度任务,同时配合结果校验机制,以双重保证所有待处理的出库单都被完整获取。

批量快速写入到旺店通·企业奇门

针对大量订单需求,使用批量写入架构显得尤为重要。利用轻易云平台,我们可以高速大批量调用wdt.vip.wms.stockinout.order.push API,将导出的出库单信息迅速写入至旺店通·企业奇门。这一过程通过并发控制和限流策略,有效提升了数据传输效率。

分页与限流的优化处理

由于API接口存在分页与限流问题,为保证稳定性及效率,在获取金蝶云星空数据时进行了详细设计。如在实现分页查询过程中,每次请求均保存当前进度,对返回内容进行检查,再以此作为下一次查询起点。同时设定合理阈值来应对可能出现的过载状况,避免因访问频率过高而触发限制。

解决数据格式差异与映射关系

一个常见的问题是在两套系统间收发的数据格式不兼容。在本案例中,为了匹配双方的数据结构,通过定义灵活的转换规则来精确完成字段映射。例如,将对应于“物料编码”的字段从金蝶系统提取后,需要转化为旺店通系统所期望接受的信息格式,这里的定制化映射非常关键。此外,还引入了实时监控与日志记录功能,以便及时发现异常并采取相应措施,提高整体操作透明度及可追溯性。

以上这些步骤只是该项目中的部分核心环节,更详细的实现方案将在下文逐步展开。 如何开发用友BIP接口

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

在数据集成的生命周期中,第一步是从源系统获取数据,并对其进行初步加工。在本文中,我们将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来实现这一目标。

接口配置与请求参数

首先,我们需要了解executeBillQuery接口的基本配置和请求参数。根据提供的元数据配置,以下是主要的请求参数及其含义:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FEntity_FEntryID
  • pagination: 分页参数,默认每页500条记录
  • idCheck: 是否进行ID检查,设置为true

请求字段包括但不限于以下内容:

[
  {"field":"FEntity_FEntryID","label":"FEntryID","type":"string","value":"FEntity_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"},
  // 更多字段...
]

构建请求体

在构建请求体时,需要特别注意分页参数和过滤条件。分页参数确保我们能够分批次获取大量数据,而过滤条件则用于精确筛选所需的数据。例如:

{
  "FormId": "STK_MisDelivery",
  "FieldKeys": "FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,...",
  "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FStockOrgId.FNumber = '7000' and (FBillTypeID.FNumber='QTCKD01_SYS' or FBillTypeID.FNumber='ZYD-035' or FBillTypeID.FNumber='ZYD-036') and FSTOCKID.FNumber='1082'",
  "Limit": 500,
  "StartRow": 0,
  "TopRowCount": true
}

上述示例中,FilterString用于指定查询条件,例如根据审批日期、库存组织、单据类型和发货仓库进行筛选。

发起请求并处理响应

使用轻易云平台,我们可以通过可视化界面配置上述请求,并发起API调用。以下是一个简化的代码示例,用于展示如何处理响应数据:

import requests

url = "https://api.kingdee.com/executeBillQuery"
headers = {
    'Content-Type': 'application/json'
}
payload = {
    "FormId": "STK_MisDelivery",
    "FieldKeys": "FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,...",
    "FilterString": "...",
    "Limit": 500,
    "StartRow": 0,
    "TopRowCount": True
}

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

# 数据处理逻辑
for record in data['Result']:
    process_record(record)

在实际操作中,轻易云平台会自动处理API调用和响应解析,我们只需关注数据处理逻辑。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括:

  1. 字段映射:将源系统字段映射到目标系统字段。
  2. 数据格式转换:例如,将日期字符串转换为标准日期格式。
  3. 异常值处理:过滤或修正异常值。

例如,对于日期字段,可以使用Python的datetime模块进行格式转换:

from datetime import datetime

def convert_date(date_str):
    return datetime.strptime(date_str, '%Y-%m-%d').strftime('%Y-%m-%dT%H:%M:%S')

小结

通过以上步骤,我们成功实现了从金蝶云星空获取并加工数据,为后续的数据转换与写入奠定了基础。在实际项目中,根据具体业务需求调整请求参数和数据处理逻辑,是确保数据集成顺利进行的关键。 钉钉与CRM系统接口开发配置

数据集成生命周期中的ETL转换:将金蝶其他出库单数据转为旺店通·企业奇门API格式

在数据集成生命周期中,ETL(Extract, Transform, Load)转换是关键的一步。在这一过程中,我们需要将已经集成的源平台数据(金蝶其他出库单)进行转换,使其符合目标平台(旺店通·企业奇门API接口)的格式要求,并最终写入目标平台。以下是具体的技术实现步骤和细节。

1. API接口配置

我们使用的目标API接口是wdt.vip.wms.stockinout.order.push,该接口用于推送委外出库单数据到旺店通系统。具体的请求方法为POST,且需要对单据编号进行唯一性校验以避免重复推送。

{
  "api": "wdt.vip.wms.stockinout.order.push",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  ...
}

2. 数据请求与清洗

在数据请求阶段,我们从金蝶系统中提取所需的出库单数据。此阶段主要关注数据的完整性和准确性,确保所有必要字段都已获取。

3. 数据转换与写入

在数据转换阶段,我们需要根据元数据配置,将金蝶系统中的字段映射到旺店通API所需的字段。以下是具体的字段映射和转换逻辑:

请求头部字段映射
  • api_outer_no 对应 FBillNo
  • warehouse_no 对应 FSTOCKID
  • order_type 固定值为 1(表示出库)
  • auto_check 固定值为 1(表示自动审核)
[
  {
    "field": "api_outer_no",
    "label": "接口外部单号",
    "type": "string",
    "describe": "调用本接口时推送的唯一单据编号,避免重复推送数据",
    "value": "{FBillNo}"
  },
  {
    "field": "warehouse_no",
    "label": "仓库编号",
    "type": "string",
    "describe": "...",
    "value": "{FSTOCKID}"
  },
  {
    "field": "order_type",
    "label": "...",
    "type": "...",
    ...
    ...
]
请求体明细列表映射

明细列表中的每一项需要进行如下字段映射:

  • spec_no 对应 FMATERIALID_FNumber
  • num 对应 F_UHZG_JJQty
  • price 对应 FPrice
  • batch_no 对应批次信息(如存在)
  • remark 对应 FEntryNote

{
  ...
  {
    "field": "goods_list",
    ...
    {
      ...
      {
        "field": "spec_no",
        ...
        ...
        ...
        {
          ...
          {
            ...
            {
              ...
              {
                ...
                {
                  ...
                  {
                    ...
                    {
                      ...
                      {
                        ...
                        {
                          ...
                          {
                            ...
![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案