使用管易云API接口实现历史发货单数据清洗与写入步骤

  • 轻易云集成顾问-冯潇

管易销售发货单到金蝶销售出库单的系统对接集成案例分享

在实际业务场景中,将管易云·奇门中的历史订单数据集成到金蝶云星空,以实现电商平台与ERP系统之间的数据同步,是一项常见但极具挑战性的任务。本篇将聚焦于使用轻易云数据集成平台,为"管易销售发货单-->金蝶销售出库单(电商 历史订单)"方案提供技术详细。

首先,重要的一环是通过管易云·奇门API gy.erp.trade.deliverys.history.get 接口,实现历史发货单数据的可靠抓取。为确保高吞吐量和稳定性,我们设计了定时任务定期调用该接口,并处理分页和限流问题。此外,集中监控和告警体系能够实时跟踪任务状态,一旦出现异常,如API请求失败或响应时间过长,即刻触发告警机制,保障集成过程不漏单。

获取到的原始数据往往未必完全符合目标系统金蝶云星空的需求,因此我们需要进行自定义的数据转换逻辑。这一步骤涉及字段映射、格式转化等操作,以确保输入数据与目标系统所需格式一致。在这方面,可视化的数据流设计工具发挥了巨大的优势,使得复杂的数据转换过程变得直观且可管理。

接下来,通过调用金蝶云星空的 batchSave API,我们将处理后的批量资料快速写入至其数据库内。同样地,为应对可能出现的异常情况,还部署了错误重试机制,当写入操作失败时自动重新尝试。

归根结底,无论是接口间数据结构差异、分页限流处理,还是批量写入与监控告警,各个环节都严密结合,从而实现高效、安全、可靠的数据集成。 如何开发用友BIP接口

使用管易云·奇门接口gy.erp.trade.deliverys.history.get获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用管易云·奇门接口gy.erp.trade.deliverys.history.get获取销售发货单的历史数据,并对其进行初步加工。

接口调用配置

首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到该接口采用POST方法进行请求,主要用于查询历史发货单数据。以下是关键字段的配置:

  • start_createend_create: 用于指定创建时间的开始和结束段。
  • start_modify_dateend_modify_date: 用于指定修改时间的开始和结束段。
  • delivery: 发货状态,值为1表示发货成功。
  • start_delivery_dateend_delivery_date: 发货时间的开始和结束段,分别使用上次同步时间和当前时间作为默认值。
  • 其他字段如warehouse_codeshop_codeouter_code等,用于进一步过滤查询结果。

分页参数也需要特别注意:

  • page_no: 页码,默认值为1。
  • page_size: 每页大小,默认值为20。

请求示例

基于上述配置,我们可以构建一个请求示例:

{
  "api": "gy.erp.trade.deliverys.history.get",
  "method": "POST",
  "params": {
    "start_create": "2023-01-01T00:00:00",
    "end_create": "2023-01-31T23:59:59",
    "delivery": 1,
    "start_delivery_date": "{{LAST_SYNC_TIME|datetime}}",
    "end_delivery_date": "{{CURRENT_TIME|datetime}}",
    "page_no": 1,
    "page_size": 20
  }
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以利用平台提供的自动填充响应功能(autoFillResponse),简化部分字段的处理。

例如,对于返回的数据结构中的发货单列表(deliverys),我们可以直接映射到目标系统所需的字段格式。同时,根据条件过滤掉不需要的数据,如平台编码不包含特定字符串或订单类型不为礼品等。

以下是一个简单的数据清洗示例:

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data['deliverys']:
        if record['platform_code'] not in ['XXXSDD', 'CKSQ'] and \
           record['details']['order_type'] not in ['gift', 'Maintain'] and \
           record['details']['item_code'] != 'fapiao':
            cleaned_record = {
                'code': record['code'],
                'warehouse_code': record['warehouse_code'],
                'shop_code': record['shop_code'],
                'outer_code': record['outer_code'],
                'mail_no': record['mail_no'],
                'delivery_date': record['delivery_date']
            }
            cleaned_data.append(cleaned_record)
    return cleaned_data

数据写入

经过清洗和转换的数据可以直接写入目标系统。在轻易云数据集成平台中,这一步通常通过配置相应的目标系统接口来实现。确保每个字段都正确映射,并根据业务需求进行必要的数据校验和处理。

例如,将清洗后的数据写入金蝶销售出库单时,可以配置相应的API接口,并确保字段匹配:

{
  "api": "kingdee.sales.outbound.add",
  "method": "POST",
  "params": {
    // 映射后的字段
  }
}

通过以上步骤,我们实现了从管易云·奇门接口获取历史发货单数据,并对其进行清洗、转换和写入目标系统的完整流程。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。 金蝶与CRM系统接口开发配置

轻易云数据集成平台:将源数据转换为金蝶云星空API格式并写入

在轻易云数据集成平台中,ETL(提取、转换、加载)过程的第二步至关重要,即将已经集成的源平台数据进行转换,使其符合目标平台金蝶云星空API接口的要求,并最终写入目标平台。本文将深入探讨如何利用元数据配置完成这一过程。

元数据配置解析

元数据配置是ETL过程中的核心部分,它定义了如何将源数据映射到目标系统所需的格式。以下是对关键元数据字段的详细解析:

  1. 单据类型(FBillTypeID)

    • 配置:{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD12_SYS"}
    • 解析:使用ConvertObjectParser将固定值XSCKD12_SYS转换为目标系统可识别的单据类型编码。
  2. 单据编号(FBillNo)

    • 配置:{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}
    • 解析:直接从源数据中提取,无需额外转换。
  3. 日期(FDate)

    • 配置:{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{delivery_statusInfo.delivery_date}}"}
    • 解析:通过模板变量从源数据中提取发货日期。
  4. 销售组织(FSaleOrgId)和发货组织(FStockOrgId)

    • 配置示例:
      {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function CASE '{shop_code}' WHEN 'SXF001' THEN '103' WHEN 'SXF002' THEN '103' ELSE '100' END"}
    • 解析:根据店铺代码动态映射销售组织和发货组织,使用SQL风格的CASE语句实现条件判断。
  5. 客户(FCustomerID)

    • 配置:{"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from dc704b79-f3da-309a-9d2d-88456a5cbcd9 where F_352_waibuma={shop_code}"}
    • 解析:通过_findCollection函数从指定集合中查找客户编码,结合店铺代码进行匹配。
  6. 货主类型和货主(FOwnerTypeIdHead, FOwnerIdHead)

    • 配置示例:
      {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"货主类型","value":"BD_OwnerOrg"},
      {"field":"FOwnerIdHead","label":"货主","type": "string", "describe": "货主", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_function CASE '{shop_code}' WHEN 'SXF001' THEN '103' ELSE '100' END"}
    • 解析:固定值和动态映射相结合,确保货主信息准确无误。
  7. 明细信息(FEntity)

    • 配置:
      {"field": "FEntity", "label": "明细信息", "type": "array", "describe": "明细信息", "value": "details", "children":[
      {"field": "FMaterialID", "label": "物料编码", "type": "string", "describe": "基础资料", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_findCollection find FNumber from a430738b-c21a-3683-832c-4b519dc241ba where F_UQRW_Text={{details.item_code}}"},
      {"field": "FUnitID", "label": "库存单位", "type": "string", "value": "_findCollection find FBaseUnitId_FNumber from a430738b-c21a-3683-832c-4b519dc241ba where F_UQRW_Text={{details.item_code}}"},
      {"field": "FRealQty", "label": “实发数量”, “type”: “string”, “describe”: “数量”, “value”: “{{details.qty}}”}
      ]}
    • 解析:通过嵌套结构处理复杂的明细信息,每个子字段均有独立的转换逻辑,如物料编码、库存单位等。
  8. 物流跟踪明细(FOutStockTrace)

    • 配置:
      {"field": “FOutStockTrace”, “label”: “物流跟踪明细”, “type”: “array”, “children”: [
      {"field”: “FCarryBillNo”, “label”: “物流单号”, “type”: “string”, “value”: "{express_no}"},
      {"field”: “FLogComId”, “label”: “物流公司”, “type”: ”string”, ”parser”: {“name”: ”ConvertObjectParser”, ”params”: ”FCODE”}, ”mapping”:{“target”:”6567f13a3b91c238504d2c66”,”direction”:”positive”}},
      {"field”:”FPhoneNumber”,”label”:”寄件人手机号”,”type”:”string”,”value”:"_function RIGHT('{receiver_mobile}', 4)"}
      ]}
    • 解析:处理物流相关信息,包括物流单号、公司及寄件人手机号等,通过函数和映射实现复杂字段转换。

API调用与写入

在完成所有字段的转换后,最终需要通过API接口将处理后的数据写入金蝶云星空。以下是关键步骤:

  1. 定义业务对象表单ID

    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}
  2. 执行操作

    {"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"Save"}
  3. 提交并审核

    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}
  4. 批量保存方法调用

    {
      operation: {
        rowsKey: 'array',
        rows: 1,
        method: 'batchArraySave'
      }
    }

通过上述步骤,轻易云数据集成平台能够有效地将源平台的数据经过ETL处理后,转换为金蝶云星空API接口所能接受的格式,并成功写入目标系统。这一过程确保了不同系统间的数据无缝对接,提高了业务流程的自动化和效率。 钉钉与WMS系统接口开发配置

更多系统对接方案