金蝶云星辰V2数据ETL转换与写入案例分析

  • 轻易云集成顾问-谢楷斌
### 汤臣倍健营销云数据集成到金蝶云星辰V2案例分享:采购入库同步-厦门益天阁 在本次系统对接集成案例中,我们将重点讨论如何实现汤臣倍健营销云的采购入库数据,精准且高效地同步至金蝶云星辰V2。作为一个典型的数据集成应用场景,该方案名为“采购入库同步-厦门益天阁”,目标是通过轻易云平台配置,实现平稳高效的数据交互。 #### 技术要点概述 1. **API接口调用与处理**: - 从汤臣倍健营销云获取数据的API: `/erp/api/order/query/purInWarehsOrder` - 将数据写入到金蝶云星辰V2的API: `/jdy/v2/scm/pur_inbound` 此次任务中的核心挑战在于如何确保从汤臣倍健营销云实时抓取大量采购入库数据,并批量、高吞吐量地将这些数据可靠写入至金蝶云星辰V2。这一过程中需要特别注意两个关键方面: - **分页与限流问题管理**:由于大批量的数据频繁请求会触发限流机制,因此需要设计一个响应灵活的分页处理及重试机制,以保障稳定性。 - **格式差异和自定义转换逻辑**:两套系统之间存在着特定的数据结构差异,必须自行定义并实施适配性的转换规则,确保每条信息精准无误地映射。 #### 数据质量监控与异常检测 为了达成高标准执行效果,在整个过程中我们不仅依赖自动化工具,还借助了平台提供的全面实时监控和告警功能,对每个步骤中的状态和性能进行密切关注。具体策略包括: - 设置基于业务需求的数据质量监控指标 - 实时日志记录与异常捕捉 - 错误重试机制和定制化报警通知,以应对突发状况及时反应 以上技术措施,使得整体流程透明可追溯,同时及时发现并修正潜在问题,有力保证了每项任务都能按预期顺利进行。 --- 篇幅所限,此处仅简要论述主要技术考量。在后续部分,将详细展开各模块配置细节以及应急处理方案。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D31.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统汤臣倍健营销云接口获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统获取数据,并对其进行初步加工。本文将详细探讨如何通过调用汤臣倍健营销云接口`/erp/api/order/query/purInWarehsOrder`来实现这一目标。 #### 接口调用配置 首先,我们需要配置API调用的元数据。以下是关键配置项: - **API路径**: `/erp/api/order/query/purInWarehsOrder` - **请求方法**: `POST` - **请求参数**: - `tenantId`: 经销商ID,必填项,用于标识具体的经销商。 - `yxyNumber`: 营销云销售订单号,可选项,传此参数时其他时间状态等条件无效。 - `number`: 系统订单号,可选项,传此参数时其他时间状态等条件无效。 - `status`: 订单状态,默认值为`1`(已审核)。 - `beginTime`: 开始时间,格式为`YYYY-MM-DD`或`YYYY-MM-DD HH:MM:SS`,如果不传单号此字段必填。 - `endTime`: 结束时间,格式为`YYYY-MM-DD`或`YYYY-MM-DD HH:MM:SS`,如果不传单号此字段必填。 - `pageNo`: 页码,默认值为`1`。 - `pageSize`: 每页条数,默认值为`30`。 - `timeType`: 时间段标志,默认值为`1`(最后更新时间)。 #### 请求示例 以下是一个完整的请求示例: ```json { "tenantId": "08e2fd9d074f4ef7b5e6416b74d006d6", "status": "1", "beginTime": "{{LAST_SYNC_TIME|datetime}}", "endTime": "{{CURRENT_TIME|datetime}}", "pageNo": "1", "pageSize": "30", "timeType": "1" } ``` 在这个示例中,我们指定了经销商ID、订单状态、开始和结束时间、页码、每页条数以及时间段标志。 #### 数据清洗与过滤 在获取到原始数据后,需要对数据进行清洗和过滤。根据元数据配置中的条件,我们需要过滤掉物料编号包含"F.A"的记录。以下是一个简单的过滤逻辑示例: ```python def filter_data(data): filtered_data = [] for record in data: if 'itemList' in record: item_list = record['itemList'] if not any('F.A' in item['materialNumber'] for item in item_list): filtered_data.append(record) return filtered_data ``` 这个函数会遍历所有记录,并检查每个记录中的物料编号,如果物料编号不包含"F.A",则保留该记录。 #### 数据转换与写入 在完成数据清洗后,需要将数据转换为目标系统所需的格式,并写入目标系统。这一步通常涉及到字段映射和格式转换。以下是一个简单的转换示例: ```python def transform_data(data): transformed_data = [] for record in data: transformed_record = { 'order_id': record['id'], 'order_number': record['number'], 'order_status': record['status'], 'created_time': record['createTime'], 'updated_time': record['updateTime'] } transformed_data.append(transformed_record) return transformed_data ``` 这个函数将原始记录中的字段映射到目标系统所需的字段名称。 通过以上步骤,我们可以实现从汤臣倍健营销云接口获取并加工采购入库订单数据,为后续的数据集成奠定基础。在整个过程中,轻易云平台提供了全透明可视化的操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 采购入库同步至金蝶云星辰V2API接口的ETL转换技术案例 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台金蝶云星辰V2 API接口的要求,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。 #### API接口配置与元数据解析 我们主要关注的是`/jdy/v2/scm/pur_inbound`这个API接口。根据提供的元数据配置,以下是各字段及其对应的描述和处理逻辑: - **单据日期(bill_date)**:类型为字符串,描述为单据日期。通过模板引擎将`auditTime`格式化为日期字符串。 - **单据编码(bill_no)**:类型为字符串,描述为单据编码。 - **业务类型(transtype)**:类型为字符串,固定值为"2"。 - **供应商编码(supplier_id)**:类型为字符串,固定值为"1269830521173603328"。 - **备注(remark)**:类型为字符串,描述为商品编码。通过模板引擎拼接备注信息和营销云编号。 - **商品分录(material_entity)**:类型为数组,包含多个子字段,每个子字段对应商品的具体属性。 #### 商品分录字段解析 商品分录数组中的每个对象包含以下字段: - **商品编码(material_number)**:类型为字符串,通过模板引擎获取`materialNumber`。 - **仓库编码(stock_id)**:类型为字符串,固定值为"1277527712973493248"。 - **是否赠品(is_free)**:类型为整数,固定值为`false`。 - **数量(qty)**:类型为字符串,通过模板引擎获取`itemList.opernumber`。 - **单位(unit_id)**:类型为字符串,通过查找集合获取单位ID。 - **批次号(batch_no)**:类型为字符串,通过模板引擎获取`itemList._Flot`。 - **生产日期(kf_date)**:类型为字符串,通过模板引擎获取`itemList._Fmfg`。 - **保质期天数(kf_period)**:类型为字符串,固定值为"730"。 - **有效日期(valid_date)**:类型为字符串,通过模板引擎获取`itemList._Fexp`。 - **保质期类型(kf_type)**:类型为字符串,固定值为"1"。 - **含税单价(tax_price)**:类型为字符串,通过模板引擎获取`itemList.taxunitprice`。 - **税率(cess)**:类型为字符串,固定值为"13"。 - **价税合计(all_amount)**:类型为字符串,通过模板引擎获取`itemList.taxlastmoney`。 #### 数据转换与写入过程 1. **提取数据** - 从源系统提取原始数据,包括采购订单、商品信息等。 2. **数据清洗** - 对提取的数据进行清洗和预处理,如去除无效记录、格式化日期等。 3. **数据转换** - 利用元数据配置,将清洗后的数据转换成目标API所需的格式。例如,将采购订单中的商品信息映射到金蝶云星辰V2 API所需的字段中。 4. **构建请求体** - 根据元数据配置构建API请求体。通过模板引擎动态填充各个字段,如下所示: ```json { "bill_date": "{{auditTime|date}}", "bill_no": "{{orderNumber}}", "transtype": "2", "supplier_id": "1269830521173603328", "remark": "{{remark}}-来自营销云-{number}", "material_entity": [ { "material_number": "{{item.materialNumber}}", "stock_id": "1277527712973493248", "is_free": false, "qty": "{{item.opernumber}}", "unit_id": "_findCollection find base_unit_id from 72029be6-c558-39a7-8084-4b75796fcba1 where number={{item.materialNumber}}", "batch_no": "{{item._Flot}}", "kf_date": "{{item._Fmfg}}", "kf_period": "730", "valid_date": "{{item._Fexp}}", "kf_type": "1", "tax_price": "{{item.taxunitprice}}", "cess": "13", "all_amount": "{{item.taxlastmoney}}" } ] } ``` 5. **发送请求** - 使用HTTP POST方法将构建好的请求体发送到金蝶云星辰V2 API接口,实现数据写入。 6. **结果处理** - 接收并处理API响应,根据返回结果进行相应操作,如记录日志、更新状态等。 通过上述步骤,我们能够高效地将源平台的数据转换并写入到金蝶云星辰V2,实现不同系统间的数据无缝对接。这不仅提升了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)