王 軍
(上海理工大學機械工程學院,上海 200093)
庫存管理工作是高校后勤管理處的一項重要的工作。運用信息化手段開發一款適合高校后勤管理處的簡潔實用的庫存管理系統十分必要。
本文針對筆者所在高校后勤管理處下屬的一個物料倉庫的需求,利用Python 語言開發的一款Web框架Django作為開發框架,用MySQL 數據庫持久化數據,采用前后端不分離技術設計開發了一款庫存管理系統,以提高庫存管理的效率。
通過實地走訪調研學校的后勤管理倉庫發現,在管理物料庫存過程中存在兩個需要解決的問題。
一是貨物進庫以及領料人進行領料時需要記錄,由倉庫管理員開具紙質單據,由于單據量比較多而無法做到高效的管理,而且記錄容易出錯。
二是倉庫管理員每月要對當月的進出庫記錄進行分類統計建表并報送給上級檢查,這樣就需要找到當月的所有進出庫紙質單據,還要按日期篩選,工作繁瑣,耗費人力。
經過與倉庫管理員溝通,確定系統應包含以下幾個功能模塊。
⑴基礎信息管理功能,對領料員信息,材料供應商信息,材料的基礎信息進行管理。
⑵進出庫管理功能,對貨物進庫時間,進庫數量等關鍵數據進行管理。
⑶庫存盤點功能,按照固定周期對庫內的材料進行盤點并對盤貨信息錄入,同時可以修正錯誤的庫存記錄,此功能需要設置用戶權限。
⑷信息查詢與報表導出功能,倉庫管理員可以根據時間、材料等信息,在查詢相關的進出庫記錄時可以對相應的記錄導出Excel報表報送上級審核。
⑴穩定性要求,系統在服務器上可以穩定運行,避免由于用戶的誤操作所引起的系統宕機,保證數據正常交互。
⑵界面簡潔友好,操作界面上應避免過于復雜化,各個功能模塊分區清楚。
⑶系統響應要求,用戶在發起請求時,應盡量縮短系統的響應時間與更新時間。
本系統采用B/S(Brower/Server)模式,是Web 興起后的一種網絡結構。這種模式客戶端主要軟件時Web 瀏覽器,統一了客戶端,實現將系統的功能實現核心部分集中到服務器上,簡化了系統的開發、維護和使用。用戶只需在客戶端安裝一個瀏覽器,我們在服務器上安裝MySQL 數據庫,這樣就可以進行數據交互。這種結構的優點在于具有分布性特點,處理業務便捷;業務擴展簡單方便,通過增加頁面即可增加服務器功能;維護簡單方便。
Django 框架是由Python 語言編寫的開放源代碼的Web應用程序框架。本系統設計采用的Django版本是2.0.1。這是一款基于MVC 架構的框架,實際在使用過程中控制器接受用戶輸入的部分由框架自行處理所以是M(Model)T(Template)V(View)框架模式。Model層負責處理與數據相關的所有事務,以Python類的形式定義數據模型。Template層處理與表現相關的決定,此處放置的是前端框架代碼。View 層是模型與模板的橋梁,存取模型及調取模板的相關業務邏輯。
根據需求,對系統進行模塊化設計,具體如圖1所示分為基礎信息、進庫管理、出庫管理、庫存管理、盤貨管理五大模塊。
支撐應選用鋼材焊接加工制作而成。支撐應連接牢靠、布置合理、方便施工,且不影響后面工序的正常施工。支盤成孔過程中所設置的鋼支撐結構不予取出,以增加支盤的柔性。

圖1 系統功能模塊圖
基本信息模塊包含領料人管理,供應商管理,材料管理,用戶管理四個子模塊。后續各個模塊的信息創建都依賴于基礎信息部分。
⑴ 領料人子模塊。根據學校實際庫存管理情況,對所有的領料人統一進行信息管理,主要記錄和查看人員姓名、部門,聯系方式等關鍵信息。
⑵供應商子模塊。供應商是創建入庫單所必需關鍵信息,此模塊主要實現對供應商名稱,聯系方式,地址等關鍵信息的查看、創建、刪除,修改功能。
⑶ 材料模塊。由于后勤倉庫的材料種類比較多,為了方便管理在對材料信息進行管理時需要添加分類屬性,同時也包含材料名稱,規格,單位等信息。對于材料信息可以做到創建、修改,刪除功能。
⑷用戶模塊。用戶在此模塊可以進行用戶名與密碼的修改,同時也可以進行注銷賬戶。
系統的進、出庫設計邏輯相似,均包含進/出庫單管理與進/出庫查詢。
⑴進出庫單模塊。進庫單管理部分包括對貨物入庫的編號、數量、金額、供應商、時間等關鍵的部分的創建、修改、刪除。出庫單部分管理包括對出庫的編號、數量、時間、領料人等信息的創建、修改、刪除功能。領料人在出庫領料時需要填寫出庫單用途,否則無法完成出庫單的創建。進出庫單模塊均可以一鍵導出報表。進出庫流程如圖2所示。

圖2 進出庫流程圖
⑵進出庫查詢。用戶可以根據實際情況,以單一條件或復合條件查詢相關貨物的進出庫記錄,根據用戶權限可以對查詢到的記錄進行修改和刪除同時也可以對查詢到的記錄導出報表。
數據庫設計需要保證系統業務需求、數據的一致性和較好的擴展性以及高效的數據查詢效率。因此設計建表過程中通過唯一索引、外鍵、主鍵以及分表等方法來實現。根據系統的模塊設計,在數據庫中分別建立用戶表、貨物信息表、供應商表、領料人表、進庫單表、出庫單表、庫存表以及盤貨單表。為了保證數據的完整性需要將數據庫中一些關鍵的字段設置為非空字段,對應到前端是用戶必填項。同時Django中也嵌入了ORM 框架,不需要直接面向數據庫編程可以通過模型類和對象完成數據庫表的增刪改查。
系統首頁是各個模塊入口界面,為了考慮到頁面簡潔使用,本系統前端首頁主要采用了如圖3的布局。

圖3 系統首頁界面
數據導入與顯示是本系統最基本也是最重要的功能。基本信息模塊,進出庫單以及庫存模塊都需要數據導入與展示。系統會根據用戶發起的請求判斷是POST請求或是GET請求再經視圖函數層進一步處理。數據導入即創建新記錄的過程屬于用戶發起POST請求,View 層函數先實例化一個模型類對象,再從前端獲取數據存入該對象的各個屬性中,最后通過模型對象的save()函數保存到數據庫中。若View層判斷若是收到GET 請求,則通過模型類的object.all()方法,獲取對象集再通過render()方法將數據渲染到前端頁面,如圖4所示。

圖4 貨物基礎信息界面
數據查詢功能,在進出庫單查詢模塊以及庫存盤貨模塊會涉及。View 層首先會獲取前端頁面用戶所輸入的所有查詢條件,然后通過有限搜索條件的排列組合以及if 選擇語句去匹配對應的搜索條件,最后通過模型類的object.filter()方法查詢數據庫得到所要查詢的對象或對象集。同時當用戶輸入的搜索條件矛盾時,系統會返回并告知用戶不合規搜索格式。
打印報表功能是將用戶需要的數據導出成Excel并下載到本地。此處導入Python 的xlwt 模塊來實現。首先會通過該模塊新建一個工作簿,在工作簿的基礎上新建工作表,創建完工作表后設計利用for循環將需導出對象數據寫入到Excel 文件中,最后通過創建操作二進制數據的對象將Excel 數據寫入到內存中完成該模塊的功能實現。
本文針對高校大多數后勤倉庫進出庫工作多采用人工全流程紙質化管理、管理方式效率低下、易出錯等問題基于Django 框架設計了一套庫存管理的Web 系統。從部署上線后的運行效果看,本系統運行穩定,基本實現了進出庫管理流程的信息化、透明化。
由于目前該系統實現的是單個倉庫管理,下一步將解決多個倉庫同步管理、倉庫間的管理平衡,以及倉庫庫位容量的可視化等問題。