轻易云ETL平台实现金蝶云与小满OKKICRM的数据同步

  • 轻易云集成顾问-姚缘

金蝶物料对接小满产品-P-OK

在现代企业的数据集成需求中,实现跨系统的无缝数据流动始终是一个关键目标。本文聚焦于“金蝶物料对接小满产品-P-OK”的具体技术实现,解析如何高效、可靠地将金蝶云星空中的数据集成到小满OKKICRM系统。

集成流程和API调用

首先,通过调用executeBillQuery API接口从金蝶云星空获取所需的物料数据。该接口支持复杂查询条件,能精准定位并抽取企业需求的数据。但是,需要处理好分页和限流的问题,以确保不会因请求过多导致服务端压力过大或被临时封禁。

{
    "formId": "BD_MATERIAL",
    "filterString": "",
    "fieldKeys": ["MaterialID", "Name", "Model"]
}

上述示例JSON展示了一个基础的查询请求,通过合理设置参数,获取指定的物料信息。在这个过程中,要特别注意接口返回的数据结构,并根据需要做适当格式转换,以便后续能够顺利写入到小满OKKICRM中。

数据映射与批量写入

为了保证数据的一致性和完整性,我们需要进行定制化的数据映射处理,将金蝶云星空中的字段准确对应到小满OKKICRM系统。例如,在获得所需物料信息后,可以通过如下方式转换并准备写入:

{
    "product_code": "<MaterialID>",
    "product_name": "<Name>",
    "model_type": "<Model>"
}

接着,通过调用/v1/product/push API,将处理好的物料数据批量推送至小满OKKICRM。这一步骤不仅要求确保一次能够高效地处理大量数据,还要建立异常处理与错误重试机制,如遇到网络问题或者目标服务器出现短暂故障等情况,可以及时重试某些失败的记录,而不影响整个流程。

[
  {
      "product_code": "MAT001",
      ...
  },
  ...
]

对于每一条成功或失败的记录,都应当详细记录日志,并实时监控整个过程,使得管理员可以随时查看当前状态,从而快速定位并解决问题,提高整体运维效率。


以上是此次“金蝶物料对接小满产品-P-OK”项目实施案例开头部分,从API设计、分页限流、数据映射以及批量操作等方面简要介绍了初步思路及关键点。下一节将深入探讨具体实现细节,包括代码示例及最佳实践策略。 金蝶与SCM系统接口开发配置

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

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

接口配置与请求参数

首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到以下关键参数:

  • API: executeBillQuery
  • Method: POST
  • Pagination: 每页100条记录
  • Request Fields: 包含多个字段,如FMATERIALID(实体主键)、FNumber(编码)、FName(名称)等。

这些字段将用于构建请求和解析响应。

构建请求

构建请求时,需要特别注意以下几点:

  1. 表单ID:必须填写金蝶的表单ID,例如:BD_MATERIAL
  2. 过滤条件:可以根据业务需求设置过滤条件,例如:仅查询最近同步时间后的数据,或特定组织的数据。
  3. 分页参数:包括最大行数、开始行索引等,以确保大数据量时的查询效率。

示例请求体如下:

{
  "FormId": "BD_MATERIAL",
  "FieldKeys": "FMATERIALID,FNumber,FName,FSpecification,FOldNumber,FBARCODE,FDescription,FMaterialGroup.FNumber,FErpClsID,FDocumentStatus,FForbidStatus,FBaseUnitId.FNumber,FCreateOrgId.FNumber,FUseOrgId.FNumber,FIsInventory,FIsSale,FIsAsset,FIsSubContract,FIsProduce,FIsPurchase,FStockId.FNumber,FPurchaseOrgId.FNumber,FPurchaseOrgId.FName,FIsBatchManage,FIsKFPeriod,FIsSNManage,FSafeStock,FCategoryID,FExpPeriod,FOrderQty,FMinQty,FMaxQty,FDefaultVendor.FNumber,FMaxPOQty,FMinPOQty,FIncreaseQty,FFixLeadTime,FVarLeadTime,FPlanBatchSplitQty,FProduceBillType.FNumber,FPOBillTypeId.FNumber,FSubBillType.FNumber,FGROSSWEIGHT,FNETWEIGHT,FWEIGHTUNITID.FNumber,FLENGTH,FWIDTH,FHEIGHT,FVOLUME,FWARRANTY,FSalePrice_CMK",
  "FilterString": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FBaseProperty like 'PGY%' and FUseOrgId.FNumber='101'",
  "Limit": 2000,
  "StartRow": 0,
  "TopRowCount": true
}

数据清洗与转换

在获取到原始数据后,下一步是对数据进行清洗和转换。轻易云平台支持自动填充响应(autoFillResponse),这意味着我们可以直接利用元数据配置中的字段信息进行处理。

例如,对于物料编码字段FNumber,我们可以进行如下处理:

def process_material_data(data):
    cleaned_data = []
    for item in data:
        material = {
            "MaterialID": item.get("FMATERIALID"),
            "Code": item.get("FNumber"),
            "Name": item.get("FName"),
            "Specification": item.get("FSpecification"),
            # 更多字段处理...
        }
        cleaned_data.append(material)
    return cleaned_data

数据写入目标系统

最后,将清洗和转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口,并确保数据格式符合目标系统的要求。

示例代码如下:

def write_to_target_system(cleaned_data):
    for material in cleaned_data:
        response = target_system_api.post("/materials", json=material)
        if response.status_code != 201:
            log.error(f"Failed to write material {material['Code']} to target system")

通过以上步骤,我们实现了从金蝶云星空获取物料信息并加工处理的全过程。这不仅提高了数据集成的效率,还确保了数据的一致性和准确性。 电商OMS与WMS系统接口开发配置

轻易云数据集成平台ETL转换与写入小满OKKICRMAPI接口技术案例

在数据集成生命周期的第二步,我们将重点探讨如何将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并最终写入目标平台小满OKKICRMAPI接口。以下是详细的技术实现过程。

API接口配置

根据元数据配置,我们需要向小满OKKICRM的/v1/product/push接口发送POST请求。该接口要求的数据字段如下:

  • product_id: 产品ID,通过MongoDB查询获取。
  • name: 产品名称,直接映射自源数据字段FName
  • product_no: 产品编码,直接映射自源数据字段FNumber
  • model: 产品型号,直接映射自源数据字段FNumber
  • description: 产品描述,直接映射自源数据字段FDescription
  • package_gross_weight: 产品毛重,直接映射自源数据字段FGROSSWEIGHT
  • package_unit: 包装单位,直接映射自源数据字段FBaseUnitId_FNumber
  • package_volume: 包装体积,直接映射自源数据字段FVOLUME
  • unit: 计量单位,直接映射自源数据字段FBaseUnitId_FNumber
  • product_type: 固定值1。
  • group_id: 产品分组,通过MongoDB查询获取。
  • 11317573983: EAN编码(可选)。
  • 11317575560: UPC编码(可选)。

数据提取与转换

首先,从金蝶系统中提取原始数据。假设我们已经通过轻易云平台完成了初步的数据请求与清洗工作,现在需要对这些清洗后的数据进行转换,以符合小满OKKICRMAPI接口的格式要求。

示例代码片段:
import requests
import json

# 假设已经从金蝶系统提取到以下原始数据
source_data = {
    "FNumber": "P12345",
    "FName": "产品A",
    "FDescription": "这是一个示例产品",
    "FGROSSWEIGHT": "10kg",
    "FBaseUnitId_FNumber": "PCS",
    "FVOLUME": "0.5m³"
}

# MongoDB查询函数示例
def query_mongo(query):
    # 模拟MongoDB查询返回结果
    if query == '{"content.product_no":{"$eq":"P12345"}}':
        return {"content.product_id": "mongo_product_001"}
    elif query == '{"content.name":{"$eq":"产品A"}}':
        return {"content.id": "mongo_group_001"}
    return None

# 构建请求体
request_body = {
    "product_id": query_mongo('{"content.product_no":{"$eq":"' + source_data["FNumber"] + '"}}')["content.product_id"],
    "name": source_data["FName"],
    "product_no": source_data["FNumber"],
    "model": source_data["FNumber"],
    "description": source_data["FDescription"],
    "package_gross_weight": source_data["FGROSSWEIGHT"],
    "package_unit": source_data["FBaseUnitId_FNumber"],
    "package_volume": source_data["FVOLUME"],
    "unit": source_data["FBaseUnitId_FNumber"],
    "product_type": 1,
    "group_id": query_mongo('{"content.name":{"$eq":"' + source_data["FName"] + '"}}')["content.id"]
}

# 打印请求体以便调试
print(json.dumps(request_body, indent=4, ensure_ascii=False))

# 发送POST请求至小满OKKICRMAPI接口
response = requests.post("https://api.okki.com/v1/product/push", json=request_body)

# 检查响应状态码和内容
if response.status_code == 200:
    print("Data successfully pushed to OKKICRM")
else:
    print(f"Failed to push data: {response.status_code}, {response.text}")

数据写入

在上述代码中,我们首先从金蝶系统中提取了所需的原始数据,然后通过两个MongoDB查询分别获取了对应的产品ID和产品分组ID。接着,我们构建了符合小满OKKICRMAPI接口要求的请求体,并使用Python的requests库发送POST请求。

注意事项

  1. 错误处理:在实际应用中,需要增加对异常情况的处理,例如MongoDB查询失败或API请求失败时的重试机制。
  2. 日志记录:建议添加日志记录,以便在出现问题时能够快速定位和解决问题。
  3. 安全性:确保API密钥和其他敏感信息不被泄露,可以使用环境变量或配置文件来管理这些信息。

通过以上步骤,我们实现了将金蝶系统中的物料信息成功转换并推送至小满OKKICRM平台。这一过程展示了如何利用轻易云平台进行高效的数据集成和ETL转换。 如何对接企业微信API接口

更多系统对接方案