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

SpringBoot+React养老院管理系统 附带详细运行指导视频

文章目录

  • 一、项目演示
  • 二、项目介绍
  • 三、运行截图
  • 四、主要代码
    • 1.入住合同文件上传
    • 2.添加和修改套餐的代码
    • 3.查看入住记录代码

一、项目演示

项目演示地址: 视频地址

二、项目介绍

项目描述:这是一个基于SpringBoot+React框架开发的养老院管理系统。首先,这是一个前后端分离的项目,代码简洁规范,注释说明详细,易于理解和学习。其次,这项目功能丰富,具有一个养老院管理系统该有的所有功能。

项目功能:此项目分为两个角色:普通用户管理员普通用户有登录注册、浏览个人数据统计信息、管理个人信息、浏览楼栋信息、浏览套餐信息、浏览个人入住信息、浏览入住的日常记录信息、浏览入住的套餐选购信息、发布留言、浏览留言信息、删除个人留言信息、浏览公告信息、浏览活动信息等等功能。管理员有查看全部数据统计信息、管理所有用户信息、管理所有楼栋信息、管理所有套餐信息、管理所有入住信息、管理所有入住的日常记录信息、浏览所有入住的套餐选购信息、管理所有留言信息、管理所有公告信息、管理所有活动信息等等功能。

应用技术:SpringBoot + React + MySQL + MyBatis + Redis + Ant Design + Vite + TypeScript + Drools

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7(项目压缩包中自带) + Redis5.0.5(项目压缩包中自带) + JDK1.8 + Maven3.6.3(项目压缩包中自带)+ Node16.20.2(项目压缩包中自带)

三、运行截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、主要代码

1.入住合同文件上传

	@PostMapping(value="/upload")public ResponseDTO<String> uploadFile(MultipartFile file, HttpServletRequest request){if(file == null){return ResponseDTO.errorByMsg(CodeMsg.FILE_EMPTY);}//检查上传文件大小 不能超过50MBif(file.getSize() > 50*1024*1024) {return ResponseDTO.errorByMsg(CodeMsg.FILE_SURPASS_MAX_SIZE);}//获取文件后缀String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);String savePath = uploadFilePath + CommonUtil.getFormatterDate(new Date(), "yyyyMMdd") + "\\";File savePathFile = new File(savePath);if(!savePathFile.exists()){//若不存在改目录,则创建目录savePathFile.mkdirs();}String filename = new Date().getTime()+"."+suffix;logger.info("保存文件的路径:{}",savePath + filename);try {//将文件保存至指定目录file.transferTo(new File(savePath + filename));}catch (Exception e) {e.printStackTrace();return ResponseDTO.errorByMsg(CodeMsg.SAVE_FILE_EXCEPTION);}String filepath = CommonUtil.getFormatterDate(new Date(), "yyyyMMdd") + "/" + filename;return ResponseDTO.successByMsg(filepath, "文件上传成功!");}

2.添加和修改套餐的代码

    @Overridepublic ResponseDTO<Boolean> savePackage(PackageDTO packagesDTO) {// 进行统一表单验证CodeMsg validate = ValidateEntityUtil.validate(packagesDTO);if (!validate.getCode().equals(CodeMsg.SUCCESS.getCode())) {return ResponseDTO.errorByMsg(validate);}Package packages = CopyUtil.copy(packagesDTO, Package.class);if(CommonUtil.isEmpty(packages.getId())) {// 添加操作// 判断套餐名称是否存在if(isNameExist(packages, "")){return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_NAME_EXIST);}packages.setId(UuidUtil.getShortUuid());if(packagesMapper.insertSelective(packages) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_ADD_ERROR);}} else {// 修改操作// 判断套餐名称是否存在if(isNameExist(packages, packages.getId())){return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_NAME_EXIST);}if(packagesMapper.updateByPrimaryKeySelective(packages) == 0) {return ResponseDTO.errorByMsg(CodeMsg.PACKAGE_EDIT_ERROR);}}return ResponseDTO.success(true);}

3.查看入住记录代码

    @Overridepublic ResponseDTO<PageDTO<CheckDTO>> getCheckList(PageDTO<CheckDTO> pageDTO) {CheckExample checkExample = new CheckExample();// 不知道当前页多少,默认为第一页if(pageDTO.getPage() == null){pageDTO.setPage(1);}// 不知道每页多少条记录,默认为每页10条记录if(pageDTO.getSize() == null){pageDTO.setSize(10);}CheckExample.Criteria c1 = checkExample.createCriteria();if(pageDTO.getParam() != null) {CheckDTO checkDTO = pageDTO.getParam();if(!CommonUtil.isEmpty(checkDTO.getUsername())) {c1.andUsernameLike("%" + checkDTO.getUsername() + "%");}if(!CommonUtil.isEmpty(checkDTO.getPhone())) {c1.andPhoneLike("%" + checkDTO.getPhone() + "%");}if(!CommonUtil.isEmpty(checkDTO.getUserId())) {c1.andUserIdEqualTo(checkDTO.getUserId());}if(checkDTO.getState() != null && checkDTO.getState() != 0) {c1.andStateEqualTo(checkDTO.getState());}}checkExample.setOrderByClause("start_date desc, id desc");PageHelper.startPage(pageDTO.getPage(), pageDTO.getSize());// 分页查出入住数据List<Check> checkList = checkMapper.selectByExample(checkExample);PageInfo<Check> pageInfo = new PageInfo<>(checkList);// 获取数据的总数pageDTO.setTotal(pageInfo.getTotal());// 将domain类型数据  转成 DTO类型数据List<CheckDTO> checkDTOList = CopyUtil.copyList(checkList, CheckDTO.class);for(CheckDTO checkDTO : checkDTOList) {User user = userMapper.selectByPrimaryKey(checkDTO.getUserId());checkDTO.setUserDTO(CopyUtil.copy(Optional.ofNullable(user).orElse(new User()), UserDTO.class));PackageItemExample packageItemExample = new PackageItemExample();packageItemExample.createCriteria().andCheckIdEqualTo(checkDTO.getId());List<PackageItem> packageItemList = packageItemMapper.selectByExample(packageItemExample);checkDTO.setPackageItemDTOList(CopyUtil.copyList(packageItemList, PackageItemDTO.class));Building building = buildingMapper.selectByPrimaryKey(checkDTO.getBuildingId());checkDTO.setBuildingDTO(CopyUtil.copy(Optional.ofNullable(building).orElse(new Building()), BuildingDTO.class));// 更新入住数据的状态checkDTO.setState(updateCheckState(checkDTO));}pageDTO.setList(checkDTOList);return ResponseDTO.success(pageDTO);}

相关文章:

SpringBoot+React养老院管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.入住合同文件上传2.添加和修改套餐的代码3.查看入住记录代码 一、项目演示 项目演示地址&#xff1a; 视频地址 二、项目介绍 项目描述&#xff1a;这是一个基于SpringBootReact框架开发的养老院管理系统。首先…...

使用element-plus el-table中使用el-image层级冲突table表格会覆盖预览的图片等问题

在日常开发项目中 使用element-plus 中表格中使用 el-image的点击图片出现图片预览 会出现以下问题 表格一行会覆盖预览的图片 鼠标滑过也会显示表格 el-image 的预览层级和表格的层级冲突导致的。 解决方法&#xff1a;有两种一种是直接使用样式穿透 第二种推荐方法 使用官网推…...

python读取Oracle库并生成API返回Json格式

一、安装必要的库 首先&#xff0c;确保已经安装了以下库&#xff1a; 有网模式 pip install flask pip install gevent pi install cx_Oracle离线模式&#xff1a; 下载地址&#xff1a;https://pypi.org/simple/flask/ # a. Flask Werkzeug-1.0.1-py2.py3-none-any.whl J…...

音视频入门基础:MPEG2-TS专题(5)——FFmpeg源码中,判断某文件是否为TS文件的实现

一、引言 通过FFmpeg命令&#xff1a; ./ffmpeg -i XXX.ts 可以判断出某个文件是否为TS文件&#xff1a; 所以FFmpeg是怎样判断出某个文件是否为TS文件呢&#xff1f;它内部其实是通过mpegts_probe函数来判断的。从《FFmpeg源码&#xff1a;av_probe_input_format3函数和AVI…...

每天10个vue面试题(九)

1、如何在组件中批量使用Vuex的getter属性&#xff1f; 使用mapGetters辅助函数, 利用对象展开运算符将getter混入computed 对象中computed:{ ...mapGetters([total,discountTotal]) } 2、vue2和vue3的区别&#xff1f; 双向数据绑定不同&#xff1a;vue2 的双向数据绑定…...

Jenkins的环境部署

day22 回顾 Jenkins 简介 官网Jenkins Jenkins Build great things at any scale The leading open source automation server, Jenkins provides hundreds of plugins to support building, deploying and automating any project. 用来构建一切 其实就是用Java写的一个项目…...

八、鸿蒙开发-网络请求、应用级状态管理

提示&#xff1a;本文根据b站尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程课整理 链接指引 > 尚硅谷2024最新鸿蒙开发HarmonyOS4.0鸿蒙NEXT星河版零基础教程 文章目录 一、网络请求1.1 申请网络访问权限1.2 安装axios库1.2.1 配置环境变量1.2.2 第二步&…...

经验笔记:Git 中的远程仓库链接及上下游关系管理

Git 中的远程仓库链接及上下游关系管理 1. 远程仓库的链接信息 当你克隆一个远程仓库时&#xff0c;Git 会在本地仓库中记录远程仓库的信息。这些信息包括远程仓库的 URL、默认的远程名称&#xff08;通常是 origin&#xff09;&#xff0c;以及远程仓库中的所有分支和标签。…...

Paint 学习笔记

目录 ippaint 外扩对象 LCM_inpaint_Outpaint_Comfy&#xff1a; 不支持文字引导 ippaint https://github.com/Sanster/IOPaint 外扩对象 https://www.iopaint.com/models/diffusion/powerpaint_v2 GitHub - open-mmlab/PowerPaint: [ECCV 2024] PowerPaint, a versatile …...

Jenkins修改LOGO

重启看的LOGO和登录页面左上角的LOGO 进入LOGO存在的目录 [roottest-server01 svgs]# pwd /opt/jenkins_data/war/images/svgs [roottest-server01 svgs]# ll logo.svg -rw-r--r-- 1 jenkins jenkins 29819 Oct 21 10:58 logo.svg #jenkins_data目录是我挂载到了/opt目录&…...

kafka是如何做到高效读写

消息持久化&#xff1a; Kafka 将消息存储在磁盘上&#xff0c;并且通过顺序写入的方式提高写入性能。 消息被追加到日志文件的尾部&#xff0c;避免了随机写操作&#xff0c;从而提高了写入速度。零拷贝技术&#xff1a;利用操作系统的零拷贝特性&#xff0c;数据可以从磁盘直…...

Intern大模型训练营(九):XTuner 微调实践微调

本节课程的视频和教程都相当清晰&#xff0c;尤其是教程&#xff0c;基本只要跟着文档&#xff0c;在开发机上把指令都相同地输出一遍&#xff0c;就可以完成任务&#xff08;大赞&#xff09;&#xff0c;相当顺利。因此&#xff0c;这里的笔记就不重复赘述步骤&#xff0c;更…...

从一次java.io.StreamCorruptedException: invalid stream header: 48656C6C 错误中学到的调试思路

问题场景&#xff1a; 在项目中&#xff0c;我试图使用 Java 的 ObjectInputStream 反序列化一个对象。代码逻辑看似简单&#xff1a;读取字节流&#xff0c;将其转为 Java 对象。然而&#xff0c;程序抛出了以下异常&#xff1a; java.io.StreamCorruptedException: invalid…...

树莓派的发展历史

树莓派&#xff08;Raspberry Pi&#xff09;是由英国的树莓派基金会开发的一系列单板计算机&#xff0c;其目标是为了促进计算机科学教育&#xff0c;同时提供廉价的计算机硬件平台。 1. 诞生背景与初代模型&#xff08;2006-2012&#xff09; 背景&#xff1a;树莓派的概念起…...

K8S containerd拉取harbor镜像

前言 接前面的环境 K8S 1.24以后开始启用docker作为CRI&#xff0c;这里用containerd拉取 参考文档 正文 vim /etc/containerd/config.toml #修改内容如下 #sandbox_image "registry.aliyuncs.com/google_containers/pause:3.10" systemd_cgroup true [plugins.…...

Ubuntu 环境下通过 Apt-get 安装软件

操作场景 为提升用户在云服务器上的软件安装效率&#xff0c;减少下载和安装软件的成本&#xff0c;腾讯云提供了 Apt-get 下载源。在 Ubuntu 环境下&#xff0c;用户可通过 Apt-get 快速安装软件。对于 Apt-get 下载源&#xff0c;不需要添加软件源&#xff0c;可以直接安装软…...

vue使用List.forEach遍历集合元素

需要遍历集合对其每个元素进行操作时&#xff0c;可以使用forEach方法 1.语法&#xff1a;集合.forEach ( 定义每一项 > 定义每一项都要进行的逻辑 ) 2、使用场景&#xff1a; //例如需要给每个员工的工资数量加1000this.personList.forEach(item>item.salary100…...

ROM修改进阶教程------安卓14去除修改系统应用后导致的卡logo验证步骤 适用安卓13 14 安卓15可借鉴参考

上期的博文解析了安卓14 安卓15去除系统应用签名验证的步骤解析。我们要明白。修改系统应用后有那些验证。其中签名验证 去卡logo验证 与可降级安装应用验证等等的区别。有些要相互结合使用。今天的博文将对修改系统应用后卡logo验证做个步骤解析。 通过博文了解💝💝�…...

苹果macbook,MacOS 11,12,13,14,15 跳过监管锁(配置锁)

第一步&#xff1a;进入恢复模式 长按电源键关机&#xff0c;再长按开机进入恢复模式。&#xff08;M&#xff0c;Intel芯片方法不同&#xff09; 第二步&#xff1a;复制代码 右上角联网&#xff0c;打开Safari&#xff0c;地址栏输入http://i7q.cn/61NWfQ。复制以下命令&am…...

【YOLOv8】安卓端部署-2-项目实战

文章目录 1 准备Android项目文件1.1 解压文件1.2 放置ncnn模型文件1.3 放置ncnn和opencv的android文件1.4 修改CMakeLists.txt文件 2 手机连接电脑并编译软件2.1 编译软件2.2 更新配置及布局2.3 编译2.4 连接手机 3 自己数据集训练模型的部署4 参考 1 准备Android项目文件 1.1…...

MongoDB开发者必备:Dbeaver旗舰版的地理空间数据操作全攻略

MongoDB开发者必备&#xff1a;Dbeaver旗舰版的地理空间数据操作全攻略 在位置服务(LBS)应用爆发的时代&#xff0c;地理空间数据处理能力已成为开发者核心技能。无论是共享经济中的车辆调度&#xff0c;还是电商平台的附近推荐&#xff0c;精准的地理查询直接影响用户体验。作…...

桶排序:分布式排序的高效实现

桶排序&#xff1a;分布式排序的高效实现 算法原理 核心思路 桶排序是一种分布式排序算法&#xff0c;其核心思想是&#xff1a; 将待排序的数据分到有限数量的桶里每个桶再分别进行排序&#xff08;可以使用其他排序算法&#xff09;最后将各个桶中的数据有序地合并起来 复杂度…...

巨有科技智慧市集系统,数字化工具降本增效!

从城市商圈到景区古镇&#xff0c;从乡村田园到文创园区&#xff0c;各类市集遍地开花&#xff0c;但管理难题始终是制约行业发展的最大瓶颈。人工登记杂乱、对账结算繁琐、现场管控滞后、数据完全空白&#xff0c;一场中型市集就要耗费大量人力物力&#xff0c;大型市集更是纠…...

Vision Transformers在密集预测任务中的创新应用与性能优化

1. Vision Transformers如何革新密集预测任务 第一次接触Vision Transformers&#xff08;ViT&#xff09;时&#xff0c;我完全被它的设计哲学震撼到了。传统的CNN在处理图像时&#xff0c;就像用固定大小的网格去观察世界&#xff0c;而ViT则像是一个拥有"全局视野"…...

如何用RSPrompter提升遥感图像分割效果?基于SAM的实战技巧分享

如何用RSPrompter提升遥感图像分割效果&#xff1f;基于SAM的实战技巧分享 遥感图像分割一直是计算机视觉领域的难点之一。传统方法往往需要大量标注数据&#xff0c;而标注成本高昂&#xff0c;尤其是对于高分辨率遥感影像。2023年Meta发布的Segment Anything Model(SAM)展现了…...

PyTorch 3.0静态图分布式训练源码分析窗口即将关闭:官方已标记torch.distributed._spmd模块为“实验性冻结”,2024 Q3后将移除调试钩子入口

第一章&#xff1a;PyTorch 3.0静态图分布式训练的演进背景与冻结决策动因PyTorch 3.0正式宣布冻结静态图&#xff08;TorchScript&#xff09;在分布式训练路径中的演进支持&#xff0c;这一决策并非技术倒退&#xff0c;而是基于多年大规模生产实践与生态协同的理性收敛。随着…...

Windows音频捕获终极革命:告别系统混音器,实现进程级精准录音

Windows音频捕获终极革命&#xff1a;告别系统混音器&#xff0c;实现进程级精准录音 【免费下载链接】win-capture-audio An OBS plugin that allows capture of independant application audio streams on Windows, in a similar fashion to OBSs game capture and Discords …...

告别预编译固件:手把手教你从零构建Pico PC RK3588S的Ubuntu 20.04根文件系统

深度定制RK3588S开发板&#xff1a;从零构建Ubuntu 20.04根文件系统的完整指南 当拿到一块全新的Pico PC RK3588S开发板时&#xff0c;许多开发者会发现厂商仅提供了预编译的固件包。这种"黑盒"模式虽然能快速启动设备&#xff0c;却严重限制了系统级定制的可能性。…...

DecepGPT Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learnin

DecepGPT: Schema-Driven Deception Detection with Multicultural Datasets and Robust Multimodal Learning Authors: Jiajian Huang, Dongliang Zhu, Zitong YU, Hui Ma, Jiayu Zhang, Chunmei Zhu, Xiaochun Cao Deep-Dive Summary: DeepGPT: 基于模式驱动的多文化数据集…...

终极指南:如何在Chainer中构建强大的循环神经网络(RNN)

终极指南&#xff1a;如何在Chainer中构建强大的循环神经网络(RNN) 【免费下载链接】chainer A flexible framework of neural networks for deep learning 项目地址: https://gitcode.com/gh_mirrors/ch/chainer 想要掌握深度学习中的序列建模吗&#xff1f;Chainer框架…...