美食網(wǎng)站設(shè)計目的寧波百度seo點擊軟件
金蝶云星空數(shù)據(jù)集成到旺店通WMS的技術(shù)案例分享
在數(shù)字化轉(zhuǎn)型的背景下,現(xiàn)代企業(yè)對系統(tǒng)間的數(shù)據(jù)集成需求日益增加。本篇文章將以“組裝入庫=>其他入庫單-1”方案為例,詳細解析如何通過輕易云數(shù)據(jù)集成平臺,實現(xiàn)金蝶云星空與旺店通WMS之間的數(shù)據(jù)高效流動。
首先,在這個跨系統(tǒng)數(shù)據(jù)對接過程中,我們需要確保從金蝶云星空獲取的數(shù)據(jù)能夠準(zhǔn)確無誤地寫入到旺店通WMS。為了實現(xiàn)這一功能,本次方案主要采用了executeBillQuery和WDT_WMS_ENTRYORDER_CREATE這兩個API接口。其中,executeBillQuery用于抓取金蝶云星空中指定條件下的業(yè)務(wù)單據(jù)數(shù)據(jù),而WDT_WMS_ENTRYORDER_CREATE用來將這些業(yè)務(wù)單據(jù)創(chuàng)建為旺店通中的其他入庫單。
如何確保集成過程不漏單
在進行批量操作時,不容忽視的是如何避免數(shù)據(jù)遺漏和重復(fù)的問題。在本方案中,通過定時可靠的抓取機制,從金蝶云星空接口周期性拉取最新的業(yè)務(wù)流水,同時利用接口分頁功能處理大數(shù)據(jù)量,提高檢索效率。此外,為了解決限流問題,每次請求控制在限定數(shù)量內(nèi),并設(shè)計重試機制確保異常情況下也能夠重新獲取所需數(shù)據(jù)。
處理兩系統(tǒng)之間的數(shù)據(jù)格式差異
由于金蝶云星空和旺店通WMS使用不同的數(shù)據(jù)結(jié)構(gòu),因此需要建立一個有效的數(shù)據(jù)映射策略。借助輕易云平臺提供的可視化配置工具,我們可以自定義字段映射關(guān)系,把從 executeBillQuery 接口獲取的信息經(jīng)過轉(zhuǎn)換后,再傳遞給 WDT_WMS_ENTRYORDER_CREATE 接口。同時,這一過程支持實時監(jiān)控與日志記錄,使得每一次變更都能被清楚追蹤并及時調(diào)整,有效提高操作透明度和準(zhǔn)確性。
以上只是簡要介紹了我們面對的一些核心技術(shù)挑戰(zhàn)及解決思路,后續(xù)文章部分將深入剖析各個步驟具體實施方法以及遇到的問題與解決方案,以幫助讀者更好地理解大型復(fù)雜業(yè)務(wù)場景中的系統(tǒng)集成實踐。?
調(diào)用源系統(tǒng)金蝶云星空接口executeBillQuery獲取并加工數(shù)據(jù)
在數(shù)據(jù)集成的生命周期中,調(diào)用源系統(tǒng)接口是至關(guān)重要的一步。本文將深入探討如何通過輕易云數(shù)據(jù)集成平臺調(diào)用金蝶云星空的executeBillQuery
接口來獲取并加工數(shù)據(jù)。
接口調(diào)用與元數(shù)據(jù)配置
首先,我們需要理解如何配置和調(diào)用金蝶云星空的executeBillQuery
接口。以下是元數(shù)據(jù)配置的關(guān)鍵部分:
{"api": "executeBillQuery","method": "POST","number": "FBillNo","id": "FEntity_FEntryID","pagination": {"pageSize": 500},"idCheck": true,"operation": {"method": "merge","field": "FBillNo","bodyName": "items","bodySum": ["FQty"],"header": ["FBillNo"],"body": ["FMaterialID_FNumber", "FQty", "FLOT_FNumber", "FProduceDate", "FEXPIRYDATE"]},...
}
請求參數(shù)配置
在請求參數(shù)中,我們需要定義查詢條件和分頁參數(shù)。以下是一些關(guān)鍵字段及其描述:
FilterString
: 用于過濾查詢結(jié)果,例如?FApproveDate>='{{MINUTE_AGO_30|datetime}}' AND FDocumentStatus = 'C' AND FStockID.F_JZJ_CheckBox=1 AND FAFFAIRTYPE = 'Assembly'
。FieldKeys
: 定義需要查詢的字段集合,例如?["FID", "FBillNo", ...]
。FormId
: 表單ID,例如?"STK_AssembledApp"
。
這些參數(shù)確保我們能夠精確地獲取所需的數(shù)據(jù)。
數(shù)據(jù)請求與清洗
在發(fā)起請求后,返回的數(shù)據(jù)可能包含多條記錄。我們需要對這些數(shù)據(jù)進行清洗和處理。以下是一個示例代碼片段,用于發(fā)起請求并處理響應(yīng):
import requests
import jsonurl = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {'FormId': 'STK_AssembledApp','FieldKeys': ['FID', 'FBillNo', ...],'FilterString': 'FApproveDate>=\'2023-01-01\' AND FDocumentStatus=\'C\'','Limit': 500,'StartRow': 0
}response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()# 清洗數(shù)據(jù)
cleaned_data = []
for record in data:cleaned_record = {'單據(jù)編號': record['FBillNo'],'物料編碼': record['FMaterialID_FNumber'],...}cleaned_data.append(cleaned_record)
數(shù)據(jù)轉(zhuǎn)換與寫入
在清洗完數(shù)據(jù)后,需要將其轉(zhuǎn)換為目標(biāo)格式并寫入目標(biāo)系統(tǒng)。這里我們使用了merge
操作,將相同單據(jù)編號的數(shù)據(jù)合并,并計算數(shù)量總和:
"operation": {"method": "merge",...
}
具體實現(xiàn)可以如下:
merged_data = {}
for record in cleaned_data:bill_no = record['單據(jù)編號']if bill_no not in merged_data:merged_data[bill_no] = {'單據(jù)編號': bill_no,'items': []}merged_data[bill_no]['items'].append({'物料編碼': record['物料編碼'],...'數(shù)量': record['數(shù)量']})# 寫入目標(biāo)系統(tǒng)
for bill_no, bill_data in merged_data.items():# 假設(shè)有一個函數(shù)write_to_target_system用于寫入目標(biāo)系統(tǒng)write_to_target_system(bill_data)
通過上述步驟,我們實現(xiàn)了從金蝶云星空獲取數(shù)據(jù)、清洗、轉(zhuǎn)換并寫入目標(biāo)系統(tǒng)的全過程。這一過程不僅提高了數(shù)據(jù)處理的效率,也確保了數(shù)據(jù)的一致性和準(zhǔn)確性。?
使用輕易云數(shù)據(jù)集成平臺進行ETL轉(zhuǎn)換并寫入旺店通WMSAPI接口
在數(shù)據(jù)集成生命周期的第二步,我們需要將已經(jīng)集成的源平臺數(shù)據(jù)進行ETL轉(zhuǎn)換,轉(zhuǎn)為目標(biāo)平臺旺店通WMSAPI接口所能夠接收的格式,并最終寫入目標(biāo)平臺。以下是具體的技術(shù)實現(xiàn)過程和細節(jié)。
1. API接口配置
首先,我們需要配置旺店通WMSAPI接口的相關(guān)信息。根據(jù)元數(shù)據(jù)配置,我們使用的是WDT_WMS_ENTRYORDER_CREATE
?API,采用POST請求方式。
{"api": "WDT_WMS_ENTRYORDER_CREATE","method": "POST","idCheck": true
}
2. 數(shù)據(jù)操作與字段映射
在數(shù)據(jù)操作部分,我們需要將源數(shù)據(jù)中的字段映射到目標(biāo)API所需的字段。這里采用了merge操作,將源數(shù)據(jù)中的FBillNo
字段合并到目標(biāo)數(shù)據(jù)的details
中,并定義了header和body部分。
{"method": "merge","field": "FBillNo","bodyName": "details","header": ["FBillNo", "FStockID_FNumber"],"body": ["FMaterialID_FNumber", "FEntity_FEntryID", "FQty", "FLOT_FNumber", "FProduceDate", "FEXPIRYDATE"]
}
3. 請求體結(jié)構(gòu)
根據(jù)元數(shù)據(jù)配置,我們需要構(gòu)建一個復(fù)雜的JSON請求體,包括入庫單信息和單據(jù)信息兩個主要部分。
入庫單信息
入庫單信息部分包含了入庫單號、倉庫編碼和業(yè)務(wù)類型等字段。這些字段直接從源數(shù)據(jù)中提取并映射到目標(biāo)API所需的格式。
{"label": "入庫單信息","field": "entryOrder","type": "object","children": [{"parent": "entryOrder","label": "入庫單號","field": "entryOrderCode","type": "string","value": "{FBillNo}"},{"parent": "entryOrder","label": "倉庫編碼","field": "warehouseCode","type": "string","value": "{FStockID_FNumber}"},{"parent": "entryOrder",{.........
單據(jù)信息
單據(jù)信息部分包含了訂單行的信息,每一行都需要詳細描述,包括商家編碼、應(yīng)收商品數(shù)量、庫存類型、批次、生產(chǎn)日期和過期日期等。這些字段通過模板語言從源數(shù)據(jù)中提取并轉(zhuǎn)換為目標(biāo)API所需格式。
4. 數(shù)據(jù)清洗與轉(zhuǎn)換
在實際操作中,可能會涉及到對某些字段的數(shù)據(jù)清洗與轉(zhuǎn)換。例如,生產(chǎn)日期和過期日期需要進行格式化處理,這可以通過模板語言中的date函數(shù)實現(xiàn)。
實際案例:組裝入庫=>其他入庫單-1
假設(shè)我們有一個組裝入庫的數(shù)據(jù),需要將其轉(zhuǎn)換為其他入庫單并寫入旺店通WMS。具體步驟如下:
- 提取源數(shù)據(jù):從源系統(tǒng)中提取組裝入庫的數(shù)據(jù)。
- 映射字段:根據(jù)元數(shù)據(jù)配置,將源數(shù)據(jù)中的字段映射到目標(biāo)API所需的字段。
- 構(gòu)建請求體:按照上述結(jié)構(gòu)構(gòu)建JSON請求體。
- 發(fā)送請求:通過POST方法將請求體發(fā)送到旺店通WMSAPI接口。
通過以上步驟,我們可以實現(xiàn)從源系統(tǒng)到旺店通WMS的無縫數(shù)據(jù)集成,確保每個環(huán)節(jié)的數(shù)據(jù)都準(zhǔn)確無誤地傳遞和處理。這不僅提高了業(yè)務(wù)效率,也增強了系統(tǒng)間的數(shù)據(jù)一致性和可靠性。?