社区疫情管理系统pf

devtools/2024/9/24 6:57:23/

@TOC

springboot417社区疫情管理系统pf">springboot417社区疫情管理系统pf

第1章 绪论

1.1 课题背景

二十一世纪互联网的出现,改变了几千年以来人们的生活,不仅仅是生活物资的丰富,还有精神层次的丰富。在互联网诞生之前,地域位置往往是人们思想上不可跨域的鸿沟,信息的传播速度极慢,信息处理的速度和要求还是通过人们骑马或者是信鸽传递,这些信息传递都是不可控制的,中间很有可能丢失,信息的传递水平决定了人们生活的水平。如今大家都在使用互联网软件产品,从内部管理设置计算机管理,提高内部信息化的管理水准,从外部市场也可以用计算机获取相关数据进行处理,如今各行各业已经严重依赖于计算机了。

本课题研究和开发社区疫情管理系统管理系统,让安装在计算机上的该系统变成管理人员的小帮手,提高社区疫情管理系统信息处理速度,规范社区疫情管理系统信息处理流程,让管理人员的产出效益更高。

1.2 课题意义

传统处理数据,必须是一张张纸,然后处理完毕又是统计在一张张纸上面,不断的重复处理,最终有个结果给最高层作为参考,这个模式在互联网没有出现之前,是一种常见的事情,信息管理的效率提不上去,人多不一定力量大,因为人多肯定更加消耗资源,并且因为人类需要休息,需要管理,思想会不统一,会偷懒,所以人们研究出专门帮助人们计算的机器,就是计算机的前身,到了互联网时代,人们发现完全可以让程序供应商提供解决方案,自己挑选自己合适的方案来提高自己的产出比。所以在日常工作和生活中会发现各种各样方便人们的工具。

本课题研发的社区疫情管理系统管理系统,就是提供社区疫情管理系统信息处理的解决方案,它可以短时间处理完信息,并且这些信息都有专门的存储设备,而且数据的备份和迁移都可以设定为无人值守,从人力角度和信息处理角度以及信息安全角度,社区疫情管理系统管理系统是完胜传统纸质操作的。

1.3 研究内容

本文对社区疫情管理系统管理系统的设计与实现分成六个章节来说明。

第1章:研究社区疫情管理系统管理系统的背景,以及开发社区疫情管理系统管理系统的意义。

第2章:对开发社区疫情管理系统管理系统的环境还有技术进行说明。

第3章:分析社区疫情管理系统管理系统的可行性,性能,流程以及功能。

第4章:设计社区疫情管理系统管理系统的功能结构,设计数据库E-R图以及对数据表的存储结构进行设计。

第5章:实现社区疫情管理系统管理系统的功能并进行功能界面展示。

第6章:对系统测试进行阐述,以及对本系统部分功能进行检测。

第2章 开发环境与技术

本章节对开发社区疫情管理系统管理系统需要搭建的开发环境,还有社区疫情管理系统管理系统开发中使用的编程技术等进行阐述。

java语言">2.1 Java语言

Java经过了20多年的发展,在各个领域都有一套解决的方案,成为企业主力开发的语言。Java跨平台,可运行在不同的服务器上。Java提供了大量的API扩展,语言强大。使用Java语言可以利用强大的类机制和框架,进行面向对象快速开发,进行敏捷迭代和开发,让开发人员专注于流浪动物领养系统的逻辑开发,同时,较好的安全机制和跨平台特性,可以让流浪动物领养系统可以较好适应移动OS平台。同时,Java语言的内置多线程支持也可以提供语言学习系统支持,同时多任务发生能够较好的调度。基于Java语言的Java、J2EE等成熟框架,都为Java开发提供了最好的选择。

2.2 MYSQL数据库

MySQL数据库是一种数据存放方面的专业软件,也是传统的行式数据模式,获取一些数据是先一行一行的获取,然后一行一行的显示,与列式数据库不同。行式数据库主要是处理最重要的数据逻辑部分,并且必须是有效数据,这样每一处的数据关联都是不可损坏,对数据安全要求比较严格还是用MySQL数据库比较好。列式数据库的发明仅仅是因为读取效率高,但是也就仅仅如此罢了。MySQL虽然比起Oracle或者SQL Server来讲,安装包只是几十兆甚至几百兆,有点小,但是功能并不会弱到哪里,严格遵循SQL标准语法。MySQL的数据存放形式从大向小的说是数据库最大,然后是表,每个表里面存放数据是有一定的规则的,数据存放是表格形式的,也就是说有横也有竖,横着的为行,一般表示一条数据,表与表之间还可以进行关联,进行分表操作,如果一条数据相关项目属性太多,那么可以把有效的相关联系做成关联,可以设定是否唯一。

2.3 IDEA开发工具

IDEA是捷克共和国的Java程序员开发人员创造的一个开发软件,刚开始主要是对于用Eclipse软件他们用得不顺手,所以直接开发了这款软件。之所以不顺手原因在于没有代码提升功能,原因是Eclipse只是把代码提示作为一种插件形式的存在,如果有些程序开发人员不清楚代码提示插件可能会出问题,并且代码提示只是用来作为插件,所以功能上有所欠缺。IDEA不仅仅代码提示做的很好,在代码重构上面更上如虎添翼,程序开发人员可以选择一段代码然后IDEA就会对代码进行分解重构,有效的把代码弄得更够层次感,复用性更高,用着更简洁和方便,大大的减少了代码工作量,提升了代码开发效率。当然,IDEA对于使用者这么好,肯定也是有目的的,原因在于插件越多越友好,就需要花费大量的金钱来使用,所以说IDEA使用主要是看自己喜好。

2.4 Spring Boot框架

Spring Boot是一种不需要代码生成的一种框架,并且可以不需要配置任何的XML文件就可以,因为Spring Boot里面自带了很多接口,只需要配置不同的接口就会自动的应用并且识别需要的依赖,在配置方面非常的方便,使用起来感觉像没有用到框架的感觉。Spring Boot有很多默认的配置文件,并且可以对默认的配置文件进行修改,可以设置为自动加载,可以对异常处理分为全局异常处理和默认异常处理。Spring Boot使用过程中就像是使用什么直接注册什么,所谓的注册也就是在对应的类和方法上面进行一个特殊的声明即可。

第3章 系统分析

本文作者在确定了研究的课题之后,从各大数字图书馆下载文献来阅读,并了解同类型的网站具备的大致功能,然后具体事务具体分析,得出本系统要研究的具体功能与性能。虽然分析系统这一阶段性工作主要是确定功能,但它却影响着后面系统开发环节的进展,系统分析这个环节是不能少的。

3.1 系统可行性分析

3.1.1技术可行性分析

研发设计程序流程挑选面向对象设计、功能齐全、简单实用的Java编程设计核心理念。MySQL数据库存储数据。Idea工具作为编程软件,win10计算机操作系统作为应用系统,以及数据库可视化工具等技术职称。一般来说,该程序流程的开发能够从技术上开展是可行的。

3.1.2经济可行性分析

开发的程序并不是向着商业服务程序方向设计与开发的,反而是做为毕业设计论文新项目开发的,主要运用于检测孩子在学校所学的知识,也锻练用户们使用互联网、书籍和别的方法进行自学能力。因而,该程序软件的开发不容易涉及到边际效益,也不会为软件的挑选付钱。你可以在开发软件的官网上下载所需要的软件,并根据要求的安装方法将软件安装在你的电脑中。一般来说,开发这一程序并没有经济发展开支。

3.1.3运行可行性分析

由于程序软件就是针对大部分一般操作用户,考虑到他的知识与文化水准,尤其开发了一个可操作度高的程序软件,能够轻而易举地让用户应用,数据可视化操作页面。一般来说,从用户操作程序的角度看,这一程序其实并不难操作。只需用户开启程序,就能避免专职人员学习培训开展程序作用操作,可以得出程序软件能够开发和操作。

3.2 系统性能分析

3.2.1系统安全性

该程序不允许别的来访者窃取程序里的隐秘信息,也不允许别的操作工操作过程别的管理方案的用户操作过程实际效果。为了能真真正正清除这种情况,我们要在程序开发设计与设计以前考虑到程序安全性。

3.2.2数据完整性

提到数据完整性,大家不得不提到常用程序流程表格作用。这种表格通常是获取大部分客户的数据信息,大部分客户应该根据表格的需求填写自已的名字信息和联系电话信息,有一些会出现额外信息填写规定,务必填写这个选项,不需要填写这个选项。假如大部分客户为了能保护好自己的个人隐私,但又不想被其他人搔扰,不填写必须的项目及别的信息,大部分客户在最后递交这一表格时,通常不可以递交。

数据库安全不仅仅局限于申请办理数据完整性,还仅限于系统内全部信息数据的联系,并要求不用出差错。

由于数据统计分析表中间会有一定的联络,因此同一个数据信息出现在另一个表中,因此这俩表中记载的同一个数据信息应当是一样的。在不同表中,不可能有同样的数据信息。

3.2.3系统可扩展性

一切都在发展趋势,程序员开发软件也要带上开发逻辑思维开展软件开发实际操作,那样开发的程序在符合业务需求的时候也会进行一定的程序更新和更新。不论是作用改善或是数据库系统更新,初始程序都能在初始的前提下迭代升级。让开发的程序你走越走越远。那也是消费者对程序软件应用的需求。

3.3 系统流程分析

假如管理员想电脑操作系统所提供的作用,管理员必须在系统登录界面填好管理员登陆的账户信息以及相应的登陆密码信息。管理员必须保证它们都能身份证验证的账号密码信息的准确性,让管理员根据登陆界面进到后台管理操作面板。图3.1是开发的程序软件流浪动物领养系统操作流程图。

图3.1 系统操作流程图

3.3.1系统登录流程

登陆系统流程表如下图所展示。

图3.2 系统登录流程图

3.3.2信息添加流程

信息添加过程如图所展示。

图3.3 添加信息流程图

3.3.3信息删除流程

删除信息删除全过程如图所展示。

图3.4 信息删除流程图

3.4 系统非功能需求分析

(1)完好性规定

此次研发的社区疫情管理系统中记载的数据信息不可以维持为空,数据信息务必恰当查验。系统中数据联系不可以出差错,也无法弹冠相庆。数据分析表中同一数据信息在各个数据分析表里的表明具体内容应同样。

(2)技术性能

当用户操作社区疫情管理系统的各部分时,弹出来界面的响应速度不可以过长,最好是保持在3秒,较大限定数值4秒,给用户一个良好的程序流程感受。该系统还应当可以另外带上多人合作浏览社区疫情管理系统。

(3)界面要求

社区疫情管理系统界面设计方案应注意用户的日常操作习惯性,如导航条设计方案不可以在右边,彻底违背用户应用页面的操作习惯性,作用导航栏字体样式和色彩应更为醒目,便捷用户非常容易寻找,防止用户消耗太多的时间开展作用操作。

(4)安全规定

确保社区疫情管理系统的安全性,给用户一种靠谱、可信赖的觉得,系统在运行中,不可以一直出差错,与用户作用界面互动,及时沟通信息内容,系统设定登陆页面,使非系统用户无法打开系统作用界面。系统用户还填写用户名登陆密码方可进入系统主界面,充分保证系统数据信息处在运行状态。

第4章 系统设计

用户对着浏览器操作,肯定会出现某些不可预料的问题,但是不代表着系统对于用户在浏览器上的操作不进行处理,所以说,要提前考虑可能会出现的问题。

4.1 系统设计思想

系统设计,肯定要把设计的思想进行统一,只有统一的思想才能指导程序的开发,并且可以让众多的程序开发人员更快速的进入状态,提高开发速度。根据当前系统的既定需求,下面将进行本系统设计思想的阐述。

(1)扩展性:开发任何一个系统的时候不可避免要考虑这个问题。软件版本的更迭是一种常识,任何一个软件都不会一次性开发就成永恒,软件是一个不断成长的东西。所以考虑问题的时候需要对当前问题进行数据上的扩大化,然后进行归纳整理,最终形成具有一定扩展性的程序。程序的可扩展性必然会影响开发进度,所以最终需要综合评估程序的可扩展程度,进而有的放矢,循序开发。

(2)实用性:程序设计是一个先高屋建瓴式的设想,然后再具体化,实用性就是具体化的第一个步骤,要充分考虑使用者是不懂程序设计的这一点,使用者只是懂得常规性的上网操作步骤,并不需要对程序进行理解,所以一定要让使用者感觉到便利,感觉到实用性的存在,如果使用者使用程序过程中没发现使用程序的好处,那么程序设计的实用性将大大降低。

(3)安全性:当使用者使用的过程中,会产生大量的相关数据,这些数据必须有安全性的保证,否则当使用者发现数据出现问题的原因是程序设计问题的时候,将会对程序开发者失去信任,甚至可能会产生大量的费用赔偿问题,这是一个不可避免的问题。所以安全性关系开发与使用者双方的经济利益,程序的安全性是一定要保证的。

(4)先进性:程序设计的先进性是开发者进行考虑的,必须要在满足系统功能的前提下,必须要选择好当下最合适的技术。最合适的技术要从开发成本,使用成本以及维护成本里面综合分析,经过综合分析后要让技术实现最优解,保持先进的技术生产力。

(5)维护性:程序开发之初就要考虑以后的维护问题。维护是在程序开发完毕,已经上线可以运作,进入生产试用过程和使用过程中才会发现需要维护的必要。要通过各方面降低维护成本,不是说维护的越少就代表程序开发的越完美,程序既然是人类进行设计制造的,肯定有很多不可避免的问题产生,那么如何维护好程序的正常运作也是一门很重要的学问。

4.2 功能结构设计

图4.1即为设计的管理员功能结构,管理员权限操作的功能包括管理新闻,管理社区疫情管理系统信息,包括物资管理,培训管理,健康打卡管理,薪资管理等,可以管理新闻。

结构设计图

图4.1 管理员功能结构

4.3 数据库设计

社区疫情管理系统管理系统运行中产生的数据需要按照提前设置的存储规则进行保存,设计出一个符合项目的最优数据存储格式,因为它能减少用户的等待时间,还可以对系统的请求在最短时间内进行响应。所以,对数据库设计时,需要对功能需求进行详细的拆分,以及对业务状态的细分,然后设计具体的存储规则,保证数据库能正常运作,缩短数据处理时间,并在一定程度上降低数据冗余,节省存储空间。

4.3.1 数据库概念设计

实体-联系图还有一个名称即E-R图,是Entity Relationship Diagram各英文单词首字母的缩写,它这种概念模型通常用于对现实世界进行描述。同时它还是一种能够直观表达数据中实体,联系,属性的有效手段。绘制E-R图能够选择的工具也有很多,但是Office Visio 这款软件在E-R图的绘制上一般都是作为首选工具,因为它是基于可视化处理,使用它创建E-R图非常简单。使用基本的E-R图构成元素,比如椭圆,菱形,矩形,还有实线段来表达对应的信息,椭圆代表属性,即实体的特征,矩形代表实体,即数据库中的一个具体数据表,菱形代表实体中相互关系,实线段主要是完成椭圆,矩形,菱形的连接。

(1)下图是隔离信息实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\隔离信息.jpg 隔离信息实体属性图

(2)下图是论坛实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\论坛.jpg 论坛实体属性图

(3)下图是用户实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\用户.jpg 用户实体属性图

(4)下图是物资实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\物资.jpg 物资实体属性图

(5)下图是健康码打卡实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\健康码打卡.jpg 健康码打卡实体属性图

(6)下图是物资分配实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\物资分配.jpg 物资分配实体属性图

(7)下图是疑似人员实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\疑似人员.jpg 疑似人员实体属性图

(8)下图是新闻信息实体和其具备的属性。

C:/Users/Administrator/Desktop/temp111\1\____img\新闻信息.jpg 新闻信息实体属性图

4.3.2 数据库物理设计

本小节主要任务即是根据上述内容进行数据存储结构的设计,实体的属性就用来表示字段名称,不同的字段表示的数据类型以及取值都不相同,以及该表各个字段是否能够保持空等进行说明,设计完成一张数据表的结构之后,在保存时同样要命名,尽量选择英文名称进行命名并保存,还不容易导致系统出错。接下来就对设计的表进行简单说明。

表4.1健康码打卡表

序号列名数据类型说明允许空
1IdIntid
2yonghu_idInteger用户
3daka_nameString健康码打卡
4daka_fileString健康码照片
5daka_wenduBigDecimal体温
6daka_textString备注
7daka_deleteInteger逻辑删除
8insert_timeDate录入时间
9create_timeDate创建时间

表4.2字典表

序号列名数据类型说明允许空
1IdIntid
2dic_codeString字段
3dic_nameString字段名
4code_indexInteger编码
5index_nameString编码名字
6super_idInteger父字段id
7beizhuString备注
8create_timeDate创建时间

表4.3隔离信息表

序号列名数据类型说明允许空
1IdIntid
2fengkong_nameString地区名称
3fengkong_photoString地区照片
4fengkong_didian_typesInteger地区
5fengkong_typesInteger风险类型
6fengkong_contentString地区介绍
7fengkong_deleteInteger逻辑删除
8insert_timeDate录入时间
9create_timeDate创建时间

表4.4论坛表

序号列名数据类型说明允许空
1IdIntid
2forum_nameString帖子标题
3yonghu_idInteger用户
4users_idInteger管理员
5forum_contentString发布内容
6super_idsInteger父id
7forum_state_typesInteger帖子状态
8insert_timeDate发帖时间
9update_timeDate修改时间
10create_timeDate创建时间

表4.5新闻信息表

序号列名数据类型说明允许空
1IdIntid
2news_nameString新闻名称
3news_photoString新闻图片
4news_typesInteger新闻类型
5insert_timeDate新闻发布时间
6news_contentString新闻详情
7create_timeDate创建时间

表4.6物资表

序号列名数据类型说明允许空
1IdIntid
2wuzi_nameString物资名称
3wuzi_uuid_numberString物资编号
4wuzi_addressString领取地点
5wuzi_photoString物资照片
6wuzi_xinghaoString物资型号
7wuzi_guigeString物资规格
8wuzi_changjiaString物资生产厂家
9wuzi_typesInteger物资类型
10wuzi_kucun_numberInteger物资库存
11wuzi_contentString物资介绍
12wuzi_deleteInteger逻辑删除
13insert_timeDate录入时间
14create_timeDate创建时间

表4.7物资分配表

序号列名数据类型说明允许空
1IdIntid
2wuzi_idInteger物资
3yonghu_idInteger用户
4buy_numberInteger分配数量
5wuzi_order_typesInteger订单类型
6insert_timeDate订单创建时间
7create_timeDate创建时间

表4.8疑似人员表

序号列名数据类型说明允许空
1IdIntid
2daka_idInteger打卡
3yishi_nameString疑似名称
4yishi_photoString疑似照片
5yishi_typesInteger疑似类型
6yishi_contentString疑似介绍
7yishi_deleteInteger逻辑删除
8insert_timeDate录入时间
9create_timeDate创建时间

表4.9用户表

序号列名数据类型说明允许空
1IdIntid
2yonghu_nameString用户姓名
3yonghu_phoneString用户手机号
4yonghu_id_numberString用户身份证号
5yonghu_photoString用户头像
6yonghu_emailString用户邮箱
7create_timeDate创建时间

表4.10管理员表

序号列名数据类型说明允许空
1IdIntid
2usernameString儿童名
3passwordString密码
4roleString角色
5addtimeDate新增时间

第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 新闻类型管理界面

java">WuziOrderController.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("/wuziOrder")
public class WuziOrderController {private static final Logger logger = LoggerFactory.getLogger(WuziOrderController.class);private static final String TABLE_NAME = "wuziOrder";@Autowiredprivate WuziOrderService wuziOrderService;@Autowiredprivate TokenService tokenService;@Autowiredprivate DakaService dakaService;//健康码打卡@Autowiredprivate DictionaryService dictionaryService;//字典@Autowiredprivate FengkongService fengkongService;//隔离信息@Autowiredprivate ForumService forumService;//论坛@Autowiredprivate NewsService newsService;//新闻信息@Autowiredprivate WuziService wuziService;//物资@Autowiredprivate YishiService yishiService;//疑似人员@Autowiredprivate YonghuService yonghuService;//用户@Autowiredprivate UsersService usersService;//管理员/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, 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("yonghuId",request.getSession().getAttribute("userId"));CommonUtil.checkMap(params);PageUtils page = wuziOrderService.queryPage(params);//字典表数据转换List<WuziOrderView> list =(List<WuziOrderView>)page.getList();for(WuziOrderView 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);WuziOrderEntity wuziOrder = wuziOrderService.selectById(id);if(wuziOrder !=null){//entity转viewWuziOrderView view = new WuziOrderView();BeanUtils.copyProperties( wuziOrder , view );//把实体数据重构到view中//级联表 物资//级联表WuziEntity wuzi = wuziService.selectById(wuziOrder.getWuziId());if(wuzi != null){BeanUtils.copyProperties( wuzi , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setWuziId(wuzi.getId());}//级联表 用户//级联表YonghuEntity yonghu = yonghuService.selectById(wuziOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createTime", "insertTime", "updateTime", "yonghuId"});//把级联的数据添加到view中,并排除id和创建时间字段,当前表的级联注册表view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody WuziOrderEntity wuziOrder, HttpServletRequest request){logger.debug("save方法:,,Controller:{},,wuziOrder:{}",this.getClass().getName(),wuziOrder.toString());String role = String.valueOf(request.getSession().getAttribute("role"));if(false)return R.error(511,"永远不会进入");else if("用户".equals(role))wuziOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));wuziOrder.setCreateTime(new Date());wuziOrder.setInsertTime(new Date());wuziOrderService.insert(wuziOrder);return R.ok();}/*** 后端修改*/@RequestMapping("/update")public R update(@RequestBody WuziOrderEntity wuziOrder, HttpServletRequest request) throws NoSuchFieldException, ClassNotFoundException, IllegalAccessException, InstantiationException {logger.debug("update方法:,,Controller:{},,wuziOrder:{}",this.getClass().getName(),wuziOrder.toString());WuziOrderEntity oldWuziOrderEntity = wuziOrderService.selectById(wuziOrder.getId());//查询原先数据String role = String.valueOf(request.getSession().getAttribute("role"));
//        if(false)
//            return R.error(511,"永远不会进入");
//        else if("用户".equals(role))
//            wuziOrder.setYonghuId(Integer.valueOf(String.valueOf(request.getSession().getAttribute("userId"))));wuziOrderService.updateById(wuziOrder);//根据id更新return R.ok();}/*** 删除*/@RequestMapping("/delete")public R delete(@RequestBody Integer[] ids, HttpServletRequest request){logger.debug("delete:,,Controller:{},,ids:{}",this.getClass().getName(),ids.toString());List<WuziOrderEntity> oldWuziOrderList =wuziOrderService.selectBatchIds(Arrays.asList(ids));//要删除的数据wuziOrderService.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");//.eq("time", new SimpleDateFormat("yyyy-MM-dd").format(new Date()))try {List<WuziOrderEntity> wuziOrderList = new ArrayList<>();//上传的东西Map<String, List<String>> 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{List<List<String>> dataList = PoiUtil.poiImport(file.getPath());//读取xls文件dataList.remove(0);//删除第一行,因为第一行是提示for(List<String> data:dataList){//循环WuziOrderEntity wuziOrderEntity = new WuziOrderEntity();
//                            wuziOrderEntity.setWuziId(Integer.valueOf(data.get(0)));   //物资 要改的
//                            wuziOrderEntity.setYonghuId(Integer.valueOf(data.get(0)));   //用户 要改的
//                            wuziOrderEntity.setBuyNumber(Integer.valueOf(data.get(0)));   //分配数量 要改的
//                            wuziOrderEntity.setWuziOrderTypes(Integer.valueOf(data.get(0)));   //订单类型 要改的
//                            wuziOrderEntity.setInsertTime(date);//时间
//                            wuziOrderEntity.setCreateTime(date);//时间wuziOrderList.add(wuziOrderEntity);//把要查询是否重复的字段放入map中}//查询是否重复wuziOrderService.insertBatch(wuziOrderList);return R.ok();}}}}catch (Exception e){e.printStackTrace();return R.error(511,"批量插入数据异常,请联系管理员");}}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params, HttpServletRequest request){logger.debug("list方法:,,Controller:{},,params:{}",this.getClass().getName(),JSONObject.toJSONString(params));CommonUtil.checkMap(params);PageUtils page = wuziOrderService.queryPage(params);//字典表数据转换List<WuziOrderView> list =(List<WuziOrderView>)page.getList();for(WuziOrderView 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);WuziOrderEntity wuziOrder = wuziOrderService.selectById(id);if(wuziOrder !=null){//entity转viewWuziOrderView view = new WuziOrderView();BeanUtils.copyProperties( wuziOrder , view );//把实体数据重构到view中//级联表WuziEntity wuzi = wuziService.selectById(wuziOrder.getWuziId());if(wuzi != null){BeanUtils.copyProperties( wuzi , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setWuziId(wuzi.getId());}//级联表YonghuEntity yonghu = yonghuService.selectById(wuziOrder.getYonghuId());if(yonghu != null){BeanUtils.copyProperties( yonghu , view ,new String[]{ "id", "createDate"});//把级联的数据添加到view中,并排除id和创建时间字段view.setYonghuId(yonghu.getId());}//修改对应字典表字段dictionaryService.dictionaryConvert(view, request);return R.ok().put("data", view);}else {return R.error(511,"查不到数据");}}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody WuziOrderEntity wuziOrder, HttpServletRequest request){logger.debug("add方法:,,Controller:{},,wuziOrder:{}",this.getClass().getName(),wuziOrder.toString());WuziEntity wuziEntity = wuziService.selectById(wuziOrder.getWuziId());if(wuziEntity == null){return R.error(511,"查不到该物资");}// Double wuziNewMoney = wuziEntity.getWuziNewMoney();if(false){}else if((wuziEntity.getWuziKucunNumber() -wuziOrder.getBuyNumber())<0){return R.error(511,"购买数量不能大于库存数量");}//计算所获得积分Double buyJifen =0.0;Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if(yonghuEntity == null)return R.error(511,"用户不能为空");
//            if(yonghuEntity.getNewMoney() == null)
//                return R.error(511,"用户金额不能为空");
//            double balance = yonghuEntity.getNewMoney() - wuziEntity.getWuziNewMoney()*wuziOrder.getBuyNumber();//余额
//            if(balance<0)
//                return R.error(511,"余额不够支付");wuziOrder.setWuziOrderTypes(101); //设置订单状态为已分配
//            wuziOrder.setWuziOrderTruePrice(0.0); //设置实付价格wuziOrder.setYonghuId(userId); //设置订单支付人idwuziOrder.setInsertTime(new Date());wuziOrder.setCreateTime(new Date());wuziEntity.setWuziKucunNumber( wuziEntity.getWuziKucunNumber() -wuziOrder.getBuyNumber());wuziService.updateById(wuziEntity);wuziOrderService.insert(wuziOrder);//新增订单return R.ok();}/*** 取消分配*/@RequestMapping("/refund")public R refund(Integer id, HttpServletRequest request){logger.debug("refund方法:,,Controller:{},,id:{}",this.getClass().getName(),id);String role = String.valueOf(request.getSession().getAttribute("role"));WuziOrderEntity wuziOrder = wuziOrderService.selectById(id);//当前表serviceInteger buyNumber = wuziOrder.getBuyNumber();Integer wuziId = wuziOrder.getWuziId();if(wuziId == null)return R.error(511,"查不到该物资");WuziEntity wuziEntity = wuziService.selectById(wuziId);if(wuziEntity == null)return R.error(511,"查不到该物资");Integer userId = (Integer) request.getSession().getAttribute("userId");YonghuEntity yonghuEntity = yonghuService.selectById(userId);if(yonghuEntity == null)return R.error(511,"用户不能为空");Double zhekou = 1.0;//计算金额
//                Double money = wuziEntity.getWuziNewMoney() * buyNumber  * zhekou;//计算所获得积分Double buyJifen = 0.0;wuziEntity.setWuziKucunNumber(wuziEntity.getWuziKucunNumber() + buyNumber);wuziOrder.setWuziOrderTypes(102);//设置订单状态为已取消分配wuziOrderService.updateAllColumnById(wuziOrder);//根据id更新yonghuService.updateById(yonghuEntity);//更新用户信息wuziService.updateById(wuziEntity);//更新订单中物资的信息return R.ok();}/*** 分发*/@RequestMapping("/deliver")public R deliver(Integer id  , HttpServletRequest request){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());WuziOrderEntity  wuziOrderEntity = wuziOrderService.selectById(id);wuziOrderEntity.setWuziOrderTypes(103);//设置订单状态为已分发wuziOrderService.updateById( wuziOrderEntity);return R.ok();}/*** 领取物资*/@RequestMapping("/receiving")public R receiving(Integer id , HttpServletRequest request){logger.debug("refund:,,Controller:{},,ids:{}",this.getClass().getName(),id.toString());WuziOrderEntity  wuziOrderEntity = wuziOrderService.selectById(id);wuziOrderEntity.setWuziOrderTypes(104);//设置订单状态为领取物资wuziOrderService.updateById( wuziOrderEntity);return R.ok();}}
java">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 ServiceImpl<TokenDao, TokenEntity> implements TokenService {@Overridepublic PageUtils queryPage(Map<String, Object> params) {Page<TokenEntity> page = this.selectPage(new Query<TokenEntity>(params).getPage(),new EntityWrapper<TokenEntity>());return new PageUtils(page);}@Overridepublic List<TokenEntity> selectListView(Wrapper<TokenEntity> wrapper) {return baseMapper.selectListView(wrapper);}@Overridepublic PageUtils queryPage(Map<String, Object> params,Wrapper<TokenEntity> wrapper) {Page<TokenEntity> page =new Query<TokenEntity>(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 EntityWrapper<TokenEntity>().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 EntityWrapper<TokenEntity>().eq("token", token));if(tokenEntity == null || tokenEntity.getExpiratedtime().getTime()<new Date().getTime()) {return null;}return tokenEntity;}
}
java">DakaServiceImpl.java
package com.service.impl;import com.utils.StringUtil;
import com.service.DictionaryService;
import com.utils.ClazzDiff;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.lang.reflect.Field;
import java.util.*;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import org.springframework.transaction.annotation.Transactional;
import com.utils.PageUtils;
import com.utils.Query;
import org.springframework.web.context.ContextLoader;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
import com.dao.DakaDao;
import com.entity.DakaEntity;
import com.service.DakaService;
import com.entity.view.DakaView;/*** 健康码打卡 服务实现类*/
@Service("dakaService")
@Transactional
public class DakaServiceImpl extends ServiceImpl<DakaDao, DakaEntity> implements DakaService {@Overridepublic PageUtils queryPage(Map<String,Object> params) {Page<DakaView> page =new Query<DakaView>(params).getPage();page.setRecords(baseMapper.selectListView(page,params));return new PageUtils(page);}}

声明

本博客适用于广泛的学术和教育用途,包括但不限于个人学习、开发设计,产品设计。仅供学习参考,旨在为读者提供深入理解和学术研究的材料。


http://www.ppmy.cn/devtools/96098.html

相关文章

ubuntu2204-中文输入法-pycharm-python-django开发环境搭建

文章目录 1.系统常用设置1.1.安装中文输入法1.2.配置输入法1.3.卸载输入法1.4.配置镜像源2.java安装3.pycharm安装与启动4.卸载ubuntu2204默认版本5.安装Anaconda5.1.安装软件依赖包5.2.安装命令5.3.激活安装5.4.常用命令5.5.修改默认启动源6.安装mysql6.1.离线安装mysql6.2.在…

IDEA 创建类时自动生成注释

一、背景 在开发的过程中&#xff0c;公司都会要求开发针对自己创建的类进行一些描述说明&#xff0c;为了便于程序员在创建类时快速生成注释。 二、如何配置? 打开File -> Settings -> Editor -> File and Code Templates -> Includes&#xff0c;在File Header…

AVL树的学习

1.1 AVL树的概念 二叉搜索树虽可以缩短查找的效率&#xff0c;但如果数据有序或接近有序二叉搜索树将退化为单支树&#xff0c;查 找元素相当于在顺序表中搜索元素&#xff0c;效率低下。因此&#xff0c;两位俄罗斯的数学家G.M.Adelson-Velskii 和E.M.Landis在1962年 发明了…

docker容器和宿主机网络不通

防火墙未开启&#xff0c;检查网络配置无异常 解决&#xff1a; [rootlocalhost ~]# vim /etc/sysctl.confnet.bridge.beidge-nf-call-iptables 1 net.bridge.beidge-nf-call-ip6tables 1[rootlocalhost ~]# sysctl -p [rootlocalhost ~]# systemctl restart docker 如果网…

ctfshow-web入门-sql注入(web216-web220)时间盲注结束

目录 1、web216 2、web217 3、web218 4、web219 5、web220 1、web216 最开始还以为是需要进行 base64 的相关处理&#xff0c;其实不必&#xff0c;直接闭合掉前面的括号即可&#xff0c;因为这里是字符串的拼接&#xff0c;将我们的 payload 替换掉那个 $id 。 在上一题的…

调试和优化大型深度学习模型 - 5 启动训练命令

调试和优化大型深度学习模型 - 5 启动训练命令 flyfish 先从简单的一句开始 python -m torch.distributed.launch这里的 -m 是告诉 Python 去运行 torch.distributed.launch 模块&#xff0c;而不是某个具体的 .py 文件。torch.distributed.launch 模块torch.distributed.la…

Django数据库一对多字段

3.16 Django数据库一对多 一对多关系通常通过外键&#xff08;ForeignKey&#xff09;来建立。 示例&#xff1a; 1&#xff09;创建Author和book models class class Auther(models.Model):namemodels.CharField(verbose_name作者,max_length32)class Book(models.Model):…

Java八股整合(MySQL+Redis)

MySQL 数据库设计三范式 不可再分&#xff0c;部分依赖&#xff0c;传递依赖 主键和外键区别 主键非空约束&#xff0c;唯一性约束&#xff0c;唯一标识一个字段 外键用于和其他表建立连接&#xff0c;是另一张表的主键&#xff0c;可重复可为空可以有多个 为什么不推荐使…