新宝协同平台数据集成方案:从金蝶云星空到API实现

  • 轻易云集成顾问-蔡威
### 金蝶云星空与新宝-产业链协同平台生产订单数据集成方案分享 在本文中,我们将详细探讨如何利用轻易云数据集成平台,实现金蝶云星空的生产订单数据高效对接到新宝-产业链协同平台。通过配置元数据和API接口,确保从金蝶云星空系统获取准确、实时的生产排程,并安全可靠地写入至新宝-产业链协同平台。 为实现这一目标,我们采用了以下关键技术步骤: 1. **调用金蝶云星空接口executeBillQuery**:我们首先需要通过该API精准抓取并分页处理完成状态的生产订单数据。在这个过程中,确保处理接口的限流问题,使得批量数据能够顺利进入下游流程。 2. **自定义的数据转换逻辑**:由于两大系统之间的数据格式存在差异,必须针对性地调整字段映射关系及业务逻辑,以满足特定需求。这一步不仅保证了数据信息不丢失,还能最大程度上保持原始语义的准确传递。 3. **大量数据快速写入到新宝-产业链协同平台**:借助/production/scheduling API,在短时间内实现大规模生产排程记录的无缝导入。为了提升时效性,结合使用高吞吐量写入功能,可以显著减少网络延迟和资源消耗。 4. **集中监控和告警系统**:整个任务执行过程中的性能监控是不可或缺的一环,通过搭建集中化监控机制,对每次操作进行实时跟踪,包括日志记录、异常检测与及时告警等,为高质且稳定的数据连接保驾护航。 5. **可靠性与容错机制设计**:面对可能出现的数据对接失败情况,引入错误重试机制以及完善的新宝-产业链协同平台定制化映射方式,这种多层次保障措施有效提高了整体解决方案的健壮性和连续运作能力。 以上内容将为您全面展示如何充分利用现有工具及其优势,高效达成复杂系统间的数据交互与合作。更多具体实现细节,请继续阅读后续章节内容。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统中获取数据,并对其进行初步加工。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来实现这一过程。 #### 接口配置与调用 首先,我们需要配置并调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FTreeEntity_FEntryId", "pagination": { "pageSize": 500 }, "idCheck": true, "condition_bk": [ [ { "field": "FMATERIALID_FNumber", "logic": "egt", "value": "P" } ] ], ... } ``` - **API**: `executeBillQuery` - **Method**: `POST` - **Pagination**: 每页500条记录 - **Condition**: 根据物料编码过滤(示例中为大于等于"P") #### 请求参数设置 为了获取所需的数据,我们需要设置请求参数。以下是主要的请求字段及其含义: ```json { "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":"string","value":"FMATERIALID.F_GZHQ_Text_DXGG"}, {"field":"FWorkShopID_FName","label":"生产车间","type":"","value":""}, ... ], ... } ``` 这些字段涵盖了生产订单所需的各类信息,包括单据编号、创建人、审核人、物料编码及描述等。 #### 分页与过滤条件 为了确保数据查询的效率和准确性,我们还需要设置分页和过滤条件: ```json { "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "", value: "{PAGINATION_START_ROW}"}, {"field": ...}, ... ] } ``` 分页参数确保每次查询不会超出系统负载,而过滤条件则根据业务需求进行设定,例如: ```json { ... { field: 'FilterString', label: '过滤条件', type: 'string', describe: '示例写法 FSupplierId.FNumber = \'VEN00010\' and FApproveDate>=', value: 'FFinishDate>=\'{{LAST_SYNC_TIME|dateTime}}\' and FStatus = 5 and FMATERIALID.F_GZHQ_CheckBox5 = 1' } } ``` 此处,`FilterString`用于指定查询条件,例如只获取状态为5(完工)的订单。 #### 数据处理与清洗 在获取到原始数据后,需要对其进行初步清洗和加工。例如,转换日期格式、处理空值或异常值等。这一步骤可以通过轻易云平台提供的数据处理工具来实现。 #### 示例代码 以下是一个简化的示例代码,用于调用接口并处理返回的数据: ```python import requests import json url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { # 填入上文提到的请求参数 } response = requests.post(url, headers=headers, data=json.dumps(payload)) data = response.json() # 数据清洗与加工 processed_data = [] for record in data['Result']: processed_record = { '单据编号': record['FBillNo'], '创建人': record['FCREATORID'], # 更多字段... } processed_data.append(processed_record) # 输出或进一步处理 print(processed_data) ``` 通过以上步骤,我们可以成功地从金蝶云星空系统中获取生产订单数据,并对其进行初步加工,为后续的数据转换与写入阶段打下基础。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S19.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换至新宝-产业链协同平台API接口的技术案例 在轻易云数据集成平台中,数据处理的第二阶段是将已集成的源平台数据进行ETL(提取、转换、加载)转换,并写入目标平台。在本案例中,我们将重点探讨如何将生产订单和生产排程的数据转换为新宝-产业链协同平台API接口所能接收的格式,并最终写入目标平台。 #### API接口配置 根据提供的元数据配置,我们需要通过POST方法将数据发送到`/production/scheduling`接口。以下是具体的API配置参数及其对应的字段说明: ```json { "api": "/production/scheduling", "method": "POST", "idCheck": true, "sdk": "\\Adapter\\Donlim\\SDK\\DonlimSDK", "errorMsgKey": "msg", "request": [ { "label": "data", "field": "data", "type": "object", "children": [ {"field": "poRowId", "label": "采购订单行ID", "type": "string", "describe": "采购订单行ID", "value": "_findCollection find F_GZHQ_Text from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH={F_GZHQ_Text_KHDDH} FMaterialId_Fnumber={FMATERIALID_FNumber}"}, {"field": "poRowNo", "label": "采购订单行号", "type": "string", "describe": "采购订单行号", "value":"_findCollection find F_GZHQ_Text1 from 15e09f02-b866-307a-82c2-b5ea50a5e045 where F_GZHQ_Text_KHDDH={F_GZHQ_Text_KHDDH} FMaterialId_Fnumber={FMATERIALID_FNumber}"}, {"field":"productionNo","label":"生产工单号","type":"string","describe":"生产工单号","value":"{FBillNo}-{FTreeEntity_Fseq}"}, {"field":"poNo","label":"采购订单号","type":"string","describe":"采购订单号","value":"{F_GZHQ_Text_KHDDH}"}, {"field":"openStatus","label":"工单状态","type":"string","describe":"工单状态","value":"1"}, {"field":"openDate","label":"开单时间","type":"string","describe":"开单时间","value":"{FStartDate}"}, {"field":"materialNo","label":"物料编码-供应商侧","type":"string","describe":"物料编码-供应商侧","value":"{FMATERIALID_FName}"}, {"field":"materialName","label":"物料名称-供应商侧","type":"string","describe":"物料名称-供应商侧","value":"{FMATERIALID_FDescription}"}, {"field":"materialSpecification","label":"规格型号","type":"string","describe":"规格型号","value":"{FMATERIALID_F_GZHQ_Text_DXGG}"}, {"field":"materialNum","label":"物料数量","type":"string","describe":"物料数量","value":"{FQty}"}, {"field":"planStartTime","label":"计划开工日期","type":"string","describe":"计划开工日期","value":"{FPlanStartDate}"}, {"field":"planEndTime","label":"计划完工日期","type":"string","describe":"","value":{"FPlanFinishDate}}, {"field":{"realStartTime,"label":{"实际开工日期,"type":{"string,"describe":"","value":{"FStartDate}}, {"field":{"realEndTime,"label":{"实际完工日期,"type":{"string,"describe":"","value":{"FFinishDate}}, {"field":{"lineTeam,"label":{"产线/班组,"type":{"string,"describe":"","value":{"FWorkShopID_FName}}, {"field":{"createBy,"label":{"创建人,"type":{"string,"describe":"","value":{"FCREATORID}}, {"field":{"remark,"label":{"备注,"type":{"string,"describe":"","value":{"FMemoItem}}, {"field":{"bakOne,"label":{"备用字段1,"type{"string"}}, {"field":{"bakTwo,"label{"备用字段2,type{"string"}}, {"field{"bakThree,label{"备用字段3,type{"string"}}, {{"bakFour,label{"备用字段4,type{"string"}} ] } ] } ``` #### 数据提取与转换 在进行数据提取与转换时,需要特别注意以下几个关键字段及其对应关系: 1. **采购订单行ID(poRowId)**:通过查找集合`15e09f02-b866-307a-82c2-b5ea50a5e045`中的`F_GZHQ_Text`字段,并根据客户订单号和物料编号匹配。 2. **采购订单行号(poRowNo)**:同样通过查找集合`15e09f02-b866-307a-82c2-b5ea50a5e045`中的`F_GZHQ_Text1`字段匹配。 3. **生产工单号(productionNo)**:由生产单据编号和树形实体序列组合而成。 4. **采购订单号(poNo)**:直接使用客户订单号。 5. **其他字段**:如开单时间、物料编码、物料名称等,均从源系统中直接提取并转换为目标系统所需格式。 #### 数据写入 在完成数据提取与转换后,通过调用新宝-产业链协同平台的API接口,将处理后的数据写入目标系统。具体实现步骤如下: 1. 构建请求体,将所有需要的数据按照元数据配置中的字段要求填充到请求体中。 2. 使用HTTP POST方法,将请求体发送到指定的API接口地址。 3. 检查返回结果,根据返回结果中的`msg`键值判断操作是否成功。 以下是一个示例代码片段,用于发送HTTP请求: ```python import requests import json url = 'https://example.com/production/scheduling' headers = {'Content-Type': 'application/json'} data = { 'data': { 'poRowId': 'example_poRowId', 'poRowNo': 'example_poRowNo', 'productionNo': 'example_productionNo', 'poNo': 'example_poNo', 'openStatus': '1', 'openDate': '2023-10-01', 'materialNo': 'example_materialNo', 'materialName': 'example_materialName', 'materialSpecification': 'example_materialSpecification', 'materialNum': '100', 'planStartTime': '2023-10-05', 'planEndTime': '2023-10-10', 'realStartTime': '2023-10-06', 'realEndTime': '2023-10-09', 'lineTeam': 'example_lineTeam', 'createBy': 'user123', 'remark': '', } } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print('Data successfully written to the target platform.') else: print(f'Error: {response.json().get("msg")}') ``` 以上代码片段展示了如何构建并发送HTTP POST请求,将处理后的生产排程数据写入新宝-产业链协同平台。 #### 总结 通过轻易云数据集成平台,我们能够高效地完成从源系统到目标系统的数据ETL转换。本文详细介绍了如何根据元数据配置,将生产订单和生产排程的数据转换为新宝-产业链协同平台所需的格式,并通过API接口实现数据写入。这一过程不仅提高了数据处理的透明度和效率,也确保了不同系统之间的数据无缝对接。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)