构建高效的数据集成系统:从旺店通到金蝶云星空

  • 轻易云集成顾问-贺强

旺店通·旗舰奇门数据集成到金蝶云星空:销售退货单预入库关联

在系统对接和数据集成项目中,确保不同平台间的数据无缝同步是关键步骤之一。本文将介绍如何通过轻易云数据集成平台,将旺店通·旗舰奇门的销售退货单数据高效、准确地传输并写入到金蝶云星空中,实现预入库关联操作。本技术案例重点分享了API接口调用、处理分页与限流问题以及异常处理等方面。

API接口的配置与调用

  • 获取旺店通·旗舰奇门销售退货单数据:首先,通过调用wdt.wms.stockin.refund.querywithdetail获取需要同步的销售退货单详细信息。此API能够精准抓取最新生成或更新的订单信息,为后续的数据处理提供基础。

    {
      "api_name": "wdt.wms.stockin.refund.querywithdetail",
      "params": {
          // 必要参数如时间范围,分页参数等
      }
    }
  • 写入金蝶云星空:利用batchSave API将从旺店通获取的数据批量写入到金蝶云星空。在执行这个过程时,需要特别注意数据格式的一致性。

    {
      "api_name": "batchSave",
      "payload": [
          // 转换后的具体业务数据 
      ]
    }

分页与限流管理

为了有效应对大规模数据库查询所产生的问题,防止因一次性抓取大量记录导致系统崩溃或者响应超时,我们将在实现方案中采用分页策略,并结合限流措施来优化性能。例如,在每次API请求时限定返回条目数,当达到一定数量后再继续下一次请求,从而平衡实时性与效率需求。

GET /query?
page=1&page_size=50&...other_params...

如此循环直到所有待处理订单全部被成功抓取和存储。这不仅减少了系统负荷,还能确保不会遗漏任何一笔重要交易记录。

数据格式转换及映射

由于各个系统之间往往存在字段名或者结构上的差异,必须进行相应的数据格式转换以适配目的端需求。为此,我们设计了一套灵活且可定制化的映射规则,可以根据实际业务情况动态调整字段对应关系,从而保证最终上传至金蝶云星空的数据完全符合其期望值。

function mapData(source) {
    return rawData.map(item => ({
        orderNumber: item.order_id,
        customerName: item.buyer_nick,
        refundAmount: item.total_fee,
        ...additionalMappings   

![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/D4.png~tplv-syqr462i7n-qeasy.image)
### 调用旺店通·旗舰奇门接口wdt.wms.stockin.refund.querywithdetail获取并加工数据

在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据,并对其进行初步加工处理。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockin.refund.querywithdetail`,并对返回的数据进行格式化和清洗。

#### 接口调用配置

首先,我们需要配置API接口的元数据,以便正确调用并处理返回的数据。以下是该接口的元数据配置:

```json
{
  "api": "wdt.wms.stockin.refund.querywithdetail",
  "method": "POST",
  "number": "order_no",
  "id": "order_no",
  "idCheck": true,
  "formatResponse": [
    {"old": "check_time", "new": "short_date", "format": "date"},
    {"old": "modified", "new": "short_modify_date", "format": "date"}
  ],
  "request": [
    {
      "field": "pager",
      "label": "分页参数",
      "type": "object",
      "children": [
        {"field": "page_size", "label": "分页大小", "type": "string", "value":"200", 
            "parent":"pager"},
        {"field":"page_no","label":"页号","type":"string","value":"1","parent":"pager"}
      ]
    },
    {
      "field":"params",
        "label":"业务参数",
        "type":"object",
        "children":[
        {"field":"start_time","label":"start_time","type":"string","value":
            "{{DAYS_AGO_1|date}} 00:00:00"},
        {"field":"end_time","label":"end_time","type":"string","value":
            "{{DAYS_AGO_1|date}} 23:59:59"},
        {"field":"time_type","label":"time_type","type":"string"}
      ]
    }
  ],
    "omissionRemedy":{"crontab":null,"takeOverRequest":[]},
    "autoFillResponse":true,
    "condition_bk":[[{"field":"attach_type","logic":"isnull","value":""}]],
    "condition":[[{"field":"attach_type","logic":"notnull","value":""}]]
}

请求参数设置

在请求参数中,我们设置了分页参数和业务参数:

  • 分页参数:用于控制每次请求的数据量和页码。

    • page_size:每页返回的数据条数,设为200。
    • page_no:当前请求的页码,初始值为1。
  • 业务参数:用于指定查询条件。

    • start_timeend_time:定义了查询时间范围,这里使用了模板变量{{DAYS_AGO_1|date}}来动态生成前一天的日期。
    • time_type:时间类型,根据具体需求设置。

数据格式化与清洗

在获取到原始数据后,需要对其进行格式化和清洗。根据元数据配置中的formatResponse字段,我们将以下字段进行转换:

  • check_time转换为short_date,格式为日期。
  • modified转换为short_modify_date,格式为日期。

这种转换有助于统一数据格式,便于后续处理和分析。

条件过滤

为了确保数据的准确性和完整性,我们还设置了条件过滤:

  • 条件过滤:仅当字段attach_type不为空时才处理该条记录。这可以通过元数据中的条件配置实现:
    {
    "condition":[[{"field":"attach_type","logic":"notnull","value":""}]]
    }

自动填充响应

为了简化操作,我们启用了自动填充响应功能(autoFillResponse),这意味着平台会自动根据请求结果填充相应的数据字段,无需手动干预。

通过上述步骤,我们成功调用了旺店通·旗舰奇门接口,并对返回的数据进行了初步加工。这一过程不仅确保了数据的一致性和准确性,还为后续的数据转换与写入奠定了坚实基础。 企业微信与OA系统接口开发配置

数据集成案例:将销售退货单数据转换并写入金蝶云星空

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现细节。

1. API接口配置

首先,我们需要配置金蝶云星空API接口的相关参数。根据元数据配置,我们使用batchSave API,并通过POST方法提交请求。以下是关键字段及其配置:

  • FormId: SAL_RETURNSTOCK,表示业务对象表单ID。
  • Operation: Save,表示执行保存操作。
  • IsAutoSubmitAndAudit: true,表示提交并审核。
  • IsVerifyBaseDataField: true,表示验证基础资料有效性。
  • SubSystemId: 21,表示系统模块为仓库模块。
  • BatchCount: 5,表示服务端开启的线程数。

2. 数据字段映射与转换

在数据转换过程中,需要将源平台的数据字段映射到金蝶云星空API所需的字段格式。以下是主要字段及其转换逻辑:

  • FBillTypeID(单据类型):

    • 固定值:XSTHD01_SYS
    • 使用解析器:ConvertObjectParser
    • 参数:FNumber
  • FBillNo(单据编号):

    • 直接从源数据获取,无需转换。
  • FSaleOrgId(销售组织)和FStockOrgId(库存组织):

    • 固定值:101
    • 使用解析器:ConvertObjectParser
    • 参数:FNumber
  • FDate(日期):

    • 动态值,根据条件选择:
      CASE '{associated_time}' WHEN '0000-00-00 00:00:00' THEN '{short_time}' ELSE '{associated_time}' END
  • FRetcustId(退货客户):

    • 使用MongoDB查询获取:
      _mongoQuery 3c9b5a58-0a09-3ae7-b7ea-20fbf5f16fa3 findField=content.FNumber where={"content.FName":{"$eq":"{shop_name}"}}
  • FHeadNote(备注)和F_TBIK_WDTBZ(旺店通备注):

    • 动态组合多个字段生成备注信息:
      CASE '{associated_time}' WHEN '0000-00-00 00:00:00' THEN '{shop_name}-{warehouse_no}-{short_time}' ELSE '{shop_name}-{warehouse_no}-{short_time}-{associated_time}' END

3. 明细信息处理

明细信息包含多个子字段,每个子字段需要进行相应的转换:

  • FMaterialId(物料编码):

    • 使用解析器:ConvertObjectParser
    • 参数:FNumber
  • FRealQty(实退数量):

    • 动态值,根据数量判断:
      CASE WHEN '{num}'<1 THEN '0' WHEN '{num}'>=1 THEN '{num}' ELSE '{num}' END
  • FTaxPrice(含税单价):

    • 动态计算:
      {refund_amount}/{stockin_num}

4. 财务信息处理

财务信息包含结算组织等字段:

  • FSettleOrgId(结算组织):
    • 固定值:101
    • 使用解析器:ConvertObjectParser
    • 参数:FNumber

5. 时间相关字段处理

实际入库时间和预入库关联时间均需要根据条件动态生成:

CASE '{associated_time}' WHEN '0000-00-00 00:00:00' THEN '' ELSE '{short_time}' END

实际操作示例

以下是一个完整的请求示例,将上述配置应用于实际操作中:

{
   "api": "batchSave",
   "effect": "EXECUTE",
   "method": "POST",
   "idCheck": true,
   "request": [
       {
           "field": "FBillTypeID",
           "value": "XSTHD01_SYS"
       },
       {
           "field": "FBillNo",
           "value": "{bill_no}"
       },
       {
           "field": "FSaleOrgId",
           "value": "101"
       },
       {
           "field": "FStockOrgId",
           "value": "101"
       },
       {
           "field": "FDate",
           "value": "{modified}"
       },
       {
           ...
       }
   ],
   ...
}

通过以上步骤,我们成功地将源平台的数据经过ETL转换后写入了金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提升了数据处理效率,也确保了数据的一致性和准确性。 打通金蝶云星空数据接口

更多系统对接方案