APP下载

基于Java Web的DRP系统的设计与实现

2022-05-12朱恒伟

安顺学院学报 2022年2期
关键词:分销商管理员订单

刘 聪 朱恒伟 李 烨

(1.德州学院计算机与信息学院,山东 德州253023;2.山东省立第三医院信息网络部,山东 济南250031)

本系统是符合现代企业需求的B/S结构的系统,前台使用jsp和基于Jquery的框架 Jquery-EasyUI ,界面美观,操作方便。后台使用servlet处理业务逻辑。系统的主要功能模块包括:用户管理模块,实现对用户和岗位信息进行维护;物料管理模块,包括采购单列表、拟定采购单、检验采购单以及供应商和库存物料进行维护;分销商模块,实现对产品、分销商、以及订单配货发货等流程进行维护;数据加密模块,实现对企业重要信息的加密。企业通过本系统,可有效控制仓库原料的质量,并且根据分销商的订单数量和库存产品数量,及时拟定采购单进行采购,对企业来说,DRP系统可以为企业带来巨大的效益。

1 需求分析

针对商贸企业现状,结合DRP的特点,进行开发,整合资源,改善库存质量,扩展销售渠道,达到控制产品质量,提高效益的目的。结合企业目前的情况,确定DRP系统实现以下几方面的功能:对用户信息、采购单数量、价格、供应商信息进行加密;对仓库人员和岗位进行维护,包括仓库管理员、检验员、采购员、产品经理;对采购单、物料、供应商进行维护,包括拟定采购单、检验、入库;对仓库管理人员、分销商登录进行控制;对库存产品、分销商、订单进行维护,包括产品数量、价格,分销商个人信息,订单状态;分销商下单,及时检查该产品是否有库存,分销商下单后,实时更新产品库存数量。

2 系统设计

2.1 系统总体设计

根据软件设计的思想,对DRP系统进行分析,系统包括企业内部仓库管理人员和企业外部分销商两个部门。分为仓库用户信息维护模块、采购单维护模块、订单维护模块、数据加密模块。其中,采购单维护模块主要实现管理员拟定采购单,新增采购单时可以指定采购人,拟定采购日期等;采购员根据管理员拟定的采购单进行采购;检验员对采购的物料进行检验;检验合格后管理员及时入库。订单维护模块主要实现分销商提交订单信息,管理员进行配货、发货、及时更新库存数量等功能。经研究设计出DRP系统的功能。

2.2 类的设计

类图是由于许多类组成的,用图形的形式表示系统结构,软件系统中离不开类的设计。一个进行深入开发时,需要对相关的类进行说明,类图是软件设计和开发时必不可少的图,系统是通过各个类图连接起来,相互协作的。本系统使用的类图较多,无法一一列举,但是每个模块的类图都是相似的,用户模块的类图如图1所示:

BaseDao是公共的接口,它定义了所有模块通用的一些方法,包括添加对象、修改对象、删除对象、通过ID查找返回对应的对象、查询数据库中所有的对象。BaseDaoImpl实现了BaseDao接口,实现了这些公共的方法,这些方法使用反射和泛型来实现的,用户接口UserDao继承自BaseDao,UserDao中还可以定义用户模块中特有的方法,UserDaoImpl 继承自BaseDaoImpl,实现UserDao接口,UserDaoImpl类只需要实现UserDao接口中定义的特有方法就可以了,其他的公共方法都被继承过来了。UserServlet处理相关的业务逻辑,调用UserDaoImpl中相应的方法与数据库交互。User实体封装了相关的数据,与UserServlet是关联关系。

2.3 系统数据库设计

根据系统的功能需求,系统包含10个模型,因为模型封装了数据,与数据库进行交互,所以系统中的模型与数据库中的表是一一对应的,模型中的所有属性对应数据库相应表中的字段。根据对系统分析,包括用户表、采购表、用户-采购表、角色表、供应商表、库存表、物料表、产品表、分销商表和订单表。其中用户购买表是一张中间表,与用户表、采购表和角色表通过外键建立关联关系。根据分析,对数据库中的表做了以下设计:

表1 用户表

表2 采购表

表3 用户-采购表

表4 角色表

表5 供应商表

表6 库存表

表7 物料表

表8 产品表

表9 分销商表

表10 订单表

2.4系统模块设计

2.4.1 用户登录模块设计

用户进入DRP系统的登录界面,在登录界面输入用户名、密码、选择登录角色是仓库人员或者分销商、输入验证码,将登录信息传递到后台。如果是仓库管理人员,会调用DAO层相关方法,查询用户表中是否有相应的记录,如果有相应的记录,会通过用户名查询到相应的用户实体,把用户信息放到session中。并且把登录成功的提示信息以及用户角色信息通过json格式的字符串写回到前台,前台获取到json格式的字符串,提示用户登录成功,并且跳转到仓库人员的管理界面,如果用户表中没有相应的记录,会把错误信息通过json格式的字符串写回到前台,前台获取到json格式字符串,提示用户用户名或者密码错误;如果用户登录时选择分销商登录,会调用DAO层相应的方法,查询分销商表中是否有相应的记录,如果分销商表中有相应的记录,会把登录成功以及用户角色信息通过json格式字符串形式写回到前台,前台获取到json格式字符串,提示用户登录成功,跳转到分销商管理主界面。如果数据库中没有相应记录,前台获取到相应json格式字符串,提示用户用户名或者密码错误。用户登录流程如图2所示:

图2 用户登录流程图

2.4.2 采购管理设计

采购单包括5个状态,在数据库中分别用1到5进行标识。分别表示正在采购中、采购完成,正在检验中、检验完成,产品合格、检验完成,产品不合格、产品已入库。在前台,管理员进入物料模块时,会根据采购单的状态显示不同的信息。采购单由管理员拟定、采购员采购、检验员检验、最后检验合格后由管理员进行入库。管理员进入系统后,会显示所有的采购单状态。拟定采购单时,会弹出采购单对话框,管理员输入采购原料名称,拟定采购日期,采购数量、价格。其中,采购单的数量和价格是加密的,以密文的形式存到数据库中,管理员可以指定采购员进行采购,在弹出对话框时,系统会从数据库中查出所有的采购员列表,然后再前台填充到采购下单列表中,管理员选择其中一个采购员进行采购。采购单拟定之后,会保存到数据库的采购表中。另外用户-采购表只一张中间表,它通过外键和用户表、采购表和角色表进行关联。采购单在采购表中添加之后,会在用户-采购表中添加两条记录,分别是管理员id和采购单id建立的关联关系,以及制定采购员的id和采购单id建立的关联关系。将这两条记录存放到用户-采购表中。方便查询采购单出拟定采购人和采购单的指定采购员。采购员登录系统后,会在采购员任务列表中查询到自己的任务列表,查询过程中,首先获取到session中用户的信息,然后根据采购员的id,通过用户表、采购表、用户-采购表三张表关联,进行多表查询,查询到自己的任务列表,显示在采购员列表中。当采购员确认采购完成时,会在数据库中更新采购单状态,采购单状态变为2。检验员登录后,会在检验单任务列表中看到自己的检验任务列表,如果检验合格,检验员操作后,采购单的状态变为3,如果检验为不合格,检验员操作后,采购单的状态变为4。管理员会检查检验合格的采购单,及时进行入库,入库后,采购单的状态变为5。采购单的流程图如图3所示:

图3 采购单流程图

2.4.3 订单管理设计

订单包括5个状态,分别是等待处理、已处理、已发货、仓库缺货、已完成。分销商登录之后,系统转向分销商管理界面,订单列表中会显示已经提交订单的处理状态,每种状态用不同的颜色显示出来,便于查看。分销商首先添加新订单,分销商点击新订单,会弹出对话框,要求输入产品货号、收货人姓名、收货人地址、收货人电话等信息,输入产品货号之后,会通过AJAX向后台发送一条请求,同时这在提交产品货号页面设置一个全局变量flag,根据分销商输入的产品货号,查找库存产品表中是否存在该产品,如果存在该产品,提示分销商“产品货号填写正确”,同时flag的值设置为true,如果找不到该产品,会提示分销商产品“该产品货号不存在,请重新填写”,同时flag的值设置为false。分销商填写完相应订单信息后,如果flag的值为true,则提交表单到后台进行处理,否则无法提交。提交订单后,后台为每个订单生成一个UUID,代表唯一的订单编号,保存到数据库中。分销商每次下一个订单,库存中相应产品的数量就会减少一个。下单时更新库存采用观察者模式,观察者模式包括观察者和目标,目标首先把观察者对象放到list集合中。当新订单调用数据层的方法保存后,目标会通知观察者对象。在通知的方法中,会遍历目标类中list集合中的所有观察者对象进行更新库存操作。把产品货号作为参数传递到更新库存方法中,然后根据产品货号在数据库中查出该产品的库存数量,进行减一操作,把减一后的库存数量保存到数据库中,执行更新操作。新增订单后,订单状态为等待处理。管理员收到订单后,会通知仓库进行配货,管理员确认已经配货之后,数据库中订单状态更新为2,表示订单为已处理。如果仓库缺货,订单状态会更新为3,表示仓库缺货,等待处理。如果已经发货完成,数据库中订单状态更新为4,订单完成后,数据库中订单状态会更新为5。订单流程图如图4所示:

图4 订单流程图

3 系统实现

3.1 数据访问层的实现

数据访问层,即DAO层,主要完成与数据库访问的实现细节,所有的sql语句都在这一层实现,service层是主要面向功能的,service层所有功能的实现都需要调用DAO与数据库访问来实现。系统中所有常用的方法都在DAO层进行了封装,service层只要调用一下就可以了。系统所有的功能模块都有DAO层,但是所有模块的DAO层都继承自BaseDao,BaseDao使用反射和泛型封装了所有常用的方法,这样可以实现代码的复用。Java中的反射机制是在运行状态的,对于任何一个类,service层只要把对象传递过来,就能通过该对象获取到所属类的所有属性和方法。

3.2用户登录功能实现

进入系统登录界面后,页面会首先向后台发送请求,生成验证码,验证码的生成是随机数字和字母加随机颜色,通过java的图片类生产一张图片。用户每点击一次图片时,也会向后台发送请求,重新生成一次新的验证码。输入用户名和密码,选择登录角色,输入验证码,点击确定,会把输入信息提交给后台,前台和后台使用json格式的字符串进行数据传输。系统登录界面如图5所示:

图5 系统登录界面

3.3 采购管理功能实现

采购单管理包括拟定采购单、采购单采购、检验单检验、入库等操作。管理员登录后台,进入采购单管理模块,会显示出所有采购单的状态。采购员进入后,只会显示自己等待采购的采购单,采购员的采购单上面会显示拟采购单人。检验员进入系统后,在检验模块查看的是待检验的任务列表。采购单管理和采购员任务列表的界面如下:

图6 采购单管理界面

4 系统测试

4.1 用户登录测试

软件测试的核心部分是测试用例,测试用例是为验证软件的某一功能而编写的一组测试输入、操作及预期效果。根据用例的输入,输入与预期效果得对比来测试程序是否正确。用户登录的测试用例如下表11所示:

表11 用户登录测试用例

4.2采购单测试

采购单相关功能的测试用例如下表12所示:

表12 采购单测试用例

4.3 订单测试

订单相关功能的测试用例如下表13所示:

表13 订单测试用例

本次测试选取了用户登录、采购单管理、订单管理三个功能进行黑盒测试,本次测试中,主要发现两类错误,一是程序语法错误,二是逻辑方面的错误。对于语法错误,主要通过java自带的编译程序寻找语法点,逐一解决,对于逻辑错误,主要在运行时设置断点,然后通过断点一步一步跟进,寻找错误点,然后解决。最终使每一个测试用例达到了预期的效果,测试通过。

结 论

DRP系统是企业现代管理系统和现代计算机结合的产物。本文针对目前企业的现状,阐述了DRP系统的产生背景,并且进行了详细的设计和实现。流程清晰、页面简单明了。系统主要在可扩展性和代码复用方面进行了优化,符合软件设计准则。代码复用性强,可扩展性好。能够解决企业目前存在的难题。

猜你喜欢

分销商管理员订单
春节期间“订单蔬菜”走俏
订单农业打开广阔市场
印机制造企业解决渠道冲突的两大维度
可疑的管理员
热水器企业如何化解与分销商的矛盾
“最确切”的幸福观感——我们的致富订单
让管理员管不了的名字
当小小图书管理员
管好你的分销体系有多难?