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 {


	@Override
	public 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或者POST
		page : true, //是否分页
		where : {
			//设定异步数据接口的额外参数,任意设
			'methodName' : 'BystateList',
			'title' : $('#title').val(),
			'state' : 4,
		},
		request : { //自定义分页请求参数名
			pageName : 'page', //页码的参数名称,默认:page
			limitName : '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 {

		// 初始化PageBean
		PageBean pageBean = new PageBean();
		pageBean.setRequest(req);

		// 获取当前登陆的用户id
		HttpSession 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));
	}
	
	

	
	

	@Override
	public Meetinginfo getModel() {
		// 将获取到时间String类型转换成date类型
		ConvertUtils.register(new MyDateConverter(), Date.class);
		return Meetinginfo;
	}

}

3.案例展示

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

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

猜你喜欢

转载自blog.csdn.net/weixin_74318097/article/details/132111981