随着我国长远洋事业的发展,大型船舶的海上活动日益频繁,航行时间也越来越长,船舶上工作人员与乘客数量通常达数千人,携行的主副食品数量增多,库存量加大,而库存管理方式仍以手工统计或是Excel统计为主。由于主副食品库存信息处于不断变化状态,仓库管理员无法及时掌握库存信息,往往造成主副食品存放过期和浪费;而库存信息不清晰,餐厨人员在领料时多采用“随用随取”的作业方式,常碰到所需物资已无库存的情况,需与仓库管理员重新沟通,易造成重复性工作。
本系统结合条形码识别技术,配合使用手持PDA,借助计算机网络技术,高效实现船舶仓库管理信息的录入和采集,充分进行数据分析、数据优化,提升仓库管理效率,实现精确化管理。
在B/S(Browser/Server)体系结构[1]下,用户界面完全通过Web浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现。三层的B/S结构如图1所示:
它将显示部分移到了功能层,用户通过本地的浏览器用HTTP来访问功能服务器[2]。基于B/S结构[3,4]的系统最大优点是可以在任何地方进行操作而不用安装任何专门的软件。只要有一台能上网的电脑就能使用,客户端零维护[5]。系统的扩展非常容易,只要能上网,再由系统管理员分配一个用户名和密码,就可以使用了。
Oracle数据库,英文全名为Oracle Database,又名Oracle RDBMS,或简称Oracle,是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品[6],在数据库管理功能、完整性检查、安全性、一致性方面具有良好表现,可通过网络方便地读写远端数据库里的数据。在B/S体系结构中,用户使用Web浏览器访问Web服务器,由Web服务器将用户在网页上进行的操作处理提交给数据库服务器,再把从数据库获取的信息以文本、图像、表格等形式送回给用户的Web浏览器[7,8,9,10]。本系统采用Oracle10g作为数据库服务器,主要用来存储船舶食品仓库管理的动静态信息和处理客户端的http请求。
Tomcat是在Oracle公司的JSWDK(Java Server Web Development Kit,是Oracle公司推出的小型Servlet/JSP调试工具)基础上发展起来的一个优秀的Servlet容器,是Apache开源组织的一个软件项目。Tomcat是一个免费的开放源代码应用服务器[11],提供了作为Web服务器[11]的一些实用功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等,它运行稳定、可靠,并且效率高[12,13]。本系统中,Tomcat是系统客户端与应用服务器间通信的桥梁。客户端浏览器发出的http请求经过Tomcat中间件,转发到最终的目的服务器上,响应消息再通过Tomcat以静态页面的形式返回到客户端,完成对客户端请求的响应。
需求分析是系统设计的主要前提,同时也是数据库设计的重要基础[14]。船舶食品仓库管理信息系统主要按照提出食品采购需求,然后购买、入库,直至消耗的业务流程,实现船舶食品仓库信息化管理。其具体业务流程为:航行前,采购管理员综合餐厨工作人员提供的原料需求和仓库管理员提供的当前库存情况制订采购订单,经领导审核后,根据订单进行市场采购;采购上船的食品物资按照仓库管理员制定的入库计划快速入库;船舶航行期间,餐厨工作人员每日提出领料申请单,仓库管理员根据申请单结合库存情况进行物资出库;在进行出入库操作时,仓库管理员可根据需要配合使用手持PDA,并可对库存物资进行盘点、倒库等操作,船舶食品物资采购-消耗流程见图2所示。
从系统的整体需求分析可见,系统主要应用在大型船舶上,其用户为船舶上采购管理员、仓库管理员、餐厨工作人员以及船舶领导等,用户使用个人PC机通过船舶局域网访问数据库服务器,并根据不同角色赋予的操作权限进行不同的操作功能。硬件架构上,主要设备包括服务器、客户端、移动设备、移动设备与服务器的通信等[15],系统硬件架构设计见图3:
通过对系统的整体需求分析情况,并结合系统框架设计,可以将船舶食品仓库管理信息系统分为基本信息管理、订单管理、原料申领单管理、物资库存管理、统计查询与综合管理6个功能模块[16,17],其功能模块如图4所示。
包括物资字典、仓库字典、供应商字典等,物资字典管理维护食品物资的基本信息,如编码、名称、供应商、单位、价格、规格、拼音简码及有效状态等信息,并可对物资字典进行检索与导出等操作,对批号效期是否需要管理进行设置;仓库字典维护仓库的基本信息,如仓库编号、仓库名称、仓库类型、仓库面积、仓库容积等信息。对这些信息可进行添加、编辑、删除、导出等操作;在维护供应商字典时,食品物资按类别进行分类,供应商基本信息表主要包括供应商名称、公司资质、联系人、联系方式、法人代表等基本信息。供应商基本信息表模块的功能主要包括数据添加、数据修改和删除等;
综合考虑就餐人数、航行时间、餐费标准等信息,制定航行期间需要采购的食品物资的订单品量表。可进行任意时间段内订单的统计查询与打印输出,并支持对采购订单进行手工增加、删除、修改、确定等操作;
在客户端,由餐厨工作人员提前一天根据次日食谱在客户端填写申领单,当申领数量大于库存数量时,系统提示库存量不足。工作人员结合库存量提示与次日食谱进行修改,直至同时满足库存与食谱要求。可进行任意时间段内的申领单查询与打印,在确认前可对申领单进行添加、编辑、删除等操作;
是整个船舶食品仓库管理信息系统的核心部分,包括物资入库、物资出库、物资盘点、物资倒库,可使用手持PDA进行物资库存管理相关数据的离线采集,同时,物资管理模块实现预警管理,当发生物资库存量低于设定的仓库量值时,出现库存量不足警告信息;当发生物资有效期快要临近失效时,出现有效期将至预警信息。物资入库方式有PDA导入、Excel导入与手工填入三种方式,三种方式均支持编辑、修改、追加、删除、浏览等操作;物资盘点时,先进行盘点封库,并形成盘点前库存表,将盘点前库存表导入PDA,使用PDA进入需盘点仓库中进行盘点。将盘点数据录入PDA中,将实际的盘点数据从PDA中导入系统,系统自动计算盘点差异数,按照差异数自动完成盘盈盘亏;物资出库方式有逐日消耗出库、PDA出库、倒入物资出库和手工填写四种,逐日消耗出库时,仓库管理员在库房库存信息中根据餐厨工作人员的原料申领单信息进行出库处理;PDA出库时采用条码扫描方式将物资出库信息录入PDA,并及时更新至软件系统;
包括物资库存信息、入库汇总信息、出库汇总信息及物资收发存信息的统计查询,可按照物资名称、仓库名称等条件检索,并支持导出信息表操作;
包括安全设置、数据管理、系统日志和系统帮助。安全设置主要对系统用户及用户的角色与权限进行配置与设置。系统具有便捷的用户增加、权限角色设置、用户查找等功能;数据管理主要提供数据的局部与全部备份、转贮、合并、删除等功能;系统日志自动记录登录者的用户名、使用的终端识别号,记录操作者进入系统后进行的操作功能模块、具体功能点和进行操作的类别等;系统帮助在应用软件系统运行过程中提供功能模块帮助。
本系统采用B/S三层架构方式开发,以Java、JSP等作为开发语言,在Jbuilder开发平台下完成,交互界面设计同时使用Dreamweaver工具。Web服务器采用免费的Apache,应用服务器采用Tomcat,数据库采用Oracle11g R2,客户端只需使用浏览器即可。
数据库连接[18]技术是衡量系统性能的重要指标之一,尤其在多用户应用程序中,对数据库连接的管理更能显著影响到整个系统的伸缩性和健壮性。船舶食品仓库管理信息系统使用Java编码建立数据库连接池[19]实现数据的存取。其基本思想是:在系统初始化时建立管理类Database Bean来支持对一个或多个的数据库连接池访问。同时,将数据库连接作为对象存储在内存中,用户访问数据库中,连接的建立和断开都由连接池自身来管理,极大地提高了数据库的访问能力。
限于篇幅有限,仅以物资入库为例来说明系统的具体实现。仓库管理员用户通过系统登录界面输入正确的用户名和密码,进入系统。单击系统左侧库存管理下拉菜单,随后单击手工入库,若需要查询时间段内入库单信息,在开始时间与结束时间框内选择相应时间,单击检索,出现图5所示的手工入库界面。用户可根据实际需求情况对所有入库单表进行编辑、确认、删除、打印等操作。
数据表格查询不使用传统的ResultSet在前台页面显示,而是通过建立一个DataSet类来进行显示,在用户进行查询的时候,先初始化DataSet类,通过ResultSet查询数据后给DataSet进行赋值,在前台网页显示时使用DataSet类来循环显示。录入入库数据时,使用JavaScript对文本框的输入格式进行控制。利用form控件提交数据,保存物资时自动刷新表格。提交数据时使用JspCommit接口类进行统一调用,关键代码如下:
public boolean SaveRKDB(modRKDB mod) {
//接口类调用业务逻辑层中的类进行保存入库单物资
share.connDb(conndb)
RKDBEAI eai = new RKDBEAI(conndb)
boolean flg = eai.SaveRKDB(mod)
share.closeDb(conndb)
return flg
}
public boolean SaveRKDB(modRKDB mod) {
//业务逻辑层调用数据访问层中的类进行插入和更新
boolean flg = false
String isql = "SELECT * FROM WZGL.入库单表 WHERE 自动编号="+mod.getZDBH()+""
if (pub.chkTblExists(isql)) {
flg = updateRKDBZDBH(mod)
} else {
flg = insertRKDB(mod)
flg = flg && updateRKDB(mod)
}
return flg
}
上述过程实现了入库数据的采集,以入库为例,主要测试入库数据采集的时效性与精确性。
针对入库数据采集,进行多种采集方式测试,并与传统Excel统计进行对比测试。为了尽可能地保证测试数据的真实性,将入库数据设置为某一次出海前的实际入库量。该次共计132种食品物资入库,其中超市采购53种,供货商供应72种,其它方式采购7种。对这3类采购方式分别使用3种方式进行数据采集,第一种方式为PDA上传,适用于超市采购食品。借助当前通用EAN一维条形码技术,使用手持PDA扫描每种食品包装上的条形码,然后输入数量,选择仓库,点击确认键,将入库数据采集到手持PDA上。由于大多数船舶上尚未实现无线通讯,因此,还需在客户端使用USB接口将手持PDA中的入库数据导入到信息系统中;第二种方式为Excel导入,适用于指定供货商供应的食品。供货商在交货时,根据指定格式提供包含所供食品编码、名称、数量等信息的光盘,仓库管理员将光盘内容一次性导入系统;在既没有固定供货商,也没有商品条形码的情况下使用第三种方式手工添加。
在对比测试中,使用Excel统计进行入库数据录入时,为了保证测试的公平性,所有的食品名称均有电子版本,测试时,只需要将纸质送货单上对应的食品数量录入到Excel即可。
采用系统3种方式进行入库数据采集的耗时与准确率如表1所示。
表1 系统3种方式入库数据采集耗时与准确率表 导出到EXCEL
物资数量 |
入库数据采集方式 | 耗时 | 准确率 |
53 |
PDA上传 | 5分32秒 | 100% |
72 |
Excel导入 | 5秒 | 100% |
7 |
手工添加 | 1分18秒 | 100% |
|
从表1中可以看出,对于132种不同采购方式的食品物资,采用3种数据采集方式,其数据准确率均可达到100%。在耗时方面,总共用时6分55秒,其中Excel用时最短,72种物资只需5秒钟就可完成入库数据采集:PDA上传居中,53种物资用时5分32秒,平均采集每种物资入库数据耗时不到7秒;手工添加耗时稍长,每种物资入库数据采集不到10秒。因此,船舶食品在实际采购时,越来越倾向于寻找指定供应商作为长期合作伙伴,这样不但有利于规范食品包装,而且便于食品溯源,更加有助于做好船舶食品仓库管理的前期准备工作。
采用系统进行入库数据采集与传统Excel统计进行数据录入的时效性与准确率对比测试结果如表2所示。
从表2中可以看出,采用Excel进行入库数据录入时,其耗时久,准确率不到85%。究其原因,是持久、重复性的手工劳动带来的人员疲劳与厌烦情绪,导致看错行、想休息等现象的产生。经过实际计算可以认定,入库数据整体采集速率提高了12.8倍,准确率上升15%。
船舶食品仓库管理的计算机化和网络化顺应仓储物流精细化管理的发展趋势。系统采用B/S体系结构,客户端界面友好,操作简单,同时系统软件采用构件化设计,在系统的开发中使用标准接口,使得系统具有良好的复用性及可扩展性。该系统的研究与实施,有效减少了人工操作带来的误差,提高了长远航船舶食品保障效率,实现了船舶仓库信息化管理,对我军大型水面舰艇食品仓库信息化管理具有一定的研究价值。
标签:
上一篇: 基于VB和Access的仓库管理系统
下一篇: 基于数据仓库的无线电管理数据中心建设研究