金蝶云星空与旺店通·企业奇门系统的委外采购入库单数据对接
在实现企业级数据集成的过程中,准确、高效地进行跨平台对接是一个关键问题,这个案例将探讨如何通过轻易云平台,实现金蝶云星空与旺店通·企业奇门之间委外采购入库单的数据集成。本文重点解析技术细节,以实战经验展示解决方案。
具体流程包括抓取金蝶云星空中的委外采购入库单,并批量写入至旺店通·企业奇门中。在数据集成过程中,通过调用金蝶云星空的API executeBillQuery 获取目标数据信息,再利用旺店通·企业奇门的API wdt.stockin.order.push 将获取到的数据传输过去。
首先,为确保从金蝶云星空接口提取的数据不漏单,我们定时可靠地调用其接口 executeBillQuery,充分考虑分页和限流策略来处理大数据量。此外,还需注意两者间的数据格式差异,通过定制化的数据映射,对原始数据进行必要转换以适应目标系统要求。
最后,应针对可能出现的异常情况制定相应的处理机制。例如,在推送到旺店通·企业奇门时,可实现错误重试和日志记录功能,以保证每次操作都有迹可循,并及时发现并修复潜在的问题。这些步骤将极大提升整个对接流程的稳定性和透明度。

调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成过程中,调用源系统的API接口是关键的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。
接口配置与调用
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery接口。以下是元数据配置的关键部分:
{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FInStockEntry_FEntryId",
  "name": "FBillNo",
  "idCheck": true,
  ...
}该配置指定了API名称、请求方法(POST)、主键字段(FInStockEntry_FEntryId)和单据编号字段(FBillNo)。这些信息是调用API时必不可少的。
请求参数构建
接下来,我们需要构建请求参数。以下是一些关键字段及其描述:
- FormId: 表单ID,必须填写。例如:- STK_InStock
- FieldKeys: 需查询的字段集合,格式为字符串数组。
- FilterString: 过滤条件,用于筛选特定的数据。例如:- FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
- Limit: 最大行数,用于分页。
- StartRow: 开始行索引,用于分页。
示例请求参数如下:
{
  "FormId": "STK_InStock",
  "FieldKeys": [
    "FInStockEntry_FEntryId", 
    "FID", 
    "FBillNo", 
    ...
  ],
  "FilterString": "FBillTypeID.FNumber='RKD03_SYS' and FDocumentStatus='C' and FStockId.FNumber='001' and FApproveDate>='2023-01-01'",
  "Limit": 100,
  "StartRow": 0
}数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作:
- 字段映射:将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将FInStockEntry_FEntryId映射为目标系统中的entry_id。
- 数据类型转换:确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。
- 缺失值处理:处理缺失值或默认值,以确保数据完整性。
示例代码如下:
def clean_and_transform(data):
    cleaned_data = []
    for entry in data:
        transformed_entry = {
            'entry_id': entry['FInStockEntry_FEntryId'],
            'bill_no': entry['FBillNo'],
            'approve_date': parse_date(entry['FApproveDate']),
            ...
        }
        cleaned_data.append(transformed_entry)
    return cleaned_data
def parse_date(date_str):
    # 将日期字符串转换为标准日期格式
    return datetime.strptime(date_str, '%Y-%m-%d')数据写入
最后,将清洗和转换后的数据写入目标系统。这一步通常涉及调用目标系统的API接口,并根据其要求提交数据。
示例代码如下:
def write_to_target_system(cleaned_data):
    for entry in cleaned_data:
        response = requests.post('https://target-system/api/endpoint', json=entry)
        if response.status_code != 200:
            log_error(response.text)
# 调用整个流程
raw_data = call_execute_bill_query()
cleaned_data = clean_and_transform(raw_data)
write_to_target_system(cleaned_data)通过以上步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的全流程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。

利用轻易云数据集成平台实现ETL转换并写入旺店通·企业奇门API接口
在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。以下是详细的技术步骤和配置示例。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其含义:
- api: wdt.stockin.order.push表示调用旺店通·企业奇门的入库单推送接口。
- method: POST表示使用HTTP POST方法提交数据。
- idCheck: true表示需要进行ID校验。
- request: 包含具体的数据字段映射关系。
数据字段映射
元数据配置中的字段映射关系如下:
- 
外部单号(outer_no) - 来源字段:FBillNo
- 类型:string
- 描述:外部单号
 
- 来源字段:
- 
仓库编号(warehouse_no) - 来源字段:FStockId_FNumber
- 类型:string
- 描述:仓库编号
 
- 来源字段:
- 
备注(remark) - 固定值:委外入库
- 类型:string
- 描述:备注
 
- 固定值:
- 
是否审核(is_check) - 固定值:1
- 类型:string
- 描述:是否审核
 
- 固定值:
- 
入库原因(reason) - 类型:string
- 描述:入库原因
 
- 类型:
- 
货品明细节点(goods_list) 包含多个子字段: a. 商家编码(spec_no) - 来源字段:FMaterialId_FNumber
- 类型:string
- 描述:商家编码
 b. 入库数量(stockin_num) - 来源字段:FRealQty
- 类型:string
- 描述:入库数量
 c. 原价(src_price) - 来源字段:FPrice
- 类型:string
- 描述:原价
 d. 入库价(stockin_price) - 来源字段:FTaxPrice
- 类型:string
- 描述:入库价
 e. 批次(batch_no) - 类型:string
- 描述:批次
 f. 税率(tax) - 类型:string
- 描述:“对征税对象的征收比例或征收额度。例如税率为16%,请求时填值为0.16”
 
- 来源字段:
数据转换与写入过程
在实际操作中,ETL过程可以分为以下几个步骤:
- 
提取数据(Extract) 从源系统(金蝶系统)提取相关的数据,如订单号、仓库编号、货品明细等。 
- 
转换数据(Transform) 使用轻易云数据集成平台,将提取的数据根据元数据配置进行转换。具体操作如下: { "outer_no": "{FBillNo}", "warehouse_no": "{FStockId_FNumber}", "remark": "委外入库", "is_check": "1", "reason": "", "goods_list": [ { "spec_no": "{FMaterialId_FNumber}", "stockin_num": "{FRealQty}", "src_price": "{FPrice}", "stockin_price": "{FTaxPrice}", "batch_no": "", "tax": "" } ] }
- 
加载数据(Load) 将转换后的数据通过HTTP POST方法提交到旺店通·企业奇门API接口。请求体示例如下: { "api": "wdt.stockin.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field":"outer_no", "value":"SO20231001" }, { "field":"warehouse_no", "value":"WH001" }, { "field":"remark", "value":"委外入库" }, { "field":"is_check", "value":"1" }, { "field":"reason", ... }, { ... } ], ... }
实施注意事项
- 
字段校验 确保所有必填字段都已正确映射,并且数据类型匹配。 
- 
异常处理 在ETL过程中,需对可能出现的异常情况进行处理,例如网络异常、数据格式错误等。 
- 
日志记录 对每一次ETL操作进行日志记录,便于后续问题排查和审计。 
通过上述步骤,我们成功地将金蝶系统中的委外采购入库单数据转换为旺店通·企业奇门API接口所需的格式,并顺利写入目标平台。这不仅提高了系统间的数据一致性,还大大提升了业务流程的自动化程度。
