GreaterWMS:完全開源倉(cāng)庫(kù)管理系統(tǒng)
時(shí)間:2023-03-14 19:40:01 | 來(lái)源:電子商務(wù)
時(shí)間:2023-03-14 19:40:01 來(lái)源:電子商務(wù)
聚商匯WMS--開源倉(cāng)庫(kù)管理系統(tǒng)
項(xiàng)目介紹:
完全開源倉(cāng)儲(chǔ)管理軟件,遵循Apache License 2.0協(xié)議,前后端分離,且完全開源,API使用restful協(xié)議,方便二次開發(fā),前端代碼使用quasar進(jìn)行構(gòu)建,后端使用Python Django3.1,利用API,可以支持多倉(cāng),波次發(fā)貨,合并揀貨,Milk-Run等業(yè)務(wù)模型。
- 軟件著作權(quán)編號(hào):2018SR517685
- GitHub地址:
- 商務(wù)聯(lián)系:mail@56yhz.com
- 技術(shù)交流:GreaterWMS-01(加微信進(jìn)群)
項(xiàng)目初衷:
我在供應(yīng)鏈行業(yè)工作了15年,發(fā)現(xiàn)在我們這個(gè)專業(yè)的領(lǐng)域,沒(méi)有一款高自由度、高自定義化的軟件,來(lái)深度支持我們企業(yè)的業(yè)務(wù)。大多數(shù)軟件都是閉源的,而且很難去做二次開發(fā),即使開發(fā),周期也是非常長(zhǎng),開發(fā)失敗的案例也是比比皆是。由于企業(yè)選擇了一款軟件后,其二次開發(fā)也會(huì)被開發(fā)公司綁定,至于二次開發(fā)費(fèi)用,只能說(shuō)呵呵。所以,我設(shè)計(jì)了這個(gè)聚商匯WMS,為的是做到一款高自由度,高自定義開發(fā)的倉(cāng)庫(kù)管理軟件,來(lái)深度支持企業(yè)的業(yè)務(wù)。
- 愿景:如果你從事著非IT行業(yè)的工作,而你又熱愛你的行業(yè),那就用科技去改變他。
生命周期
- V 1.0.0 -- 2019年7月 ~ 2020年12月(由于1.0.0版本的二次開發(fā)設(shè)計(jì)較為復(fù)雜,故2.0重新編寫)
- V 2.0.0 -- 2020年12月 ~ 2021年3月(重新編寫業(yè)務(wù)邏輯,原生自帶API開發(fā)文檔,加入實(shí)時(shí)通信,方便企業(yè)用戶互相溝通)
- V 2.1.0 -- 2021年3月 ~ 2021年6月(加入了客戶與企業(yè)之間的實(shí)時(shí)互動(dòng),增進(jìn)企業(yè)與客戶之間的業(yè)務(wù)聯(lián)系,實(shí)現(xiàn)VMI)
- V 2.2.0 -- 2020年6月 ~ 2021年9月(加入了供應(yīng)商與企業(yè)之間的實(shí)時(shí)互動(dòng),增進(jìn)企業(yè)與供應(yīng)商之間的業(yè)務(wù)聯(lián)系,實(shí)現(xiàn)Milk-Run和看板拉動(dòng))
- V 2.3.0 -- 2021年9月 ~ 2021年12月(庫(kù)存管理雛形,初步加入神經(jīng)網(wǎng)絡(luò),深度學(xué)習(xí)庫(kù)存變化)
- V 3.0.0 -- 2021年12月 ~ 2022年3月(完全植入神經(jīng)網(wǎng)絡(luò),讓上下游企業(yè)可以以最低的成本運(yùn)營(yíng)整體的業(yè)務(wù))
- V 3.1.0 -- 2022年3月 ~ 2022年6月(區(qū)域倉(cāng)庫(kù)業(yè)務(wù)布局,通過(guò)深度學(xué)習(xí),實(shí)現(xiàn)多倉(cāng)運(yùn)營(yíng),成本最低化)
開發(fā)環(huán)境:
- Python 版本為 V 3.8.0 +
- Django 版本為 V 3.1.0 +(該版本Django才原生支持異步實(shí)時(shí)通信)
- Django-rest-framework 版本為 V 3.12.2 + (更高版本的Django-rest-Framework對(duì)Django3的兼容比較好)
- Django-silk 版本為 V 4.1.0 (如果是部署上線,請(qǐng)關(guān)閉silk,silk僅為調(diào)試API接口速度用,有可能會(huì)泄露用戶信息)
- Quasar 版本為 V1.7.2 + (可以查看Quasar官網(wǎng),來(lái)編輯GreaterWMS前端代碼:Quasar官網(wǎng))
- Vue 版本為 V 2.6.0 +(盡量不要使用Vue3,因?yàn)殚_發(fā)環(huán)境沒(méi)有使用Vue3,不知道會(huì)出現(xiàn)什么問(wèn)題)
- API,遵循 RESTful 架構(gòu)
構(gòu)建命令:
git clone https://github.com/Singosgu/GreaterWMS.git
pip install -r requirements.txt
注意:
安裝需要Twisted庫(kù),這個(gè)庫(kù)有時(shí)候會(huì)安裝不上,需要下載下來(lái)本地安裝
pip install Twisted{你下載下來(lái)的版本名稱}
注意:
本地安裝需要注意路徑
python manage.py makemigrations
python manage.py migrate
創(chuàng)建數(shù)據(jù)庫(kù),Django默認(rèn)使用sqlite3作為數(shù)據(jù)庫(kù),如果需要mysql數(shù)據(jù)庫(kù),請(qǐng)?jiān)趃reaterwms/settings.py里面配置DATABASE
開發(fā)服務(wù)器運(yùn)行:
daphne -p 8008 greaterwms.asgi:application
生產(chǎn)服務(wù)器運(yùn)行:
pip install supervisor
使用supervisor來(lái)守護(hù)Django進(jìn)程,再使用Nginx做反向代理,至于superevisor的教程有很多,這里不做講解
推薦使用Nginx進(jìn)行部署,部署的時(shí)候需要指定WebSocket鏈接,如果不指定,實(shí)時(shí)通信功能將報(bào)錯(cuò)
另需要修改axios_request.js里的ws_url
## 示例更改前const baseurl = 'http://127.0.0.1:8008/'const wsurl = 'ws://127.0.0.1:8008/'## 示例更改后const baseurl = 'https://你的域名/'const wsurl = 'wss://你的域名/websocket/'
如果服務(wù)器啟用了SSL,請(qǐng)使用https和wss,如果沒(méi)有啟用SSL,則使用http和ws
修改后需要重新build前端代碼
開發(fā)擴(kuò)展:
因?yàn)槭褂玫那昂蠖朔蛛x的設(shè)計(jì),所以可以通過(guò)API,開發(fā)更多的軟件應(yīng)用
物流智能AGV
- AGV的項(xiàng)目也已經(jīng)開源,由于場(chǎng)地受限,僅實(shí)現(xiàn)智能發(fā)貨,定點(diǎn)回庫(kù),使用的循跡感應(yīng)器,超聲波避障感應(yīng)器,紅外避障感應(yīng)器,所有的指令通過(guò)網(wǎng)絡(luò)傳輸,AGV綁定MAC地址和IP地址,保證了安全性,前提是,你需要有一個(gè)樹莓派。
進(jìn)銷存
- 可以直接當(dāng)一個(gè)進(jìn)銷存系統(tǒng)使用,簡(jiǎn)化倉(cāng)庫(kù)庫(kù)位設(shè)置等操作即可。
APP和小程序
- Quasar原生可以直接打包成IOS APP和Android APP
- 小程序的開發(fā)可以通過(guò)API開做二次開發(fā),但小程序不支持put請(qǐng)求,所以需要自己再寫一個(gè)請(qǐng)求接口。
- API的組合可以達(dá)到100萬(wàn)種,這樣我們可以根據(jù)查詢請(qǐng)求,來(lái)獲得實(shí)時(shí)報(bào)表和數(shù)據(jù)監(jiān)控
供應(yīng)鏈管理系統(tǒng)
- 產(chǎn)品的數(shù)量,創(chuàng)建時(shí)間,最后使用時(shí)間是各方面統(tǒng)計(jì)的,所以可以方便采購(gòu)計(jì)劃和調(diào)撥計(jì)劃進(jìn)行庫(kù)存的分析
- V 2.3.0及其以后的版本,將自帶深度學(xué)習(xí)分析,所以可以直接使用分析結(jié)果作為供應(yīng)鏈管理系統(tǒng)工具使用
多倉(cāng)管理
- OPENID為用戶的數(shù)據(jù)唯一標(biāo)識(shí),數(shù)據(jù)組統(tǒng)一標(biāo)識(shí)為APPID,所以很方便可以實(shí)現(xiàn)多倉(cāng)管理
波次揀貨,發(fā)貨
- 可以設(shè)置固定時(shí)間向服務(wù)器發(fā)出請(qǐng)求,從而達(dá)到波次揀貨的功能
- 也可以直接使用任務(wù)工作,通過(guò)API查詢分析結(jié)果來(lái)實(shí)現(xiàn),推薦使用APScheduler
~~~python pip install apscheduler ~~~
Milk-Run
- V 2.2.0及其以上版本,將原生支持此功能
- 如果現(xiàn)在就需要這個(gè)業(yè)務(wù),可以根據(jù)API調(diào)用庫(kù)存消耗,來(lái)實(shí)現(xiàn)此功能
VMI
- V 2.1.0及其以上版本,將原生支持此功能
- 如果現(xiàn)在就需要這個(gè)業(yè)務(wù),可以根據(jù)API調(diào)用庫(kù)存消耗,來(lái)實(shí)現(xiàn)此功能
揀貨路線優(yōu)化
- 現(xiàn)在的揀貨路線是按照庫(kù)位排序
- V 2.3.0以后版本將原生支持此功能
- 如果現(xiàn)在需要這個(gè)業(yè)務(wù),可以根據(jù)每天的揀貨明細(xì),調(diào)用API來(lái)實(shí)現(xiàn)此功能
開發(fā)指南:
baseurl
- 是發(fā)起請(qǐng)求的基本網(wǎng)址,如果是本地調(diào)試,則默認(rèn)為http://127.0.0.1:8008/ ,如果部署在服務(wù)器,則需要將其改為你的網(wǎng)站訪問(wèn)url
- 修改方式為,修改axios_request.js,注意
websocket的修改之前已經(jīng)提到了
Django-silk
- django-silk為開發(fā)時(shí)的調(diào)試工具,可以統(tǒng)計(jì)每個(gè)接口的響應(yīng)速度,如果需要部署到生產(chǎn)環(huán)境,請(qǐng)刪除Django-silk相關(guān)配置,因?yàn)闀?huì)有泄露用戶信息的風(fēng)險(xiǎn),或者直接修改Django-silk庫(kù),讓用戶只能看到自己的請(qǐng)求數(shù)據(jù)
數(shù)據(jù)庫(kù)存儲(chǔ)
- 數(shù)據(jù)庫(kù)設(shè)計(jì)時(shí)考慮到數(shù)據(jù)遷移等問(wèn)題,所以只有users里面的user_id和Django自帶的user_id做了外鍵,其余所有字段全部沒(méi)有使用外鍵,方便數(shù)據(jù)備份和數(shù)據(jù)庫(kù)遷移
- 數(shù)據(jù)庫(kù)是4段式設(shè)計(jì)
- 驗(yàn)證數(shù)據(jù)用戶歸屬
- 驗(yàn)證數(shù)據(jù)安全性
- 驗(yàn)證數(shù)據(jù)是否可以存入數(shù)據(jù)庫(kù)
- 存入數(shù)據(jù)庫(kù),并返回Response
關(guān)于數(shù)據(jù)傳輸
- 需要在所有的請(qǐng)求頭headers里面加入token值,這個(gè)值就是用戶的數(shù)據(jù)唯一標(biāo)識(shí)OPENID
- 所有的數(shù)據(jù)傳輸需要設(shè)定content-type為application/json
OPENID
- OPENID是注冊(cè)用戶數(shù)據(jù)的唯一標(biāo)識(shí),當(dāng)管理員直接注冊(cè)時(shí),會(huì)有developer=1這個(gè)管理員標(biāo)識(shí)。
- 你可以根據(jù)developer標(biāo)識(shí)來(lái)做自定義二次開發(fā)
APPID
- APPID是用戶數(shù)據(jù)組唯一標(biāo)識(shí)
- 如果需要多公司運(yùn)營(yíng),或者多倉(cāng)運(yùn)營(yíng),可以通過(guò)APPID做統(tǒng)一鏈接,來(lái)實(shí)現(xiàn)多公司,多倉(cāng)操作
用戶權(quán)限
- 未對(duì)用戶權(quán)限做過(guò)多限制,請(qǐng)根據(jù)自身的業(yè)務(wù)需要,做二次開發(fā)限制
業(yè)務(wù)流程:
管理員
- 點(diǎn)擊注冊(cè),可以注冊(cè)成為管理員賬號(hào),從而實(shí)現(xiàn)初始化程序設(shè)置
- 注冊(cè)后會(huì)得到2個(gè)ID和1個(gè)開發(fā)者標(biāo)識(shí),OPENID是用戶數(shù)據(jù)組唯一標(biāo)識(shí),通過(guò)OPENID綁定此OPENID下所有的數(shù)據(jù),APPID是用戶組數(shù)據(jù)唯一標(biāo)識(shí),通過(guò)APPID來(lái)實(shí)現(xiàn)多公司,多倉(cāng)庫(kù)功能,Developer標(biāo)識(shí)是個(gè)布爾值,True代表這是個(gè)管理員賬號(hào)
- 用戶登入分2種:
- 使用OPENID和員工名稱直接登入
- 管理員使用賬號(hào)和密碼登入
- 登入后前端會(huì)存儲(chǔ)登入信息
- 可以通過(guò)查看我的OPENID來(lái)查看用戶數(shù)據(jù)組的OPENID
- 如果需要多公司,多倉(cāng)庫(kù)操作,注意需要更改OPENID
- 更多管理員權(quán)限,請(qǐng)自行開發(fā)
員工管理
- 注冊(cè)管理員后,新建一個(gè)員工
- 員工有2個(gè)字段,Staff_name(用于員工登入),Staff_type(員工類型來(lái)控制員工的權(quán)限)
- 系統(tǒng)沒(méi)有對(duì)員工權(quán)限做任何限制,如果需要員工權(quán)限,請(qǐng)根據(jù)企業(yè)業(yè)務(wù)模型,自行修改Templates
- 點(diǎn)擊Edit,可以修改員工信息
- 點(diǎn)擊Delete,可以刪除員工信息,系統(tǒng)后臺(tái)會(huì)將Is_delete調(diào)成True
- 點(diǎn)擊Contact:
- 可以直接和員工實(shí)時(shí)聊天,但是不可以和自己聊天
- 可以新建一個(gè)備忘錄員工,這樣做其實(shí)是當(dāng)成備忘錄使用
- 在個(gè)人中心,可以查看最近的聯(lián)系人
- Message標(biāo)識(shí)會(huì)提醒你現(xiàn)在有多少未讀消息
司機(jī)管理
- 司機(jī)管理只會(huì)在發(fā)貨流程中用到
- 你需要知道貨物是哪個(gè)司機(jī)提貨取走的
倉(cāng)庫(kù)設(shè)置
- 倉(cāng)庫(kù)的創(chuàng)建只可以創(chuàng)建一個(gè)倉(cāng)庫(kù),現(xiàn)在可以創(chuàng)建多個(gè),但是只有第一個(gè)會(huì)起作用
- 如果需要多倉(cāng)處理,可以通過(guò)APPID進(jìn)行二次開發(fā),也可以直接重新創(chuàng)建一個(gè)管理員賬號(hào)
- 倉(cāng)庫(kù)的城市一定要填寫,這是用來(lái)計(jì)算運(yùn)費(fèi)的
- 庫(kù)位屬性決定了倉(cāng)庫(kù)中貨物屬于什么屬性的貨物
- 4種屬性:破損(Damage),鎖定(Holding),質(zhì)檢(Inspection),正常(Normal)
- Beta版中,屬性可以修改和刪除,正式版將無(wú)法刪除和修改
- 所有的發(fā)貨,都只會(huì)匹配Normal庫(kù)位的貨物
- 收貨上架和移庫(kù),都會(huì)根據(jù)庫(kù)位屬性,直接修改庫(kù)存數(shù)量,倉(cāng)庫(kù)的庫(kù)存數(shù)量不會(huì)出現(xiàn)負(fù)數(shù)
- 庫(kù)位的尺寸是幫助操作人員查看貨物是否可以放入庫(kù)位
- 現(xiàn)行的版本沒(méi)有對(duì)上架和移庫(kù)尺寸做檢查,將來(lái)會(huì)加入自動(dòng)檢查
- 庫(kù)位設(shè)置是必須的,通常庫(kù)位設(shè)置是橫縱橫縱,比如A010101,即A橫01縱01橫01縱
- 庫(kù)位的設(shè)置需要設(shè)置庫(kù)位屬性和尺寸,屬性很重要,他決定了此庫(kù)位的貨物是否為正常貨物
基礎(chǔ)設(shè)置
- 公司基本信息的創(chuàng)建只可以創(chuàng)建一個(gè)公司,現(xiàn)在可以創(chuàng)建多個(gè),但是只有第一個(gè)會(huì)起作用
- 如果需要多公司處理,可以通過(guò)APPID進(jìn)行二次開發(fā),也可以直接重新創(chuàng)建一個(gè)管理員賬號(hào)
- 公司的城市一定要填寫,這是用來(lái)顯示在收發(fā)貨單上的
- 供應(yīng)商的基礎(chǔ)信息
- 供應(yīng)商的城市一定要填寫,這是用來(lái)顯示在收貨單上的,并且也是要自動(dòng)計(jì)算運(yùn)費(fèi)的
- 客戶的基礎(chǔ)信息
- 客戶的城市一定要填寫,這是用來(lái)顯示在發(fā)貨單上的,并且也是要自動(dòng)計(jì)算運(yùn)費(fèi)的
商品管理
- 商品的單位,系統(tǒng)會(huì)初始化創(chuàng)建一些,但可以自己添加和修改
- 商品的類型,可以自己添加和修改
- 商品的顏色,系統(tǒng)會(huì)初始化創(chuàng)建一些,但可以自己添加和修改
- 商品的品牌,可以自己添加和修改
- 商品的形狀,系統(tǒng)會(huì)初始化創(chuàng)建一些,但可以自己添加和修改
- 商品的規(guī)格,可以自己添加和修改
- 商品的產(chǎn)地,可以自己添加和修改
- 商品的列表
固定資產(chǎn)
- 固定資產(chǎn)創(chuàng)建,沒(méi)有做過(guò)多拓展,只是記錄使用
- 可以統(tǒng)計(jì)托盤賬目等
庫(kù)存管理
- 在庫(kù)的貨物總的庫(kù)存數(shù)據(jù)量
- Onhand_stock現(xiàn)有的庫(kù)存數(shù)量
- Can Order,可以用于下單發(fā)貨的庫(kù)存數(shù)量,因?yàn)橛行┴浳镆呀?jīng)被下了訂單,雖然有現(xiàn)有庫(kù)存,但是不可以再被訂貨
- Ordered Stock,已經(jīng)被下單的貨物數(shù)量
- ASN Stock,已經(jīng)下了到貨通知書,但還沒(méi)有確認(rèn)到貨通知書的貨物數(shù)量
- DN Stock,已被下單,但是還沒(méi)有確認(rèn)訂單數(shù)量
- Pre Load,預(yù)計(jì)到貨貨物數(shù)量
- Pre Sort,已經(jīng)到貨,卸貨完成,等待分揀的貨物數(shù)量
- Sorted Stock,貨物分揀完成,等待上架的貨物數(shù)量
- Pick Stock,發(fā)貨單生成了揀貨單,等待揀貨的貨物數(shù)量
- Picked Stock,已經(jīng)揀貨完成,等待和司機(jī)交接的貨物數(shù)量
- Back Order Stock,欠貨訂單數(shù)量
- Total Stock,這個(gè)庫(kù)位該產(chǎn)品的所有庫(kù)存數(shù)量
- Pick Stock,這個(gè)庫(kù)位需要揀貨的數(shù)量
- Picked Stock,這個(gè)庫(kù)位揀貨完成的數(shù)量
- Move To Bin, 移庫(kù),移庫(kù)后,會(huì)根據(jù)庫(kù)位屬性,直接更新庫(kù)存數(shù)量,如果庫(kù)位全部移空,則該庫(kù)位會(huì)更新為空庫(kù)位
- 空庫(kù)位明細(xì)
- 非空庫(kù)位明細(xì)
收貨管理
- ASN Status = 1, ASN到貨通知書創(chuàng)建完成,狀態(tài)1是唯一可以刪除和修改ASN信息的狀態(tài),他會(huì)顯示在Pre Delivery中,即有了到貨通知書,但是還沒(méi)有到貨,點(diǎn)擊Confirm Delivery,即確認(rèn)貨物已經(jīng)到達(dá),ASN Status更新到2,此時(shí)已經(jīng)無(wú)法再修改ASN信息
- ASN Status = 2, 拓展開發(fā)為司機(jī)到貨排隊(duì),如果我們有很多司機(jī)到貨,這可以做成一個(gè)排隊(duì)系統(tǒng),同時(shí)也可以讓采購(gòu)和銷售看到到貨信息,減少不必要的郵件和電話溝通,點(diǎn)擊Finish Loading,即確認(rèn)貨物已經(jīng)卸貨完成,ASN Status更新到3,貨物信息會(huì)出現(xiàn)在Sorting,此時(shí)的ASN狀態(tài)表示,貨物已卸到倉(cāng)庫(kù),等待分揀
- ASN Status = 3, 貨物分揀是必須的一個(gè)流程,沒(méi)有貨物分揀,貨物是無(wú)法上架的,上架的原則就是貨物整理好,擺放到相對(duì)應(yīng)的庫(kù)位上,點(diǎn)擊Confirm Sorted,ASN Status更新到4,即確認(rèn)分揀完成,等待上架
- 此時(shí)移動(dòng)Sorted頁(yè)面,會(huì)出現(xiàn)需要上架的貨物明細(xì),點(diǎn)擊Move To Bin,上架完成,當(dāng)然,系統(tǒng)會(huì)根據(jù)上架后的庫(kù)位屬性,自動(dòng)更新商品庫(kù)存數(shù)量信息
發(fā)貨管理
- DN Status = 1, DN發(fā)貨單創(chuàng)建完成,此時(shí)訂單還是可以修改狀態(tài),且系統(tǒng)中的庫(kù)存數(shù)量不會(huì)發(fā)生任何改變,點(diǎn)擊Confirm Order,DN Status更新到2,即訂單已經(jīng)被確認(rèn),且無(wú)法更改,同時(shí)系統(tǒng)中的貨物庫(kù)存數(shù)量會(huì)自動(dòng)更新,比如Can Order數(shù)量和Ordered數(shù)量
- DN Status = 2, 這是訂單被確認(rèn)等待生成揀貨單的過(guò)程,你可以點(diǎn)擊單條訂單Order Release來(lái)生成一個(gè)訂單的揀貨單,你也可以點(diǎn)擊Release All Order,來(lái)將所有訂單生成揀貨單,如果是所有訂單Release,那么會(huì)根據(jù)時(shí)間的先后進(jìn)行庫(kù)存匹配,庫(kù)存不足時(shí),會(huì)生成Back Order,即欠貨訂單,在這個(gè)過(guò)程中,DN單號(hào)是會(huì)發(fā)生改變的,如一家客戶的多張訂單,會(huì)被統(tǒng)一到一張訂單中進(jìn)行揀貨,如客戶訂單無(wú)法滿足,會(huì)將未滿足部分生成欠貨訂單,欠貨訂單如果仍未得到匹配庫(kù)存滿足,將不再生成新的訂單,DN Status會(huì)更新到3,即等待揀貨的過(guò)程,已確認(rèn)的訂單和欠貨訂單都時(shí)Status為2的狀態(tài)
- DN Status = 3, 直接揀貨,此功能會(huì)出現(xiàn)在Beta5更新中,暫時(shí)未更新
- DN Status = 4, 發(fā)貨交接,此功能會(huì)出現(xiàn)在Beta6更新中,暫時(shí)未更新
- DN Status = 5, 客戶簽收,此功能會(huì)出現(xiàn)在Beta7更新中,暫時(shí)未更新
- DN Status = 6, 對(duì)賬結(jié)束,訂單關(guān)閉,此功能會(huì)出現(xiàn)在Beta7更新中,暫時(shí)未更新
退貨管理
- RO退貨訂單 此功能將會(huì)出現(xiàn)在正式版中
運(yùn)費(fèi)管理
- Transportation Fee API已經(jīng)完成,前端暫未更新入口,如果想要使用,可以直接調(diào)用Payment下的Transportation Fee API進(jìn)行使用,運(yùn)費(fèi)自動(dòng)計(jì)算模塊已經(jīng)做進(jìn)收發(fā)貨流程中
關(guān)鍵詞:倉(cāng)庫(kù),管理,系統(tǒng)