金蝶云星空与新宝-产业链协同平台的生产订单(开工)-生产排程数据集成方案
在实际的系统对接和数据集成过程中,如何快速、准确地将金蝶云星空中的生产订单信息无缝对接到新宝-产业链协同平台,是一个技术挑战。本文将分享一种已成功运行的具体案例——利用executeBillQuery接口定时抓取金蝶云星空的数据,并通过/production/scheduling接口批量写入到新宝-产业链协同平台,实现从“开工”到“生产排程”的全流程对接。
首先,我们需要解决的是如何确保从金蝶云星空获取的数据不漏单,并能迅速反映至新宝-产业链协同平台。在这一过程中,执行定时可靠的接口调用尤为关键。我们采用了轻易云数据集成平台提供的高效API调度工具,以分钟级别周期性地调用executeBillQuery接口,从而保证及时抓取最新的生产订单信息。同时,为了解决分页和限流问题,每次调用时我们会根据返回的数据条目数动态调整下一页请求参数,并设置合理的重试机制来处理因网络波动或服务器响应慢导致的问题。
其次,对于大量数据快速写入到新宝-产业链协同平台,我们使用了高性能的数据传输通道,将批量化处理后的订单数据通过/production/scheduling API写入目标系统。在这个步骤中,我们特别关注了两点:一是如何进行有效的数据格式转化,包括字段名映射、类型转换以及必要的数据补充;二是如何实现异常处理与错误重试机制,以应对可能出现的各种意外情况。
对于这项任务,一个不可忽视的重要环节是日志记录及实时监控。借助轻易云提供的平台能力,我们能够实时追踪每个API请求及其响应状态,对任何未按预期完成的数据同步操作进行即时告警和分析。这不仅提高了整体效率,还极大降低了人工介入解决问题所耗费的人力成本。
总而言之,通过科学的方法论和强大的技术支持,实现金蝶云星空与新宝-产业链协同平台之间高效稳定的数据交换,不仅显著提升业务运作透明度,也为企业带来了巨大的运营优势。在后续内容中,我们将进一步剖析一些关键技术细节及优化策略,使读者更深入理解整个实现过程。
调用金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口来获取生产订单相关数据,并进行初步加工。
接口配置与请求参数
首先,我们需要配置元数据以便正确调用金蝶云星空的executeBillQuery
接口。以下是元数据配置的关键部分:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FBillNo",
"id": "FTreeEntity_FEntryId",
"pagination": {
"pageSize": 500
},
"idCheck": true,
"request": [
{"field":"FID","label":"实体主键","type":"string","value":"FID"},
{"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"},
{"field":"FTreeEntity_FEntryId","label":"FTreeEntity_FEntryId","type":"string","value":"FTreeEntity_FEntryId"},
{"field":"FTreeEntity_Fseq","label":"FTreeEntity_Fseq","type":"string","value":"FTreeEntity_Fseq"},
{"field":"FCREATORID","label":"创建人","type":"string","value":"FCREATORID.FName"},
{"field":"FAPPROVERID","label":"审核人","type":"string","value":"FAPPROVERID.FName"},
{"field":"FCREATEDATE","label":"创建日期","type":"string","value":"FCREATEDATE"},
{"field":"FMATERIALID_FName","label":"物料客户编码","type":"string","value":"FMATERIALID.FName"},
{"field":"FAPPROVEDATE","label":"审核日期","type":"string","value":"FAPPROVEDATE"},
{"field":"FMATERIALID_FDescription","label":"物料规格型号","type":"string","value":"FMATERIALID.FDescription"},
{"field":"FMATERIALID_F_GZHQ_Text_DXGG","label":"物料基础资料的电线规格","type":"","value":""},
{"field":"","label":"","type":"","value":""},
{"field":"","label":"","type":"","value":""},
{"field":"","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": "开始行索引",
"type": "",
""
}
]
}
请求参数详解
- api:
executeBillQuery
,表示调用的是金蝶云星空的查询接口。 - method:
POST
,使用POST方法提交请求。 - number:
FBillNo
,用于标识单据编号。 - id:
FTreeEntity_FEntryId
,用于标识分录主键。 - pagination: 配置分页信息,这里设置每页返回500条记录。
- idCheck: 设置为true,表示需要检查返回结果中的主键字段。
请求字段配置
在请求字段配置中,我们定义了需要从金蝶云星空获取的字段,包括但不限于:
FID
: 实体主键FBillNo
: 单据编号FTreeEntity_FEntryId
: 分录主键FCREATORID.FName
: 创建人名称FAPPROVERID.FName
: 审核人名称FCREATEDATE
: 创建日期FMATERIALID.FName
: 物料客户编码FAPPROVEDATE
: 审核日期
这些字段将帮助我们全面了解生产订单的详细信息。
其他请求参数
除了上述字段外,我们还需要配置一些额外的请求参数:
- Limit: 最大行数,用于控制每次查询返回的数据量。
- StartRow: 开始行索引,用于分页查询。
数据过滤与转换
为了确保我们只获取到需要的数据,可以在请求中添加过滤条件。例如,我们可以通过以下过滤条件仅获取状态为“开工”的生产订单:
{
"FilterString": "FStartDate>='{{LAST_SYNC_TIME|dateTime}}' and FStatus = 4 and FMATERIALID.F_GZHQ_CheckBox5 = 1"
}
该过滤条件表示只获取开始时间大于上次同步时间且状态为“开工”的订单。
数据清洗与写入
在获取到原始数据后,我们可以利用轻易云平台提供的数据清洗功能对数据进行初步处理,例如去除无效字段、格式化日期等。处理后的数据可以直接写入目标系统或数据库,以供后续使用。
通过上述步骤,我们实现了从金蝶云星空获取生产订单数据并进行初步加工,为后续的数据处理和分析打下了坚实基础。
ETL转换与数据写入新宝-产业链协同平台API接口
在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台新宝-产业链协同平台API接口所能够接收的格式,并最终写入目标平台。以下是具体的技术实现过程。
1. 数据抽取(Extract)
首先,从源系统中抽取需要的数据。此步骤通常涉及到对源系统数据库的查询操作。在本案例中,我们假设已经通过轻易云数据集成平台完成了数据请求与清洗阶段,获得了如下原始数据:
{
"F_GZHQ_Text_KHDDH": "PO123456",
"FMATERIALID_FNumber": "MAT001",
"FBillNo": "WO123456",
"FTreeEntity_Fseq": "001",
"FStartDate": "2023-10-01",
"FMATERIALID_FName": "Material A",
"FMATERIALID_FDescription": "Description A",
"FMATERIALID_F_GZHQ_Text_DXGG": "Spec A",
"FQty": 100,
"FPlanStartDate": "2023-10-05",
"FPlanFinishDate": "2023-10-10",
"FFinishDate": null,
"FWorkShopID_FName": "Line A",
"FCREATORID": "UserA",
"FMemoItem": ""
}
2. 数据转换(Transform)
根据元数据配置,将抽取的数据进行相应的字段映射和格式转换。以下是具体的字段映射规则:
{
"poRowId": "_findCollection find F_GZHQ_Text from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH={F_GZHQ_Text_KHDDH} FMaterialId_Fnumber={FMATERIALID_FNumber}",
...
// 以下省略其他字段映射规则
}
根据上述元数据配置,我们将原始数据转换为目标平台所需的数据格式:
{
"data": {
"poRowId": "_findCollection find F_GZHQ_Text from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH=PO123456 FMaterialId_Fnumber=MAT001",
...
// 以下省略其他字段转换结果
// 示例:生产工单号、采购订单号、物料编码等字段
// 转换后的结果将按目标API接口要求的格式生成
}
}
3. 数据加载(Load)
最后,将转换后的数据通过API接口写入到新宝-产业链协同平台。根据元数据配置,使用POST方法发送请求:
{
api: "/production/scheduling",
method: POST,
idCheck: true,
sdk: "\\Adapter\\Donlim\\SDK\\DonlimSDK"
}
使用轻易云提供的SDK \\Adapter\\Donlim\\SDK\\DonlimSDK
,我们可以编写如下代码来实现数据加载:
import requests
# 定义API URL和Headers
api_url = 'https://api.xinbao.com/production/scheduling'
headers = {'Content-Type': 'application/json'}
# 准备请求体
payload = {
'data': {
'poRowId': '_findCollection find F_GZHQ_Text from ...',
'poRowNo': '_findCollection find F_GZHQ_Text1 from ...',
'productionNo': 'WO123456-001',
'poNo': 'PO123456',
'openStatus': '',
'openDate': '2023-10-01',
'materialNo': 'Material A',
'materialName': 'Description A',
'materialSpecification': 'Spec A',
'materialNum': 100,
'planStartTime': '2023-10-05',
'planEndTime': '2023-10-10',
'realStartTime': '',
'realEndTime': '',
'lineTeam': 'Line A',
'createBy': 'UserA',
# 以下省略其他字段...
}
}
# 发起POST请求
response = requests.post(api_url, headers=headers, json=payload)
# 检查响应状态码和错误信息
if response.status_code == 200:
print('Data loaded successfully.')
else:
error_msg = response.json().get('msg', '')
print(f'Error loading data: {error_msg}')
以上代码实现了从源系统抽取数据、进行ETL转换,并通过API接口将转换后的数据加载到新宝-产业链协同平台。
总结
在这一过程中,通过轻易云的数据集成平台,我们能够高效地完成从源系统到目标系统的数据ETL转换和加载工作。利用全透明可视化操作界面和实时监控功能,确保每个环节都清晰易懂,并极大提升业务透明度和效率。