1. 程式人生 > 其它 >聚商匯WMS:開源倉庫管理系統

聚商匯WMS:開源倉庫管理系統

技術標籤:開源WMSwms

聚商匯WMS–開源倉庫管理系統


專案介紹:

完全開源倉儲管理軟體,遵循Apache License 2.0協議,前後端分離,且完全開源,API使用restful協議,方便二次開發,前端程式碼使用quasar進行構建,後端使用Python Django3.1,利用API,可以支援多倉,波次發貨,合併揀貨,Milk-Run等業務模型。

  • 軟體著作權編號:2018SR517685

  • GitHub地址:GitHub

  • Demo地址:DEMO

  • 技術交流QQ群:463562933


專案初衷:

我在供應鏈行業工作了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庫,這個庫有時候會安裝不上,需要下載下來本地安裝

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段式設計
    1. 驗證資料使用者歸屬
    2. 驗證資料安全性
    3. 驗證資料是否可以存入資料庫
    4. 存入資料庫,並返回Response

關於資料傳輸

  • 需要在所有的請求頭headers裡面加入token值,這個值就是使用者的資料唯一標識OPENID
  • 所有的資料傳輸需要設定content-type為application/json

OPENID

  • OPENID是註冊使用者資料的唯一標識,當管理員直接註冊時,會有developer=1這個管理員標識。
  • 你可以根據developer標識來做自定義二次開發

APPID

  • APPID是使用者資料組唯一標識
  • 如果需要多公司運營,或者多倉運營,可以通過APPID做統一連結,來實現多公司,多倉操作

使用者許可權

  • 未對使用者許可權做過多限制,請根據自身的業務需要,做二次開發限制

業務流程:

  • 暫時未更新此內容