吉客云数据集成到金蝶云星空: 组装拆卸入库对接107v2其他入库
在系统集成项目中,确保不同平台之间的数据无缝对接是成功的关键之一。这次我们将分享一个实际运行的案例:如何通过轻易云数据集成平台,实现吉客云与金蝶云星空之间的高效数据联动,特别是针对组装拆卸入库场景。本文将重点探讨在这个过程中使用到的重要方法和技术细节。
为了实现这一目标,我们采用了以下核心方案:
-
调用吉客云接口
erp.storage.goodsdocin.v2
:- 确保能够可靠地抓取吉客云中的相关库存数据。尤其是在处理大批量数据时,通过分页机制和限流策略来保证API调用稳定性。
-
定制化的数据映射及格式转换:
- 吉客云与金蝶云星空的数据结构存在差异,需要进行精准、高效地转换。在这方面,我们利用了自定义映射功能,以确保每条记录都能准确传递,不漏单、不重复。
-
快速写入大量数据到金蝶云星空(batchSave API):
- 使用批量保存接口,将整理后的数据高效写入金蝶系统。同时,为应对可能出现的网络波动或接口异常情况,设置了完善的错误重试机制。
-
实时监控与日志记录:
- 提供透明可视化操作界面,多维度、全方位监控整个流程,从抓取、处理再到存储,每个环节的信息都记录在案。一旦出现问题,可以迅速定位并解决。
下面,让我们深入解析这个系统具体实施过程中的各项技术详情。
调用吉客云接口获取并加工数据的技术案例
在数据集成生命周期的第一步,我们需要调用源系统吉客云的接口erp.storage.goodsdocin.v2
来获取并加工数据。本文将详细探讨这一过程中的技术细节和实现方法。
接口调用配置
首先,我们需要配置接口调用的元数据。根据提供的metadata,我们可以看到该接口采用POST方法,主要参数包括分页信息、入库单号、更新时间范围等。以下是具体的请求参数配置:
{
"api": "erp.storage.goodsdocin.v2",
"method": "POST",
"number": "goodsdocNo",
"id": "recId",
"pagination": {
"pageSize": 10
},
"idCheck": true,
"buildModel": true,
"request": [
{"field": "pageIndex", "label": "分页页码", "type": "int"},
{"field": "pageSize", "label": "分页页数", "type": "int", "value": 100},
{"field": "goodsDocNo", "label": "入库单号", "type": "string"},
{"field": "gmtModifiedStart",
"label": "主表更新时间起始",
"type": "string",
"value":"_function from_unixtime(({LAST_SYNC_TIME}-86400),'%Y-%m-%d %H:%i:%s')"},
{"field": "gmtModifiedEnd",
"label":"主表更新时间截至",
"type":"string",
"value":"_function from_unixtime(({CURRENT_TIME}-86400),'%Y-%m-%d %H:%i:%s')"},
{"field":"startDate","label":"创建时间的起始时间","type":"string"},
{"field":"endDate","label":"创建时间的结束时间","type":"string"},
{"field":"inouttype","label":"入库类型","type":"string","describe":"入库类型(100-期初库存 101-采购入库 ... )","value":"107"},
{"field":"warehouseCode","label":"仓库编号","type":"string"},
{"field":"vendCode","label":"供应商编号(往来单位)","type":"string"},
{"field":"billNo","label":"上游单据号(关联单号)","type":"string"},
{"field":"userName","label":"创建人名称","type":"string"},
{"field":"sourceBillNo","label":"原始单号","type":"string"},
{"field":"outBillNo","label":"外部单号","type":"string"},
{"field":"selelctFields",
"label":"需要返回的字段,用“,”号拼接,子类用子类名称.属性",
...
}
],
...
}
请求参数详解
- 分页参数:
pageIndex
和pageSize
用于控制分页请求,确保一次性获取的数据量不会过大。 - 时间范围:
gmtModifiedStart
和gmtModifiedEnd
用于指定数据更新时间范围,这里使用了函数计算方式,将当前时间减去一天作为查询区间。 - 入库类型:通过设置
inouttype
为107,指定只获取组装拆卸入库的数据。 - 其他可选参数:如仓库编号、供应商编号、上游单据号等,可以根据实际需求进行配置。
数据请求与清洗
在完成接口配置后,我们需要编写代码来发起请求并处理返回的数据。以下是一个示例代码片段:
import requests
import json
from datetime import datetime, timedelta
# 配置请求头和URL
url = 'https://api.jikecloud.com/erp.storage.goodsdocin.v2'
headers = {'Content-Type': 'application/json'}
# 构建请求体
payload = {
'pageIndex': 1,
'pageSize': 100,
'gmtModifiedStart': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d %H:%M:%S'),
'gmtModifiedEnd': datetime.now().strftime('%Y-%m-%d %H:%M:%S'),
'inouttype': '107',
}
# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))
# 检查响应状态码
if response.status_code == 200:
data = response.json()
# 数据清洗与转换逻辑
cleaned_data = []
for record in data['data']:
cleaned_record = {
'goodsDocNo': record['goodsDocNo'],
'warehouseCode': record['warehouseCode'],
# 添加更多字段清洗逻辑...
}
cleaned_data.append(cleaned_record)
else:
print(f"Error: {response.status_code}")
# 输出清洗后的数据
print(cleaned_data)
数据转换与写入
在完成数据清洗后,我们可以将其转换为目标系统所需的格式,并写入到目标数据库或其他存储系统中。这里简要展示如何将清洗后的数据写入到一个MySQL数据库:
import pymysql
# 数据库连接配置
db_config = {
'host': 'localhost',
'user': 'root',
'password': '',
'database': 'target_db'
}
# 建立数据库连接
connection = pymysql.connect(**db_config)
cursor = connection.cursor()
# 插入数据SQL语句模板
insert_sql = """
INSERT INTO goods_doc_in (goodsDocNo, warehouseCode, ...)
VALUES (%s, %s, ...)
"""
# 批量插入数据
for record in cleaned_data:
cursor.execute(insert_sql, (
record['goodsDocNo'],
record['warehouseCode'],
# 添加更多字段...
))
# 提交事务并关闭连接
connection.commit()
cursor.close()
connection.close()
通过上述步骤,我们实现了从吉客云获取组装拆卸入库数据,并进行清洗、转换和写入目标系统的完整流程。这一过程充分利用了轻易云平台的数据集成能力,实现了不同系统间的数据无缝对接。
使用轻易云数据集成平台将源数据ETL转换并写入金蝶云星空API接口
在数据集成过程中,将源平台的数据转换为目标平台能够接收的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入金蝶云星空API接口。
1. 配置元数据
元数据配置是整个ETL过程的基础,以下是一个详细的元数据配置示例:
{
"api": "batchSave",
"method": "POST",
"idCheck": true,
"operation": {
"rowsKey": "array",
"rows": 1,
"method": "batchArraySave"
},
"request": [
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{goodsdocNo}"},
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTRKD01_SYS"},
{"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{companyCode}"},
{"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表","value":"GENERAL"},
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"_function DATE_FORMAT('{inOutDate}', '%Y-%m-%d')"},
{"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000016"},
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表","value":"BD_OwnerOrg"},
{"field":"FOwnerIdHead","label":"货主","type":"string","describe":"","parser":{"name":"ConvertObjectParser","params":""},"value":""},
{"field":""},
...
],
"otherRequest":[
{"field":""},
...
]
}
2. 数据请求与清洗
在此步骤中,我们从源系统中获取原始数据,并通过轻易云的数据清洗功能对其进行处理,以确保数据质量和一致性。例如,日期字段需要转换为目标系统所需的格式:
{"field": "FDate", "label": "日期", "type": "string", "describe": "日期", "value": "_function DATE_FORMAT('{inOutDate}', '%Y-%m-%d')"}
这里使用了DATE_FORMAT
函数将原始日期格式化为YYYY-MM-DD
格式。
3. 数据转换与写入
在完成数据清洗后,需要将其转换为金蝶云星空API接口所能接收的格式。以下是具体字段的映射和转换示例:
- 单据编号 (FBillNo): 从源系统中获取并直接映射到目标字段。
- 单据类型 (FBillTypeID): 使用
ConvertObjectParser
进行对象解析,将值转换为金蝶系统识别的编码。 - 库存组织 (FStockOrgId): 同样使用
ConvertObjectParser
进行解析。 - 库存方向 (FStockDirect): 固定值设置为
GENERAL
。 - 日期 (FDate): 使用前述的日期格式化函数进行转换。
- 部门 (FDEPTID): 固定值设置为
BM000016
,并使用解析器进行对象转换。
此外,还需要处理明细信息(FEntity)部分,其中包含多个子字段,如物料编码、实收数量、成本价等。这些子字段同样需要根据具体需求进行解析和映射:
{
"field": "FMATERIALID",
"label": "物料编码",
"type": "string",
...
}
4. API调用与提交
配置完成后,通过轻易云的数据集成平台发起HTTP POST请求,将处理后的数据提交到金蝶云星空API接口。以下是一个简化的请求示例:
{
"FormId": "STK_MISCELLANEOUS",
...
}
通过上述配置和操作,可以实现将源平台的数据无缝转化并写入到金蝶云星空系统中,确保业务流程顺畅运行。