基于SSM的仓库管理系统的设计与实现_第1页
基于SSM的仓库管理系统的设计与实现_第2页
基于SSM的仓库管理系统的设计与实现_第3页
基于SSM的仓库管理系统的设计与实现_第4页
基于SSM的仓库管理系统的设计与实现_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

V绪论研究背景与意义信信息化管理模式主要通过计算机技术转变传统的人工服务,使管理服务更加依赖于技术平台[1]。这一模式由于其操作简易性和便捷性,迅速被广泛采用。用户无需深厚的专业知识,便可根据操作指南使用相关系统,这极大扩展了其应用范围。信息化管理打破了时间和空间的界限,使得人们在任何时间和地点都能完成工作任务。从20世纪70年代末期开始,一些企业通过建立专用内部网进入了电子商务领域。这种通过内部网络实现库存和销售管理的做法,加快了业务流程,提高了工作效率[2]。随着信息技术的不断进步,多个产业已经开始应用网络技术将工作流程数字化和信息化,这不仅提升了工作质量和效率,也节约了人力、财力和物力资源。随着社会对物质文化需求的增加,许多文化相关的服务业得到了发展,电子商务等行业因此得到了快速发展[3]。通过学习和实践,对基础开发系统有了基本了解,掌握了Java语言、Web技术、Ajax技术和HTML等开发技术。还学习了MySQL数据库的相关语法,设计了系统功能模块,并实现了仓库管理系统,包括数据表的建立和表间联系的处理。论文结构本文详细讨论了仓库管理系统从设计到实施的全过程。系统的开发包括几个关键步骤:首先分析研究背景和现状,以确立系统开发的基础和方向;其次是介绍在系统设计中使用的关键技术;接下来是系统需求分析,明确系统应具备的功能;然后进行系统编码,详尽地设计与实施各个功能模块;最后通过系统测试,识别并解决存在的问题,确保系统的持续优化和完善。整个论文内容结构清晰,依次展开这些环节的详细说明。第一章为绪论,主要阐述了本课题的研究背景和目前的研究现状,以便读者能够对本课题的发展历程有一定的认识;并对所采用的软件进行了详细的说明。第二章是对该平台的需求进行了详细的分析,给出了该平台的具体实施方案,并对该平台的各个成员、各个用例之间的相互联系进行了详细的阐述。第三章为本课题的研究,重点围绕整个课题的整体功能进行了详细的阐述,并完成了相关的相关数据表格的编制。第四章为系统实现,用流程图的方式说明了该软件的各个关键功能模块的工作过程;第五章为系统的测试,用测试的方式对相关方法的运行和使用做了具体的试验。第六章是结论部分,经过对论文各个章节的描述,得出了本文的结论,系统的总体设计已经基本完成,在今后的工作中,还会学习并利用更先进的技术,增强系统的实用性,使系统更好地为使用者服务。开发的主要技术及工具VUE框架Vue是一种用于构建使用者接口的渐进式架构。与其它大型框架不同的是,Vue是从底部开始,一层一层地叠加。Vue的核心类库集中在视图层面,这样做不但易于开始,还可以方便地与第三方类库或已存在的工程进行整合。另外,Vue也能让一个成熟的单一网页程序,利用最新的工具链和不同的支援类库。SSM框架Spring+SpringMVC+MyBatis(Spring+SpringMVC+MyBatis)框架集(SpringMVC是Spring的一部分),经常被用来作为简单的Web项目的框架。Spring就像是一座大型的厂房,通过在概要文件中规定构建的方式来装配Bean,并利用特殊的参数来访问一个实体类。或者说它是整个工程的胶水。SpringMVC在工程中截取了用户的要求,它的内核Servlet(DispatcherServlet)作为一个中间人或前端,通过HandlerMapping来实现与该控制器的对应,而控制器则负责根据具体的要求进行相应的动作[4]。mybatis对jdbc进行了封装,使得基础的数据库动作是透明的。mybatis的全部动作都是以sqlSessionFactory实例为中心的。mybatis会把SQL声明映射成单独的实体类的Mapper文件,而这些SQL声明是每一个类都必须要完成的。页面将要求传送给控制单元,而控制器则通过控制单元来执行服务层的操作,而控制单元则会将该要求传送给持续层,而持续性层则会与数据库发生互动,最后将结果反馈给服务层,而服务层则会将处理逻辑传送给控制器,而控制器则会通过这个视图来显示数据。IDEA开发环境软件开发要用到很多语言,每一种语言都要在相应的开发平台上编译并运行。IDEA平台与Eclipse平台是当前应用最为广泛的两个开发环境[5]。与Eclipse相比,IDEA的功能更加强大,效率也更高。IDEA提供更完善的程式码补全与重构能力、程式码巡览与搜寻能力、对多模组专案与多语文开发的支援等。与Eclipse相比,IDEA的用户体验更好、更易使用。IDEA提供更佳的预设设定,以及更佳的导航栏,让您可以更容易地浏览及编辑程式码。IDEA平台以其较低的存储需求和高度的可扩展性受到开发者青睐,允许用户根据个人需求添加和使用各种插件。此外,该平台支持众多开放源码产品和开发框架,广泛用于移动和网络应用系统的开发[6]。相较于Eclipse平台,IDEA提供了更优化的编程和开发环境。MySQL数据库MySQL是一个受欢迎的小型关系型数据库管理系统,它因运行速度快、内存占用低、开源代码和低维护成本而广泛被开发者采用。其稳定的系统性能和低开发成本使其成为许多中小型网站的首选数据库管理工具。相比之下,SQLServer虽然提供多种数据库许可,包括免费版本,但这些主要用于基础学习和理解关系型数据库管理系统的操作流程。若使用SQLServer的高级功能,用户需支付费用。而MySQL作为一个开源数据库,对用户完全免费,并且支持包括Java、PHP、C++在内的多种编程语言,以及Scheme、Eiffel等其他语言,这种广泛的编程语言支持也是MySQL相较于SQLServer更受欢迎的原因之一[7]。Ajax技术Ajax是2005年由杰西·詹姆斯•加勒特提出的“新”方法,它包含了HTML、XHTML、CSS、JavaScript、DOM、XML、XSLT,尤其是XMLHttpRequest[8]。系统分析可行性分析经济可行性关键性因素之一在于研发系统的经济可行性,主要通过分析实际效益与成本来评估。如果系统投入后的收益超过其开发成本,这表明该系统的研究与开发经济上是可行的[9]。该系统主要使用开源技术,因此技术支持广泛且成本较低,实现成本可能接近零。研发成本主要涉及市场调研、硬件投入及技术人员成本。对于数据存储需求较小的情况,配置普通服务器即可满足需求。对于大数据量的存储需求,则需要进行更高配置的服务器,如专用的数据库服务器和处理网络访问的服务器,虽然这些服务器成本较高。为了平衡数据量与成本,选择了小规模的集群服务器,以优化资源使用并保证系统对服务器的稳定访问。技术可行性Java语言的跨平台特性使得采用SSM框架的系统能够在不同的操作系统和多种浏览器上运行[10]。此外,MySQL数据库能够高效处理大量数据,得益于其高效的索引系统和查询优化器,这显著提升了数据处理的效率和性能。在我的学术期间,我已经学习并精通了Vue框架、SSM框架、MySQL数据库和Ajax技术,因此技术上来说,开发这个系统是可行的。操作可行性本系统采用的网络结构为Vue,开发者可直接对相关代码进行多路复用,或对原代码稍作修改,使之符合本系统的相关要求,这样可以极大地节省开发时间,以最佳、最快的速度完成系统设计[11]。按照传统操作,用户首先需下载某一个客户端,接下来才能访问该系统。现如今,这一刷新模式使得用户可以直接点击网站上的链接,而无需下载软件,从而方便地进入并使用所推出的系统。另外,操作者也可以根据自己的实际工作需求,选择相应的功能性按键。对此软件的描述都十分深入,不仅详细解释了其特点,还对它提供了全面的解读。因此,设计与部署这款软件具有可行性。需求分析用例模型用例图是用来描述系统功能要求的一种UML图。用例图主要用来展示系统中不同角色(角色)和系统的相互作用,以及系统各功能模块(使用案例)间的联系。员工用例图如图2.1所示。图2-1员工用例图(1)登录:员工注册后登录,成功后可修改个人信息并退出。(2)公告管理:员工可以看到管理员张贴的通知。(3)供应商信息管理:员工可以查看供应商名称,联系人姓名、手机号、地址、供应商类型信息,也可以查看供应商的信用等级。(4)商品管理:员工可以看到供应商的名字和型号,还可以看到产品的号码,名字,照片等。(5)出入库管理:员工可负责货物的入库和出库。(6)商品进货管理:员工可以查看进货的基本信息,并且下载进货单。(7)商品退货管理:员工可以下载退货单,可以查看退货的基本信息。管理员用例模型管理员用例图如图2-2所示。图2-2管理员用例图(1)查看系统首页:管理员可以查看首页。(2)个人中心:系统管理员有一个固定的账号,登录成功之后,可以修改自己的个人信息和密码。(3)管理员管理:管理员可新增删除管理员,还可查看各管理员信息并且修改管理员信息。(4)基础数据管理:管理员可对公告类型,供应商种类,供应商信用级别,进货种类,退回种类,物品类型等进行添加和修改。(5)公告管理:管理员可以添加、修改和查询通知的基本信息。(6)供应商信息管理:管理员可查看供应商基本资料,还可添加、修改、查询供应商信息。(7)商品管理:管理员可查看项目基本信息、添加、修改、修改、查找等操作。(8)出入库管理:管理人员可以使用进、出库操作,还可以查看商品出库的进本信息,还可以进行添加、删除、修改、查找等操作。(9)商品进货管理:管理员可查看仓库商品的基本资料,并可下载仓库单。(10)商品退货管理:管理员可查看退货基本资料,并可下载退货单。(11)员工管理:管理员可以对员工的账号状态进行修改,也可以对员工账号进行增删改查的操作。类对象模型该系统主要包含以下实体类:员工、供应商、进货单、货物进出库、公告、管理员。图2-3系统类图在这个系统中,员工与供应商、进货单、商品、公告以及管理员之间的关系如下:每个员工可以关联多个供应商,但每个供应商只与一个员工关联。员工可以拥有多个进货单,而每个进货单只属于一个员工。商品的查看权限是双向的,即员工可以查看多个商品,同时一个商品可以被多个员工查看。同样,公告的查看也是互通的,一个员工可以查看多个公告,而一个公告可以被多个员工查看。在管理层面,多个管理员可以管理同一个员工,同时一个管理员也可以管理多个员工。相关的系统类图在文档的第2.3节展示。交互模型交互模型主要用于员工和仓库管理系统之间的动态交互,它可以清楚地显示所有员工在访问整个系统时的处理方式,并可以帮助系统开发人员访问整个系统。正确申请的过程,知道每一个事件发生的正确顺序,员工商品入库时序图、员工商品出库时序图分别如图2-4、图2-5所示。1、员工入库商品时序分析图2-4员工商品入库时序图如图2-5描述了员工商品出库的过程。图2-5员工商品出库时序图系统设计系统功能设计系统的功能设计采用Java语言,通过MySQL数据库对数据进行管理,采用Ajax技术来完成对数据的实时处理。其次,在IDEA的开发平台上,先写出对应的Java源代码,接着利用Connectivity语言建立一个数据库,接着通过该平台所附带的Tomcat插件实现信息的交换,最终将该系统在浏览器中开启,即可使用该系统。在这个系统里,使用者可以被分成两个部分,一个是使用者,一个是使用者,在这个使用者当中,使用者有登录、浏览资料、发表评论的功能,使用者可以由使用者的资料进行变更,使用者的资料也可以由使用者来张贴,系统功能设计图如图3-1所示。图3-1系统总体功能设计图数据库设计概念设计在数据库设计的各个环节中,概念设计阶段不仅构成了成功实现逻辑设计的基石,而且也是根据用户参与水平来明确数据处理的实际需求,是确保数据库设计质量达到预定目标的关键因素。“概念设计主要目标是将真实环境中积累的需求转为具有抽象性的信息结构。这种结构能真实地揭示真实生活中实体与实体间的连接,同时数据库里面的语法和编码也更为简单易懂和可修改,从而使得相关人员可以轻松地将相关的数据信息保存到数据库中。然后修改和使用它”。提出的新概念模型E-R图(实体-关系图)是数据库设计的一种工具,用于将现实世界的概念转换成数据库的实体设计。这种图形化的表示方法不仅展示了实体间的数据流动,还具有很强的表达能力,帮助开发者识别用户的特定需求。在电子检索系统的建设中,这一工具扮演了关键角色。系统主要包括管理员、用户和消息等功能模块。(1)出入库详情实体和其具备的属性如图3.2所示。出入库详情出入库详情图3-2出入库详情实体属性图(2)商品实体和其具备的属性如图3-3所示。图3-3商品实体属性图(3)商品退货实体和其具备的属性如图3-4所示。图3-4商品退货实体属性图(4)公告实体和其具备的属性如图3-5所示。图3-5公告实体属性图(5)商品进货实体和其具备的属性如图3-6所示。图3-6商品进货实体属性图(6)出入库实体和其具备的属性如图3-7所示。图3-7出入库实体属性图(7)员工实体和其具备的属性如图3-8所示。图3-8员工实体属性图(8)仓库信息实体和其具备的属性如图3-9所示。图3-9仓库信息实体属性图ER图(实体-关系图)是一种在数据库设计中广泛使用的可视化工具,它通过图形化的方式展示了不同实体之间的关系。在这种图中,实体通过矩形表示,属性由椭圆形表示,而实体之间的关系则通过菱形和直线来描绘。这样的设计帮助设计人员清晰地理解数据库的结构,确保实体间的联系准确无误,同时有效地防止数据冗余和不一致,从而满足业务的具体需求。本系统E-R图如图3-10所示。图3-10系统E-R图逻辑设计在该系统的逻辑设计阶段,使用MySQL数据库管理所有相关数据,目的是将之前阶段的概念数据模型转换成关系模型。这种模型以基本表的形式存在,不仅方便存储,还使得开发者在未来可以更有效地进行数据模型的优化和管理。逻辑设计是数据库整体设计中的关键环节,确保所有相关资料都储存在数据库中,并在系统执行函数运算时更新相应的基本表格数据。这样的设计使得数据易于存储和管理,同时保持了结构的整洁和高效。1、字典表:包含系统必须的数据各项属性,主要包括字段、编码、父字段、备注及创建时间。字典表如表3-1所示。表3-1字典表2、公告表:包含公告的各项属性,主要包括公告名称、公告类型、发布时间、公告详情及创建时间。公告表如表3-2所示。表3-2公告表3、仓库信息表:包含仓库信息的各项属性,主要包括仓库编号、仓库名称、联系人信息、仓库类型、供应商信用等级、仓库详情及创建时间。仓库信息表如表3.3所示。表3-3仓库信息表4、商品进货表:包含商品进货的各项属性,主要包括员工id、仓库id、进货单信息、备注、录入时间及创建时间。商品进货表如表3-4所示。表3-4商品进货表5、商品表:包含商品的各项属性,主要包括仓库id、商品信息、单位、类型、商品库存、阈值、所属仓库、录入时间及创建时间。商品表如表3-5所示。表3-5商品表6、出入库表:包含出入库的各项属性,主要包括员工id、出入库流水号、出入库名称、出入库类型、备注、添加时间及创建时间。出入库表如表3-6所示。表3-6出入库表表3-6出入库表7、出入库表:包含出入库详情的各项属性,主要包括出入库id、商品id、操作数量、操作时间及创建时间。出入库详情表如表3-7所示。表3-7出入库详情表8、商品退货表:包含商品退货的各项属性,主要包括员工id、仓库id、退货单、退货单信息、退货时间、退货类型、备注、录入时间及创建时间。商品退货表如表3-8所示。表3-8商品退货表9、员工表:包括员工的名字,员工的电话号码,员工身份证号码,员工头像,员工邮箱,帐户状态,建立时间。员工表见表3-9。表3-9员工表10、管理员表:包含员工的各项属性,主要包括员工姓名、密码、角色及新增时间。管理员表如表3-10所示。表3-10管理员表本章小结本章主要介绍了该软件的主要功能和数据库的实现。通过对整个系统的总体结构进行了详细的分析,并对其进行了详细的分析,并对其进行了详细的阐述。将数据库的设计分为两个部分:将现实中存在的数据转换成在信息化环境下的概念模型;该软件的功能设计是否合理,对代码的编写与执行有很大的影响。而在此基础上,建立一个符合标准的数据库,既是一个系统能够正常运作的基本保障,又是进行人机互动的一个关键条件。系统实现管理员功能模块实现管理员登录管理员可通过任意浏览器访问网址并准确填写信息后,便能以管理员身份登录并行使相应的管理权限。管理员的登录界面的设计展示在图4.1中。图4-1管理员登录界面代码如下:publicRlogin(Stringusername,Stringpassword,Stringcaptcha,HttpServletRequestrequest){UsersEntityuser=userService.selectOne(newEntityWrapper<UsersEntity>().eq("username",username));if(user==null||!user.getPassword().equals(password)){returnR.error("账号或密码不正确");}Stringtoken=tokenService.generateToken(user.getId(),username,"users",user.getRole());Rresponse=R.ok();response.put("token",token);response.put("role",user.getRole());response.put("userId",user.getId());returnresponse;}商品管理管理员可以通过商品管理功能对相关商品信息进行管理,例如查看商品标题、修改商品来源等操作,商品管理界面设计如图所示。如图4.2和4.3所示。图4-2商品管理界面图4-3商品管理界面代码如下:publicRsave(@RequestBodyShangpinEntityshangpin,HttpServletRequestrequest){logger.debug("save方法,Controller:{},shangpin:{}",this.getClass().getName(),shangpin.toString());//获取当前用户角色Stringrole=String.valueOf(request.getSession().getAttribute("role"));//永远不会进入的条件可以删除//if(false)returnR.error(511,"永远不会进入");//构建查询条件,检查商品是否已存在Wrapper<ShangpinEntity>queryWrapper=newEntityWrapper<ShangpinEntity>().eq("gongyingshang_id",shangpin.getGongyingshangId()).eq("shangpin_name",shangpin.getShangpinName()).eq("shangpin_danwei",shangpin.getShangpinDanwei()).eq("shangpin_types",shangpin.getShangpinTypes()).eq("shangpin_erji_types",shangpin.getShangpinErjiTypes()).eq("shangpin_kucun_number",shangpin.getShangpinKucunNumber()).eq("shangpin_yuzhi",shangpin.getShangpinYuzhi()).eq("shangpin_cangku",shangpin.getShangpinCangku());("sql语句:{}",queryWrapper.getSqlSegment());//查询商品是否已经存在ShangpinEntityshangpinEntity=shangpinService.selectOne(queryWrapper);if(shangpinEntity==null){//设置商品的插入和创建时间shangpin.setInsertTime(newDate());shangpin.setCreateTime(newDate());shangpinService.insert(shangpin);returnR.ok();}else{returnR.error(511,"表中有相同数据");}}代码说明:shangpin是一个包含要保存的商品实体信息的ShangpinEntity对象,request是当前的HttpServletRequest对象。首先,通过logger.debug()方法打印调试信息,包括控制器名称和要保存的商品实体信息。然后,获取用户角色并将其转换为字符串类型存储在变量role中。如果条件为false,则直接返回错误信息。首先,创建一个查询条件包装器queryWrapper,使用EntityWrapper类来构建查询条件,依据供应商ID、商品名称、商品单位、商品类型、二级商品类型、库存数量、阈值和仓库进行匹配。接着,打印生成的SQL语句。随后,通过调用shangpinService.selectOne(queryWrapper)方法,根据构建的查询条件从数据库中查找是否存在相同数据,并将结果存储在shangpinEntity变量中。如果shangpinEntity为null,说明数据库中不存在相同的数据,则设置插入时间和创建时间,并调用shangpinService.insert(shangpin)方法执行插入操作,最后返回成功的结果。若shangpinEntity不为null,则表示数据库中已存在相同数据,此时返回错误信息。公告管理管理员可以选择公告管理,对相关的公告信息进行管理,如查看公告详情、删除错误公告信息、发布公告等,公告管理界面如图4-4所示。图4-4公告管理界面代码如下:publicRsave(@RequestBodyGonggaoEntitygonggao,HttpServletRequestrequest){logger.debug("save方法,Controller:{},gonggao:{}",this.getClass().getName(),gonggao.toString());//检索当前用户角色Stringrole=String.valueOf(request.getSession().getAttribute("role"));//构建查询条件,检查是否存在相同的公告Wrapper<GonggaoEntity>queryWrapper=newEntityWrapper<GonggaoEntity>().eq("gonggao_name",gonggao.getGonggaoName()).eq("gonggao_types",gonggao.getGonggaoTypes());("SQL语句:{}",queryWrapper.getSqlSegment());//检查数据库中是否已存在相同公告GonggaoEntityexistingGonggao=gonggaoService.selectOne(queryWrapper);if(existingGonggao==null){//设置插入和创建时间gonggao.setInsertTime(newDate());gonggao.setCreateTime(newDate());gonggaoService.insert(gonggao);returnR.ok();}else{returnR.error(511,"表中有相同数据");}}代码说明:gonggao是一个包含要保存的公告实体信息的GonggaoEntity对象,request是当前的HttpServletRequest对象。首先,通过logger.debug()方法打印调试信息,包括控制器名称和要保存的公告实体信息。然后,获取用户角色并将其转换为字符串类型存储在变量role中。如果条件为false,则直接返回错误信息。然后,打印生成的SQL语句。接着,使用gonggaoService.selectOne(queryWrapper)方法根据查询条件查询数据库中是否已存在相同的数据,并将结果存储在gonggaoEntity变量中。如果gonggaoEntity为null,表示不存在相同数据,则设置插入时间和创建时间,并调用gonggaoService.insert(gonggao)方法执行插入操作。最后,返回成功结果。如果gonggaoEntity不为null,表示已存在相同数据,则返回错误信息。公告类型管理管理员可以通过公告类型管理功能,处理相关的通告类别信息,如查看所有通告类别、删除不需要的通告类型、修改通告类型或新增通告类型。公告类型管理界面的设计展示在图4-5中。图4-5公告类型管理界面代码如下:publicRupdate(@RequestBodyDictionaryEntitydictionary,HttpServletRequestrequest)throwsNoSuchFieldException,ClassNotFoundException,IllegalAccessException,InstantiationException{logger.debug("update方法,Controller:{},dictionary:{}",this.getClass().getName(),dictionary.toString());//更新字典条目dictionaryService.updateById(dictionary);//更新后重新获取全部字典数据以更新ServletContext中的数据List<DictionaryEntity>dictionaryEntities=dictionaryService.selectList(newEntityWrapper<DictionaryEntity>());ServletContextservletContext=request.getServletContext();Map<String,Map<Integer,String>>dictionaryMap=newHashMap<>();//构建字典数据映射for(DictionaryEntityd:dictionaryEntities){Map<Integer,String>indexMap=dictionaryMputeIfAbsent(d.getDicCode(),k->newHashMap<>());indexMap.put(d.getCodeIndex(),d.getIndexName());}servletContext.setAttribute("dictionaryMap",dictionaryMap);returnR.ok();}代码说明:该方法接收两个参数:dictionary和request。dictionary是一个包含要更新的字典实体信息的DictionaryEntity对象,request是当前的HttpServletRequest对象。首先,通过logger.debug()方法打印调试信息,包括控制器名称和要更新的字典实体信息。然后,使用dictionaryService.selectById(dictionary.getId())方法根据传入的字典实体ID查询原先的数据,并将结果存储在oldDictionaryEntity变量中。接下来,调用dictionaryService.updateById(dictionary)方法根据id更新字典表数据。如果字典表修改了数据,则重新查询所有数据并放入监听器中。首先,使用dictionaryService.selectList(newEntityWrapper<DictionaryEntity>())方法查询所有的字典实体数据,并将结果存储在dictionaryEntities列表中。然后,创建一个空的HashMap对象map,用于存储字典表数据的映射关系。遍历dictionaryEntities列表中的每个字典实体,将其对应的索引和名称添加到map中。最后,将map设置为ServletContext的属性,以便在其他地方使用。最后,使用R.ok()构建成功的结果并返回。仓库管理如图4-6显示的就是仓库供应商管理页面,本页为管理员提供了以下功能:新增仓库供应商资料,修改供应商资料,删除供应商资料。图4-6仓库供应商信息管理页面代码如下:publicRdelete(@RequestBodyInteger[]ids,HttpServletRequestrequest){logger.debug("deletemethod,Controller:{},ids:{}",this.getClass().getName(),Arrays.toString(ids));//执行批量删除操作gongyingshangService.deleteBatchIds(Arrays.asList(ids));returnR.ok();}代码说明:首先,通过logger.debug()方法打印调试信息,包括控制器名称和要删除的供应商ID数组。然后,使用gongyingshangService.selectBatchIds(Arrays.asList(ids))方法根据传入的ID数组查询要删除的供应商信息,并将结果存储在oldGongyingshangList变量中。接下来,调用gongyingshangService.deleteBatchIds(Arrays.asList(ids))方法进行批量删除操作,将传入的ID数组转换为列表形式作为参数传递。最后,使用R.ok()构建成功的结果并返回。仓库类型管理如图4-7显示的就是仓库类型管理页面,此页面提供给管理员的功能有:新增仓库类型,修改仓库类型,删除仓库类型。图4-7仓库类型管理页面出入库管理如图4-8和4-9所示,出入库管理页面为管理员提供了功能,包括追踪商品出入库处理的员工信息、查看出入库商品的详细信息以及进行修改、添加和删除操作。图4-8出入库管理页面图4-9出入库详情管理页面代码如下:publicRpage(@RequestParamMap<String,Object>params,HttpServletRequestrequest){logger.debug("page方法,Controller:{},params:{}",this.getClass().getName(),JSONObject.toJSONString(params));//根据角色添加额外的查询参数Stringrole=String.valueOf(request.getSession().getAttribute("role"));if("员工".equals(role)){params.put("yuangongId",request.getSession().getAttribute("userId"));}//检查并清理查询参数CommonUtil.checkMap(params);//执行分页查询PageUtilspage=shangpinChuruInoutService.queryPage(params);//字典数据转换List<ShangpinChuruInoutView>list=(List<ShangpinChuruInoutView>)page.getList();for(ShangpinChuruInoutViewc:list){dictionaryService.dictionaryConvert(c,request);}returnR.ok().put("data",page);}//检查出入库名称是否已被使用publicRcheckShangpinChuruInoutName(StringshangpinChuruInoutName){Wrapper<ShangpinChuruInoutEntity>queryWrapper=newEntityWrapper<ShangpinChuruInoutEntity>().eq("shangpin_churu_inout_name",shangpinChuruInoutName);if(shangpinChuruInoutService.selectOne(queryWrapper)!=null){returnR.error(511,"出入库名称已被使用");}returnR.ok();}系统测试测试概述在该软件正式上线之前,系统需要经过细致的调整。测试人员在评估过程中需要检查系统界面是否简洁友好、用户账户信息是否安全可靠、系统性能是否稳定持续,以及其功能是否真正满足用户的需求。系统测试不仅要识别系统运行中的潜在问题,还需分析问题的原因并提出相应的解决方案。系统测试通常分为黑盒测试和白盒测试两种类型。黑盒测试,也称为功能测试,测试者无需了解代码,主要通过界面操作来检测系统功能。与此相对,白盒测试则基于编程人员的视角,要求测试者了解代码的逻辑路径和程序状态,以确保系统的实际状态与设计规范一致。测试结果测试的环境是使用一台低配置的电脑或者笔记本,配置Windows7或者以上的操作系统环境为Windows7或者更高版本的操作系统环境,在浏览器中输入本系统的网址,若能正常进入本系统的主页面,则说明本系统可以成功测试。该系统主要采用功能测试法,对系统功能进行测试。测试流程图如图6.1所示。图5-1测试流程图1、员工功能测试如表5-1所示。表5-1员工功能测试表序号功能名称步骤期望测试结果1员工登录登录界面填写用户名及密码密码或用户名填写有提示,成功进入主界面填写错误有提示,成功进入选择角色为”员工”,点击”登录”选择错误有提示,选择用户对应正确角色后跳转至主页面选择错误有提示,成功登录并成功跳转2修改密码在个人中心选择修改密码成功修改成功修改输入原密码、新密码确认密码,点击”确定”原密码输入错误、新密码两次不一致有对应提示,成功修改成功修改,提示下次登录生效3公告管理公告名称关键词查询对应数据筛选成功成功查询公告类型查询对应数据筛选成功成功查询4出入库管理出库新增,输入订单名、选择商品类型并添加后点击”提交”成功提交并更新页面成功提交并更新页面入库新增,输入订单名、选择商品类型并添加后点击”提交”成功提交并更新页面成功提交并更新页面5商品进货管理点击”新增”,跳转到新增进货单页面成功跳转成功跳转填写信息点击”提交”成功提交,跳转回”进货管理”页面并自动刷新成功提交,跳转回”进货管理”页面并自动刷新6商品退货管理点击”新增”,跳转到新

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论