OA会议管理系统之待开、历史、所有会议(内附源码)

目录

一、前言

1.导读

二、功能实现

1.功能介绍及分析

2.功能实现

2.1.dao层

2.2.jsp页面

2.3.web层

3.案例展示


 

一、前言

1.导读

如我们的标题所示,待开、历史、所有会议分别是三个小模块,它们的功能相同但是意义不同,这三个的本质意义就是显示的会议状态不同,下面将由我来带领大家走进和了解这三个模块。

二、功能实现

1.功能介绍及分析

首先我们进行分析一下,这三个模块的展示数据

        待开会议➡会议状态(待开)

        历史会议➡会议状态(结束会议) 

        所有会议➡会议状态(所有状态) 

这时候我们发现功能其实都是大同小异的,唯独他们的会议状态不一致,我们就可以对这一点进行优化,我们只要完成一个模块就等同于完成了三个,我们可以在dao方法上面下文章,让条件判断的state是可变的,通过前端页面的js传递参数来实现,需要注意的是,这三个模块只对登录者存在于某条会议中展示不是全部公开的,下面来看看我们的具体改动在哪里?

2.功能实现

2.1.dao层

MeetinginfoDaoImpl

package com.xw.dao;import java.sql.SQLException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;import com.xw.entity.Meetinginfo;
import com.zking.util.BaseDao;
import com.zking.util.PageBean;
import com.zking.util.StringUtils;/*** Meetingroominfo数据访问层接口实现* * @author 索隆**/
public class MeetinginfoDaoImpl extends BaseDao<Meetinginfo> implements IMeetinginfoDao {@Overridepublic List<Map<String, Object>> Bystatelist(Meetinginfo minfo,String findstate, int userid, PageBean pageBean) throws Exception {// sql语句编写String sql="SELECT \r\n" + "    a.id,\r\n" + "    a.title,\r\n" + "    a.content,\r\n" + "    a.canyuze,\r\n" + "    a.liexize,\r\n" + "    a.zhuchiren,\r\n" + "    b.NAME,\r\n" + "    d.NAME AS roomName,\r\n" + "    DATE_FORMAT(a.startTime, '%Y-%m-%d %H:%i:%s') AS startTime,\r\n" + "    DATE_FORMAT(a.endTime, '%Y-%m-%d %H:%i:%s') AS endTime,\r\n" + "    a.state,\r\n" + "    (\r\n" + "        CASE WHEN a.state = '1' THEN '新建'\r\n" + "            WHEN a.state = '2' THEN '待审核'\r\n" + "            WHEN a.state = '3' THEN '驳回'\r\n" + "            WHEN a.state = '4' THEN '待开'\r\n" + "            WHEN a.state = '5' THEN '进行中'\r\n" + "            WHEN a.state = '6' THEN '开启投票'\r\n" + "            WHEN a.state = '7' THEN '结束会议'\r\n" + "            ELSE '会议取消'\r\n" + "        END\r\n" + "    ) AS meetingState,\r\n" + "    a.seatPic,\r\n" + "    a.remark,\r\n" + "    a.auditor,\r\n" + "    c.NAME AS auditorName\r\n" + "FROM\r\n" + "    (\r\n" + "        SELECT *\r\n" + "        FROM t_oa_meeting_info\r\n" + "        WHERE FIND_IN_SET("+userid+", canyuze)\r\n" + "            OR FIND_IN_SET("+userid+", liexize)\r\n" + "            OR FIND_IN_SET("+userid+", zhuchiren)\r\n" + "    ) a\r\n" + "    INNER JOIN t_oa_user b ON a.zhuchiren = b.id\r\n" + "    LEFT JOIN t_oa_user c ON a.auditor = c.id\r\n" + "    LEFT JOIN t_oa_meeting_room d ON d.id = a.location\r\n" + "WHERE\r\n" + "    1 = 1";// 进行参数非空判断String title = minfo.getTitle();// 会议标题String zhuchiren = minfo.getZhuchiren();// 会议主持人// 根据标题查找if (StringUtils.isNotBlank(title)) {sql += " AND title LIKE '%" + title + "%'";}// 根据主持人查找if (StringUtils.isNotBlank(zhuchiren)) {sql += " AND zhuchiren = '" + zhuchiren + "'";}// 根据会议状态查找if (findstate != null && StringUtils.isNotBlank(findstate)) {sql += " AND  FIND_IN_SET(state,('"+findstate+"'))  ";}// 按照id降序排序sql += " ORDER BY a.id DESC";return super.executeQuery(sql, pageBean);}}

2.2.jsp页面

三个模块的jsp与js都是一致的,不一致的地方在于传递到后端的参数不同所以显示的数据也不同,所以就不一一展示给大家看了。

JSP页面

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ include file="/common/static.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="static/js/meeting/meetingWaiting.js"></script>
<title>待开会议</title>
</head>
<style>
body {margin: 15px;
}.layui-table-cell {height: inherit;
}.layui-layer-page .layui-layer-content {overflow: visible !important;
}
</style>
<body><!-- 搜索栏 --><div class="layui-form-item" style="margin: 15px 0px;"><div class="layui-inline"><label class="layui-form-label">会议标题</label><div class="layui-input-inline"><input type="text" id="title" autocomplete="off" class="layui-input" placeholder="请输入需要查询的会议标题"></div></div><div class="layui-inline"><button id="btn_search" type="button" class="layui-btn"><i class="layui-icon layui-icon-search"></i> 查询</button></div></div><!-- 数据表格 --><table id="dktb" lay-filter="dktb" class="layui-table" style="margin-top: -15px"></table></body>
</html>

JS代码

var table, $, layer;
var row;layui.use([ 'table', 'jquery', 'layer' ], function() {table = layui.table, layer = layui.layer, $ = layui.jquery;initTable();//为查询按钮设置点击事件$("#btn_search").click(function() {query();})});//查询的点击事件
function query() {table.reload('dktb', {url : 'Meetinginfo.action', //请求地址method : 'POST', //请求方式,GET或者POSTpage : true, //是否分页where : {//设定异步数据接口的额外参数,任意设'methodName' : 'BystateList','title' : $('#title').val(),'state' : 4,},request : { //自定义分页请求参数名pageName : 'page', //页码的参数名称,默认:pagelimitName : 'rows' //每页数据量的参数名,默认:limit},done : function(res) {console.log(res);}})
};//将分页查询方法封装
function initTable() {table.render({elem : '#dktb',url : 'Meetinginfo.action',title : '我的会议',where : {//设定异步数据接口的额外参数,任意设'methodName' : 'BystateList','title' : $('#title').val(),'state' : 4//这里的传递根据需求而定//待开会议 4//历史会议 7//所以会议直接不传参就是全部会议},cols : [ [ {type : 'checkbox',fixed : 'left'}, {field : 'id',title : '会议编号',width : 140,fixed : 'left',unresize : true,sort : true}, {field : 'title',title : '会议标题',width : 180,edit : 'text'}, {field : 'roomName',title : '会议地点',width : 150,edit : 'text'}, {field : 'startTime',title : '开始时间',width : 150,edit : 'text'}, {field : 'endTime',title : '结束时间',width : 120,edit : 'text'}, {field : 'meetingState',title : '会议状态',width : 120,edit : 'text'}, {field : 'NAME',title : '主持人',width : 120,edit : 'text'}] ],page : true});
}

2.3.web层

MeetinginfoAction

package com.xw.web;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Enumeration;
import java.util.List;
import java.util.Map;
import java.util.UUID;import javax.security.auth.message.callback.PrivateKeyCallback.Request;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;import org.apache.commons.beanutils.ConvertUtils;import com.sun.xml.internal.ws.encoding.soap.SOAP12Constants;
import com.xw.biz.IMeetinginfoBiz;
import com.xw.biz.MeetinginfoBizImpl;
import com.xw.entity.Meetinginfo;
import com.xw.entity.User;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.Base64ImageUtils;
import com.zking.util.DateUtil;
import com.zking.util.MyDateConverter;
import com.zking.util.PageBean;
import com.zking.util.PropertiesUtil;
import com.zking.util.R;
import com.zking.util.ResponseUtil;
import com.zking.util.StringUtils;/*** 会议管理* * @author 索隆**/
public class MeetinginfoAction extends ActionSupport implements ModelDriver<Meetinginfo> {private Meetinginfo Meetinginfo = new Meetinginfo();private IMeetinginfoBiz imd = new MeetinginfoBizImpl();/*** 初始化我的会议、待开会议、历史会议、所有会议数据* * @param req* @param resp* @throws Exception*/public void BystateList(HttpServletRequest req, HttpServletResponse resp) throws Exception {// 初始化PageBeanPageBean pageBean = new PageBean();pageBean.setRequest(req);// 获取当前登陆的用户idHttpSession session = req.getSession();User user = (User) session.getAttribute("user");int userid=0;if (user != null) {userid=(int) user.getId();}// 初始化数据String title = req.getParameter("title");if (StringUtils.isNotBlank(title)) {Meetinginfo.setTitle(title);}//可能是状态集合有可能是单个状态String findstate = req.getParameter("state");//为会议列表做准备if (StringUtils.isNotBlank(findstate)&&findstate.equals("5,6")) {Meetinginfo.setZhuchiren(user.getId()+"");}List<Map<String, Object>> list = imd.Bystatelist(Meetinginfo,findstate,userid, pageBean);// 利用R工具类制造出符合要求的json格式数据ResponseUtil.writeJson(resp, R.ok(0, "查询成功", pageBean.getTotal(), list));}@Overridepublic Meetinginfo getModel() {// 将获取到时间String类型转换成date类型ConvertUtils.register(new MyDateConverter(), Date.class);return Meetinginfo;}}

3.案例展示

到这里我的分享就结束了,欢迎到评论区探讨交流!!

如果觉得有用的话还请点个赞吧 ♥  ♥

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vc - Qt - QPainter translate

QPainter的translate()函数是用来对绘制坐标系统进行平移操作的方法。它可以将绘制的原点&#xff08;坐标轴的起始点&#xff09;在水平和垂直方向上进行平移。以下是一个使用QPainter的translate()方法进行坐标平移的示例代码&#xff1a; QPainter painter(this);// 绘制一个…

STM32基础入门学习笔记:核心板 电路原理与驱动编程

文章目录&#xff1a; 一&#xff1a;LED灯操作 1.LED灯的点亮和熄灭 延迟闪烁 main.c led.c led.h BitAction枚举 2.LED呼吸灯&#xff08;灯的强弱交替变化&#xff09; main.c delay.c 3.按键控制LED灯 key.h key.c main.c 二&#xff1a;FLASH读写程序(有…

企业微信小程序在调用wx.qy.login时返回错误信息qy.login:fail

原因是大概是绑定了多个企业但是在开发者工具中没有选择正确的企业 解决方法&#xff1a; 重新选择企业后即可成功获取code

本地 shell无法连接centos 7 ?

1、首先检查是否安装ssh服务&#xff1b; yum list installed | grep openssh-server# 没有安装尝试安装下 yum install openssh-server 2、检查ssh服务是否开启 systemctl status sshd.service# 未开启&#xff0c;开启下 systemctl start sshd.service # 将sshd 服务添…

JVM分析工具JProfiler介绍及安装

目录 一、什么是JProfiler&#xff1f; 二、JProfiler 功能结构 1、分析代理 2、记录数据 3、快照 三、安装 一、什么是JProfiler&#xff1f; JProfiler是一个专业的工具&#xff0c;用于分析运行中的JVM内部发生的事情。当您的生产系统出现问题时&#xff0c;您可以…

TDesign中后台管理系统-访问后端服务

目录 1 修改后端服务地址2 解决跨域问题3 动态获取菜单4 测试后端接口5 前后端联调总结 目前我们已经搭建了TDesign的前端和express的后端&#xff0c;目前是两个独立的应用。通常我们需要把前后端集成在一起&#xff0c;TDesign已经配置了相关的信息&#xff0c;只需要修改后端…

【Jenkins】Jenkins 安装

Jenkins 安装 文章目录 Jenkins 安装一、安装JDK二、安装jenkins三、访问 Jenkins 初始化页面 Jenkins官网地址&#xff1a;https://www.jenkins.io/zh/download/ JDK下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/ 清华源下载RPM包地址&#xff…

DAY3,C高级(shell中的变量、数组、算术运算、分支结构)

1.整理思维导图&#xff1b; 2.判断家目录下&#xff0c;普通文件的个数和目录文件的个数&#xff1b; 1 #!/bin/bash2 arr1(ls -la ~/ | cut -d r -f 1 | grep -w -)3 arr2(ls -la ~/ | cut -d r -f 1 | grep -w d)4 echo "普通文件个数&#xff1a;${#arr1[*]}"5 e…

【PostgreSQL】系列之 一 schema详解(二)

&#x1f341; 博主 "开着拖拉机回家"带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,Java基础学习,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341; 希望本文能够给您带来一定的…

操作系统需要重点关注指标

机器层面的监控分为两部分&#xff0c;带内监控和带外监控。带内监控就是通过带内网络来监控&#xff0c;主要是以在 OS 里部署 Agent 的方式&#xff0c;来获取 OS 的 CPU、内存、磁盘、IO、网络、进程等相关监控指标。 外监控走的是带外网络&#xff0c;通常和业务网络不互通…

【图像去噪】基于原始对偶算法优化的TV-L1模型进行图像去噪研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

STM32基础回顾

文章目录 单片机编程的原理GPIO中断EXTI外部中断定时器中断、串口中断 定时器定时器中断配置过程通用定时器输出比较功能&#xff1a;PWM波的生成定时器的输入捕获功能主从触发模式PWMI模式 定时器的编码器接口 DMA简介通信接口USART软件配置流程&#xff1a;1、仅发数据的配置…