使用轻易云实现金蝶组装拆卸成品出库与聚水潭对接

  • 轻易云集成顾问-黄宏棵

金蝶组装拆卸成品出库对接聚水潭技术案例分享

在企业资源规划系统与电商ERP平台的对接中,数据的高效流转和可靠处理是至关重要的。本文将详细解析如何借助轻易云数据集成平台,将金蝶云星空中的组装拆卸成品出库数据无缝对接至聚水潭,从而实现业务流程的自动化。

本次集成方案以executeBillQuery API从金蝶云星空提取相关订单信息,并通过优化后的批量写入机制,将数据高效且准确地上传到聚水潭系统中的 /open/jushuitan/otherinout/upload 接口。在这个过程中,我们利用了以下关键特性:

  • 集中监控和告警系统: 实时跟踪并展示每个任务节点的数据处理状态,确保问题能被即刻发现和解决。
  • 自定义数据转换逻辑: 针对不同系统之间的数据格式差异,通过灵活配置转换规则,实现完美适配。
  • 分页与限流策略: 为了应对API接口请求频率限制,我们采用了智能分页机制,提高了抓取效率并避免因限流导致的数据缺失。

此外,在实施过程中,还需考虑在接口调用过程中的异常处理及重试机制,例如如何面对网络波动、超时等意外情况进行补偿,以保证整个集成链路稳定运行。这些细节都将在后续文章中进行具体说明。

初步看来,高吞吐量的数据写入能力显著提高了我们的响应速度,而定制化的数据映射功能则让复杂多变的业务需求得到了合理支持。通过这些技术手段,我们不仅成功搭建起了一条健壮、高效的信息通道,还为未来可能出现的问题提供了充足的预防措施和解决方案。

以上便是此次“金蝶组装拆卸成品出库对接聚水潭”项目集成方案开端部分核心要点,下文我们将深入探讨每一个环节所面临的挑战及其对应解决策略。 如何对接企业微信API接口

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

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

接口调用配置

首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是关键配置项:

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

请求参数配置

请求参数包括实体主键、分录主键、单据编号等多个字段。以下是具体的请求参数配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FEntity_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FID","label":"实体主键","type":"string","value":"FID"},
    {"field":"FEntity_FEntryID","label":"分录主键","type":"string","value":"FEntity_FEntryID"},
    {"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":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
    {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
    {"field":"FEE","label":"费用","type": "string", "value": "FEE"}
  ],
  "otherRequest":[
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
    {"field": "TopRowCount", "label": "返回总行数", "type": int, describe: 金蝶的查询分页参数},
    {"field": FilterString, label: 过滤条件, type: string, describe: 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=, value: FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FAffairType='Dassembly' and FStockOrgId.FNumber='101'},
    { 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_AssembledApp"}
  ]
}

数据请求与清洗

在调用接口时,我们需要特别注意以下几点:

  1. 分页处理:由于每次请求最多返回500条记录,因此需要实现分页逻辑,确保所有数据都能被完整获取。
  2. 过滤条件:通过FilterString字段设置过滤条件,例如根据上次同步时间和事务类型进行过滤。
  3. 字段选择:使用FieldKeys字段指定需要查询的数据字段,确保只获取必要的数据。

示例代码如下:

import requests

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
    'FormId': 'STK_AssembledApp',
    'FieldKeys': 'FID,FEntity_FEntryID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate',
    'FilterString': f"FApproveDate>='{last_sync_time}' and FAffairType='Dassembly' and FStockOrgId.FNumber='101'",
    'Limit': 500,
    'StartRow': start_row
}

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

数据转换与写入

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

  1. 数据类型转换:将字符串类型的数据转换为日期、数字等合适的类型。
  2. 缺失值处理:填补或删除缺失值,确保数据完整性。
  3. 格式化处理:根据目标系统要求,对数据进行格式化处理。

示例代码如下:

import pandas as pd

# 假设 data 是从 API 获取到的数据列表
df = pd.DataFrame(data)

# 数据类型转换
df['FDate'] = pd.to_datetime(df['FDate'])

# 缺失值处理
df.fillna(0, inplace=True)

# 格式化处理
df['FBillNo'] = df['FBillNo'].str.upper()

# 写入目标系统(例如数据库)
df.to_sql('target_table', con=database_connection)

通过上述步骤,我们可以高效地调用金蝶云星空接口获取所需数据,并对其进行清洗和转换,为后续的数据写入和使用打下坚实基础。这一过程不仅提高了数据集成效率,还保证了数据质量和一致性。 金蝶与外部系统打通接口

使用轻易云数据集成平台实现金蝶组装拆卸成品出库对接聚水潭API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将详细介绍如何利用轻易云数据集成平台,将金蝶系统中的组装拆卸成品出库数据转换为聚水潭API接口所能接收的格式,并最终写入目标平台。

元数据配置解析

在进行ETL转换之前,首先需要理解元数据配置。以下是一个典型的元数据配置示例:

{
  "api": "/open/jushuitan/otherinout/upload",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo",
    "bodyName": "items",
    "bodySum": ["FQty"],
    "header": ["FStockID", "FBillNo"],
    "body": ["FQty", "FMaterialID_FNumber"]
  },
  "request": [
    {"field": "is_confirm", "label": "是否自动确认单据", "type": "string", "describe": "是否自动确认单据", "value":"1"},
    {"field": "wms_co_id", "label": "分仓编号", "type": "string", "describe": "分仓编号", 
        "value":"{FStockID}", 
        "mapping":"636a1b6595944d1d4c3c871b", 
        "mappingDirection":"positive"},
    {"field": "type", 
        "label":"出入库类型: in是入库 out是出库", 
        "type":"string", 
        "describe":"出入库类型: in是入库 out是出库", 
        "value":"out"},
    {"field":"external_id",
        "label":"外部单号",
        "type":"string",
        "describe":"外部单号",
        "value":"{FBillNo}"},
    {"field":"warehouse",
        "label":"主仓=1,销退仓=2,进货仓=3,次品仓=4",
        "type":"string",
        "describe":"主仓=1,销退仓=2,进货仓=3,次品仓=4",
        "value":"1"},
    {"field":"drp_co_name",
        "label":"出库类型",
        "type":"string",
        "describe":"出库类型",
        "value":"组装拆卸成品出库单"},
    {"field":"items",
        "label":"商品列表",
        "type":"array",
        "describe":"商品列表",
        "children":[
         {"field":"sku_id","label":"商品编码","type":"string","describe":"商品编码","value":
          "{{items.FMaterialID_FNumber}}","parent":
              items},
         {"field":
              qty,"label":
              数量,"type":
              string,"describe":
              数量,"value":
              {{items.FQty}},"parent":
              items}
        ]
   }
 ]
}

数据请求与清洗

在ETL过程中,首先需要从源系统(金蝶)请求数据并进行清洗。假设我们已经成功获取了金蝶系统中的组装拆卸成品出库数据,并且这些数据已经过初步清洗,现在我们需要将这些数据转换为聚水潭API接口所能接收的格式。

数据转换与写入

根据元数据配置,我们需要将金蝶系统的数据字段映射到聚水潭API接口所需的字段。以下是具体的字段映射和转换逻辑:

  • is_confirm:固定值为“1”,表示自动确认单据。
  • wms_co_id:映射自金蝶系统的FStockID字段。
  • type:固定值为“out”,表示出库。
  • external_id:映射自金蝶系统的FBillNo字段。
  • warehouse:固定值为“1”,表示主仓。
  • drp_co_name:固定值为“组装拆卸成品出库单”。
  • items:包含商品列表,其中每个商品项包括:
    • sku_id:映射自金蝶系统的FMaterialID_FNumber字段。
    • qty:映射自金蝶系统的FQty字段。

通过轻易云平台,我们可以使用可视化界面进行上述字段映射和转换配置。以下是一个示例代码片段,用于展示如何通过API接口将转换后的数据写入聚水潭:

import requests
import json

# 聚水潭API URL
url = 'https://api.jushuitan.com/open/jushuitan/otherinout/upload'

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

# 构建请求体
payload = {
    'is_confirm': '1',
    'wms_co_id': source_data['FStockID'],
    'type': 'out',
    'external_id': source_data['FBillNo'],
    'warehouse': '1',
    'drp_co_name': '组装拆卸成品出库单',
    'items': [
        {
            'sku_id': item['FMaterialID_FNumber'],
            'qty': item['FQty']
        } for item in source_data['items']
    ]
}

# 将请求体转为JSON格式
data = json.dumps(payload)

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

# 检查响应状态码
if response.status_code == 200:
    print('Data successfully uploaded to Jushuitan.')
else:
    print(f'Failed to upload data. Status code: {response.status_code}')

总结

通过上述步骤,我们成功地将金蝶系统中的组装拆卸成品出库数据转换为聚水潭API接口所能接收的格式,并通过POST请求将其写入目标平台。在实际应用中,可以根据业务需求进一步优化和调整元数据配置,以实现更复杂的数据集成场景。 系统集成平台API接口配置

更多系统对接方案