王 军
(上海理工大学机械工程学院,上海 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 系统。从部署上线后的运行效果看,本系统运行稳定,基本实现了进出库管理流程的信息化、透明化。
由于目前该系统实现的是单个仓库管理,下一步将解决多个仓库同步管理、仓库间的管理平衡,以及仓库库位容量的可视化等问题。