企业数据集成案例:金蝶与管易WMS接口开发

  • 轻易云集成顾问-杨嫦

金蝶云星空与管易云数据集成技术案例分享

在实际业务运作中,如何高效地将金蝶云星空系统中的调出单数据实时、准确地集成到管易云的其它出库单成为了许多企业关注的焦点。通过采用轻易云的数据集成平台,我们实现了一套高效可靠的数据对接方案:金蝶分步式调出单-->管易其它出库单(京东自营)。

本次案例中,我们聚焦于利用金蝶云星空提供的executeBillQuery API接口来获取调出单数据,并通过调用管易云的gy.erp.stock.other.out.add API接口将这些数据批量写入到目标系统。

为了确保整个过程稳定和高效运行,我们实施了一系列关键技术措施:

  1. 定时可靠的数据抓取:我们配置了定时任务,通过周期性调用 executeBillQuery 接口,持续抓取最新调出单记录。结合轻易云的平台特性,实现了短时间内大批量数据快速拉取,提高了整体处理效率。

  2. 实时监控与日志记录:为确保整个数据传输链路不出现漏单问题,我们启用了全面的监控和日志功能。不仅可以实时跟踪每个API请求和响应状态,还能在异常发生时立即告警并进行自动重试,有效提升了系统稳定性。

  3. 分页与限流处理:针对金蝶云星空接口返回的大量分页数据,我们设置合理的限流策略,通过按页逐步加载和处理,使得即便在高负载情况下也能保障系统平稳运行,不会遗漏任何一条关键业务数据。

  4. 自定义映射及转换逻辑:由于两个系统之间存在不同的数据格式要求,特别是字段名称和类型有所差异,因此我们使用平台提供的可视化设计工具,对从金蝶提取出的JSON结构进行了必要转化,以适应管易API所需格式,实现无缝对接。

  5. 集中监控和告警机制:为了进一步提高透明度并及时发现潜在问题,每一个重要环节都设置了详细的性能指标监控,可以随时查看当前队列积压情况、最近一次成功或失败调用的信息等。同时,一旦检测到任何异常,将立刻触发告警通知相关维护人员进行排查修复。

至此,该案例解决方案已经搭建完成。下面将详细解读各步骤具体实现细节,包括如何配置轻易平台任务、编写ETL脚本及应对常见错误场景的方法。 企业微信与OA系统接口开发配置

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

在轻易云数据集成平台中,调用源系统的API接口是数据处理生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery接口来获取并加工数据,以实现从金蝶分步式调出单到管易其它出库单(京东自营)的数据集成。

接口配置与请求参数

首先,我们需要配置元数据以调用executeBillQuery接口。根据提供的元数据配置,以下是关键参数及其含义:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FSTKTRSOUTENTRY_FEntryID
  • idCheck: true

请求参数包括实体主键、单据编号、备注等字段。这些字段在请求体中作为JSON对象发送给金蝶云星空接口。

{
  "FID": "实体主键",
  "FBillNo": "单据编号",
  "FEntryNote": "备注",
  "FSTKTRSOUTENTRY_FEntryID": "FEntryID",
  "F_UQRW_BaseProperty1": "仓库外部码",
  "F_UQRW_BaseProperty": "物料外部码",
  "FQty": "调出数量",
  "FMaterialID": "物料编码",
  "F_UQRW_DCCKLX": "调出仓库类型"
}

此外,还有一些其他请求参数用于分页和过滤,例如:

  • Limit: 最大行数
  • StartRow: 开始行索引
  • TopRowCount: 返回总行数
  • FilterString: 过滤条件
  • FieldKeys: 查询字段key集合
  • FormId: 表单ID(例如:STK_TRANSFEROUT

数据请求与清洗

在调用API时,我们需要特别注意分页和过滤条件的设置,以确保获取的数据符合业务需求。例如,使用FilterString可以设置特定时间范围内的数据:

{
  "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"
}

这段代码表示仅查询审批日期大于上次同步时间的数据。分页参数则确保我们能够处理大量数据而不会遗漏:

{
  "Limit": "{PAGINATION_PAGE_SIZE}",
  "StartRow": "{PAGINATION_START_ROW}"
}

数据转换与写入

一旦成功获取到数据,我们需要对其进行清洗和转换,以便写入目标系统。在这个过程中,可以利用轻易云平台提供的自动填充响应功能(autoFillResponse),确保返回的数据格式化正确。

例如,将金蝶返回的数据映射到管易系统所需的字段格式:

{
  "FBillNo": "{{response.FBillNo}}",
  "FMaterialID": "{{response.FMaterialID}}",
  ...
}

这种映射方式确保了不同系统之间的数据无缝对接。

实际案例分析

假设我们需要从金蝶分步式调出单中提取所有调出数量大于100的记录,并将其写入管易其它出库单。我们可以设置如下过滤条件:

{
  "FilterString": "FQty > '100'"
}

然后,通过API调用获取符合条件的数据,并进行必要的转换和清洗,最终写入目标系统。

技术要点总结

  1. 接口配置:准确配置API接口及其请求参数。
  2. 分页与过滤:合理设置分页和过滤条件以优化数据请求。
  3. 数据清洗与转换:利用平台提供的工具进行数据清洗和格式转换。
  4. 自动填充响应:确保返回的数据格式化正确,便于后续处理。

通过上述步骤,我们可以高效地实现从金蝶分步式调出单到管易其它出库单(京东自营)的数据集成,为业务流程提供强有力的支持。 金蝶与WMS系统接口开发配置

数据集成:从金蝶调出单到管易云其它出库单的ETL转换

在数据集成生命周期的第二步,我们将重点探讨如何将已经集成的源平台数据(如金蝶分步式调出单)进行ETL转换,转为目标平台(管易云API接口)所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。

API接口配置

我们使用的是管易云提供的gy.erp.stock.other.out.add API接口,该接口用于新增其它出库单。其请求方法为POST,且需要进行ID校验。以下是元数据配置:

{
  "api": "gy.erp.stock.other.out.add",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "warehouse_code",
      "label": "仓库代码",
      "type": "string",
      "describe": "111",
      "value": "{F_UQRW_BaseProperty1}"
    },
    {
      "field": "wms_bizcode",
      "label": "第三方系统单号",
      "type": "string",
      "describe": "判断排重的依据",
      "value": "{FBillNo}"
    },
    {
      "field": "mail_no",
      "label": "物流编号",
      "type": "string",
      "value": "{FBillNo}"
    },
    {
      "field": "note",
      "label": "备注",
      "type": "string",
      "describe": "111",
      "value": "{FEntryNote}"
    },
    {
      "field": "details",
      "label": "入库明细",
      "type": "array",
      ...

数据请求与清洗

在数据请求阶段,我们从金蝶系统中提取相关的数据字段,包括仓库代码、系统单号、物流编号、备注和入库明细等。这些字段在后续步骤中会被清洗和转换,以符合目标平台要求。

例如,金蝶系统中的仓库代码字段F_UQRW_BaseProperty1需要映射到管易云API中的warehouse_code字段。同样,金蝶系统中的第三方系统单号FBillNo需要映射到管易云API中的wms_bizcode字段。

数据转换与写入

在数据转换阶段,我们需要将清洗后的数据按照管易云API接口的要求进行格式化。例如,将金蝶系统中的商品代码和数量分别映射到管易云API中的item_codeqty字段。

示例代码片段
import requests
import json

# 定义请求URL和头部信息
url = 'https://api.guanyiyun.com/erp/stock/other/out/add'
headers = {'Content-Type': 'application/json'}

# 构建请求体
payload = {
    'warehouse_code': source_data['F_UQRW_BaseProperty1'],
    'wms_bizcode': source_data['FBillNo'],
    'mail_no': source_data['FBillNo'],
    'note': source_data['FEntryNote'],
    'details': [
        {
            'item_code': item['F_UQRW_BaseProperty'],
            'qty': item['FQty']
        } for item in source_data['details']
    ]
}

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

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

# 检查响应状态码
if response.status_code == 200:
    print('Data successfully written to Guanyi Cloud')
else:
    print(f'Failed to write data: {response.text}')

集成测试与验证

在完成数据转换与写入后,需要进行集成测试以确保数据正确写入目标平台。可以通过调用管易云API查询接口,验证新增的其它出库单是否存在,并检查各字段的数据是否准确无误。

示例验证代码片段
# 定义查询URL和参数
query_url = 'https://api.guanyiyun.com/erp/stock/other/out/get'
query_params = {'wms_bizcode': source_data['FBillNo']}

# 发起GET请求
query_response = requests.get(query_url, headers=headers, params=query_params)

# 检查响应状态码并解析响应内容
if query_response.status_code == 200:
    result = query_response.json()
    if result and result.get('success'):
        print('Data verification successful')
        # 可以进一步检查具体字段值是否匹配预期值
else:
    print(f'Failed to verify data: {query_response.text}')

通过上述步骤,我们成功地将金蝶分步式调出单的数据经过ETL转换后写入了管易云,并进行了有效的验证。这一过程不仅提高了数据处理效率,还确保了不同系统间的数据一致性和准确性。 金蝶与CRM系统接口开发配置

更多系统对接方案