金蝶生产入库单与旺店通其他入库单的数据集成实践
在企业管理系统的对接过程中,数据的及时、准确传输至关重要。本文将分享一个典型的应用场景:如何利用轻易云数据集成平台,实现金蝶云星空系统中的生产入库单同步到旺店通·企业奇门作为其他入库单。这一过程主要通过调用两个核心API接口来完成,即从金蝶云星空获取数据的executeBillQuery API和向旺店通·企业奇门写入数据的wdt.stockin.order.push API。
为了确保大量数据能够无缝、高效地从金蝶云星空转移到旺店通,我们采用了以下几项关键技术措施:
-
高吞吐量的数据写入能力:我们配置了支持高吞吐量的数据传输渠道,以快速处理和集成大批量的生产入库单信息,保障业务时效性。
-
集中监控与告警系统:实时跟踪整个数据集成任务的状态和性能,通过集中式监控界面,可以有效发现并处理任何潜在的问题。
-
自定义的数据转换逻辑:由于金蝶云星空和旺店通·企业奇门之间存在不同的数据结构,我们设计了一套灵活可变的数据转换规则,以确保两者间的数据顺利对接且无误差。
-
分页抓取与限流机制:针对executeBillQuery接口中可能存在的大量分页请求及限流情况,我们制定了定时可靠的抓取策略,并实现错误重试机制以保证每条记录都能被完整获取,不遗漏任何一张订单。
-
异常检测与质量控制:在整个集成流程中内置了严格的数据质量监测机制,自动检测并报警任何不符合预期或丢失的问题,为后续问题排查提供详尽日志记录,从而保持整体工作流程的不间断性与稳定性。
下一部分我们将详细介绍具体实施步骤,包括如何调用上述API接口,以及处理细节如分页、格式转换等方面内容。希望这些技术要点能为您了解复杂系统间高效、安全地进行实时数据交互提供有力参考。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,以获取生产入库单数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置元数据以调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FEntity_FEntryID",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FEntity_FEntryID","label":"id","type":"string","value":"FEntity_FEntryID"},
{"field":"FMoEntrySeq","label":"FMoEntrySeq","type":"string","value":"FMoEntrySeq"},
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FStockOrgId_FNumber","label":"收料组织","type":"string","value":"FStockOrgId.FNumber"},
{"field":"FMoBillNo","label":"生产订单编号","type":"string","value":"FMoBillNo"},
{"field":"FMaterialId_FNumber","label":"物料编码","type":"string","value":"FMaterialId.FNumber"},
{"field":"FMaterialId_FName","label":"物料名称","type":"string","value":"FMaterialId.FName"},
{"field":"FRealQty","label":"实收数量","type":"string","value":"FRealQty"},
{"field":"FDate","label":"日期","type":"string","value":"FDate"},
{"field":"FStockId_FNumber","label":"仓库编码","type":"string","value":"FStockId.FNumber"},
{"field":"FStockId_Fname","label":"","type":"","value":""},
{"field":"","label":"","type":"","value":""},
{"field":"","label":"","type":"","value":""},
{"field":"","label":"","type":"","value":""}
],
"otherRequest":[
{
"field": "Limit",
"label": "最大行数",
"type": "string",
"describe": "金蝶的查询分页参数",
"value": "{PAGINATION_PAGE_SIZE}"
},
{
"field": "StartRow",
"label": "",
""
请求参数说明
-
API和方法:
api
:executeBillQuery
method
:POST
-
分页配置:
pagination.pageSize
: 每次请求返回的数据条数,设置为500。
-
请求字段:
FBillNo
: 单据编号FID
: 实体主键FEntity_FEntryID
: 分录主键ID其他字段
: 包括物料编码、物料名称、实收数量、日期等。
-
其他请求参数:
Limit
: 最大行数,值为分页大小。StartRow
: 开始行索引。FilterString
: 数据过滤条件,例如根据时间范围和特定条件过滤数据。FieldKeys
: 查询字段集合。
数据请求与清洗
在实际操作中,我们需要构建一个HTTP POST请求,发送到金蝶云星空的API端点。以下是一个示例请求体:
{
"FormId": "PRD_INSTOCK",
"FieldKeys": ["FBillNo", ...],
...
}
通过这个请求,我们可以获取到生产入库单的数据。接下来,我们需要对返回的数据进行清洗和加工,以便后续的数据转换和写入步骤。
数据清洗与加工
在数据清洗过程中,我们需要确保数据的完整性和一致性。例如:
- 字段映射:将返回的数据字段映射到目标系统所需的字段。
- 数据格式转换:将日期、数字等字段转换为目标系统所需的格式。
- 去重与验证:检查并去除重复的数据记录,同时验证关键字段是否存在缺失或错误。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for record in raw_data:
cleaned_record = {
'bill_no': record['FBillNo'],
'material_code': record['FMaterialId_FNumber'],
'quantity': float(record['FRealQty']),
'date': parse_date(record['FDate']),
...
}
cleaned_data.append(cleaned_record)
return cleaned_data
通过上述步骤,我们可以确保从金蝶云星空获取的数据在格式和内容上符合目标系统的要求,为后续的数据转换与写入打下坚实基础。
总结起来,通过轻易云数据集成平台调用金蝶云星空接口executeBillQuery
,我们能够高效地获取并清洗生产入库单数据,为实现不同系统间的数据无缝对接提供了有力支持。
使用轻易云数据集成平台将金蝶生产入库单转换并写入旺店通·企业奇门API接口
在数据集成的生命周期中,第二步是关键的ETL(Extract, Transform, Load)转换过程。本文将详细探讨如何使用轻易云数据集成平台,将金蝶生产入库单的数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。
数据请求与清洗
在数据请求与清洗阶段,我们已经从金蝶系统获取了生产入库单的原始数据。接下来,我们需要对这些数据进行ETL处理,以符合旺店通·企业奇门API接口的要求。
数据转换与写入
-
配置API接口
我们首先需要配置目标平台的API接口信息。根据元数据配置,目标API为
wdt.stockin.order.push
,请求方法为POST
。以下是具体的配置细节:{ "api": "wdt.stockin.order.push", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "details", "bodySum": ["FRealQty"], "header": ["FBillNo", "FStockId", "FLot", "FPrdOrgId_Fnumber"], "body": ["FMaterialId_FNumber", "FRealQty", "FLot", "FMemo", "FPrdOrgId_Fnumber"] } }
-
字段映射
接下来,我们需要将金蝶系统中的字段映射到旺店通·企业奇门API所需的字段。这包括头部信息和货品明细节点:
-
头部信息
[ {"field":"outer_no","label":"接口外部单号","type":"string","value":"{FBillNo}"}, {"field":"warehouse_no","label":"仓库编号","type":"string","value":"{FStockId}"}, {"field":"post_fee","label":"邮资","type":"string","value":"0"}, {"field":"other_fee","label":"其他费用","type":"string","value":"0"} ]
-
货品明细节点
[ {"field":"spec_no","label":"商家编码","type":"string","value":"{FMaterialId_FNumber}"}, {"field":"stockin_num","label":"入库数量","type":"string","value":"{FRealQty}"}, {"field":"position_no","label":"货位编号","type":"string"}, {"field":"batch_no","label":"批次","type":"string","value":"{FLot}"}, {"field":"remark","label":"备注","type":"string","value":"{FMemo}"} ]
-
-
特殊字段处理
对于某些特殊字段,我们需要进行特定的处理。例如,
reason
字段根据FPrdOrgId_Fnumber
的值来确定不同的入库原因:{ "field": "reason", "label": "入库原因", "type": "string", "value": "_function case '{FPrdOrgId_Fnumber}' when '101' then '百媚一厂生产入库' else '百媚二厂生产入库' end" }
-
其他固定参数
- 是否审核:默认值为1
- 是否创建批次:默认值为1
[ {"field": "is_check", "label": "是否审核", "type": "string", "value": 1}, {"field": "is_create_batch", "label": "是否创建批次", "type": 1} ]
-
组合最终请求体
最终,我们将所有字段组合成一个完整的请求体,用于向旺店通·企业奇门API发送请求:
{ "outer_no": "{FBillNo}", "warehouse_no": "{FStockId}", ... // 其他头部信息 ... // 货品明细节点 ... // 特殊字段和固定参数 ... }
实际应用案例
假设我们从金蝶系统中获取到如下生产入库单数据:
{
FBillNo: '12345',
FStockId: 'WH001',
FLot: 'LOT20231001',
FPrdOrgId_Fnumber: '101',
details: [
{
FMaterialId_FNumber: 'SKU001',
FRealQty: 100,
FLot: 'LOT20231001',
FMemo: '备注信息'
},
...
]
}
经过上述ETL转换后,最终生成的请求体如下:
{
outer_no: '12345',
warehouse_no: 'WH001',
post_fee: 0,
other_fee: 0,
goods_list: [
{
spec_no: 'SKU001',
stockin_num: 100,
batch_no: 'LOT20231001',
remark: '备注信息'
},
...
],
reason: '百媚一厂生产入库',
is_check: 1,
is_create_batch: 1
}
该请求体通过轻易云平台发送至旺店通·企业奇门API,实现了数据从金蝶系统到目标平台的无缝对接。
通过以上步骤,我们成功完成了从金蝶生产入库单到旺店通·企业奇门API接口的数据转换与写入。这一过程展示了轻易云数据集成平台在处理异构系统间数据集成时的强大功能和灵活性。