生产入库数据高效集成至新宝平台的技术实践

  • 轻易云集成顾问-胡秀丛

金蝶云星空数据集成到新宝-产业链协同平台:生产入库对接

在企业数字化转型的过程中,系统间的数据集成是一个关键环节。本文将详细介绍金蝶云星空与新宝-产业链协同平台之间的生产入库对接技术方案。

为实现高效的数据集成,我们选择使用executeBillQuery接口从金蝶云星空获取生产入库数据,并通过/production/inhouse接口将数据写入到新宝-产业链协同平台中。本次集成的核心目标包括确保数据不漏单、快速批量写入以及定时可靠地抓取数据。

首先,我们需要处理来自金蝶云星空API接口的分页和限流问题。这一步骤至关重要,它不仅可以保证每个批次的数据都被完整获取,还能避免触发API访问限制,从而提高整体运行效率。此外,为了解决两者之间的数据格式差异,我们采用了自定义的数据转换逻辑,将原始数据映射到符合新宝-产业链协同平台要求的结构。

为了确保任务顺利进行并及时发现潜在问题,本项目还引入了一套完善的监控和告警机制。实时跟踪每个步骤中的状态与性能,有助于快速识别并解决异常情况,而错误重试机制则进一步保障了整体流程的稳健性。

下一部分内容将深入解析具体实现过程,包括如何调用executeBillQuery接口、处理分页返回结果以及构建优化后的API请求,最终完成高效、安全且稳定的数据对接。 钉钉与CRM系统接口开发配置

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

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

接口配置与调用

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到以下关键参数:

  • API: executeBillQuery
  • Method: POST
  • Pagination: 支持分页,默认每页500条记录
  • ID Check: 启用ID检查

请求字段包括单据编号、客户订单号、收料组织、物料编码等。以下是一个典型的请求示例:

{
  "FormId": "PRD_INSTOCK",
  "FieldKeys": "FEntity_FEntryID,FMoEntrySeq,FID,FBillNo,F_GZHQ_Text_KHDDH,FStockOrgId.FNumber,F_GZHQ_Base_KH.FNumber,FMoBillNo,FMaterialId.FNumber,FMaterialId.FName,FMaterialId.FSpecification,FMaterialId.F_GZHQ_Text_DXGG,FRealQty,FDate,FStockId.FNumber,FStockId.Fname,FMemo",
  "FilterString": "FApproveDate>='2023-01-01' and FMATERIALID.F_GZHQ_CheckBox5 = 1",
  "Limit": 500,
  "StartRow": 0
}

数据请求与清洗

在发送请求后,我们会接收到一个包含多条记录的响应。这些记录需要经过清洗和转换,以确保数据的一致性和准确性。

  1. 字段映射与转换

    • 将金蝶返回的数据字段映射到目标系统所需的字段。
    • 根据业务需求对某些字段进行格式转换,例如日期格式、数值单位等。
  2. 去重与验证

    • 使用FEntity_FEntryID作为唯一标识符,确保每条记录在目标系统中不重复。
    • 验证关键字段是否为空或无效,例如单据编号FBillNo、物料编码FMaterialId_FNumber等。
  3. 错误处理

    • 对于无法解析或缺失关键字段的数据,记录日志并跳过处理。
    • 实时监控接口调用状态,捕获并处理异常情况,如网络超时、接口返回错误等。

数据转换与写入

完成数据清洗后,需要将其转换为目标系统可接受的格式,并写入目标数据库或系统。这一步通常包括以下操作:

  1. 数据格式化

    • 将清洗后的数据按照目标系统的要求进行格式化,例如JSON、XML等。
  2. 批量写入

    • 为提高效率,可以采用批量写入方式,将多条记录一次性写入目标系统。
    • 确保写入过程中的事务一致性,避免部分成功部分失败的情况。
  3. 日志记录与监控

    • 记录每次写入操作的详细日志,包括成功和失败的记录数。
    • 实时监控写入过程中的性能指标,如响应时间、吞吐量等。

示例代码

以下是一个简化的示例代码,用于演示如何调用金蝶云星空接口并处理返回的数据:

import requests
import json

# 配置请求参数
url = "https://api.kingdee.com/executeBillQuery"
headers = {"Content-Type": "application/json"}
payload = {
    "FormId": "PRD_INSTOCK",
    "FieldKeys": ",".join([
        "FEntity_FEntryID", "FMoEntrySeq", "FID", "FBillNo", 
        "F_GZHQ_Text_KHDDH", "FStockOrgId.FNumber", 
        "F_GZHQ_Base_KH.FNumber", "FMoBillNo", 
        "FMaterialId.FNumber", "FMaterialId.FName", 
        "FMaterialId.FSpecification", 
        "FMaterialId.F_GZHQ_Text_DXGG", 
        "FRealQty", "FDate", 
        "FStockId.FNumber", 
        "FStockId.Fname", 
        "FMemo"
    ]),
    "FilterString": f"FApproveDate>='2023-01-01' and FMATERIALID.F_GZHQ_CheckBox5 = 1",
    "Limit": 500,
    "StartRow": 0
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 数据清洗与转换逻辑
    cleaned_data = []
    for record in data:
        cleaned_record = {
            'id': record['FEntity_FEntryID'],
            'order_number': record['FBillNo'],
            'customer_order_number': record['F_GZHQ_Text_KHDDH'],
            'material_code': record['FMaterialId_FNumber'],
            'quantity': float(record['FRealQty']),
            'date': record['FDate']
            # 添加其他必要字段...
        }
        cleaned_data.append(cleaned_record)

    # 写入目标系统逻辑(示例)
    write_to_target_system(cleaned_data)
else:
    print(f"Error: {response.status_code}, {response.text}")

通过上述步骤,我们可以高效地从金蝶云星空获取生产入库相关的数据,并进行必要的清洗和转换,为后续的数据处理打下坚实基础。 用友与外部系统接口集成开发

生产入库对接新宝-产业链协同平台API接口的ETL转换配置

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台新宝-产业链协同平台API接口所能够接收的格式,并最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台的元数据配置,实现这一过程。

API接口配置

首先,我们需要了解目标平台API接口的基本信息。根据提供的元数据配置,目标API接口为/production/inhouse,请求方法为POST。我们需要确保请求的数据格式符合该API接口的要求。


{
  "api": "/production/inhouse",
  "method": "POST",
  "idCheck": true,
  "sdk": "\\Adapter\\Donlim\\SDK\\DonlimSDK",
  "errorMsgKey": "msg",
  "request": [
    {
      "label": "data",
      "field": "data",
      "type": "object",
      "children": [
        {"field":"poRowId","label":"采购单行ID","type":"string","describe":"采购单行ID","value":"_findCollection find F_GZHQ_Text from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH={F_GZHQ_Text_KHDDH} FMaterialId_Fnumber={FMaterialId_FNumber}"},
        {"field":"poRowNo","label":"采购订单行号","type":"string","describe":"采购订单行号","value":"_findCollection find F_GZHQ_Text1 from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH={F_GZHQ_Text_KHDDH}"},
        {"field":"poNo","label":"采购订单号","type":"string","describe":"采购订单号","value":"{F_GZHQ_Text_KHDDH}"},
        {"field":"orgName","label":"分厂名称","type":"string","describe":"分厂名称","value":"{F_GZHQ_Base_KH}"},
        {"field":"supplyCode","label":"供应商编号","type":"string","describe":"供应商编号","value":"VHQ013"},
        {"field":"supplyName","label":"供应商","type":"string","describe":"供应商","value":"广州环球电业电器有限公司"},
        {"field":"productionNo","label":"生产工单号","type":"string","describe":"生产工单号","value":"{FMoBillNo}-{FMoEntrySeq}"},
        {"field":"materialNo","label":"物料编码-供应商侧","type":"string","describe":"物料编码-供应商侧","value":"{FMaterialId_FName}"},
        {"field":"materialName","label":"物料名称-供应商侧","type":"string","describe":"物料名称-供应商侧","value":"{FMaterialId_FSpecification}"},
        {"field":"materialSpecification","label"
![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案