本文目錄一覽:
誰能幫我用python做一個倉庫管理系統連接mySQL
需要安裝MySQLdb,這是python下的mysql介面。
然後在w3cschool上有python操作mysql的教程。很簡單,自己一看就會。
用python編寫一個倉庫管理系統,不需要太複雜,該有的步驟有就可以
你直接用access,或者是excel,配置一下就有了。 不用開發。比開發的版本還好用。
如果一定要開發,可以使用django的框架,配置完資料庫,使用admin模塊來管理。也基本上不用再開發模塊就可以直接使用。
用DELPHI,按嚮導做,做完,所有功能都齊了。幾乎也不用多開發。
greaterwms是什麼??
聚商匯WMS–開源倉庫管理系統
項目介紹:
完全開源倉儲管理軟體,遵循Apache License 2.0協議,前後端分離,且完全開源,API使用restful協議,方便二次開發,前端代碼使用quasar進行構建,後端使用Python Django3.1,利用API,可以支持多倉,波次發貨,合併揀貨,Milk-Run等業務模型。
軟體著作權編號:2018SR517685
GitHub地址:
GitHubgithub.com/Singosgu/GreaterWMS
Demo地址:
GreaterWMS–Open Source Warehouse Management System
商務聯繫:mail@56yhz.com
技術交流:GreaterWMS-01(加微信進群)
項目初衷:
我在供應鏈行業工作了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
安裝Python庫:
pip install -r requirements.txt
注意:安裝需要Twisted庫,這個庫有時候會安裝不上,需要下載下來本地安裝
下載地址:TWISTED
pip install Twisted{你下載下來的版本名稱}
注意:本地安裝需要注意路徑
初始化資料庫:
python manage.py makemigrations
遷移資料庫:
python manage.py migrate
創建資料庫,Django默認使用sqlite3作為資料庫,如果需要mysql資料庫,請在greaterwms/settings.py裡面配置DATABASE
開發伺服器運行:
開發運行:
daphne -p 8008 greaterwms.asgi:application
生產伺服器運行:
supervisor守護進程:
pip install supervisor
使用supervisor來守護Django進程,再使用Nginx做反向代理,至於superevisor的教程有很多,這裡不做講解
Nginx支持:
推薦使用Nginx進行部署,部署的時候需要指定WebSocket鏈接,如果不指定,實時通信功能將報錯
另需要修改axios_request.js里的ws_url
## 示例更改前
const baseurl = ”
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
~~~python pip install apscheduler ~~~
Milk-Run
V 2.2.0及其以上版本,將原生支持此功能
如果現在就需要這個業務,可以根據API調用庫存消耗,來實現此功能
VMI
V 2.1.0及其以上版本,將原生支持此功能
如果現在就需要這個業務,可以根據API調用庫存消耗,來實現此功能
揀貨路線優化
現在的揀貨路線是按照庫位排序
V 2.3.0以後版本將原生支持此功能
如果現在需要這個業務,可以根據每天的揀貨明細,調用API來實現此功能
開發指南:
baseurl
是發起請求的基本網址,如果是本地調試,則默認為 ,如果部署在伺服器,則需要將其改為你的網站訪問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做統一鏈接,來實現多公司,多倉操作
用戶許可權
未對用戶許可權做過多限制,請根據自身的業務需要,做二次開發限制
業務流程:
管理員
點擊註冊,可以註冊成為管理員賬號,從而實現初始化程序設置
註冊後會得到2個ID和1個開發者標識,OPENID是用戶數據組唯一標識,通過OPENID綁定此OPENID下所有的數據,APPID是用戶組數據唯一標識,通過APPID來實現多公司,多倉庫功能,Developer標識是個布爾值,True代表這是個管理員賬號
用戶登入分2種:
使用OPENID和員工名稱直接登入
管理員使用賬號和密碼登入
登入後前端會存儲登入信息
可以通過查看我的OPENID來查看用戶數據組的OPENID
如果需要多公司,多倉庫操作,注意需要更改OPENID
更多管理員許可權,請自行開發
員工管理
註冊管理員後,新建一個員工
員工有2個欄位,Staff_name(用於員工登入),Staff_type(員工類型來控制員工的許可權)
系統沒有對員工許可權做任何限制,如果需要員工許可權,請根據企業業務模型,自行修改Templates
點擊Edit,可以修改員工信息
點擊Delete,可以刪除員工信息,系統後台會將Is_delete調成True
點擊Contact:
可以直接和員工實時聊天,但是不可以和自己聊天
可以新建一個備忘錄員工,這樣做其實是當成備忘錄使用
在個人中心,可以查看最近的聯繫人
Message標識會提醒你現在有多少未讀消息
司機管理
司機管理只會在發貨流程中用到
你需要知道貨物是哪個司機提貨取走的
倉庫設置
Warehouse
倉庫的創建只可以創建一個倉庫,現在可以創建多個,但是只有第一個會起作用
如果需要多倉處理,可以通過APPID進行二次開發,也可以直接重新創建一個管理員賬號
倉庫的城市一定要填寫,這是用來計算運費的
Bin_Property
庫位屬性決定了倉庫中貨物屬於什麼屬性的貨物
4種屬性:破損(Damage),鎖定(Holding),質檢(Inspection),正常(Normal)
Beta版中,屬性可以修改和刪除,正式版將無法刪除和修改
所有的發貨,都只會匹配Normal庫位的貨物
收貨上架和移庫,都會根據庫位屬性,直接修改庫存數量,倉庫的庫存數量不會出現負數
Bin_Size
庫位的尺寸是幫助操作人員查看貨物是否可以放入庫位
現行的版本沒有對上架和移庫尺寸做檢查,將來會加入自動檢查
Bin_Set
庫位設置是必須的,通常庫位設置是橫縱橫縱,比如A010101,即A橫01縱01橫01縱
庫位的設置需要設置庫位屬性和尺寸,屬性很重要,他決定了此庫位的貨物是否為正常貨物
基礎設置
Company
公司基本信息的創建只可以創建一個公司,現在可以創建多個,但是只有第一個會起作用
如果需要多公司處理,可以通過APPID進行二次開發,也可以直接重新創建一個管理員賬號
公司的城市一定要填寫,這是用來顯示在收發貨單上的
Supplier
供應商的基礎信息
供應商的城市一定要填寫,這是用來顯示在收貨單上的,並且也是要自動計算運費的
Customer
客戶的基礎信息
客戶的城市一定要填寫,這是用來顯示在發貨單上的,並且也是要自動計算運費的
商品管理
Unit
商品的單位,系統會初始化創建一些,但可以自己添加和修改
Class
商品的類型,可以自己添加和修改
Color
商品的顏色,系統會初始化創建一些,但可以自己添加和修改
Brand
商品的品牌,可以自己添加和修改
Shape
商品的形狀,系統會初始化創建一些,但可以自己添加和修改
Specs
商品的規格,可以自己添加和修改
Origin
商品的產地,可以自己添加和修改
Goods List
商品的列表
固定資產
Capital
固定資產創建,沒有做過多拓展,只是記錄使用
可以統計托盤賬目等
庫存管理
Stock List
在庫的貨物總的庫存數據量
Onhand_stock現有的庫存數量
Can Order,可以用於下單發貨的庫存數量,因為有些貨物已經被下了訂單,雖然有現有庫存,但是不可以再被訂貨
Ordered Stock,已經被下單的貨物數量
ASN Stock,已經下了到貨通知書,但還沒有確認到貨通知書的貨物數量
DN Stock,已被下單,但是還沒有確認訂單數量
Pre Load,預計到貨貨物數量
Pre Sort,已經到貨,卸貨完成,等待分揀的貨物數量
Sorted Stock,貨物分揀完成,等待上架的貨物數量
Pick Stock,發貨單生成了揀貨單,等待揀貨的貨物數量
Picked Stock,已經揀貨完成,等待和司機交接的貨物數量
Back Order Stock,欠貨訂單數量
Bin Stock
Total Stock,這個庫位該產品的所有庫存數量
Pick Stock,這個庫位需要揀貨的數量
Picked Stock,這個庫位揀貨完成的數量
Move To Bin, 移庫,移庫後,會根據庫位屬性,直接更新庫存數量,如果庫位全部移空,則該庫位會更新為空庫位
Empty Bin
空庫位明細
Occupied Bin
非空庫位明細
收貨管理
ASN到貨通知書狀態
ASN Status = 1, ASN到貨通知書創建完成,狀態1是唯一可以刪除和修改ASN信息的狀態,他會顯示在Pre Delivery中,即有了到貨通知書,但是還沒有到貨,點擊Confirm Delivery,即確認貨物已經到達,ASN Status更新到2,此時已經無法再修改ASN信息
ASN Status = 2, 拓展開發為司機到貨排隊,如果我們有很多司機到貨,這可以做成一個排隊系統,同時也可以讓採購和銷售看到到貨信息,減少不必要的郵件和電話溝通,點擊Finish Loading,即確認貨物已經卸貨完成,ASN Status更新到3,貨物信息會出現在Sorting,此時的ASN狀態表示,貨物已卸到倉庫,等待分揀
ASN Status = 3, 貨物分揀是必須的一個流程,沒有貨物分揀,貨物是無法上架的,上架的原則就是貨物整理好,擺放到相對應的庫位上,點擊Confirm Sorted,ASN Status更新到4,即確認分揀完成,等待上架
此時移動Sorted頁面,會出現需要上架的貨物明細,點擊Move To Bin,上架完成,當然,系統會根據上架後的庫位屬性,自動更新商品庫存數量信息
發貨管理
DN發貨單狀態
DN Status = 1, DN發貨單創建完成,此時訂單還是可以修改狀態,且系統中的庫存數量不會發生任何改變,點擊Confirm Order,DN Status更新到2,即訂單已經被確認,且無法更改,同時系統中的貨物庫存數量會自動更新,比如Can Order數量和Ordered數量
DN Status = 2, 這是訂單被確認等待生成揀貨單的過程,你可以點擊單條訂單Order Release來生成一個訂單的揀貨單,你也可以點擊Release All Order,來將所有訂單生成揀貨單,如果是所有訂單Release,那麼會根據時間的先後進行庫存匹配,庫存不足時,會生成Back Order,即欠貨訂單,在這個過程中,DN單號是會發生改變的,如一家客戶的多張訂單,會被統一到一張訂單中進行揀貨,如客戶訂單無法滿足,會將未滿足部分生成欠貨訂單,欠貨訂單如果仍未得到匹配庫存滿足,將不再生成新的訂單,DN Status會更新到3,即等待揀貨的過程,已確認的訂單和欠貨訂單都時Status為2的狀態
DN Status = 3, 直接揀貨,此功能會出現在Beta5更新中,暫時未更新
DN Status = 4, 發貨交接,此功能會出現在Beta6更新中,暫時未更新
DN Status = 5, 客戶簽收,此功能會出現在Beta7更新中,暫時未更新
DN Status = 6, 對賬結束,訂單關閉,此功能會出現在Beta7更新中,暫時未更新
退貨管理
RO退貨訂單 此功能將會出現在正式版中
運費管理
Transportation Fee API已經完成,前端暫未更新入口,如果想要使用,可以直接調用Payment下的Transportation Fee API進行使用,運費自動計算模塊已經做進收發貨流程中
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/312773.html