APP下载

基于MVC模式S2SH框架的库存管理系统

2014-02-09李利民

实验室研究与探索 2014年11期
关键词:库位出入库盘点

申 斌, 李利民

(1. 中北大学 计算机与控制工程学院, 山西 太原 030051; 2. 山西汾西重工有限责任公司, 山西 太原 030027)

0 引 言

随着制造能力的不断提高和市场激烈的竞争,零件制造和装配任务越发艰巨,物资采购及物料配送的压力也随之增加,同时对库房管控及信息系统的要求也越来越高,要求用最快的速度来反映市场多样化的需求。

因此,厂商需要建设库存管理系统。本文研究库存管理系统的目的是提升库存的周转效率,减少库存积压,降低企业总体成本;使管理层随时可以掌握库存的信息,以此来做出正确的采购计划;尽快把业务人员从手工账本管理的繁琐事务中解脱出来,减轻业务人员的工作量,提高企业管理的效率。

1 相关技术简介

1.1 MVC设计模式

MVC是XeroxPARC[1]施乐帕克研究中心在上世纪80年代为编程语言Smalltalk-80[2]发明的一种软件设计模式,即模型-视图-控制器(MVC)[3]:其中M (model模型)主要有三层结构,业务层,dao层和持久层,主要由Java类来实现,也可以是Java bean、ejb等。业务层是处理业务逻辑的;dao[4]层是数据访问对象,对数据库操作的类,一般不包含业务逻辑;数据持久层可以通过Hibernate框架来实现;V(view视图/界面),用来显示数据;C(controller控制器),控制器主要是用于接收用户的请求(数据),然后去调用model层的类来处理用户的请求并返回数据,最后控制器用相应的视图显示模型返回的数据,并通过浏览器呈现给用户。这三层(业务层-dao层-持久层)不一定都存在,主要看实际项目的规格和需求。MVC设计模式强制性地将系统分了三个大层(模型-视图-控制器),降低了耦合度,便于系统的维护和扩展[5],如图1所示。

1.2 S2SH框架

S2SH框架就是Struts2+Spring+Hibernate这三种框架整合的技术。其中Spring处于三大框架的核心地位,通过Spring可以和Struts2向上整合[6],同时也可以和Hibernate向下整合。这样Web层,业务层,DAO层,持久层就通过Sping完美地结合在一起,使程序的耦合性降低,提高了程序的扩展性,维护性,重用性[7],如图2所示。

1.2.1Struts2

Struts 2是一个用来开发MVC应用程序的框架,在WebWork 2[8]基础上发展而来的,Struts 2的应用可以不依赖于ServletAPI和StrutsAPI,Struts 2的设计属于无侵入式设计。与Struts 1相比,Struts 2有以下优点:

(1) 类更少,更高效,在Struts 2中无需使用“ActionForm”来封装请求。

(2) Struts 2通过拦截器完成了框架的大部分工作,在Struts 2中插入一个拦截器非常容易。

(3) 不使用浏览器也可以对Struts 2的应用进行测试。

(4) Struts 2提供了类型转换器,可以把特殊的请求参数转换成需要的类型。

(5) Struts 2提供了支持多种表现层技术,如JSP,FreeMarker。

(6) Struts 2提供了全局范围,包范围和Action范围的国际化资源文件管理实现。

1.2.2Hibernate

Hibernate是一个ORM框架,ORM是对象关系映射的框架[9],其中O是object业务层(只对对象操作);R是relation关系数据库;M是mapping对象关系映射文件。Hibernate处于我们项目持久层的位置,并且对jdbc进行了轻量级的封装[10],它的基础是Java反射机制。Hibernate包括和数据库的各种操作,保存、更新、删除、查询、加载。

用Hibernate操作数据的流程。① 创建持久化类,② 创建对象关系映射文件(*。Hbm.xml),③ 创建Hibernate配置文件(hibernate.cfg.xml),④ 通过HibernateAPI编写访问数据库的代码。

1.2.3Spring

Spring是一个开源的控制反转(Inversion of Control,IOC)[11]和面向切面(AOP)的容器框架,它的主要目的是简化企业开发。

控制反转:应用程序本身不提供依赖对象的创建和维护,外部容器提供依赖对象的创建和维护[12]。即控制权从应用程序转移到外部容器,也就是控制权的转移。Spring的优点有:

(1) 降低组间之间的耦合度[13]。

(2) 开发人员可以使用容器提供的服务,如:事物管理服务,消息服务等,JSM服务,持久化服务。

(3) Spring提供了单例模式,程序员可以不编写实现代码,并且可以提高程序的开发效率。

(4) Spring提供了AOP技术[14],可以实现拦截,监控等功能。

(5) Spring提供了许多类,开发人员可以加快对应用程序的开发,如JdbcTemplate.

(6) Spring可以集成其他的主流框架。例如Struts2,Hibernate等。

2 基于S2SH的库存管理系统的设计

2.1 需求分析

要求对材料、标准件、元器件、零组件、外购件等与生产相关的各类数据的资源统一管理;实现电子记账,摆脱手工的管理模式;同时支持多种生产模式并存下的库存业务。实现按批次管理库存物料,记录出入库产品信息,并为检验人员提供到货检验、库存区域检验、出库检验等功能。改善企业运行规则和思维模式的配套服务,有效地提高库存管理效能。实现从物流决策、业务流程的全程信息化,对物流过程进行严格和科学的管理,实现企业收益的最大化。

2.2 系统的功能分析

系统包括五个功能模块:系统管理,基础数据管理,台账管理,出入库管理,盘点管理。系统功能结构图如图3所示。

2.2.1系统管理

(1) 系统权限管理。为了系统安全考虑,给用户分配一些角色,使用户只能访问自己被授权的资源,禁止访问其它角色的资源,可以最大限度地保证系统的安全、数据的安全。允许超级管理员添加和删除用户,查看员工的相关信息。

(2) 系统设置。主要是对系统应用的功能和权限等配置文件进行定义,包括配置文件的定义,配置文件系统值管理,配置文件用户值管理。

2.2.2基础数据管理

(1) 库房定义。将物理上的实际库房映射到系统中的逻辑库房,设置库房的属性、所属部门、库房名称、库房代码、库房类型及所属部门等。

(2) 库位定义。用于确定某个库房中包含多少库位,以及每个库位的库位类型。系统中提供了固定库位和灵活库位两种定义方式,主要信息有:库房号、库位号、库位类型、物料号、有效性等。

2.2.3台账管理

(1) 库存台账查询。可以按库房、事务类型、登账日期、物料等条件查询出入库流水信息。系统支持汇总查询和明细查询两种方式。

(2) 出入库调整。当出入库登记完成后,如果本期还没有进行库存结转,可以通过此模块撤销出入库登记操作,系统将恢复库存数据以及原始单据数据,工作人员可重新进行业务处理。系统记载出入库调整日志并且能够查询。

2.2.4出入库管理

(1) 采购入库管理。对于成品件,到货登记后先进行检验,检验合格的,保管员将产品上架,登记三期,确认入生产库;除了成品外的其它器件,采购到货之后先入待验库房,待验保管员根据站台维护的到货信息,清点数量、核对单据等信息。如果相关信息正确,接收材料入待验库,维护入库数量、库位等信息。

(2) 配套批料。

① 库房计划员在审批批次配套领料单时,需要平衡各使用单位的配套情况,在确保均衡生产的情况下,应该合理分配库存资源,审批各使用单位的领料单。

② 计划员批料时选择领用车间、批次、库存台账等信息,批料确定后,系统生成批料编号,库存的资源被占用,虽然库存数量并不会减少,但是其他配套单已经不能使用这些资源。

③ 系统可以设置库存占用期限参数,如果占用超期后则自动取消配套,恢复库存可使用状态。

④ 同时系统还可以提供对被占用库存资源的查询功能,方便工作人员及时查询库存资源占用情况,避免库存资源被长期占用而不能有效利用。

2.2.5盘点管理

(1) 盘点结果录入。保管员根据盘点清单清点库房的物资,并且将清点结果录入到系统中,输入界面与盘点清单一致,保管员只需输入盘点数量即可。对于账物相符的盘点记录,可以解除台账冻结状态;对于账物不符的盘点记录需要提交财务人员审核。

(2) 盘盈盘亏调整。可以对盘点结果进行调平处理,系统更新当前库存数量为实物数量,同时生成出入库流水账EXCEL文件,并将调整结果提交给财务人员。

3 库存管理系统平台关键技术的实现

3.1 Web层的实现

这一层的关键技术点主要是把Spring和Struts2集成,在导入的所有jar包中必须包含一个jar包(即struts-spring-plugin-2.x.x.jar),用于Struts2集成Spring的插件。首先要在web.xml中配置,先对Spring容器实例化,再把Struts2的框架启动代码写到web.xml中,通过filter来启动Struts2框架。Web.xml的配置如下:

contextConfigLocation

classpath:spring.xml

org.springframework.web.context.ContextLoaderListener

struts2

org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter

struts2

/*

新建一个struts.xml,设置一个常量struts.objectFactory的作用是使用Spring这个对象工厂类替换掉Struts2默认的对象工厂类,也就是说由Spring来创建和维护action。在action类中class属性原先由Struts2创建,现在由Spring创建,格式是class=“action bean名称”。其struts.xml的配置如下:

"spring" />

3.2 业务层的实现

首先在productService.java中声明一些方法(添加,显示列表,删除,更新等),这也就是我们常说的DAO接口。

public interface ProductService

{public void addProduct(Product p);

public List showProduct();

public void updateProduct(Product p);

public void delProduct(java.io.Serializable id);

}

然后在Spring中配置一个productServiceimp对象,让Spring来接管它,体现出Spring对bean的管理和维护。其spring.xml的配置如下:

hibernate.dialect=org.hibernate.dialect.OracleDialect hibernate.generate_statistics=true

在productServiceimp中实现dao的方法,把Spring注入到sessionFactory,可以更好的管理,使项目开发简单。在productServiceimp里设置sessionFactory的get和set方法,前边已经在spring.xml配置了相关bean,可以直接使用这个对象而不用再新建一个对象。部分实现代码如下:

Public class ProductServiceimp implements Product-

Service

{ private SessionFactory sessionFactory;

public SessionFactory getSessionFactory()

{ return sessionFactory;}

public void setSessionFactory(SessionFactory sessionFactory)

{this.sessionFactory = sessionFactory;}

public void addProduct(Product p)

{Session session=sessionFactory.openSession();

……}

3.3 持久层的实现

这一层关键技术是Hibernate和Spring集成。用扫描加注释的方式把bean交给Spring管理,可以加快开发速度。

其spring.xml的配置如下:

不但cn.mao这个包会扫描到,而且只要是以cn.mao开头的包都会扫描到。Spring需要接管Hibernate的事务管理服务,打开Hibernate的事务实际上操作的是Spring的事务,是基于注解的方式配置事务的。虽然本文采用oracle数据库,但是要更换其它数据源非常的方便[15],例如:mysql,sqlserver,不需要大范围的更换代码。

4 结 语

本文以某公司的库存管理系统为例,研究并实现了基于MVC模式S2SH框架的库存管理系统。并实现了Spring和Struts2的向上集成,Spring和Hibernate向下整合,实现了松耦合的软件框架[16]。弥补了Struts2在管理和持久化层面上的不足,体现了Hibernate在持久层面上的优势,也表现出Spring在集成和管理其它框架中的核心地位。三大框架的集成,达到优势互补,提高了系统的可维护性和扩展性。

[1] 李继蕊,杨国勋.Struts和Hibernate多层架构的研究与应用[J].武汉理工大学学报(交通科学与工程版), 2008,31(6):1106-1109.

LI Ji-rui,YANG Guo-xun.The research and application of multitier architecture of Struts and Hibernate[J].Journal of Wuhan University of Technology(Transportation Science and Engineering),2008,31(6):1106-1109.

[2] 刘铭徽.基于Struts与Hibernate框架的图书管理系统研究与设计[J].安徽大学学报(自然科学版),2009,11(3):36-38.

LIU Ming-hui.The research and design of library management based on the framework of Struts and Hiber- nate[J]. Journal of Anhui University of Technology(Natural Science Edition),2009,11(3):36-38.

[3] 李 莹,王甲民.一种基于Petri—Net的新型MVC模式及实现[J].计算机工程与应用,2007,43(17):202-205.

LI Ying,WANG Jia-min.A new pattern and realization of MVC based on Petri-Net[J]. Computer Engineering and Applications,2007,43(17):202-205.

[4] 赵 伟,王志华,周 兵.基于MVC的e-ERP系统的设计与实现[J].计算机应用与软件,2013,30(2):106-109.

ZHAO Wei,WANG Zhi-hua,ZHOU Bing. The design and realization of e-ERP system based on MVC.Computer and Applications and Software,2013,30(2):106-109.

[5] 马秋成,王凌川.基于MVC模式的生产管理信息平台[J].组合机床与自动化加工技术,2012(5):109-112.

MA Qiu-cheng,WANG Ling-chuan.The platform of management and information based on MVC model [J].Modular Machine Tool and Automatic Manufacturing Technique,2012(5:)109-112.

[6] 李绍平,彭志平.S2SH:一种Web应用框架及其实现[J].计算机技术与发展,2009,9(8):117-119.

LI Shao-ping,PENG Zhi-ping.S2SH:A web-application framework and its realization[J].Computer Technology and Development,2009,9(8):117-119.

[7] 符 钰.基于Struts2+HIbemate3+Spring3框架的 Web 应用研究[J].金华职业技术学院学报,2013,13(3): 61-64.

FU Yu.The research of web based on the framework of Struts2+ HIbemate3+ Spring3[J].Jinhua Vocational and Technical College. 2013, 13(3): 61-64.

[8] 田秀彦,李 忠,罗士美.基于Struts + Hibernate+Spring的整合架构及其在Web开发中的应用[J].计算机与现代化,2008(11):95-98.

TIAN Xiu-yan,LI Zhong,LUO Shi-mei.A integration frame -work and its application in web development bsed on Struts + Hibernate + Spring[J].Computer and Moder -nization ,2008(11):95-98.

[9] 陈 辉,赵洪升,张艳春.Struts+Spring+Hibernate框架的整合实现[J].河南大学学报(自然科学版),2010(6):642-645.

CHEN Hui,ZHAO Hong-sheng,ZHANG Yan-chun. A integration framework and its application bsed on Struts +Spring+ Hibernate[J]. Journal of Henan University of Technology (Natural Science Edition),2010(6):642 -645.

[10] 赵 喆,卞艺杰,李亚冰,等.基于S2SH和SOA科技查新管理平台的设计[J].武汉理工大学学报(信息与管理工程版),2013(1):56-60.

ZHAO Zhe,BIAN Yi-jie,LI Ya-bing,etal.The design of novelty search and management platform based on S2SH and SOA[J]. Journal of Wuhan University of Technology (Informationand Management Engineering),2013(1):56-60.

[11] 邓子云,罗 涛,黄友森.基于Struts2 + Hibernate3+Spring2的物流数据交换平台[J].计算机应用与软件,2009,26(10):88-100.

DENG Zi-yun,LUO Tao,HUANG You-Sen.The plat- form of logistics data exchange based on Struts2+ Hibernate3+Spring2[J].Computer Applications and Soft- ware ,2009,26(10):88-100.

[12] 冯润民.基于SSH的高校学生管理系统设计与实现[J]. 计算机工程,2009(6):280-282.

FENG Run-min.The design and realization of college management system based on SSH[J]. Computer Engi- neering,2009(6):280-282.

[13] 谌湘倩,狄文辉,孙 冬.基于SSH框架与AJAx技术的 JavaWeb 应用开发[J].计算机工程与设计,2009 (10): 2590-2592.

CHEN Xiang-qian,DI Wen-hui,SUN dong.Java Web appli -cation development based on SSH framework and AJAX technology[J].Computer Engineering and Applications, 2009 (10): 2590-2592.

[14] Walls C, Breidenbach R. Spring in action[M]. Dreamtech Press, 2005.

[15] 霍迎秋,唐晶磊,尹秀珍.基于SSH架构的农产品信息交换平台[J].实验室研究与探索,2013,32(5):63-66.

HUO Ying-qiu,TANG Jing-lei,YIN Xiu-zhen.A plat- form of exchanged information of agricultural products based on SSH[J].Laboratory Research and Exploration,2013,32(5):63-66.

[16] 吕 宏,杨 光.一种基于Java及数据挖掘技术的学生管理系统[J].价值工程,2012,31(8):123-124.

LV Hong,YANG Guang.A student management system based on java and data mining technology[J].Value Engineering,2012,31(8):123-124.

猜你喜欢

库位出入库盘点
睁眼瞎盘点
盘点各国网红猫
基于遗传算法的自动化立体车库库位分配
发电企业物资仓库精细化管理的研究和探讨
培训单位的实训库房管理系统的设计
物资设备出入库信息管理系统的设计及开发
基于总搬运量最小的库位分配优化问题研究
盘点与展望
建国以来新年献词盘点
信息技术在医用耗材出入库科学化管理中的应用