基于SpringCloud的会议室预约系统Java基于微服务的会议室报修系统【源码+lw】

news2024/12/25 2:17:25

💕💕作者:计算机源码社
💕💕个人简介:本人七年开发经验,擅长Java、微信小程序、Python、Android、大数据等,大家有这一块的问题可以一起交流!
💕💕学习资料、程序开发、技术解答、文档报告

💕💕JavaWeb项目
💕💕微信小程序项目
💕💕Python项目
💕💕Android项目

文章目录

  • 1、绪论
    • 1.1 项目背景与意义
  • 2、核心功能模块
  • 3、项目页面展示
    • 3.1 登录页面
    • 3.2 会议室报修页面![在这里插入图片描述](https://img-blog.csdnimg.cn/2b18f50f90bd452fadc34a00f5c09d62.png#pic_center)## 3.3 导出会议室信息页面
    • 3.4 预约会议室页面![在这里插入图片描述](https://img-blog.csdnimg.cn/41cc5ea42a7b4947a465c5467c11dc43.png#pic_center)## 3.5 角色用户管理页面
    • 3.6 查看会议室使用情况页面![在这里插入图片描述](https://img-blog.csdnimg.cn/93e3b81ca51842218a7e69e11a24dd1a.png#pic_center)
  • 4、 核心代码

1、绪论

1.1 项目背景与意义

   随着现代企业的日益发展,会议作为信息沟通和决策的重要手段,在组织内部扮演着不可或缺的角色。然而,传统的会议室管理方式常常受限于繁琐的手动操作和信息不透明,导致会议室资源利用效率低下、预约冲突频繁发生。同时,全球化的办公环境使得跨地域、跨时区的会议安排变得复杂。为了有效解决这些挑战,"基于SpringCloud的会议室预约系统的设计与实现"成为迫切的需求。该系统的设计将通过现代化的信息技术手段,实现会议室的在线预约、实时查看和高效管理,从而为企业提供一个智能、便捷的会议室资源管理平台。
   基于SpringCloud的会议室预约系统的设计具有深远的意义。首先,系统的实施将提升会议室资源的利用效率,避免了预约冲突,降低了会议室的空置率,从而优化了企业内部资源分配。其次,系统支持远程会议预约和管理,为全球范围内的跨地域团队协作提供了可靠的工具。此外,系统的数据导出和分析功能将为企业决策提供有力支持,有助于优化会议安排,提升工作效率。总之,"基于SpringCloud的会议室预约系统的设计与实现"不仅是一个技术层面上的创新,更是企业管理效率和信息化水平提升的战略举措,将为企业内部协作和决策带来积极的影响。

2、核心功能模块

  会议室预约系统核心的功能应包括以下主要功能模块:
  1、会议室预约: 用户能够通过系统选择合适的日期、时间和会议室,进行预约,并提供会议主题和参与人信息。
  2、会议室管理: 管理员能够添加、修改和删除会议室信息,包括容纳人数、设备设施等。
  3、会议室维修申请: 用户可以提交维修申请,描述问题,并选择相关的会议室,以便及时维护。
  4、查看会议室使用情况: 用户和管理员可以查看特定日期范围内会议室的预约情况,避免冲突。
  5、导出会议室数据: 系统允许用户导出会议室使用数据和报告,支持数据分析和决策。
  6、用户管理: 系统应具备用户注册、登录、权限管理等功能,确保不同用户角色拥有适当的访问权限。

3、项目页面展示

在这里插入图片描述

3.1 登录页面

在这里插入图片描述

3.2 会议室报修页面在这里插入图片描述## 3.3 导出会议室信息页面

在这里插入图片描述

3.4 预约会议室页面在这里插入图片描述## 3.5 角色用户管理页面

在这里插入图片描述

3.6 查看会议室使用情况页面在这里插入图片描述

4、 核心代码

 /**
     * 查询会议预约信息列表
     */
    @RequiresPermissions("system:meeting_info:list")
    @PostMapping("/list")
    @ResponseBody
    public TableDataInfo list(MeetingInfo meetingInfo)
    {
        startPage();
        List<MeetingInfo> list = meetingInfoService.selectMeetingInfoList(meetingInfo);
        return getDataTable(list);
    }


    @PostMapping("/detail")
    @ResponseBody
    public TableDataInfo detail(MeetingInfo meetingInfo)
    {
        if (meetingInfo.getMeetingDate()==null){
            meetingInfo.setMeetingDate(new Date());
        }
        startPage();
        List<Meeting> meetingList = new ArrayList<Meeting>();
        System.out.println(meetingInfo.getMeetingDate());
        SimpleDateFormat formatter =new SimpleDateFormat("yyyy-MM-dd");
        String originalDate = formatter.format(meetingInfo.getMeetingDate());
        try {
            meetingInfo.setMeetingDate(formatter.parse(originalDate));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        System.out.println(meetingInfo.getMeetingDate());
        List<MeetingInfo> list = meetingInfoService.selectMeetingInfoList(meetingInfo);
        System.out.println(list.size()+">>>>>>");
        if (list.size()>0){
            for (MeetingInfo meetingInfo1 : list){
                if (meetingInfo1.getAppointmentStatus().equals("审核中")||meetingInfo1.getAppointmentStatus().equals("已通过")){
                    Meeting meeting = new Meeting();
                    meeting.setRoom(meetingInfo1.getRoomId());
                    String s = meetingInfo1.getMeetingTime().split(":")[0];
                    int se = Integer.parseInt(meetingInfo1.getMeetingTime().split(":")[1]);
                    int e = Integer.parseInt(meetingInfo1.getMeetingEnd().split(":")[0]);
                    int ee = Integer.parseInt(meetingInfo1.getMeetingEnd().split(":")[1]);
                    System.out.println("S:"+s);
                    switch (s) {
                        case "08":
                            System.out.println(8);
                            meeting.setA2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");

                            if (e>10){
                                meeting.setB2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>12){
                                meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "09":
                            System.out.println(9);
                            meeting.setA2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>10){
                                meeting.setB2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>12){
                                meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "10":
                            System.out.println(10);
                            meeting.setB2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>12){
                                meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "11":
                            meeting.setB2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>12){
                                meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "12":
                            meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "13":
                            meeting.setC2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>14){
                                meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "14":
                            meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "15":
                            meeting.setD2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            if (e>16){
                                meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            }
                            break;
                        case "16":
                            meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            break;
                        case "17":
                            meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            break;
                        case "18":
                            meeting.setE2(meetingInfo1.getMeetingTime()+"-"+meetingInfo1.getMeetingEnd()+"不可用");
                            break;
                    }
                    System.out.println("meeting:"+meeting);
                    meetingList.add(meeting);
                }
                List<String> rname = new ArrayList<String>();
                if (meetingList.size()>0){
                    for (Meeting meeting1 : meetingList){
                        rname.add(meeting1.getRoom());
                    }
                }
                for (MeetingRoom meetingRoom : meetingRoomService.selectMeetingRoomList(new MeetingRoom())){
                    if (!rname.contains(meetingRoom.getRoomName())){
                        Meeting meeting1 = new Meeting();
                        meeting1.setRoom(meetingRoom.getRoomName());
                        meeting1.setA2("");
                        meeting1.setB2("");
                        meeting1.setC2("");
                        meeting1.setD2("");
                        meeting1.setE2("");
                        meetingList.add(meeting1);
                    }
                }
            }
        }else {
            for (MeetingRoom meetingRoom : meetingRoomService.selectMeetingRoomList(new MeetingRoom())){
                Meeting meeting1 = new Meeting();
                meeting1.setRoom(meetingRoom.getRoomName());
                meetingList.add(meeting1);
            }
        }
        return getDataTable(meetingList);
    }

    /**
     * 导出会议预约信息列表
     */
    @RequiresPermissions("system:meeting_info:export")
    @Log(title = "会议预约信息", businessType = BusinessType.EXPORT)
    @PostMapping("/export")
    @ResponseBody
    public AjaxResult export(MeetingInfo meetingInfo)
    {
        List<MeetingInfo> list = meetingInfoService.selectMeetingInfoList(meetingInfo);
        ExcelUtil<MeetingInfo> util = new ExcelUtil<MeetingInfo>(MeetingInfo.class);
        return util.exportExcel(list, "会议预约信息数据");
    }

    /**
     * 新增会议预约信息
     */
    @GetMapping("/add")
    public String add()
    {
        return prefix + "/add";
    }

    /**
     * 新增保存会议预约信息
     */
    @RequiresPermissions("system:meeting_info:add")
    @Log(title = "会议预约信息", businessType = BusinessType.INSERT)
    @PostMapping("/add")
    @ResponseBody
    public AjaxResult addSave(MeetingInfo meetingInfo) throws ParseException {
        int i = meetingInfoService.insertMeetingInfo(meetingInfo);
        if (i==-1){
            return error("会议时间存在冲突");
        }else {
            return toAjax(1);
        }

    }

    /**
     * 修改会议预约信息
     */
    @RequiresPermissions("system:meeting_info:edit")
    @GetMapping("/edit/{id}")
    public String edit(@PathVariable("id") Long id, ModelMap mmap)
    {
        MeetingInfo meetingInfo = meetingInfoService.selectMeetingInfoById(id);
        mmap.put("meetingInfo", meetingInfo);
        if (meetingInfoService.selectMeetingInfoById(id).getCreateBy().equals(ShiroUtils.getLoginName())){
            return prefix + "/edit";

        }else {
            for (SysRole role : roleService.selectRolesByUserId(ShiroUtils.getUserId())){
                System.out.println(ShiroUtils.getLoginName()+"<><><><>");
                if (role.getRoleName().equals("管理员")){
                    return prefix + "/edit";
                }else {
                    return "/error/noautj";
                }
            }
        }
        return "/error/noautj";
//        System.out.println(meetingInfoService.selectMeetingInfoById(id).getCreateBy()+"??????");
//        System.out.println(ShiroUtils.getLoginName()+"<><><><>");

    }

    /**
     * 修改保存会议预约信息
     */
    @RequiresPermissions("system:meeting_info:edit")
    @Log(title = "会议预约信息", businessType = BusinessType.UPDATE)
    @PostMapping("/edit")
    @ResponseBody
    public AjaxResult editSave(MeetingInfo meetingInfo) throws ParseException {
        if (meetingInfoService.selectMeetingInfoById(meetingInfo.getId()).getCreateBy().equals(ShiroUtils.getLoginName())){
            int i = meetingInfoService.updateMeetingInfo(meetingInfo);
            if (i==-1){
                return error("会议时间存在冲突");
            }else {
                return toAjax(1);
            }
        }else {
            for (SysRole role : roleService.selectRolesByUserId(ShiroUtils.getUserId())){
                if (role.getRoleName().equals("管理员")){
                    int i = meetingInfoService.updateMeetingInfo(meetingInfo);
                    if (i==-1){
                        return error("会议时间存在冲突");
                    }else {
                        return toAjax(1);
                    }
                }else {
                    return error("您不是管理员,无权操作他人预约信息");
                }
            }

        }
        return error("您不是管理员,无权操作他人预约信息");
//        return toAjax(meetingInfoService.updateMeetingInfo(meetingInfo));
    }

    /**
     * 删除会议预约信息
     */
    @RequiresPermissions("system:meeting_info:remove")
    @Log(title = "会议预约信息", businessType = BusinessType.DELETE)
    @PostMapping( "/remove")
    @ResponseBody
    public AjaxResult remove(String ids)
    {
        return toAjax(meetingInfoService.deleteMeetingInfoByIds(ids));
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/900175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.net通过S7.net读写西门子PLC中,字符串,bool,整数,小数及byte型

注&#xff1a;.net中通过TCP/IP方式通过S7.net.dll动态库&#xff0c;连接到西门子PLC&#xff0c;西门子程序中许勾选优化块&#xff0c;程序读取需要 db块号偏移量 一。使用VS项目&#xff0c;在项目中添加S7.net动态库 代码中引用S7.net动态库 using S7.Net; 实例化PLC服…

Linux网络编程:Socket套接字编程

文章目录&#xff1a; 一&#xff1a;定义和流程分析 1.定义 2.流程分析 3.网络字节序 二&#xff1a;相关函数 IP地址转换函数inet_pton inet_ntop&#xff08;本地字节序 网络字节序&#xff09; socket函数(创建一个套接字) bind函数(给socket绑定一个服务器地址结…

使用线性回归模型优化权重:探索数据拟合的基础

文章目录 前言一、示例代码二、示例代码解读1.线性回归模型2.MSE损失函数3.优化过程4.结果解读 总结 前言 在机器学习和数据科学中&#xff0c;线性回归是一种常见而重要的方法。本文将以一个简单的代码示例为基础&#xff0c;介绍线性回归的基本原理和应用。将使用Python和Nu…

安卓框架中的常见问题汇总

目录 1.安卓操作系统的组件结构图如下 2.问题汇总 1.安卓操作系统的组件结构图如下 2.问题汇总 问题1&#xff1a;安卓框架中的库和应用程序框架之间什么关系&#xff1f; 在安卓系统中&#xff0c;应用程序框架层&#xff08;Application Framework&#xff09;是核心应用程…

迈向通用听觉人工智能!清华电子系、火山语音携手推出认知导向的听觉大语言模型SALMONN

日前&#xff0c;清华大学电子工程系与火山语音团队携手合作&#xff0c;推出认知导向的开源听觉大语言模型SALMONN (Speech Audio Language Music Open Neural Network)。 大语言模型 SALMONN LOGO 相较于仅仅支持语音输入或非语音音频输入的其他大模型&#xff0c;SALMONN对…

Python爬虫的scrapy的学习(学习于b站尚硅谷)

目录 一、scrapy  1. scrapy的安装  &#xff08;1&#xff09;什么是scrapy  &#xff08;2&#xff09;scrapy的安装 2. scrapy的基本使用  &#xff08;1&#xff09;scrap的使用步骤  &#xff08;2&#xff09;代码的演示 3. scrapy之58同城项目结构和基本方法&…

面试最常问的数组转树,树转数组 c++ web框架paozhu实现

刚毕业同学&#xff0c;找工作常被问 二维数组转树&#xff0c;树转二维数组 需要支持无限层级实现&#xff0c;如果你了解这个语言那么实现起来还要一番思考 c web框架 paozhu使用 需要实现数据库表数据到前台菜单实现&#xff0c;就是这种功能 二维数组转树&#xff0c;树转…

学习笔记:Opencv实现拉普拉斯图像锐化算法

2023.8.19 为了在暑假内实现深度学习的进阶学习&#xff0c;Copy大神的代码&#xff0c;记录学习日常 图像锐化的百科&#xff1a; 图像锐化算法-sharpen_lemonHe_的博客-CSDN博客 在环境配置中要配置opencv&#xff1a; pip install opencv-contrib-python Code and lena.png…

【模拟集成电路】反馈系统——基础到进阶(一)

【模拟集成电路】反馈系统——基础到进阶 前言1 概述2 反馈电路特性2.1增益灵敏度降低2.2 终端阻抗变化2.3 带宽拓展2.4 非线性减小 3 放大器分类4 反馈检测和返回机制4.1 按照检测物理量分类4.2 按照检测拓扑连接分类 5 反馈结构分析6 二端口方法7 波特方法6 麦德布鲁克方法 前…

Go中的有限状态机FSM的详细介绍 _

1、FSM简介 1.1 有限状态机的定义 有限状态机&#xff08;Finite State Machine&#xff0c;FSM&#xff09;是一种数学模型&#xff0c;用于描述系统在不同状态下的行为和转移条件。 状态机有三个组成部分&#xff1a;状态&#xff08;State&#xff09;、事件&#xff08;…

认识Spring框架

目录 1.了解Spring框架 2.了解Spring的体系结构 3.认识Spring家族 4.实现第一个Spring入门程序 1.了解Spring框架 1.什么是Spring框架&#xff1f; Spring是一个轻量级的控制反转&#xff08;IoC&#xff09;和面向切面的容器框架。 关键词概念解释&#xff1a; 1.轻量级…

2023国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

2028量产?兰博基尼首款纯电车型Lanzador亮相,双电机四驱跨界GT

经过多次预热之后&#xff0c;兰博基尼的首款纯电车型Lanzador终于在8月19日正式亮相。这款车以较完整的面貌出现在大众面前&#xff0c;将于2028年开始正式量产。虽然Lanzador仍是一个暂定名字&#xff0c;但它来自西班牙语&#xff0c;意为“投手”、“发射器”和“推动者”&…

C++笔记之注册的含义

C笔记之注册的含义 code review! 文章目录 C笔记之注册的含义1.注册对象到Qt的信号槽系统中2.注册函数到Qt的元对象系统中元对象系统例1例2 3.注册自定义类型到C STL容器中4.将函数指针传递给另一个类&#xff0c;注册回调函数class ICallback存在的意义例1&#xff0c;用于说…

专业课只考2门,计算机学硕最低分290的江苏院校

南京工业大学 考研难度&#xff08;☆&#xff09; 内容&#xff1a;23考情概况&#xff08;拟录取和复试分析&#xff09;、专业目录、23复试详情、各专业考情分析。 正文1332字&#xff0c;预计阅读&#xff1a;3分钟。 2023考情概况 南京工业大学计算机相关各专业复试和…

Intellij中直接运行ts配置:run configuration for typescript

在Intellij中可以借助插件run configuration for typescript直接运行typescript&#xff1a; run configuration for typescript插件本质还是依赖于 ts-node 来运行&#xff0c;只是其可以帮助我们自动配置好 ts-node 运行参数&#xff0c;简化使用。 第一步&#xff1a;安装…

uniapp配置添加阿里巴巴图标icon流程步骤

文章目录 下载复制文件到项目文件夹里项目配置目录结构显示图标 下载 阿里巴巴icon官网 https://www.iconfont.cn/ 复制文件到项目文件夹里 项目配置目录结构 显示图标

带你了解建堆的时间复杂度

目录 用向上调整建堆的时间复杂度 1.向上调整建堆的时间复杂度O(N*logN) 2.数学论证 3.相关代码 用向下调整建堆的时间复杂度 1.建堆的时间复杂度为O(N) 2.数学论证 3.相关代码 完结撒花✿✿ヽ(▽)ノ✿✿ 博主建议:面试的时候可能会被面试官问到建堆时间复杂度的证明过…

安卓手机的充电原理

安卓手机的充电原理是通过充电器将交流电转换为直流电&#xff0c;然后通过USB接口传输到手机电池中。手机电池的充电过程分为三个阶段&#xff1a;涓流充电、恒流充电和恒压充电。 充电动画 涓流充电是用来先对完全放电的电池单元进行预充&#xff08;恢复性充电&#xff09…

pdf 转 word

pdf 转 word 一、思路 直接调用LibreOffice 命令进行文档转换的命令行工具 使用的前系统中必须已经安装了 libreofficelibreoffice已翻译的用户界面语言包: 中文 (简体)libreoffice离线帮助文档: 中文 (简体)上传字体 重点&#xff1a;重点&#xff1a;重点&#xff1a; 亲…