首页 > 文章中心 > 正文

装备仓库管理系统设计及实现

装备仓库管理系统设计及实现

摘要:为解决装备仓库管理出入库、调拨、作业、库存等流程繁琐的问题,设计并实现了一套装备仓库管理系统,以此来实现对全生命周期装备的信息化管理,该系统提高了装备管理的效率,节省了人力资源。系统采用B/S架构,使用Spring-Boot+MyBatis的高效开发框架,采用Redis缓存技术以及MySQL数据库进行开发,通过使用改进的A*算法来进行路径规划,提高了AGV的作业效率。

关键词:仓库管理系统;SpringBoot;reids;MyBatis;AGV

在公司或企业的生产管理过程中,物资监管尤为重要,特别是对仓库的管理和监控,是一项极其复杂的工作[1],可能会涉及到物资种类多、物资出入库频繁、出入库作业浪费人力、调拨麻烦、货位分配不均衡、仓库助理员处理各种单据等问题和困难[2]。为解决上述出现的问题,越来越多的企业选择使用仓库管理系统,来使得仓库管理整个流程智能化、明确化,减少人工操作带来的人力成本以及操作失误[3]。结合以上需求本文设计了一套以实现仓库管理智能化为目标的仓库管理系统,以器材、装备为基础数据,将物资出入库,作业管理,库存管理等流程细分化,以MySQL作为数据库,建立一套仓库信息化管理系统[4]。

1系统设计

本文设计的装备仓库管理系统采用了B/S架构,将整个系统分为三层架构,具体分为表示层、业务层、数据访问层,提高了系统的稳定性和可拓展性。表示层即用户界面层,负责直接与用户进行交互,仓库管理员可通过直接操作该层来实现对仓库的管理、业务层主要作用是具体处理某些业务,调用Service层的接口来对该系统的具体业务实现控制、数据访问层主要是实现对数据库的操控,实现数据的增删改查功能。该系统主要由基础数据模块、出入库管理模块、库存管理模块、系统配置模块、作业管理模块五个大模块所组成。

1.1系统架构

为实现仓库装备智能化管理,为达到其实用、实时、精确的目的,本系统采用SpringBoot+MyBatis的架构实现了PC端的后台装备管理系统[5],系统整体架构如图1所示。整个系统的PC端采用的是B/S架构,提高用户与系统的交互体验,通过浏览器就可以操作整个仓库管理的流程,从某种程度上解决了现有单位仓库管理效率底下、分工不明确等问题。采用这套系统可以极大地减少了单位一些不必要的人力和物力开支,保证物资在整个流程中的流转情况的透明化,更利于单位对物资的监管。另外根据登录的角色不同,所具有的权限也不相同,登录所看到的页面与操作也不同,这样更便于仓库管理分工明确化。

1.2系统模块组成

根据装备仓库管理的需求,将整个系统主要设计成五个模块,分别为基础数据模块、出入库管理模块、库存管理模块、系统配置模块、作业管理模块。每个模块拥有一些子模块,这些模块之间紧密相连,共同组成了整个仓库管理系统。系统功能模块图如图2所示:1)基础数据模块:该模块主要是对装备仓库管理系统的器材目录、装备目录、单位目录、基数标准进行管理、支持数据源的导入、导出,信息的完善以及数据更新;2)出入库管理模块:该模块主要是对装备仓库管理系统的出入库以及调拨流程全面、系统的操作和展示;3)库存管理模块:该模块主要是对装备仓库管理系统的库存进行管理,可以对各单位库存、库房、货位库存进行管理、调配、统计;4)作业管理模块:该模块主要是对供仓库保管员使用的,保管员可以根据助理员下达的任务,来进行实际的作业;5)系统配置模块:该模块主要是对装备仓库管理系统的角色、用户、单位权限分配,对系统年度、标识码设定以及提供日志管理功能。

2关键技术

2.1基于Redis的数据缓存的设计

该装备仓库管理系统在登录模块以及角色管理模块该系统采用了Redis做缓存。一方面主要用来做用户信息的缓存,存放登录用户的信息与权限,避免每次访问后端都要去访问数据库,由于Redis是基于内存的,所以访问速度较之于访问数据存放在硬盘MySQL数据库会快得多,提高了该系统的高并发能力,也提高了用户的体验;另一方面主要用来做部门树状图的缓存,因为该单位组织结构比较复杂,每次放数据库里面查找部门数据然后在去遍历成树状结构的话,可能速度比较慢,很影响用户的体验,所以当要去获得部门树状图的话,可以先去缓存找,找不到的话再去数据库去寻找部门数据,然后再去遍历成树状结构,再把这个树状结构缓存到Redis数据库中,当下次需要去获取部门树状图的话就可以直接从缓存中获取出来。由于仓库管理整个系统中大量模块涉及到订单编号的生成,并且要保证这些订单编号在高并发的情况下实现唯一,所以本系统涉及到订单编号生成的模块中采用了Redis去实现订单编号的生成,在集群架构的情况下,由于整个系统可以共用一个Redis服务器,而Reids是一种单线程的技术并且Redis自身也提供了分布式锁,所以可以采用Redis去生成全局唯一的一个订单编号,来解决在多线程情况下生成订单编号不安全的问题。在性能方面,由于Redis是单线程所以没有线程上下文切换带来的损耗,Redis也采用I/O多路复用的技术来优化IO的读写,最后Redis是基于内存操作的,所以Redis处理请求会很快。而且Redis支持多种数据结构,可以满足我们对数据的操作。

2.2采用AGV小车进行作业管理

随着现代仓库越来越智能化,越来越多的企业利用AGV小车进行智能化作业管理工作,不仅解决了人工对货物作业的效率低、耗时长问题还降低了人力消耗大、人力成本高的弊端[6]。本系统采用的AGV小车为二维码导航的AGV小车,由于装备仓库的私密性,所以仓库的出入人员相对较少,这样对二维码的破坏较少,并且二维码导航相较于电磁导航更精确,比激光导航以及惯性导航成本更低。针对出入库作业不频繁的情况下,该系统的AGV路径规划算法采用了改进A*算法,而针对出入库作业比较频繁的仓库采用了一种基于短期预测的路径规划算法。A*(A-Star)算法是一种静态路网中求解最短路径的最有效直接搜索方法,也是许多其他问题的常用启发式算法。针对装备出入库作业不是很频繁的仓库,可采用单AGV小车,然后采用了一种改进的A*算法,因为A*算法是一种静态路网中求解最短路径最有效的直接搜索方法,但是很多时候找到的最短路径并不一定效率最高,我们要考虑时间的损耗,所以我们可以采用在A*算法上面加一种“奖惩机制”,来解决这个问题[9],一方面对出现拐点的时候对其评价函数予以“惩罚”,即增加其代价值,另一方面引入“AGV的方向感”概念,对符合条件的节点给予一定奖励,即减少其代价值来不断修正启发函数。我们对A*算法进行改进也可以在单AGV的条件下很好地完成对装备仓库路径的规划。针对出入库作业比较频繁的仓库,可采用多AGV的仓库管理系统,我们在单一作业的基础上采用一种基于短期预测的路径规划算法。通过时间轴的手段来预测短期时间段内道路的AGV通行量以及可能发生冲突碰撞的情况,从而降低冲突次数,优化作业任务完成所花费的时间。具体操作就是利用改进的A*算法对每个AGV小车进行路径规划,然后将它们的路径节点存放在数组中。通过判断时间轴上同一位置的节点是否相同来决策是否为冲突节点,同时由于每个路径节点与各个路段一一对应[10],因此可以对短期内各道路的小车通行量进行预测,然后在此基础上面重新规划路径方案,最后各个小车根据此方案来进行作业。

3结束语

本文主要依据实际的需求,介绍了装备仓库管理系统具体的设计与实现。以SpringBoot+MyBatis作为后台框架、Redis作为缓存、MySQL作为数据库,搭建了一套完整的仓库管理系统,完成了出入库管理、库存管理、权限管理、作业管理、基础数据管理功能。采用AGV来优化作业管理,实现人力的解放。

作者:陆松林 张捷 王震 单位:南京理工大学自动化学院 陆军装备部驻重庆地区军事代表局驻重庆地区第一军事代表室