管易销售发货单到金蝶销售出库单的系统对接集成案例分享
在实际业务场景中,将管易云·奇门中的历史订单数据集成到金蝶云星空,以实现电商平台与ERP系统之间的数据同步,是一项常见但极具挑战性的任务。本篇将聚焦于使用轻易云数据集成平台,为"管易销售发货单-->金蝶销售出库单(电商 历史订单)"方案提供技术详细。
首先,重要的一环是通过管易云·奇门API gy.erp.trade.deliverys.history.get
接口,实现历史发货单数据的可靠抓取。为确保高吞吐量和稳定性,我们设计了定时任务定期调用该接口,并处理分页和限流问题。此外,集中监控和告警体系能够实时跟踪任务状态,一旦出现异常,如API请求失败或响应时间过长,即刻触发告警机制,保障集成过程不漏单。
获取到的原始数据往往未必完全符合目标系统金蝶云星空的需求,因此我们需要进行自定义的数据转换逻辑。这一步骤涉及字段映射、格式转化等操作,以确保输入数据与目标系统所需格式一致。在这方面,可视化的数据流设计工具发挥了巨大的优势,使得复杂的数据转换过程变得直观且可管理。
接下来,通过调用金蝶云星空的 batchSave
API,我们将处理后的批量资料快速写入至其数据库内。同样地,为应对可能出现的异常情况,还部署了错误重试机制,当写入操作失败时自动重新尝试。
归根结底,无论是接口间数据结构差异、分页限流处理,还是批量写入与监控告警,各个环节都严密结合,从而实现高效、安全、可靠的数据集成。
使用管易云·奇门接口gy.erp.trade.deliverys.history.get获取并加工数据
在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用管易云·奇门接口gy.erp.trade.deliverys.history.get
获取销售发货单的历史数据,并对其进行初步加工。
接口调用配置
首先,我们需要配置接口调用的元数据。根据提供的元数据配置,我们可以看到该接口采用POST方法进行请求,主要用于查询历史发货单数据。以下是关键字段的配置:
start_create
和end_create
: 用于指定创建时间的开始和结束段。start_modify_date
和end_modify_date
: 用于指定修改时间的开始和结束段。delivery
: 发货状态,值为1表示发货成功。start_delivery_date
和end_delivery_date
: 发货时间的开始和结束段,分别使用上次同步时间和当前时间作为默认值。- 其他字段如
warehouse_code
、shop_code
、outer_code
等,用于进一步过滤查询结果。
分页参数也需要特别注意:
page_no
: 页码,默认值为1。page_size
: 每页大小,默认值为20。
请求示例
基于上述配置,我们可以构建一个请求示例:
{
"api": "gy.erp.trade.deliverys.history.get",
"method": "POST",
"params": {
"start_create": "2023-01-01T00:00:00",
"end_create": "2023-01-31T23:59:59",
"delivery": 1,
"start_delivery_date": "{{LAST_SYNC_TIME|datetime}}",
"end_delivery_date": "{{CURRENT_TIME|datetime}}",
"page_no": 1,
"page_size": 20
}
}
数据清洗与转换
在获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。在这个过程中,可以利用平台提供的自动填充响应功能(autoFillResponse),简化部分字段的处理。
例如,对于返回的数据结构中的发货单列表(deliverys),我们可以直接映射到目标系统所需的字段格式。同时,根据条件过滤掉不需要的数据,如平台编码不包含特定字符串或订单类型不为礼品等。
以下是一个简单的数据清洗示例:
def clean_data(raw_data):
cleaned_data = []
for record in raw_data['deliverys']:
if record['platform_code'] not in ['XXXSDD', 'CKSQ'] and \
record['details']['order_type'] not in ['gift', 'Maintain'] and \
record['details']['item_code'] != 'fapiao':
cleaned_record = {
'code': record['code'],
'warehouse_code': record['warehouse_code'],
'shop_code': record['shop_code'],
'outer_code': record['outer_code'],
'mail_no': record['mail_no'],
'delivery_date': record['delivery_date']
}
cleaned_data.append(cleaned_record)
return cleaned_data
数据写入
经过清洗和转换的数据可以直接写入目标系统。在轻易云数据集成平台中,这一步通常通过配置相应的目标系统接口来实现。确保每个字段都正确映射,并根据业务需求进行必要的数据校验和处理。
例如,将清洗后的数据写入金蝶销售出库单时,可以配置相应的API接口,并确保字段匹配:
{
"api": "kingdee.sales.outbound.add",
"method": "POST",
"params": {
// 映射后的字段
}
}
通过以上步骤,我们实现了从管易云·奇门接口获取历史发货单数据,并对其进行清洗、转换和写入目标系统的完整流程。这不仅提高了数据处理效率,也确保了数据的一致性和准确性。
轻易云数据集成平台:将源数据转换为金蝶云星空API格式并写入
在轻易云数据集成平台中,ETL(提取、转换、加载)过程的第二步至关重要,即将已经集成的源平台数据进行转换,使其符合目标平台金蝶云星空API接口的要求,并最终写入目标平台。本文将深入探讨如何利用元数据配置完成这一过程。
元数据配置解析
元数据配置是ETL过程中的核心部分,它定义了如何将源数据映射到目标系统所需的格式。以下是对关键元数据字段的详细解析:
-
单据类型(FBillTypeID)
- 配置:
{"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD12_SYS"}
- 解析:使用
ConvertObjectParser
将固定值XSCKD12_SYS
转换为目标系统可识别的单据类型编码。
- 配置:
-
单据编号(FBillNo)
- 配置:
{"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}
- 解析:直接从源数据中提取,无需额外转换。
- 配置:
-
日期(FDate)
- 配置:
{"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{delivery_statusInfo.delivery_date}}"}
- 解析:通过模板变量从源数据中提取发货日期。
- 配置:
-
销售组织(FSaleOrgId)和发货组织(FStockOrgId)
- 配置示例:
{"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function CASE '{shop_code}' WHEN 'SXF001' THEN '103' WHEN 'SXF002' THEN '103' ELSE '100' END"}
- 解析:根据店铺代码动态映射销售组织和发货组织,使用SQL风格的CASE语句实现条件判断。
- 配置示例:
-
客户(FCustomerID)
- 配置:
{"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FNumber from dc704b79-f3da-309a-9d2d-88456a5cbcd9 where F_352_waibuma={shop_code}"}
- 解析:通过
_findCollection
函数从指定集合中查找客户编码,结合店铺代码进行匹配。
- 配置:
-
货主类型和货主(FOwnerTypeIdHead, FOwnerIdHead)
- 配置示例:
{"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"货主类型","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"货主","type": "string", "describe": "货主", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_function CASE '{shop_code}' WHEN 'SXF001' THEN '103' ELSE '100' END"}
- 解析:固定值和动态映射相结合,确保货主信息准确无误。
- 配置示例:
-
明细信息(FEntity)
- 配置:
{"field": "FEntity", "label": "明细信息", "type": "array", "describe": "明细信息", "value": "details", "children":[ {"field": "FMaterialID", "label": "物料编码", "type": "string", "describe": "基础资料", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "value": "_findCollection find FNumber from a430738b-c21a-3683-832c-4b519dc241ba where F_UQRW_Text={{details.item_code}}"}, {"field": "FUnitID", "label": "库存单位", "type": "string", "value": "_findCollection find FBaseUnitId_FNumber from a430738b-c21a-3683-832c-4b519dc241ba where F_UQRW_Text={{details.item_code}}"}, {"field": "FRealQty", "label": “实发数量”, “type”: “string”, “describe”: “数量”, “value”: “{{details.qty}}”} ]}
- 解析:通过嵌套结构处理复杂的明细信息,每个子字段均有独立的转换逻辑,如物料编码、库存单位等。
- 配置:
-
物流跟踪明细(FOutStockTrace)
- 配置:
{"field": “FOutStockTrace”, “label”: “物流跟踪明细”, “type”: “array”, “children”: [ {"field”: “FCarryBillNo”, “label”: “物流单号”, “type”: “string”, “value”: "{express_no}"}, {"field”: “FLogComId”, “label”: “物流公司”, “type”: ”string”, ”parser”: {“name”: ”ConvertObjectParser”, ”params”: ”FCODE”}, ”mapping”:{“target”:”6567f13a3b91c238504d2c66”,”direction”:”positive”}}, {"field”:”FPhoneNumber”,”label”:”寄件人手机号”,”type”:”string”,”value”:"_function RIGHT('{receiver_mobile}', 4)"} ]}
- 解析:处理物流相关信息,包括物流单号、公司及寄件人手机号等,通过函数和映射实现复杂字段转换。
- 配置:
API调用与写入
在完成所有字段的转换后,最终需要通过API接口将处理后的数据写入金蝶云星空。以下是关键步骤:
-
定义业务对象表单ID
{"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"SAL_OUTSTOCK"}
-
执行操作
{"field":"Operation","label":"执行的操作","type":"string","describe":"执行的操作","value":"Save"}
-
提交并审核
{"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","describe":"提交并审核","value":"true"}
-
批量保存方法调用
{ operation: { rowsKey: 'array', rows: 1, method: 'batchArraySave' } }
通过上述步骤,轻易云数据集成平台能够有效地将源平台的数据经过ETL处理后,转换为金蝶云星空API接口所能接受的格式,并成功写入目标系统。这一过程确保了不同系统间的数据无缝对接,提高了业务流程的自动化和效率。