wps哪个工具做网站今天株洲最新消息

当前位置: 首页 > news >正文

wps哪个工具做网站,今天株洲最新消息,雨云服务器,是不是做推广都得有网站TOC springboot207基于springboot的实习管理系统 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务#xff0c;逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速#xff0c;使用起来非常简单容易#xff0c;用户甚至不用掌握相关的…TOC springboot207基于springboot的实习管理系统 绪论 1.1研究背景与意义 信息化管理模式是将行业中的工作流程由人工服务逐渐转换为使用计算机技术的信息化管理服务。这种管理模式发展迅速使用起来非常简单容易用户甚至不用掌握相关的专业知识根据教程指导即可正常使用相关的系统因而被越来越多的用户所使用。由于相关行业管理信息化这就使得管理工作不在受到时间和区域的限制随时随地即可完成相关的工作任务和结果[1]。就目前而言管理信息化在现代社会中非常流行使用比较广泛。早在20世纪70年代末就出现了早期的电子商务相关的公司企业使用计算机建立专用的内部网络通过内部网络完成相应的采购、销售等活动加快相关的企业之间的交易速度提高了工作效率[2]。 当下许多行业采用互联网技术将工作流程信息化、数字化提高了相关人员的服务质量和效率节约了相关行业的人力、财力、物力等资源与此同时人们获取外界的相关信息主要依赖于主流的信息化技术和工具。人们对生活的需求也在不断的发生着变化为了应对用户的多样化需求许多相关的第三产业应运而生管理信息化也逐渐的流行起来比如电子商务行业。本人通过查询大量学习资料了解基本的开发系统的基本背景和关键任务学习与掌握Java语言、web技术、AJAX技术、HTML语言等开发技术设计系统功能模块以及MySQL数据库的相关语法和工具创建和存储数据表格反映和关联表格之间相互存在的关系由此对实习管理系统进行研发和实现。 1.2国内外研究现状 大概在20世纪90年代我国才开始研发实习管理系统与一些发达国家相比系统研发起步比较晚。当时的计算机技术刚开始发展起来国家经济力量比较薄弱各地区的经济发展水平不平衡再加上相关的网络应用技术不太先进我国也使用了一段较长的时间对网络信息化管理进行探索[3]。近些年因为国家非常重视和支持第三产业的发展以及人们的日常生活需求越来越离不开信息管理技术的使用所以我国的信息管理系统行业发展速度非常快并且相关的体制法规也正在不断地被完善和改进。新时代背景下根据人们的相关需求不断地促进着相关产业的产生与发展一系列电子产品、应用软件、信息管理系统等新时代的产物逐渐出现在人们的视野中并且在近几年发展迅速日渐趋于成熟[4]。 与国内相比国外实习管理系统领域发展较早。国外的计算机技术发展比较成熟所以系统相关的设计也比较完善。19世纪60年代左右国外就开始研发实习管理系统并且不久之后迅速将其投入市场进行使用。美国、英国等一些发达国家快速发展计算机技术促进了实习管理系统管理行业信息化建设[5]。而后随着相关的技术不断地发展覆盖面非常广泛应用领域比较多促进着实习管理系统等相关的信息管理系统不断地发展和完善并且其所设计的系统功能结构也比较合理、全面。相对而言国外系统的研发在相关领域上还是占据着较大的优势[6]。因此我们需要吸收国外系统开发领域中的较好的技术精华发展我国的信息化管理系统使得其面向大众能够更好的、更全面的服务于相关的工作人员。 1.3研究内容 现今互联网在我们的日常生活占据着日益重要的地位我们也越来越离不开对移动设备、电脑等上网设备的使用。传统的实习管理系统模式主要依靠管理人员纯手工记录的相关信息比较繁琐不方便查找也非常容易出现错误。如今如果再通过手工记录实习将大大不利于实习管理系统行业管理相关的实习管理系统信息严重影响实习管理系统行业的发展。因此本人结合传统的实习管理系统业务模式和先进的电子信息管理模式使用Java语言编程设计功能模块AJAX实现前台和后台之间的交互MySQL数据库创建和存储数据表格对实习管理系统进行设计和开发。本系统的设计有利于相关行业实现最大化的资源管理与共享促进相关行业的信息交流、分工合作提高相关工作人员的工作效率最终实现整个实习管理系统行业服务的信息化管理。 1.4论文结构 本文围绕着实习管理系统的整个开发过程展开了详细的描述和说明设计和实现本系统的主要工作有首先分析研究背景、研究状态其次介绍设计系统时使用到的相关技术然后通过系统分析确定系统的功能需求接着通过编码工作详细设计和实现系统最后再通过系统测试找出系统存在的问题和解决问题的方法不断地修改和完善系统。论文内容的组织结构设计如下。 第一章绪论通过介绍本系统的研究背景、研究现状等内容帮助用户了解和认识本系统的发展过程。 第二章相关技术介绍主要介绍了Java语言、B/S模式、MySQL数据库等相关的开发技术为后期系统的功能实现提供技术上的支持。 第三章系统分析分析用户的使用需求以及系统实现的可行性最后通过用例建模分析与系统相关的参与者及其用例之间的关系。 第四章系统设计主要根据系统总体功能设计确定将要设计的系统功能模块设计相关的数据表格。 第五章系统实现通过相关的功能模块运行图展现出系统的主要功能模块操作流程。 第六章系统测试主要使用功能测试的方式测试系统的相关功能运行和使用的具体情况。 第七章总结与展望通过本文的各章节描述总结得出基本上完成了系统的设计展望未来将学习和使用更加先进的技术提高系统的实用性使得系统更好的服务于使用人员。 1.5本章小结 本章主要介绍了课题的研究背景与意义研究现状研究内容等内容最后介绍了本论文的组织结构设计。信息化管理模式顺应了信息化时代的变化本人以现在主流的管理模式为前提根据使用者的相关需求设计出一款符合大众需求的实习管理系统。 2理论基础 2.1 B/S模式 B/S模式Browser/Server是一种比较常用的网络结构模式[7]。B/S模式是由模型、视图、控制器Model-View-ControllerMVC结构组成[8]。模型主要是指业务模型视图主要是指用户界面控制器主要是控制保证视图和模型的同步执行。B/S模式的三层结构是相互独立的换句话说当某一个模块发生修改和更新其不会对其他模块产生影响。根据B/S的这一特点可以将对业务逻辑的处理以及约束条件集中到中间层中便于前端增加对模型和方法的调用和复用。并且可以直接通过中间层对数据库进行相关的操作处理大大减少了数据库的连接数节省了计算机的对相关的资源配置空间。 使用B/S模式可以节省系统资源配置提高研发工作效率减少开发时间因而大大提高了我们开发软件的可能性。B/S模式有针对性的改变了传统的客户端/服务器模式Client/ServerC/S模式也可以说这是对C/S模式进行了扩展。在这种结构模式中用户不用再向使用C/S模式一样下载客户端其可以直接通过使用浏览器的方式打开网站地址即可访问和使用相关的系统功能服务。 2.2 IDEA开发环境 软件开发使用的编程语言有许多种而每种编程语言需要通过与其相对应的开发平台进行编译和运行。IDEA平台都是目前比较常用的开发环境。IDEA平台是开源的具有功能强大、可扩展性强等特点可以应用于C/S模式软件的开发但是它所占据的内存容量比较大运行较慢并且其并未提供Tomcat服务器运行过程中需要将代码发布到Tomcat服务器中测试使用的时间较长故而不太适用于B/S模式软件的开发。 IDEA平台是建立在IDEA平台的基础之上增加了许多的应用插件比如Tomcat插件、mail组件等。IDEA平台增加了Tomcat插件代码编写完成或者更新完成时程序员无需将代码发布到Tomcat服务器中可以直接通过调试实现程序的运行。IDEA平台增加了Mail组件该组件可以为本程序提供标准的邮件方法便于开发人员完成与邮件功能相关的编译工作。IDEA平台占据的内存空间较小同时其也具有较高的可扩展性编程人员可以根据需要添加和使用相关的插件。可以支持主流的开源产品和相关的开发框架被广泛运用到相关的移动系统、web应用系统等开发中。相比于IDEA平台本系统比较适合使用IDEA平台进行编程和开发。 2.3 MySQL数据库 MySQL是一种小型的关系型数据库管理系统因为其运行速度快占用内存空间小并且源代码也是开源的运行和维护成本低系统性能稳定受到了许多开发人员的喜爱[9]。考虑到MySQL数据库开发成本低功能齐全等因素大多中小型网站选择使用MySQL数据库管理数据信息。 SQL Server也是近几年使用较多的关系型数据库其与MySQL数据库存在的不同之处主要有在环境方面SQL Server数据库比较适合于.NET环境而MySQL数据库适用于几乎所有的语言在成本方面SQL Server数据库是商业化的其运行多个数据库可许证虽然有一个免费版但是只能让你对关系型数据库管理系统有一定的认识与了解熟悉相关的使用流程。如果要想使用SQL Server数据库的话就需要支付相关费用而MySQL数据库是开源的其对于用户来说使用是完全免费在实际应用方面SQL Server数据库和MySQL数据库均支持Java语言、PHP语言、C语言等多种编程语言但是MySQL数据库除了支持上述SQL Server数据库能支持的编程语言外还支持Scheme、Eiffel等其他编程语言故而MySQL数据库受欢迎程度比SQL Server数据库更高。 2.4 Java语言 Java语言是一种面向对象的编程语言其主要具有继承、封装、多态等特征从而提高编程工作效率实现软件的设计和开发[10]。继承机制可以继承相关的类和方法新的类可以在继承已经定义的类的相关特性基础上扩展自己新的数据和功能进而提高自身的能力。封装机制可以提高程序的安全性其隐藏对象的相关属性和行为对外只提供一个接口用户直接通过访问相应的接口来实现自己需要的功能操作。多态机制可以描述对象的多样性简单的来说就是引用相同的对象做不同的事务。Java语言具有安全高效的优点并且其通过依靠Java虚拟机可以实现跨平台操作[11]。Java语言比较容易学习和掌握就目前软件开发所使用的开发类语言而言Java语言比较受程序员喜爱应用比较广泛。 2.5本章小结 本章主要介绍了实现实习管理系统的相关理论基础以及开发工具。本系统采用B/S模式使用Java语言、AJAX技术、MySQL数据库等工具设计系统功能、页面布局、后台数据等。开发本系统所使用的相关技术操作简单、容易掌握Java语言具有跨平台性可以支持在不同的浏览器使用本系统MySQL数据库是开源的减少了本系统的开发成本。 3需求分析 3.1功能需求分析 需求分析过程是系统能否成功投入市场也能否被用户所接受和使用的非常关键的一个步骤。功能需求分析是通过设计系统功能来实现相关的业务事项详细分析用户的实际需要确定需要设计的相关业务事项其是系统实现的关键本系统存在的主要功能需求包括用户注册管理、用户信息管理、客房信息管理等。 3.2技术需求分析 本系统需要使用Java语言编码设计相关的功能模块MySQL数据库创建和存储数据表格AJAX实现前台和后台之间的交互并且需要在IDEA开发环境中编写相关的Java代码等系统程序文件使用MySQL数据库存储数据信息然后通过使用连接代码完成与MySQL数据库的搭建工作再通过使用开发环境中的Tomcat插件完成与Tomcat服务器的发布工作最后通过与Tomcat服务器的交互行为可以实现代码调试工作。满足以上相关的技术需求本系统才可以在浏览器上进行访问和使用。 3.3数据需求分析 在设计系统功能模块时需要收集与系统有关的数据信息并且对采集的数据信息进行组织和存储分析系统功能设计筛选有价值的数据而后形成数据字典。其中从庞大的数据信息中筛选出有价值的数据是比较耗时也是非常重要的一步主要依据信息的来源、信息的有效性、信息的扩充性、信息的真实性等内容筛选数据。数据需求分析阶段为系统的开发工作做好进一步准备便于更好的设计和完成系统。 3.4安全需求分析 安全需求分析是在系统使用过程中对性能的具体要求对功能需求的一个补充内容也是对功能需求的一个补充内容主要包括响应需求、安全性需求、稳定性需求、可扩展性需求等内容。安全需求是在系统功能需求以外的其他必要的需求内容其不论在系统设计过程还是在系统投入市场过程都起到了极其重要的作用。 3.5可行性分析 3.5.1经济可行性 经济可行性是决定是否研发系统的关键性因素。我们主要通过比较实际的收益和成本的方法来确定一个系统是否具有经济可行性。在使用系统的过程中当获得的收益大于开发的成本时说明此系统的研发在经济上是可行的。由于本系统的开发使用的技术基本上是开源的获得技术上的支持是没有多少问题的在软件实现方面所花费的成本是很低的甚至不需要花费成本。研发系统的成本主要是来自调研、硬件和技术人员等方面。如果系统中需要存储的数据量不是很大仅需要配置一台普通的服务器即可满足相关需求。如果需要存储的数据量很大则需要配置一台具有独立功能的服务器比如管理数据库需要单独的数据库服务器负责接入网站需要web服务器等等但是一台服务器的价格是比较贵的。考虑到数据量和成本我们使用小型集群服务器这样既可以充分利用相关的资源又可以让系统正常访问服务器。 3.5.2技术可行性 Java语言具有跨平台性本系统主要通过Java语言进行编码实现的所以本系统可以支持在多个操作系统或者多个浏览器上运行和使用[14]。MySQL数据库是可以被免费使用的并且MySQL数据库的日常运行和维护工作比较简单这样有利于降低本系统的开发成本[15]。在学校期间本人已经学习和掌握了Java语言、MySQL数据库、AJAX技术等相关的技术相关知识以及用法因此在技术可行性方面本系统是可以实现被设计与实现的。 3.5.3操作可行性 本系统所采用网络结构是B/S模式对于开发人员来说可以直接复用相关的代码或者稍微对原代码进行修改使得其满足于本系统的相关需求如此便可大大节约了开发时间在最优最短的时间内完成对系统的设计。对于用户来说在传统的模式下需要下载客户端才可使用系统。现在在新型的模式下使用本系统就不需要下载直接选择浏览器打开网址即可访问和使用本系统。并且用户可以根据自身的工作需要选择相关的菜单按钮操作本系统。在系统的一些功能模块中本人还添加了相关的使用提示信息方便用户更好更快的了解和使用本系统。因此本系统的设计和实现是具备操作可行性的。 3.6本章小结 需求分析在软件开发周期中是耗时最长的一个环节系统的整个设计和实现过程主要依赖于需求分析报告。调查收集出不同用户对本系统的相关使用需求由此设计相关的功能模块从而期望实现用户满意度较高的实用型系统。本章主要从功能需求、技术需求、数据需求、安全需求、可行性分析等方面对系统进行需求分析确保设计出一款实用价值比较高的管理系统。 4系统设计 4.1系统功能设计 本系统主要通过使用Java语言编码设计系统功能MySQL数据库管理数据AJAX技术设计简洁的、友好的网址页面然后在IDEA开发平台中编写相关的Java代码文件接着通过连接语言完成与数据库的搭建工作再通过平台提供的Tomcat插件完成信息的交互最后在浏览器中打开系统网址便可使用本系统。本系统的使用角色可以被分为用户和管理员用户具有注册、查看信息、留言信息等功能管理员具有修改用户信息发布新闻等功能系统总体功能设计图如图4-1所示。 实习管理系统 系统设置管理 公告管理 学生管理 老师管理 实习管理 个人信息设置 密码信息设置管理 实习添加 实习删除 实习修改管理 学生添加 学生删除 老师添加 老师修改 老师删除 公告添加 公告修改 公告删除 图4-1系统总体功能设计图 4.2 数据库设计 开发一个系统也需要提前设计数据库。这里的数据库是相关数据的集合存储在一起的这些数据也是按照一定的组织方式进行的。目前数据库能够服务于多种应用程序则是源于它存储方式最佳具备数据冗余率低的优势。虽然数据库为程序提供信息存储服务但它与程序之间也可以保持较高的独立性。总而言之数据库经历了很长一段时间的发展从最初的不为人知到现在的人尽皆知其相关技术也越发成熟同时也拥有着坚实的理论基础。 4.2.1 数据库概念设计 这部分内容需要借助数据库关系图来完成也需要使用专门绘制数据库关系图的工具比如Visio工具就可以设计E-R图数据库关系图。设计数据库也需要按照设计的流程进行首先还是要根据需求完成实体的确定分析实体具有的特征还有对实体间的关联关系进行确定。最后才是使用E-R模型的表示方法绘制本系统的E-R图。不管是使用亿图软件还是Visio工具对于E-R模型的表示符号都一样通常矩形代表实体实体间存在的关系用菱形符号表示实体的属性也就是实体的特征用符号椭圆表示。最后使用直线将矩形菱形和椭圆等符号连接起来。接下来就开始对本系统的E-R图进行绘制。 1下图是实习分享留言实体和其具备的属性。 图4.1 实习分享留言实体属性图 2下图是实习成绩实体和其具备的属性。 图4.2 实习成绩实体属性图 3下图是老师实体和其具备的属性。 图4.3 老师实体属性图 4下图是实习实体和其具备的属性。 图4.4 实习实体属性图 5下图是实习周报实体和其具备的属性。 图4.5 实习周报实体属性图 6下图是实习分享收藏实体和其具备的属性。 图4.6 实习分享收藏实体属性图 7下图是论坛实体和其具备的属性。 图4.7 论坛实体属性图 8下图是实习分享实体和其具备的属性。 图4.8 实习分享实体属性图 9下图是学生实体和其具备的属性。 图4.9 学生实体属性图 10下图是公告实体和其具备的属性。 图4.10 公告实体属性图 4.2.2逻辑设计 本系统使用MySQL数据库管理与系统相关的数据信息。逻辑设计阶段是将上一个阶段中的概念数据模型转换为方便数据库进行存储的关系模型即基本表的形式方便开发人员后期对数据模型进行优化和管理[20]。逻辑设计阶段是整个数据库设计设计的关键与系统有关的信息将会在这一阶段中被存储在数据库中当用户使用本系统进行相关的功能操作时与之有关的数据信息所在的基本表会发生相应的更新变化。数据库的逻辑设计阶段主要任务是将与系统相关的数据信息设计成为方便数据库存储和管理的基本表格的形式具体内容如下。 表4.1字典表 序号列名数据类型说明允许空1IdIntid否2dic_codeString字段是3dic_nameString字段名是4code_indexInteger编码是5index_nameString编码名字是6super_idInteger父字段id是7beizhuString备注是8create_timeDate创建时间是 表4.2论坛表 序号列名数据类型说明允许空1IdIntid否2forum_nameString帖子标题是3xuesheng_idInteger学生是4laoshi_idInteger老师是5users_idInteger管理员是6forum_contentString发布内容是7super_idsInteger父id是8forum_typesInteger帖子类型是9forum_state_typesInteger帖子状态是10insert_timeDate发帖时间是11update_timeDate修改时间是12create_timeDate创建时间是 表4.3公告表 序号列名数据类型说明允许空1IdIntid否2gonggao_nameString公告名称是3gonggao_photoString公告图片是4gonggao_typesInteger公告类型是5insert_timeDate公告发布时间是6gonggao_contentString公告详情是7create_timeDate创建时间是 表4.4老师表 序号列名数据类型说明允许空1IdIntid否2laoshi_nameString老师姓名是3laoshi_phoneString老师手机号是4laoshi_id_numberString老师身份证号是5laoshi_photoString老师头像是6laoshi_emailString电子邮箱是7create_timeDate创建时间是 表4.5实习表 序号列名数据类型说明允许空1IdIntid否2xuesheng_idInteger学生是3shixi_uuid_numberString实习编号是4shixi_nameString单位名称是5shixi_addressString单位地址是6shixi_typesInteger单位性质是7shixi_gangweiString实习岗位是8kaishi_timeDate实习开始时间是9jieshu_timeDate实习结束时间是10shixi_contentString实习详情是11shixi_yesno_typesInteger审核状态是12shixi_yesno_textString审核意见是13unpdate_timeDate审核时间是14insert_timeDate录入时间是15create_timeDate创建时间是 表4.6实习成绩表 序号列名数据类型说明允许空1IdIntid否2shixi_idInteger实习是3xuesheng_idInteger学生是4shixi_chengji_uuid_numberString成绩编号是5shixi_chengji_typesInteger成绩结果是6fenshuBigDecimal成绩分数是7shixi_chengji_yesno_textString实习评语是8insert_timeDate录入时间是9create_timeDate创建时间是 表4.7实习分享表 序号列名数据类型说明允许空1IdIntid否2xuesheng_idInteger学生是3shixi_fenxiang_nameString分享标题是4shixi_fenxiang_photoString分享照片是5shixi_fenxiang_typesInteger分享类型是6shixi_fenxiang_clicknumInteger热度是7shixi_fenxiang_contentString分享内容是8shixi_fenxiang_deleteInteger逻辑删除是9create_timeDate创建时间是 表4.8实习分享收藏表 序号列名数据类型说明允许空1IdIntid否2shixi_fenxiang_idInteger实习分享是3xuesheng_idInteger学生是4shixi_fenxiang_collection_typesInteger类型是5insert_timeDate收藏时间是6create_timeDate创建时间是 表4.9实习分享留言表 序号列名数据类型说明允许空1IdIntid否2shixi_fenxiang_idInteger实习分享是3xuesheng_idInteger学生是4shixi_fenxiang_liuyan_textString留言内容是5insert_timeDate留言时间是6reply_textString回复内容是7update_timeDate回复时间是8create_timeDate创建时间是 表4.10实习周报表 序号列名数据类型说明允许空1IdIntid否2xuesheng_idInteger学生是3shixi_idInteger实习是4shixi_zhoubao_uuid_numberString实习周报编号是5shixi_zhoubao_nameString周报标题是6shixi_zhoubao_typesInteger第几周是7shixi_zhoubao_contentString实习周报详情是8insert_timeDate录入时间是9create_timeDate创建时间是 表4.11学生表 序号列名数据类型说明允许空1IdIntid否2xuesheng_uuid_numberString学号是3xuesheng_nameString学生姓名是4xuesheng_phoneString学生手机号是5xuesheng_id_numberString学生身份证号是6xuesheng_photoString学生头像是7yuanxi_typesInteger院系是8banji_typesInteger班级是9xuesheng_emailString电子邮箱是10create_timeDate创建时间是 表4.12管理员表 序号列名数据类型说明允许空1IdIntid否2usernameString用户名是3passwordString密码是4roleString角色是5addtimeDate新增时间是 4.3本章小结 本章主要介绍了系统功能设计、数据库设计等内容。通过设计系统的总体功能框架确定系统的功能设计主要包括实习等模块。数据库设计主要分为概念设计阶段和逻辑设计阶段其中概念设计是将现实世界中的数据转变为信息世界中的概念模型逻辑设计是将概念设计中的概念模型转变成可以被数据库存储的数据表格。系统功能设计好坏是系统得以被编码实现的重要依据。数据库设计是否符合规范是系统能够成功运行的基本保障也是用户和系统实现交互处理的重要前提。 5系统实现 5.1管理员功能模块实现 5.1.1管理员登录 管理员可以选择任一浏览器打开网址输入信息无误后以管理员的身份行使相关的管理权限管理员登录界面设计如图5-1所示。 图5-1管理员登录界面 5.1.2实习管理 管理员可以通过选择实习管理管理相关的实习信息记录比如进行查看实习信息标题修改实习信息来源等操作实习管理界面设计如图5-2所示。 图5-2实习管理界面 5.1.3公告管理 管理员可以通过选择公告管理管理相关的公告信息记录比如进行查看公告详情,删除错误的公告信息,发布公告等操作公告管理界面如图5-3所示。 图5-3 公告管理界面 5.1.4公告类型管理 管理员可以通过选择公告类型管理管理相关的公告类型信息比如查看所有公告类型,删除无用公告类型,修改公告类型,添加公告类型等操作公告类型管理界面设计如图5-4所示。 图5-4会员管理界面 系 TokenServiceImpl.java package com.service.impl;import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.Map;import org.springframework.stereotype.Service;import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.baomidou.mybatisplus.plugins.Page; import com.baomidou.mybatisplus.service.impl.ServiceImpl; import com.dao.TokenDao; import com.entity.TokenEntity; import com.entity.TokenEntity; import com.service.TokenService; import com.utils.CommonUtil; import com.utils.PageUtils; import com.utils.Query;/*** token* author/ Service(tokenService) public class TokenServiceImpl extends ServiceImplTokenDao, TokenEntity implements TokenService {Overridepublic PageUtils queryPage(MapString, Object params) {PageTokenEntity page this.selectPage(new QueryTokenEntity(params).getPage(),new EntityWrapperTokenEntity());return new PageUtils(page);}Overridepublic ListTokenEntity selectListView(WrapperTokenEntity wrapper) {return baseMapper.selectListView(wrapper);}Overridepublic PageUtils queryPage(MapString, Object params,WrapperTokenEntity wrapper) {PageTokenEntity page new QueryTokenEntity(params).getPage();page.setRecords(baseMapper.selectListView(page,wrapper));PageUtils pageUtil new PageUtils(page);return pageUtil;}Overridepublic String generateToken(Integer userid,String username, String tableName, String role) {TokenEntity tokenEntity this.selectOne(new EntityWrapperTokenEntity().eq(userid, userid).eq(role, role));String token CommonUtil.getRandomString(32);Calendar cal Calendar.getInstance(); cal.setTime(new Date()); cal.add(Calendar.HOUR_OF_DAY, 1);if(tokenEntity!null) {tokenEntity.setToken(token);tokenEntity.setExpiratedtime(cal.getTime());this.updateById(tokenEntity);} else {this.insert(new TokenEntity(userid,username, tableName, role, token, cal.getTime()));}return token;}Overridepublic TokenEntity getTokenEntity(String token) {TokenEntity tokenEntity this.selectOne(new EntityWrapperTokenEntity().eq(token, token));if(tokenEntity null || tokenEntity.getExpiratedtime().getTime()new Date().getTime()) {return null;}return tokenEntity;} } ShixiController.java package com.controller;import java.io.File; import java.math.BigDecimal; import java.net.URL; import java.text.SimpleDateFormat; import com.alibaba.fastjson.JSONObject; import java.util.; import org.springframework.beans.BeanUtils; import javax.servlet.http.HttpServletRequest; import org.springframework.web.context.ContextLoader; import javax.servlet.ServletContext; import com.service.TokenService; import com.utils.; import java.lang.reflect.InvocationTargetException;import com.service.DictionaryService; import org.apache.commons.lang3.StringUtils; import com.annotation.IgnoreAuth; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.entity.; import com.entity.view.; import com.service.; import com.utils.PageUtils; import com.utils.R; import com.alibaba.fastjson.;/*** 实习* 后端接口* author* email / RestController Controller RequestMapping(/shixi) public class ShixiController {private static final Logger logger LoggerFactory.getLogger(ShixiController.class);Autowiredprivate ShixiService shixiService;Autowiredprivate TokenService tokenService;Autowiredprivate DictionaryService dictionaryService;//级联表serviceAutowiredprivate XueshengService xueshengService;Autowiredprivate LaoshiService laoshiService;/** 后端列表/RequestMapping(/page)public R page(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(page方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永不会进入);else if(学生.equals(role))params.put(xueshengId,request.getSession().getAttribute(userId));else if(老师.equals(role))params.put(laoshiId,request.getSession().getAttribute(userId));if(params.get(orderBy)null || params.get(orderBy)){params.put(orderBy,id);}PageUtils page shixiService.queryPage(params);//字典表数据转换ListShixiView list (ListShixiView)page.getList();for(ShixiView c:list){//修改对应字典表字段dictionaryService.dictionaryConvert(c, request);}return R.ok().put(data, page);}/** 后端详情/RequestMapping(/info/{id})public R info(PathVariable(id) Long id, HttpServletRequest request){logger.debug(info方法:,,Controller:{},,id:{},this.getClass().getName(),id);ShixiEntity shixi shixiService.selectById(id);if(shixi !null){//entity转viewShixiView view new ShixiView();BeanUtils.copyProperties( shixi , view );//把实体数据重构到view中//级联表XueshengEntity xuesheng xueshengService.selectById(shixi.getXueshengId());if(xuesheng ! null){BeanUtils.copyProperties( xuesheng , view ,new String[]{ id, createTime, insertTime, updateTime});//把级联的数据添加到view中,并排除id和创建时间字段view.setXueshengId(xuesheng.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/** 后端保存/RequestMapping(/save)public R save(RequestBody ShixiEntity shixi, HttpServletRequest request){logger.debug(save方法:,,Controller:{},,shixi:{},this.getClass().getName(),shixi.toString());String role String.valueOf(request.getSession().getAttribute(role));if(false)return R.error(511,永远不会进入);else if(学生.equals(role))shixi.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId))));WrapperShixiEntity queryWrapper new EntityWrapperShixiEntity().eq(xuesheng_id, shixi.getXueshengId());logger.info(sql语句:queryWrapper.getSqlSegment());ShixiEntity shixiEntity shixiService.selectOne(queryWrapper);if(shixiEntitynull){shixi.setShixiYesnoTypes(1);shixi.setInsertTime(new Date());shixi.setCreateTime(new Date());shixiService.insert(shixi);return R.ok();}else {return R.error(511,该学生已有实习申请记录);}}/** 后端修改/RequestMapping(/update)public R update(RequestBody ShixiEntity shixi, HttpServletRequest request){logger.debug(update方法:,,Controller:{},,shixi:{},this.getClass().getName(),shixi.toString());String role String.valueOf(request.getSession().getAttribute(role)); // if(false) // return R.error(511,永远不会进入); // else if(学生.equals(role)) // shixi.setXueshengId(Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId))));//根据字段查询是否有相同数据WrapperShixiEntity queryWrapper new EntityWrapperShixiEntity().notIn(id,shixi.getId()).andNew().eq(xuesheng_id, shixi.getXueshengId());logger.info(sql语句:queryWrapper.getSqlSegment());ShixiEntity shixiEntity shixiService.selectOne(queryWrapper);if(shixiEntitynull){shixi.setUnpdateTime(new Date());shixiService.updateById(shixi);//根据id更新return R.ok();}else {return R.error(511,该学生已有实习申请记录);}}/** 删除/RequestMapping(/delete)public R delete(RequestBody Integer[] ids){logger.debug(delete:,,Controller:{},,ids:{},this.getClass().getName(),ids.toString());shixiService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/** 批量上传/RequestMapping(/batchInsert)public R save( String fileName, HttpServletRequest request){logger.debug(batchInsert方法:,,Controller:{},,fileName:{},this.getClass().getName(),fileName);Integer yonghuId Integer.valueOf(String.valueOf(request.getSession().getAttribute(userId)));SimpleDateFormat sdf new SimpleDateFormat(yyyy-MM-dd HH:mm:ss);try {ListShixiEntity shixiList new ArrayList();//上传的东西MapString, ListString seachFields new HashMap();//要查询的字段Date date new Date();int lastIndexOf fileName.lastIndexOf(.);if(lastIndexOf -1){return R.error(511,该文件没有后缀);}else{String suffix fileName.substring(lastIndexOf);if(!.xls.equals(suffix)){return R.error(511,只支持后缀为xls的excel文件);}else{URL resource this.getClass().getClassLoader().getResource(static/upload/ fileName);//获取文件路径File file new File(resource.getFile());if(!file.exists()){return R.error(511,找不到上传文件请联系管理员);}else{ListListString dataList PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行因为第一行是提示for(ListString data:dataList){//循环ShixiEntity shixiEntity new ShixiEntity(); // shixiEntity.setXueshengId(Integer.valueOf(data.get(0))); //学生 要改的 // shixiEntity.setShixiUuidNumber(data.get(0)); //实习编号 要改的 // shixiEntity.setShixiName(data.get(0)); //单位名称 要改的 // shixiEntity.setShixiAddress(data.get(0)); //单位地址 要改的 // shixiEntity.setShixiTypes(Integer.valueOf(data.get(0))); //单位性质 要改的 // shixiEntity.setShixiGangwei(data.get(0)); //实习岗位 要改的 // shixiEntity.setKaishiTime(sdf.parse(data.get(0))); //实习开始时间 要改的 // shixiEntity.setJieshuTime(sdf.parse(data.get(0))); //实习结束时间 要改的 // shixiEntity.setShixiContent();//详情和图片 // shixiEntity.setShixiYesnoTypes(Integer.valueOf(data.get(0))); //审核状态 要改的 // shixiEntity.setShixiYesnoText(data.get(0)); //审核意见 要改的 // shixiEntity.setUnpdateTime(sdf.parse(data.get(0))); //审核时间 要改的 // shixiEntity.setInsertTime(date);//时间 // shixiEntity.setCreateTime(date);//时间shixiList.add(shixiEntity);//把要查询是否重复的字段放入map中//实习编号if(seachFields.containsKey(shixiUuidNumber)){ListString shixiUuidNumber seachFields.get(shixiUuidNumber);shixiUuidNumber.add(data.get(0));//要改的}else{ListString shixiUuidNumber new ArrayList();shixiUuidNumber.add(data.get(0));//要改的seachFields.put(shixiUuidNumber,shixiUuidNumber);}}//查询是否重复//实习编号ListShixiEntity shixiEntities_shixiUuidNumber shixiService.selectList(new EntityWrapperShixiEntity().in(shixi_uuid_number, seachFields.get(shixiUuidNumber)));if(shixiEntities_shixiUuidNumber.size() 0 ){ArrayListString repeatFields new ArrayList();for(ShixiEntity s:shixiEntities_shixiUuidNumber){repeatFields.add(s.getShixiUuidNumber());}return R.error(511,数据库的该表中的 [实习编号] 字段已经存在 存在数据为:repeatFields.toString());}shixiService.insertBatch(shixiList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,批量插入数据异常请联系管理员);}}/** 前端列表/IgnoreAuthRequestMapping(/list)public R list(RequestParam MapString, Object params, HttpServletRequest request){logger.debug(list方法:,,Controller:{},,params:{},this.getClass().getName(),JSONObject.toJSONString(params));// 没有指定排序字段就默认id倒序if(StringUtil.isEmpty(String.valueOf(params.get(orderBy)))){params.put(orderBy,id);}PageUtils page shixiService.queryPage(params);//字典表数据转换ListShixiView list (ListShixiView)page.getList();for(ShixiView c:list)dictionaryService.dictionaryConvert(c, request); //修改对应字典表字段return R.ok().put(data, page);}/** 前端详情/RequestMapping(/detail/{id})public R detail(PathVariable(id) Long id, HttpServletRequest request){logger.debug(detail方法:,,Controller:{},,id:{},this.getClass().getName(),id);ShixiEntity shixi shixiService.selectById(id);if(shixi !null){//entity转viewShixiView view new ShixiView();BeanUtils.copyProperties( shixi , view );//把实体数据重构到view中//级联表XueshengEntity xuesheng xueshengService.selectById(shixi.getXueshengId());if(xuesheng ! null){BeanUtils.copyProperties( xuesheng , view ,new String[]{ id, createDate});//把级联的数据添加到view中,并排除id和创建时间字段view.setXueshengId(xuesheng.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put(data, view);}else {return R.error(511,查不到数据);}}/** 前端保存/RequestMapping(/add)public R add(RequestBody ShixiEntity shixi, HttpServletRequest request){logger.debug(add方法:,,Controller:{},,shixi:{},this.getClass().getName(),shixi.toString());WrapperShixiEntity queryWrapper new EntityWrapperShixiEntity().eq(xuesheng_id, shixi.getXueshengId()).eq(shixi_uuid_number, shixi.getShixiUuidNumber()).eq(shixi_name, shixi.getShixiName()).eq(shixi_address, shixi.getShixiAddress()).eq(shixi_types, shixi.getShixiTypes()).eq(shixi_gangwei, shixi.getShixiGangwei()).eq(shixi_yesno_types, shixi.getShixiYesnoTypes()).eq(shixi_yesno_text, shixi.getShixiYesnoText());logger.info(sql语句:queryWrapper.getSqlSegment());ShixiEntity shixiEntity shixiService.selectOne(queryWrapper);if(shixiEntitynull){shixi.setShixiYesnoTypes(1);shixi.setInsertTime(new Date());shixi.setCreateTime(new Date());shixiService.insert(shixi);return R.ok();}else {return R.error(511,表中有相同数据);}}} CommonServiceImpl.java package com.service.impl;import java.util.List; import java.util.Map;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service;import com.dao.CommonDao; import com.service.CommonService;/** 系统用户* author* date/ Service(commonService) public class CommonServiceImpl implements CommonService {Autowiredprivate CommonDao commonDao;Overridepublic ListString getOption(MapString, Object params) {return commonDao.getOption(params);}Overridepublic MapString, Object getFollowByOption(MapString, Object params) {return commonDao.getFollowByOption(params);}/**tableName 查询表condition1 条件1condition1Value 条件1值average 计算平均评分 /public MapString, Object queryScore(MapString, Object params){return commonDao.queryScore(params);}Overridepublic void sh(MapString, Object params) {commonDao.sh(params); }Overridepublic int remindCount(MapString, Object params) {return commonDao.remindCount(params);}Overridepublic MapString, Object selectCal(MapString, Object params) {return commonDao.selectCal(params);}Overridepublic ListMapString, Object selectGroup(MapString, Object params) {return commonDao.selectGroup(params);}Overridepublic ListMapString, Object selectValue(MapString, Object params) {return commonDao.selectValue(params);}Overridepublic ListMapString, Object chartBoth(MapString, Object params) {return commonDao.chartBoth(params);}Overridepublic ListMapString, Object chartOne(MapString, Object params) {return commonDao.chartOne(params);}/** 新的级联字典表的 分组求和统计* param params* return/Overridepublic ListMapString, Object newSelectGroupSum(MapString, Object params) {return commonDao.newSelectGroupSum(params);}/** 新的级联字典表的 分组条数统计* param params* return/Overridepublic ListMapString, Object newSelectGroupCount(MapString, Object params) {return commonDao.newSelectGroupCount(params);}/** 当前表的日期分组求和* param params* return/Overridepublic ListMapString, Object newSelectDateGroupSum(MapString, Object params) {return commonDao.newSelectDateGroupSum(params);}/** 查询字典表的分组统计总条数* param params* return/Overridepublic ListMapString, Object newSelectDateGroupCount(MapString, Object params) {return commonDao.newSelectDateGroupCount(params);}Overridepublic int plusCloumNumber(MapString, Object params) {return commonDao.plusCloumNumber(params);}Overridepublic int reduceCloumNumber(MapString, Object params) {return commonDao.reduceCloumNumber(params);}Overridepublic int updateCloumValue(MapString, Object params) {return commonDao.updateCloumValue(params);}/** 饼状图* – 饼状图 查询当前表– 查询字典表【月】– 统计 – 查询某个月的每个类型的订单销售数量– 求和 – 查询某个月的每个类型的订单销售额– 查询某个字符串【月】– 统计 – 查询某个月的每个员工的订单销售数量– 求和 – 查询某个月的每个员工的订单销售额– 查询时间【年】– 统计 – 查询每个月的订单销售数量– 求和 – 查询每个月的订单销售额– 饼状图 查询级联表– 查询字典表– 统计 – 查询某个月的每个类型的订单销售数量– 求和 – 查询某个月的每个类型的订单销售额– 查询某个字符串– 统计 – 查询某个月的每个员工的订单销售数量– 求和 – 查询某个月的每个员工的订单销售额– 查询时间– 统计 – 统计每个月的订单销售数量– 求和 – 查询每个月的订单销售额//** 柱状图– 柱状图 查询当前表– 某个【年月】– 当前表 2 级联表 1– 统计– 【日期字符串下拉框】– 求和– 【日期字符串下拉框】– 柱状图 查询级联表– 某个【年月】– 统计– 【日期字符串下拉框】– 求和– 【日期字符串下拉框】//** 柱状图求和* param params* return/public ListMapString, Object barSum(MapString, Object params){return commonDao.barSum(params);}/** 柱状图统计* param params* return*/public ListMapString, Object barCount(MapString, Object params){return commonDao.barCount(params);}} api.js const api {// 积分订单orderpage: orders/page,orderdelete: orders/delete,orderinfo: orders/info/,ordersave: orders/save,orderupdate: orders/update,// 配置configpage: config/page,configdelete: config/delete,configinfo: config/info/,configsave: config/save,configupdate: config/update}export default api