轻易云平台ETL转换与旺店通API数据写入实务

  • 轻易云集成顾问-陈洁琳

金蝶云星空与旺店通·旗舰版数据集成案例分析:从分步式调出到自流转退

在企业信息化管理中,将不同系统的数据紧密对接是提高运营效率的关键一环。本文将介绍如何通过轻易云数据集成平台,实现金蝶云星空的数据无缝对接到旺店通·旗舰版,以解决多系统协同作业中的瓶颈问题。本次具体案例为“标准-金蝶-分步式调出——>旺店通-自流转退(外仓调整)”。

首先,我们需要确保在整个数据传输过程中没有任何订单遗漏。这要求我们精确地调用金蝶云星空提供的API接口executeBillQuery来获取所需数据,且每次调用都必须处理分页和限流的问题。例如,单个请求返回的数据量可能有限制,因此我们需要编写逻辑代码递归抓取所有符合条件的数据。

然后,这些抓取的数据会经过清洗和转换,以适配旺店通·旗舰版的格式需求。在这里,定制化的数据映射起到了至关重要的作用。尤其是在涉及复杂业务规则时,需要特别注意字段间的一致性及映射逻辑。同时,为了确保大量数据能够快速、可靠地写入到旺店通·旗舰版,我们使用其API接口 wms.outer.OuterOut.createOrder 进行批量操作,并设置重试机制以应对潜在的网络或服务器异常。

整个过程当中,通过实时监控和日志记录功能,可以及时发现并解决异常状况,例如错误码分析、响应延迟等,从而进一步提升系统整体运行稳定性。

简言之,本篇文章将深入探讨如何高效、安全地在两个不同平台之间实现数据无缝衔接,以及各项技术细节与优化策略。 如何对接钉钉API接口

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

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

接口配置与请求参数

为了实现从金蝶云星空系统中提取数据,我们需要配置相应的API接口和请求参数。以下是我们使用的元数据配置:

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FBillNo",
  "id": "FSTKTRSOUTENTRY_FEntryID",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field":"FSTKTRSOUTENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSOUTENTRY_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","label":"单据类型","type":"string","value":"FBillTypeID.FName"},
    {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"},
    {"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"},
    {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"},
    {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"},
    {"field":"FTransferBizType","label":"调拨类型","type":""},
    // ...省略部分字段...
  ],
  "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": 
     // ...省略部分字段...

数据请求与清洗

在配置好元数据后,我们需要构建具体的请求来调用executeBillQuery接口。以下是一个示例请求体:

{
  "_FormId_": {
      "_FieldKeys_":["FID", 
                     // ...省略部分字段...
                    ],
      "_FilterString_":
        // ...省略部分字段...
}

通过上述配置,我们可以灵活地设置过滤条件(如日期范围、库存组织等)来筛选所需的数据。

数据转换与写入

在获取到原始数据后,下一步是对数据进行清洗和转换,以便将其写入目标系统。轻易云平台提供了丰富的数据转换功能,可以根据业务需求对数据进行格式化、合并、拆分等操作。例如,将日期格式统一为标准ISO格式,或者将金额字段从分转换为元。

以下是一个简单的数据转换示例:

def transform_data(raw_data):
    transformed_data = []

    for entry in raw_data:
        transformed_entry = {
            'entry_id': entry['FSTKTRSOUTENTRY_FEntryID'],
            'bill_no': entry['FBillNo'],
            'date': parse_date(entry['FDate']),
            'amount': convert_to_yuan(entry['FAmount']),
            // ...其他字段转换...
        }
        transformed_data.append(transformed_entry)

    return transformed_data

实践案例

假设我们需要从金蝶云星空中提取所有2024年8月5日之后审核通过的调拨单,并将其导入到旺店通系统中。我们可以按照以下步骤进行操作:

  1. 配置API请求:设置FilterString"FApproveDate>='2024-08-05' and FDocumentStatus='C'"
  2. 调用接口:使用轻易云平台发起POST请求,获取符合条件的数据。
  3. 数据清洗与转换:对获取的数据进行必要的清洗和格式转换。
  4. 写入目标系统:将处理后的数据通过相应的API写入旺店通系统。

通过上述步骤,我们可以实现不同系统间的数据无缝对接,确保业务流程的高效运转。

以上内容详细介绍了如何利用轻易云平台调用金蝶云星空接口executeBillQuery获取并加工数据,为实现复杂的数据集成提供了技术指导。 企业微信与OA系统接口开发配置

使用轻易云数据集成平台实现ETL转换并写入旺店通·旗舰版API接口

在数据集成生命周期的第二阶段,我们重点关注如何将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并最终通过旺店通·旗舰版API接口写入目标平台。以下是详细的技术实现过程。

1. 数据提取与清洗

首先,从源平台提取数据并进行必要的清洗和预处理。这一步确保数据的完整性和一致性,为后续的转换和加载打下基础。我们假设已经完成了这一步,接下来直接进入数据转换和写入阶段。

2. 数据转换

在轻易云数据集成平台中,我们需要将源数据转换为旺店通·旗舰版API接口所能接收的格式。以下是具体的元数据配置:

{
    "api": "wms.outer.OuterOut.createOrder",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {
            "field": "order",
            "label": "单据头",
            "type": "object",
            "children": [
                {"field": "order_no", "label": "外部单号", "type": "string", "value": "{FBillNo}"},
                {"field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FSrcStockID_FNumber}"},
                {"field": "reason", "label": "出库原因", "type": "string", "value": "调拨出库"},
                {"field": "remark", "label": "备注", "type": "string", 
                    "value":"调入仓:{FDestStockID_FNumber}  {FNOTE}"}
            ]
        },
        {
            "field": "order_details",
            "label": "单据明细",
            "type": "array",
            "value":"list",
            "children":[
                {"field":"spec_no","label":"商家编码","type":"string","value":"{FMaterialID_FNumber}"},
                {"field":"num","label":"数量","type":"string","value":"{FQty}"},
                {"field":"remark","label":"明细备注","type":"string","value":"{FEntryNote}"}
            ]
        },
        {"field":"is_check","label":"是否审核","type":"bool","value":"true"}
    ],
    "groupCalculate":{
        "headerGroup":["FBillNo","FSrcStockID_FNumber","FID","FBillTypeID","FDestStockID_FNumber"],
        "bodyGroup":["FMaterialID_FNumber","FEntryNote","FMaterialID_FRefCost"],
        "bodyName":"list",
        "calculate":{"FQty":"$sum"}
    },
    "buildModel":true
}

3. 数据写入目标平台

使用上述元数据配置,我们可以通过调用旺店通·旗舰版API接口将转换后的数据写入目标平台。具体步骤如下:

  1. 构建请求体:根据元数据配置,构建符合API要求的请求体。这里我们需要特别注意字段映射,例如:

    • order_no 映射到 {FBillNo}
    • warehouse_no 映射到 {FSrcStockID_FNumber}
    • remark 包含了 调入仓:{FDestStockID_FNumber} {FNOTE} 的组合信息。
  2. 处理单据明细:对于数组类型的字段 order_details,我们需要遍历每一条记录,并按照指定的字段映射进行转换。例如:

    • spec_no 映射到 {FMaterialID_FNumber}
    • num 映射到 {FQty}
    • remark 映射到 {FEntryNote}
  3. 调用API:使用HTTP POST方法,将构建好的请求体发送到指定的API端点 wms.outer.OuterOut.createOrder

  4. 错误处理与日志记录:在调用API时,需要处理可能出现的错误,例如网络异常、接口返回错误信息等。同时,记录日志以便于后续排查问题。

4. 示例代码

以下是一个示例代码片段,用于展示如何实现上述步骤:

import requests
import json

# 构建请求体
request_body = {
    'order': {
        'order_no': '123456',
        'warehouse_no': 'WH001',
        'reason': '调拨出库',
        'remark': '调入仓:WH002  特殊说明'
    },
    'order_details': [
        {'spec_no': 'ITEM001', 'num': '10', 'remark': '无'},
        {'spec_no': 'ITEM002', 'num': '5', 'remark': '无'}
    ],
    'is_check': True
}

# 转换为JSON格式
json_request_body = json.dumps(request_body)

# 调用API接口
response = requests.post(
    url='https://api.wangdian.cn/openapi/wms.outer.OuterOut.createOrder',
    headers={'Content-Type': 'application/json'},
    data=json_request_body
)

# 检查响应状态码和内容
if response.status_code == 200:
    print('成功:', response.json())
else:
    print('失败:', response.status_code, response.text)

通过上述步骤,我们可以高效地将源平台的数据进行ETL转换,并成功写入旺店通·旗舰版API接口。这不仅提升了数据处理效率,也确保了业务流程的顺畅运行。 如何开发用友BIP接口

更多系统对接方案