金蝶云星空数据集成到聚水潭的技术实现:组装单(父项) => 其他入库单案例分析
在现代企业的数据处理和资源管理环节中,实现多个系统之间的数据快速、准确传递已成为关键任务。本技术案例将详细介绍如何通过轻易云数据集成平台,将金蝶云星空中的组装单(父项)数据无缝对接至聚水潭中的其他入库单,以确保业务操作的高效进行。
背景介绍与需求分析
在日常运营过程中,企业需要频繁地将ERP系统(金蝶云星空)的制造或生产相关数据传输到仓储物流管理平台(聚水潭)。这一过程不仅要求高吞吐量的数据写入能力,还需配合定时可靠的抓取策略,以保证每一条业务记录都能及时同步。
金蝶云星空提供了丰富的API接口,例如executeBillQuery
,用于批量获取组装单据。而这些数据在转化为符合聚水潭接受标准之前,需要经过精细化处理。使用可视化的操作界面,我们可以自定义转换逻辑来适应特定业务需求,并实时监控整个流程以保障集成质量。
数据流设计与接口调用
-
基础架构:
- 金蝶云星空:作为源系统,通过
executeBillQuery
获取组装单(父项)数据。 - 轻易云平台:负责整合并清洗从金蝶获取的数据,同时定制转换逻辑以满足目标格式要求。
- 聚水潭:目标系统,通过 API
/open/jushuitan/otherinout/upload
接收并存储转换后的其他入库单信息。
- 金蝶云星空:作为源系统,通过
-
步骤概要:
- 使用
executeBillQuery
接口从金蝶云提取所需的组装订单。 - 在轻易云中配置元数据映射及自定义转化规则,包括分页和限流策略,确保大批量数据能够平稳传输。
- 将整理好的集中性数据显示于实时监控板上,一旦发现异常情况,立即触发告警机制进行重试处理。
- 最终调动
/open/jushuitan/otherinout/upload
API 批量上传变换后的订单信息至聚水潭,实现即时库存更新及相应操作记录。
- 使用
通过上述步骤,每个环节都能做到透明且可追溯,提高了整体工作效率和安全性。在下面详述具体方案前,我们会进一步探讨各个技术点以及可能遇到的问题和解决办法。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取并加工数据。
接口配置与请求参数
首先,我们需要配置调用金蝶云星空接口的元数据。以下是具体的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"},
{"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"},
{"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"},
{"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"},
{"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"},
{"field":"FEE","label":"费用","type":"string","value":"FEE"},
{"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"},
{"field":"FNote","label":"备注","type": "string", "value": "FNote"}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"},
{"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"},
{"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": ""},
{"field": "FilterString",
"label": "",
"type": "",
"describe":"","value":
"FAFFAIRTYPE = 'Assembly' and FDocumentStatus='C' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"
},
{"field": "",
"label":"","type":"","describe":"",
"value":
"STK_AssembledApp"
}
]
}
请求参数解析
- api:
executeBillQuery
,表示调用金蝶云星空的查询接口。 - method:
POST
,HTTP请求方法。 - number:
FBillNo
,表示单据编号字段。 - id:
FEntity_FEntryID
,表示实体主键字段。 - pagination: 配置分页信息,这里设置每页500条记录。
- idCheck: 设置为
true
,表示需要进行ID检查。
请求字段
元数据中的request
字段定义了需要从金蝶云星空获取的数据字段,包括但不限于:
FID
: 实体主键FBillNo
: 单据编号FDocumentStatus
: 单据状态FStockOrgId_FNumber
: 库存组织FDate
: 日期FBillTypeID
: 单据类型FOwnerTypeIdHead
: 成品货主类型FOwnerIdHead_FNumber
: 成品货主FAffairType
: 事务类型FEE
: 费用FDeptID_FNumber
: 部门FNote
: 备注
其他请求参数
元数据中的otherRequest
字段定义了其他必要的请求参数:
- Limit: 最大行数,用于分页控制。
- StartRow: 开始行索引,用于分页控制。
- TopRowCount: 返回总行数。
- FilterString: 用于过滤条件,这里示例为:事务类型为“Assembly”,单据状态为“C”,审核日期大于等于上次同步时间。
数据处理与清洗
在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据写入操作。以下是一些常见的数据处理步骤:
-
字段映射与转换:根据业务需求,将原始数据字段映射到目标系统所需的字段,并进行必要的数据格式转换。例如,将日期格式从YYYY-MM-DD转换为目标系统所需的格式。
-
数据过滤与校验:根据业务规则,对获取的数据进行过滤和校验。例如,只保留审核通过且未作废的单据。
-
异常处理与日志记录:对于在数据处理过程中出现的异常情况,需要进行捕获和处理,并记录日志以便后续排查。
示例代码
以下是一个示例代码片段,用于展示如何通过轻易云平台调用金蝶云星空接口并处理返回的数据:
import requests
# 定义API URL和请求头信息
api_url = 'https://api.kingdee.com/executeBillQuery'
headers = {
'Content-Type': 'application/json',
}
# 定义请求体(根据元数据配置)
payload = {
'FormId': 'STK_AssembledApp',
'FieldKeys': 'FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate,FBillTypeID,FOwnerTypeIdHead,FOwnerIdHead.FNumber,FAffairType,FEE,FDeptID.FNumber,FNote',
'FilterString': f"FAFFAIRTYPE = 'Assembly' and FDocumentStatus='C' and FApproveDate>='{last_sync_time}'",
'Limit': pagination['pageSize'],
'StartRow': start_row,
}
# 发起POST请求获取数据
response = requests.post(api_url, headers=headers, json=payload)
data = response.json()
# 数据处理与清洗(示例)
processed_data = []
for record in data:
processed_record = {
'entity_id': record['FID'],
'bill_no': record['FBillNo'],
# ...其他字段映射与转换...
'note': record['FNote'],
# ...更多处理逻辑...
}
processed_data.append(processed_record)
# 输出或保存处理后的数据
print(processed_data)
通过上述步骤,我们可以高效地调用金蝶云星空接口获取所需的数据,并对其进行清洗和加工,为后续的数据写入操作做好准备。这一步骤不仅确保了数据的一致性和准确性,还为整个集成流程奠定了坚实基础。
使用轻易云数据集成平台将金蝶组装单数据转换并写入聚水潭API接口
在数据集成的过程中,第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并转为目标平台所能够接收的格式。本文将详细探讨如何通过轻易云数据集成平台,将金蝶组装单(父项)的数据转换为聚水潭其他入库单的数据格式,并最终写入聚水潭系统。
API接口配置
首先,我们需要了解目标平台聚水潭的API接口配置。根据提供的元数据配置,我们使用/open/jushuitan/otherinout/upload
API接口,通过POST方法将处理后的数据发送到聚水潭。
{
"api": "/open/jushuitan/otherinout/upload",
"effect": "EXECUTE",
"method": "POST",
"idCheck": true,
"request": [
{"field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "_function IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )"},
{"field": "excute_confirming", "label": "是否审核单据", "type": "string", "value":"false"},
{"field": "wms_co_id", "label": "仓库编号", "type": "int", "value":"{F_POKM_JSTSTOCKNUMBER}"},
{"field": "type", "label": "出入库类型", "type":"string", "value":"in"},
{"field": "external_id", "label": "外部单号", "type":"string", "value":"F{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}"},
{"field": "remark", "label":"备注","type":"string","value":"金蝶组装单单据推送,单号:{FBillNo}"},
{"field":"items","label":"items","type":"array","value":"list","children":[
{"field":"sku_id","label":"商品编码","type":"string","value":"{{list.FMaterialID_FNumber}}"},
{"field":"qty","label":"入库数量","type":"string","value":"{{list.FQty}}"}
]},
{"field":"lc_id","label":"物流公司编码","type":"string"},
{"field":"l_id","label":"物流单号","type":"string"},
{"field":"logistics_company","label":"物流公司名称","type":"string"},
{"field":"drp_co_name","label":"出库类型","type":"string","value":"成品组装入库"},
{"field":"warehouse","label":"分仓","type":"string","value":"{F_POKM_JSTSTOCKNUMBER2}"}
],
...
}
数据字段映射和转换
在ETL过程中,关键步骤是将源平台(金蝶)的字段映射到目标平台(聚水潭)的字段,并进行必要的数据转换。以下是一些重要字段的映射和转换逻辑:
-
是否确认单据 (
is_confirm
)- 使用条件判断函数
_function IF({F_POKM_JSTSTOCKNUMBER} = 10816570 , 1 , 0 )
来确定是否确认单据。
- 使用条件判断函数
-
仓库编号 (
wms_co_id
)- 从金蝶字段
{F_POKM_JSTSTOCKNUMBER}
提取仓库编号。
- 从金蝶字段
-
外部单号 (
external_id
)- 拼接多个金蝶字段
F{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}
来生成外部单号。
- 拼接多个金蝶字段
-
备注 (
remark
)- 使用固定字符串模板
金蝶组装单单据推送,单号:{FBillNo}
。
- 使用固定字符串模板
-
商品明细 (
items
)- 将每个商品的编码和数量分别映射到
sku_id
和qty
字段:{ ... { "field": "sku_id", ... }, { ... }, { ... }
- 将每个商品的编码和数量分别映射到
-
出库类型 (
drp_co_name
)- 固定值为
成品组装入库
。
- 固定值为
-
分仓 (
warehouse
)- 从金蝶字段
{F_POKM_JSTSTOCKNUMBER2}
提取分仓信息。
- 从金蝶字段
数据处理与写入
在完成上述字段映射和转换后,我们可以通过轻易云平台的全异步处理机制,将处理后的数据发送到聚水潭API接口。确保每个步骤都经过实时监控,以保证数据流动和处理状态的透明度和准确性。
{
...
{
...
{
...
}
}
通过这种方式,我们实现了从金蝶到聚水潭的数据无缝对接,确保了业务流程的高效运作。