金蝶云星空与聚水潭系统对接集成案例分享:金蝶-采购退料-->聚水潭-采购退货
在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空的采购退料数据无缝衔接到聚水潭的采购退货模块。项目的关键步骤包括确保数据高效、准确地迁移与处理,并实时监控和应对潜在问题。
首先,针对金蝶云星空的数据获取,以executeBillQuery
接口为核心,通过定时任务可靠抓取所需数据。为了避免漏单,应增加分页逻辑并解决API限流的问题。这一步骤不仅保证了全量数据同步,还提升了整体系统稳定性。
其次,在进行大批量数据写入之前,需要处理两个系统间的数据格式差异。一旦转换完毕,利用聚水潭提供的/open/jushuitan/purchaseout/upload
API,将这些清洗后的数据信息高效注入至目的库。同时,为提高传输效率,可采用批次提交方式。
此外,我们部署了一套稳健的数据异常处理与错误重试机制。在任何阶段出现故障时,都能及时采取适当措施,例如自动重试或报警通知,以尽最大可能减少人工干预需求。此外,还有日志记录功能,对整个过程中每一个环节均作详细跟踪和审计,这样即便发生问题也能够迅速定位和解决。
总体来说,本案例展示了从复杂多源系统成功实现轻松集成的完整流程,同时有效管理不同类型业务操作中的挑战,从而保障供应链各环节信息的一致性和及时性。
调用金蝶云星空接口executeBillQuery获取并加工数据
在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将深入探讨如何通过调用金蝶云星空的executeBillQuery
接口来获取采购退料数据,并对其进行初步加工处理。
接口配置与调用
首先,我们需要配置并调用金蝶云星空的executeBillQuery
接口。该接口主要用于查询业务单据信息,通过POST请求方式发送查询条件,并返回符合条件的单据数据。
元数据配置如下:
{
"api": "executeBillQuery",
"effect": "QUERY",
"method": "POST",
"number": "FBillNo",
"id": "FPURMRBENTRY_FEntryID",
"name": "FBillNo",
"request": [
{"field":"FPURMRBENTRY_FEntryID","label":"明细信息ID","type":"string","describe":"明细信息ID","value":"FPURMRBENTRY_FEntryID"},
{"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态\n暂存:Z\n创建:A\n审核中:B\n已审核:C","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"退料组织","type":"string","describe":"退料组织","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"退料日期","type":"string","describe":"退料日期","value":"FDate"},
{"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":
"单据类型\n标准退料单:TLD01_SYS\n零散采购退料单:TLD02_SYS\n资产退回单:TLD03_SYS\n委外退料单:TLD04_SYS\n分销购销退料单:TLD05_SYS\nVMI退料单:TLD06_SYS\n现购退料单:TLD07_SYS\n直运退料单:TLD08_SYS",
"value": "FBillTypeID.FNumber"
},
// ...其他字段省略
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe":
"金蝶的查询分页参数",
"value": "{PAGINATION_PAGE_SIZE}"
},
{"field": "StartRow",
"label": "开始行索引",
"type": "int",
"describe":
"金蝶的查询分页参数",
value: "{PAGINATION_START_ROW}"
},
{"field":
FilterString,
label:
过滤条件,
type: string,
describe: 示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=,
value: FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'
},
// ...其他字段省略
],
buildModel: true,
autoFillResponse: true
}
请求参数解析
-
基本字段:
FPURMRBENTRY_FEntryID
: 明细信息ID。FID
: 实体主键。FBillNo
: 单据编号。FDocumentStatus
: 单据状态(暂存、创建、审核中、已审核)。FStockOrgId_FNumber
: 退料组织。FDate
: 退料日期。FBillTypeID_FNumber
: 单据类型(标准退料单、零散采购退料单等)。
-
其他请求参数:
Limit
: 最大行数,用于分页控制。StartRow
: 开始行索引,用于分页控制。FilterString
: 过滤条件,例如根据供应商编号和审核日期进行过滤。
数据获取与初步加工
通过上述配置,我们可以发送POST请求到金蝶云星空的executeBillQuery
接口,获取符合条件的采购退料数据。以下是一个示例请求:
{
FormId: 'PUR_MRB',
FieldKeys: 'FPURMRBENTRY_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID.FNumber',
FilterString: 'FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=\'2023-01-01\'',
Limit: '100',
StartRow: '0'
}
该请求将返回符合条件的采购退料数据,包括明细信息ID、实体主键、单据编号、单据状态、退料组织、退料日期和单据类型等字段。
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和写入。例如,可以对日期格式进行标准化处理,对金额字段进行单位转换等。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for entry in raw_data:
cleaned_entry = {
'entry_id': entry['FPURMRBENTRY_FEntryID'],
'bill_no': entry['FBillNo'],
'status': entry['FDocumentStatus'],
'org': entry['FStockOrgId.FNumber'],
'date': format_date(entry['FDate']),
'bill_type': entry['FBillTypeID.FNumber']
}
cleaned_data.append(cleaned_entry)
return cleaned_data
def format_date(date_str):
# 假设原始日期格式为 YYYYMMDD,转换为 YYYY-MM-DD
return f"{date_str[:4]}-{date_str[4:6]}-{date_str[6:]}"
通过上述步骤,我们完成了从调用金蝶云星空接口获取数据到初步清洗和转换的过程。这为后续的数据写入和进一步处理奠定了基础。
数据转换与写入:金蝶采购退料到聚水潭采购退货
在数据集成的生命周期中,将源平台的数据转换为目标平台可接收的格式是关键步骤之一。本文将详细探讨如何通过轻易云数据集成平台,将金蝶的采购退料数据转换为聚水潭API接口所能接收的格式,并最终写入聚水潭系统。
聚水潭API接口配置
根据提供的元数据配置,聚水潭API接口为/open/jushuitan/purchaseout/upload
,采用POST方法进行数据传输。以下是具体的配置细节:
- 请求字段:
is_confirm
:是否自动确认,默认值为false
。wms_co_id
:分仓编号,通过查找特定条件获取。supplier_id
:供应商编号,通过查找特定条件获取。external_id
:外部单号,使用金蝶中的FBillNo
字段。remark
:备注,同样使用金蝶中的FBillNo
字段。warehouse
:仓库编号,根据不同的仓库类型进行映射。po_id
:采购单号,通过查找特定条件获取。items
:商品集合,包括商品编码、数量和备注。
数据转换逻辑
-
字段映射:
- 将金蝶中的字段映射到聚水潭API所需的字段。例如,将金蝶的
FBillNo
映射到聚水潭的external_id
和remark
。 - 使用函数或查找表将复杂字段进行转换,例如仓库编号和供应商编号。
- 将金蝶中的字段映射到聚水潭API所需的字段。例如,将金蝶的
-
批量处理:
- 对于需要批量处理的数据,如商品集合,需要将多个商品条目整合到一个数组中,并进行必要的计算和汇总。例如,对数量字段进行求和操作。
-
动态计算:
- 使用平台提供的动态计算功能,对某些字段进行实时计算。例如,通过查找表获取分仓编号、供应商编号等。
实际案例解析
假设我们从金蝶系统中获取了一条采购退料单,包含以下信息:
- 单据编号(FBillNo):12345
- 仓库类型(warehouse_type):657fa97cc75fdf
- 商品明细:
- 商品编码(FMATERIALID_FNumber):A001
- 数量(FRMREALQTY):10
- 单价(FTAXPRICE):100
- 备注(FNOTE):无
根据上述信息,我们需要将其转换并写入到聚水潭系统。具体步骤如下:
-
准备请求头信息:
{ "is_confirm": "false", "wms_co_id": "_findCollection find FJSTID from a4574865-558b-3258-8fe8-ae7e5bfeb538 where FNumber={FSTOCKID_FNumber}", "supplier_id": "_findCollection find supplier_id from 28c9f45b-ce65-37f2-b5af-ee9ff8760e99 where supplier_code={FSupplierID_FNumber}", "external_id": "12345", "remark": "12345", "warehouse": "_function CASE '657fa97cc75fdf' WHEN '657fa97cc75fdf' THEN '1' WHEN '657fa9a0c75fe1' THEN '2' WHEN '657fa9b5c75fe3' THEN '3' WHEN '657fa9ccc75fe5' THEN '4' ELSE '' END", "po_id": "_findCollection find primaryWriteback.po_id from 7389e0ad-45f1-37e3-8887-5770febb696a where FBillNo={FSRCBillNo}" }
-
准备商品集合信息:
{ "items": [ { "sku_id": "A001", "qty": "10", "remark": "无" } ] }
-
组合完整请求体:
{ "is_confirm": "false", "wms_co_id": "_findCollection find FJSTID from a4574865-558b-3258-8fe8-ae7e5bfeb538 where FNumber={FSTOCKID_FNumber}", "supplier_id": "_findCollection find supplier_id from 28c9f45b-ce65-37f2-b5af-ee9ff8760e99 where supplier_code={FSupplierID_FNumber}", "external_id": "12345", "remark": "12345", "warehouse": "_function CASE '657fa97cc75fdf' WHEN '657fa97cc75fdf' THEN '1' WHEN '657fa9a0c75fe1' THEN '2' WHEN '657fa9b5c75fe3' THEN '3' WHEN '657fa9ccc75fe5' THEN '4' ELSE '' END", "po_id": "_findCollection find primaryWriteback.po_id from 7389e0ad-45f1-37e3-8887-5770febb696a where FBillNo={FSRCBillNo}", "items": [ { "sku_id": "A001", "qty": "10", "remark": "" } ] }
-
发送请求: 使用POST方法,将上述JSON数据发送至聚水潭API接口,实现数据写入。
通过以上步骤,我们成功地将金蝶系统中的采购退料数据转换并写入到聚水潭系统。这一过程充分利用了轻易云数据集成平台提供的元数据配置和动态计算功能,实现了高效、准确的数据集成。