聚商匯WMS:開源倉庫管理系統
聚商匯WMS–開源倉庫管理系統
專案介紹:
完全開源倉儲管理軟體,遵循Apache License 2.0協議,前後端分離,且完全開源,API使用restful協議,方便二次開發,前端程式碼使用quasar進行構建,後端使用Python Django3.1,利用API,可以支援多倉,波次發貨,合併揀貨,Milk-Run等業務模型。
專案初衷:
我在供應鏈行業工作了15年,發現在我們這個專業的領域,沒有一款高自由度、高自定義化的軟體,來深度支援我們企業的業務。大多數軟體都是閉源的,而且很難去做二次開發,即使開發,週期也是非常長,開發失敗的案例也是比比皆是。由於企業選擇了一款軟體後,其二次開發也會被開發公司繫結,至於二次開發費用,只能說呵呵。所以,我設計了這個聚商匯WMS,為的是做到一款高自由度,高自定義開發的倉庫管理軟體,來深度支援企業的業務。
- 願景:如果你從事著非IT行業的工作,而你又熱愛你的行業,那就用科技去改變他。
生命週期
- V 1.0.0 – 2019年7月 ~ 2020年12月(由於1.0.0版本的二次開發設計較為複雜,故2.0重新編寫)
- V 2.0.0 – 2020年12月 ~ 2021年3月(重新編寫業務邏輯,原生自帶API開發文件,加入實時通訊,方便企業使用者互相溝通)
- V 2.1.0 – 2021年3月 ~ 2021年6月(加入了客戶與企業之間的實時互動,增進企業與客戶之間的業務聯絡,實現VMI)
- V 2.2.0 – 2020年6月 ~ 2021年9月(加入了供應商與企業之間的實時互動,增進企業與供應商之間的業務聯絡,實現Milk-Run和看板拉動)
- V 2.3.0 – 2021年9月 ~ 2021年12月(庫存管理雛形,初步加入神經網路,深度學習庫存變化)
- V 3.0.0 – 2021年12月 ~ 2022年3月(完全植入神經網路,讓上下游企業可以以最低的成本運營整體的業務)
- V 3.1.0 – 2022年3月 ~ 2022年6月(區域倉庫業務佈局,通過深度學習,實現多倉運營,成本最低化)
開發環境:
-
Python 版本為 V 3.8.0 +
-
Django 版本為 V 3.1.0 +(該版本Django才原生支援非同步實時通訊)
-
Django-rest-framework 版本為 V 3.12.2 + (更高版本的Django-rest-Framework對Django3的相容比較好)
-
Django-silk 版本為 V 4.1.0 (如果是部署上線,請關閉silk,silk僅為除錯API介面速度用,有可能會洩露使用者資訊)
-
Quasar 版本為 V1.7.2 + (可以檢視Quasar官網,來編輯GreaterWMS前端程式碼:Quasar官網)
-
Vue 版本為 V 2.6.0 +(儘量不要使用Vue3,因為開發環境沒有使用Vue3,不知道會出現什麼問題)
-
API,遵循 RESTful 架構
構建命令:
- 下載程式碼:
git clone https://github.com/Singosgu/GreaterWMS.git
- 安裝Python庫:
pip install -r requirements.txt
注意:安裝需要Twisted庫,這個庫有時候會安裝不上,需要下載下來本地安裝
- 下載地址:TWISTED
pip install Twisted{你下載下來的版本名稱}
注意:本地安裝需要注意路徑
- 初始化資料庫:
python manage.py makemigrations
- 遷移資料庫:
python manage.py migrate
建立資料庫,Django預設使用sqlite3作為資料庫,如果需要mysql資料庫,請在django_wms/settings.py裡面配置DATABASE
開發伺服器執行:
- 開發執行:
daphne -p 8008 django_wms.asgi:application
生產伺服器執行:
- supervisor守護程序:
pip install supervisor
使用supervisor來守護Django程序,再使用Nginx做反向代理,至於superevisor的教程有很多,這裡不做講解
- Nginx支援:
推薦使用Nginx進行部署,部署的時候需要指定WebSocket連結,如果不指定,實時通訊功能將報錯
另需要修改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/'
如果伺服器啟用了SSL,請使用https和wss,如果沒有啟用SSL,則使用http和ws
修改後需要重新build前端程式碼
開發擴充套件:
因為使用的前後端分離的設計,所以可以通過API,開發更多的軟體應用
物流智慧AGV
- AGV的專案也已經開源,由於場地受限,僅實現智慧發貨,定點回庫,使用的循跡感應器,超聲波避障感應器,紅外避障感應器,所有的指令通過網路傳輸,AGV繫結MAC地址和IP地址,保證了安全性,前提是,你需要有一個樹莓派。
進銷存
- 可以直接當一個進銷存系統使用,簡化倉庫庫位設定等操作即可。
APP和小程式
-
Quasar原生可以直接打包成IOS APP和Android APP
-
小程式的開發可以通過API開做二次開發,但小程式不支援put請求,所以需要自己再寫一個請求介面。
-
API的組合可以達到100萬種,這樣我們可以根據查詢請求,來獲得實時報表和資料監控
供應鏈管理系統
- 產品的數量,建立時間,最後使用時間是各方面統計的,所以可以方便採購計劃和調撥計劃進行庫存的分析
- V 2.3.0及其以後的版本,將自帶深度學習分析,所以可以直接使用分析結果作為供應鏈管理系統工具使用
多倉管理
- OPENID為使用者的資料唯一標識,資料組統一標識為APPID,所以很方便可以實現多倉管理
波次揀貨,發貨
-
可以設定固定時間向伺服器發出請求,從而達到波次揀貨的功能
-
也可以直接使用任務工作,通過API查詢分析結果來實現,推薦使用APScheduler
pip install apscheduler
Milk-Run
- V 2.2.0及其以上版本,將原生支援此功能
- 如果現在就需要這個業務,可以根據API呼叫庫存消耗,來實現此功能
VMI
- V 2.1.0及其以上版本,將原生支援此功能
- 如果現在就需要這個業務,可以根據API呼叫庫存消耗,來實現此功能
揀貨路線優化
- 現在的揀貨路線是按照庫位排序
- V 2.3.0以後版本將原生支援此功能
- 如果現在需要這個業務,可以根據每天的揀貨明細,呼叫API來實現此功能
開發指南:
baseurl
-
是發起請求的基本網址,如果是本地除錯,則預設為http://127.0.0.1:8008/ ,如果部署在伺服器,則需要將其改為你的網站訪問url
-
修改方式為,修改axios_request.js,注意
websocket的修改之前已經提到了
Django-silk
- django-silk為開發時的除錯工具,可以統計每個介面的響應速度,如果需要部署到生產環境,請刪除Django-silk相關配置,因為會有洩露使用者資訊的風險,或者直接修改Django-silk庫,讓使用者只能看到自己的請求資料
資料庫儲存
- 資料庫設計時考慮到資料遷移等問題,所以只有users裡面的user_id和Django自帶的user_id做了外來鍵,其餘所有欄位全部沒有使用外來鍵,方便資料備份和資料庫遷移
- 資料庫是4段式設計
- 驗證資料使用者歸屬
- 驗證資料安全性
- 驗證資料是否可以存入資料庫
- 存入資料庫,並返回Response
關於資料傳輸
- 需要在所有的請求頭headers裡面加入token值,這個值就是使用者的資料唯一標識OPENID
- 所有的資料傳輸需要設定content-type為application/json
OPENID
- OPENID是註冊使用者資料的唯一標識,當管理員直接註冊時,會有developer=1這個管理員標識。
- 你可以根據developer標識來做自定義二次開發
APPID
- APPID是使用者資料組唯一標識
- 如果需要多公司運營,或者多倉運營,可以通過APPID做統一連結,來實現多公司,多倉操作
使用者許可權
- 未對使用者許可權做過多限制,請根據自身的業務需要,做二次開發限制
業務流程:
- 暫時未更新此內容