ETL转换与金蝶云星空API写入:轻易云数据集成平台应用实例

  • 轻易云集成顾问-冯潇

采购入库单(委外)OK:金蝶云星空到金蝶云星空的数据集成方案

在当今复杂多变的商业环境中,精准、高效的数据集成是确保企业运营流畅的关键。本文将重点介绍如何利用轻易云数据集成平台,将采购入库单(委外)的数据从一个金蝶云星空系统高效、准确地传输到另一个金蝶云星空系统。

针对大量的采购入库单数据,我们采用了executeBillQuery接口进行源系统的数据抓取,并通过batchSave接口实现目标系统的数据写入。整个过程中,我们充分利用了轻易云平台强大的高吞吐量支持和实时监控功能,以保障数据处理的时效性和稳定性。

首先,通过配置轻易云的平台,调用源系统API executeBillQuery 定时可靠地抓取目标表中的最新数据。在这个阶段,我们部署了一整套异常检测和错误重试机制,确保在网络波动或其他不确定因素导致异常时,不会发生数据丢失。此外,自定义转换逻辑被广泛应用于这一环节,用以解决两套金蝶云星空之间可能存在的数据格式差异问题。

为保证批量写入操作的安全稳定,在使用 batchSave 接口时,同样实现了对分页和限流问题的有效管理。我们的设计工具提供了集中化可视化界面,这不仅使整个流程更加直观,同时也能实时展示每个步骤执行情况,使得运维团队可以快速定位并处理潜在异常。

通过以上的一系列技术措施,该方案成功实现了采购入库单(委外)业务场景下,两套金蝶云星空系統之间无缝且高效的大规模数据转移与更新。从而大幅提高整体业务处理效率及精确度,为企业稳健发展提供坚实基础。 金蝶与WMS系统接口开发配置

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

在轻易云数据集成平台的生命周期中,调用源系统接口是数据处理的第一步。本文将详细探讨如何通过调用金蝶云星空接口executeBillQuery来获取采购入库单(委外)数据,并进行初步加工。

接口配置与请求参数

为了实现从金蝶云星空获取采购入库单数据,我们需要配置接口和请求参数。以下是元数据配置的关键部分:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FInStockEntry_FEntryId",
  "pagination": {"pageSize": 500},
  "idCheck": true,
  "request": [
    {"field":"FInStockEntry_FEntryId","label":"id","type":"string","value":"FInStockEntry_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_FNumber","label":"单据类型","type":"string","value":"FBillTypeID.FNumber"},
    {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","value":"FOwnerTypeIdHead"},
    {"field":"FOwnerIdHead_FNumber","label":"货主","type":"string","value":"FOwnerIdHead.FNumber"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "FilterString", 
     "label": "过滤条件", 
     "type": "string", 
     "describe": "", 
     "value": 
       `FApproveDate>='{{LAST_SYNC_TIME|date}}' and ( FBillTypeID.FNumber = 'RKD03_SYS' or FBillTypeID.FNumber ='RKD17_SYS' )`
    },
    {"field": 
      `FieldKeys`, 
      `label`: `需查询的字段key集合`, 
      `type`: `array`, 
      `describe`: `金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber`, 
      `parser`: {
        `name`: `ArrayToString`, 
        `params`: ","
      }
    },
    {
      `field`: `FormId`,
      `label`: `业务对象表单Id`,
      `type`: `string`,
      `describe`: `必须填写金蝶的表单ID如:PUR_PurchaseOrder`,
      `value`: `STK_InStock`
    }
  ]
}

请求与响应处理

  1. 构建请求: 根据元数据配置,构建POST请求。主要包括以下几个部分:

    • API路径:/executeBillQuery
    • 请求方法:POST
    • 表单ID:STK_InStock
    • 分页参数:每页500条记录
    • 查询字段:根据需求选择所需字段
    • 过滤条件:如FApproveDate>='{{LAST_SYNC_TIME|date}}' and ( FBillTypeID.FNumber = 'RKD03_SYS' or FBillTypeID.FNumber ='RKD17_SYS' )
  2. 发送请求: 使用HTTP客户端(如axios、requests等)发送构建好的请求到金蝶云星空API。

  3. 处理响应: 响应返回的数据需要进行解析和处理。以下是一个示例代码片段,用于发送请求和处理响应:

import requests
import json

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
  'FormId': 'STK_InStock',
  'FieldKeys': 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber,FOwnerTypeIdHead,FOwnerIdHead.FNumber',
  'FilterString': f"FApproveDate>='{last_sync_time}' and ( FBillTypeID.FNumber = 'RKD03_SYS' or FBillTypeID.FNumber ='RKD17_SYS' )",
  'Limit': 500,
  'StartRow': start_row
}

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

# 数据处理逻辑
for entry in data:
    process_entry(entry)

数据清洗与转换

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

  • 字段重命名:将原始字段名转换为目标系统所需的字段名。
  • 数据类型转换:确保所有字段的数据类型符合目标系统要求。
  • 缺失值处理:填补或删除缺失值。

例如,将原始数据中的日期字符串转换为标准日期格式:

from datetime import datetime

def process_entry(entry):
    entry['FDate'] = datetime.strptime(entry['FDate'], '%Y-%m-%d')
    # 更多清洗和转换逻辑...

小结

通过调用金蝶云星空接口executeBillQuery,我们能够高效地获取采购入库单(委外)数据,并对其进行初步加工。这一步骤为后续的数据转换与写入奠定了坚实基础。在实际操作中,细致的元数据配置和灵活的数据处理逻辑是确保集成成功的关键。 钉钉与CRM系统接口开发配置

轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空API接口

在数据集成过程中,将源平台的数据转换为目标平台可接受的格式,并通过API接口写入目标平台是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将采购入库单(委外)数据转换为金蝶云星空API接口所需的格式,并最终写入目标平台。

API接口配置

我们使用的是金蝶云星空的batchSave API接口,采用POST请求方式。以下是该接口的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FDate,FSupplierId_FName,FBillTypeID_FNumber",
    "bodyName": "details",
    "header": ["FBillNo", "FDate", "FSupplierId_FName", "FBillTypeID_FNumber", "FPurchaseOrgId_FNumber"],
    "body": ["FMaterialId_FNumber", "FRealQty", "FTaxPrice", "FAllAmount", "FDiscount", "FPurchaseOrgId_FNumber"]
  },
  ...
}

数据映射与转换

在进行ETL转换时,需要将源数据字段映射到目标平台字段,并进行必要的数据转换。以下是关键字段的映射和转换规则:

  1. 单据类型 (FBillTypeID)

    • 源字段:FBillTypeID
    • 转换:使用ConvertObjectParser解析器,将其转换为金蝶云星空所需的格式。
    • 配置示例:
      {
      "field": "FBillTypeID",
      ...
      "parser": {"name": "ConvertObjectParser", "params": "FNumber"},
      ...
      }
  2. 业务类型 (FBusinessType)

    • 固定值:"WW"
    • 配置示例:
      {
      "field": "FBusinessType",
      ...
      "value": "WW"
      }
  3. 单据编号 (FBillNo)

    • 源字段:FBillNo
    • 配置示例:
      {
      "field": "FBillNo",
      ...
      "value": "{FBillNo}"
      }
  4. 入库日期 (FDate)

    • 源字段:FDate
    • 配置示例:
      {
      "field": "FDate",
      ...
      "value": "{FDate}"
      }
  5. 采购组织 (FPurchaseOrgId)

    • 源字段:FPurchaseOrgId_FNumber
    • 转换规则:根据不同的采购组织编码进行转换。
    • 配置示例:
      {
      ...
      "_function case when '{FPurchaseOrgId_FNumber}' ='100' then '104' when '{FPurchaseOrgId_FNumber}' ='202' then '120' when '{FPurchaseOrgId_FNumber}' ='204' then '121' else '109' end"
      }
  6. 供应商 (FSupplierId)

    • 源字段:FSupplierId_FName
    • 转换规则:当供应商名称为“虚拟组织”时,替换为特定供应商名称。
    • 配置示例:
      {
      ...
      "_function case when '{FSupplierId_FName}' ='虚拟组织' then '广州市恒绍电子科技有限公司(迪锋)' else '{FSupplierId_FName}' end"
      }

明细信息处理

明细信息部分需要特别处理,以下是关键字段的配置:

  1. 物料编码 (FMaterialId)

    • 源字段:FMaterialId_FNumber
    • 配置示例:
      {
      ...
      "{FMaterialId_FNumber}"
      }
  2. 实收数量 (FRealQty)

    • 源字段:details.FRealQty
    • 配置示例:
      {
      ...
      "{{details.FRealQty}}"
      }
  3. 含税单价 (FTaxPrice)

    • 源字段:details.FTaxPrice
    • 配置示例:
      {
      ...
      "{{details.FTaxPrice}}"
      }
  4. 价税合计 (FAllAmount)

    • 源字段:details.FAllAmount
    • 配置示例:
      {
      ...
      "{{details.FAllAmount}}"
      }
  5. 折扣额 (FDiscount)

    • 源字段:details.FDiscount
    • 配置示例:
      {
      ...
      "{{details.FDiscount}}"
      }

请求体构建

最终构建请求体时,需要将所有配置好的字段按照金蝶云星空API要求进行组合。以下是一个完整请求体的简化示例:

{
  ...
  {
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    ...,
    details: [
      {
        FMaterialId: "{FMaterialId}",
        FRealQty: "{{details.FRealQty}}",
        FTaxPrice: "{{details.FTaxPrice}}",
        FAllAmount: "{{details.FAllAmount}}",
        FDiscount: "{{details.FDiscount}}"
      },
      // More detail entries...
    ]
  }
}

通过上述配置和处理,我们可以将源平台的数据成功转化为金蝶云星空API所需的格式,并通过轻易云数据集成平台完成最终的数据写入操作。这一过程确保了数据的一致性和准确性,同时提升了业务处理效率。 泛微OA与ERP系统接口开发配置

更多系统对接方案