当前位置:网站首页>Meeting OA (Upcoming Meetings & All Meetings)
Meeting OA (Upcoming Meetings & All Meetings)
2022-08-01 09:26:00 【Price pit pit】
目录
To be opened and all meeting functions realized
哈喽大家好~~我来啦~~Share our meeting with you today0AThe last issue!!!
is our meeting's pending meeting and all our meetings!!!
待开会议:
与我的会议的区别在于,Pending meeting matches participants、列席者、Moderator database column segment
接下来我们看一下sql语句!!!!
The query contains information for six of the three column segments:
select CONCAT(canyuze,',',liexize,',',zhuchiren), a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren
,b.name zhuchirenname,
a.location,
DATE_FORMAT(a.startTime,'%Y-%m-%d %h-%m-%s') startTime,
DATE_FORMAT(a.endTime,'%Y-%m-%d %h-%m-%s') endTime,
a.state,
(
case a.state
when 0 then '取消会议'
when 1 then '新建'
when 2 then '待审核'
when 3 then '驳回'
when 4 then '待开'
when 4 then '进行中'
when 6 then '开启投票'
when 7 then '结束会议'
else '其他' end
) meetingstate,
a.seatPic,a.remark,a.auditor,
c.name auditorname
from t_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren = b.id
left join t_oa_user c on a.auditor = c.id
where 1=1 and state=4 and FIND_IN_SET(6,CONCAT(canyuze,',',liexize,',',zhuchiren))
运行结果:

所有会议
The difference with the pending meeting is that,Pending meeting matches participants、列席者、主持人,Approver Four database column segments
当前登录账号,只要是某会议的参与者、列席者、主持人、审批人中的一员,那么必须查出来.
sql语句:
select CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)), a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren
,b.name zhuchirenname,
a.location,
DATE_FORMAT(a.startTime,'%Y-%m-%d %h-%m-%s') startTime,
DATE_FORMAT(a.endTime,'%Y-%m-%d %h-%m-%s') endTime,
a.state,
(
case a.state
when 0 then '取消会议'
when 1 then '新建'
when 2 then '待审核'
when 3 then '驳回'
when 4 then '待开'
when 4 then '进行中'
when 6 then '开启投票'
when 7 then '结束会议'
else '其他' end
) meetingstate,
a.seatPic,a.remark,a.auditor,
c.name auditorname
from t_oa_meeting_info a
inner join t_oa_user b on a.zhuchiren = b.id
left join t_oa_user c on a.auditor = c.id
where 1=1
and FIND_IN_SET(6,CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)))
运行结果:
To be opened and all meeting functions realized
Let's take a look at our background code first
MeetingInfodao:
public List<Map<String, Object>> queryMeetingInfoByState(MeetingInfo info, PageBean pageBean) throws Exception{
String sql = "select CONCAT(canyuze,',',liexize,',',zhuchiren), a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren\r\n" +
" ,b.name zhuchirenname,\r\n" +
" a.location,\r\n" +
" DATE_FORMAT(a.startTime,'%Y-%m-%d %h-%m-%s') startTime,\r\n" +
" DATE_FORMAT(a.endTime,'%Y-%m-%d %h-%m-%s') endTime,\r\n" +
" a.state,\r\n" +
" (\r\n" +
" case a.state\r\n" +
" when 0 then '取消会议'\r\n" +
" when 1 then '新建'\r\n" +
" when 2 then '待审核'\r\n" +
" when 3 then '驳回'\r\n" +
" when 4 then '待开'\r\n" +
" when 4 then '进行中'\r\n" +
" when 6 then '开启投票'\r\n" +
" when 7 then '结束会议'\r\n" +
" else '其他' end\r\n" +
" \r\n" +
" ) meetingstate,\r\n" +
" a.seatPic,a.remark,a.auditor,\r\n" +
" c.name auditorname \r\n" +
" from t_oa_meeting_info 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" +
" where 1=1 and state=4 and FIND_IN_SET("+info.getZhuchiren()+",CONCAT(canyuze,',',liexize,',',zhuchiren))";
return super.executeQuery(sql, pageBean);
}
MeetingInfoAction:
package com.zking.web;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.ConvertUtils;
import com.zking.dao.MeetingInfoDao;
import com.zking.entity.MeetingInfo;
import com.zking.framework.ActionSupport;
import com.zking.framework.ModelDriver;
import com.zking.util.Base64ImageUtils;
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;
public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo>{
private MeetingInfo info = new MeetingInfo();
private MeetingInfoDao meetingInfoDao = new MeetingInfoDao();
@Override
public MeetingInfo getModel() {
//方式二:
ConvertUtils.register(new MyDateConverter(),Date.class);
return info;
}
public String updateSeatPicById(HttpServletRequest req, HttpServletResponse resp) {
/*
* 1.接收前端页面传递到后台的图片对应的字符串
* 2.借助工具类将字符串生成一个图片,保存到配置文件所配置的路径下
* 3.添加服务器硬盘与请求地址的映射,即可访问
* 4.将请求地址保存到数据库中
*/
try {
// E:/temp/images/T280/abcdefg.png
// 获取图片的存放地址 dirPath=E:/temp/images/T280/
String dirPath = PropertiesUtil.getValue("dirPath");
// 获取浏览器请求路径,为了后续保存到数据库 serverPath=/upload/paizuo/
String serverPath = PropertiesUtil.getValue("serverPath");
// 随机生成一个图片名称
String fileName = UUID.randomUUID().toString().replaceAll("-", "")+".png";
info.getSeatPic();//图片字符串
Base64ImageUtils.GenerateImage(info.getSeatPic().replaceAll("data:image/png;base64,", ""), dirPath+fileName);
// 将seatPic中内容修改为 请求地址
info.setSeatPic(serverPath+fileName);
// 修改会议排座 数据库图片 对应的数据库列段
int rs = meetingInfoDao.updateSeatPicById(info);
if (rs > 0) {
ResponseUtil.writeJson(resp, R.ok(200, "会议排座成功"));
}else {
ResponseUtil.writeJson(resp, R.error(0, "会议排座失败"));
}
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp, R.error(0, "会议排座失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 会议发布
public String add(HttpServletRequest req, HttpServletResponse resp) {
try {
int rs = meetingInfoDao.add(info);
if (rs > 0) {
ResponseUtil.writeJson(resp, R.ok(200, "会议发布成功"));
}else {
ResponseUtil.writeJson(resp, R.error(0, "会议发布失败"));
}
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp, R.error(0, "会议发布失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 我的审批
public String myAudit(HttpServletRequest req,HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> lst = meetingInfoDao.myAudit(info, pageBean);
//注意:layui中的数据的格式
ResponseUtil.writeJson(resp, R.ok(0, "我的会议数据查询成功",pageBean.getTotal(),lst));
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp,R.error(0, "我的会议数据查询失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 所有会议
public String allInfos(HttpServletRequest req,HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> lst = meetingInfoDao.allInfos(info, pageBean);
//注意:layui中的数据的格式
ResponseUtil.writeJson(resp, R.ok(0, "所有会议数据查询成功",pageBean.getTotal(),lst));
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp,R.error(0, "所有会议数据查询失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 待开会议
public String queryMeetingInfoByState(HttpServletRequest req,HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> lst = meetingInfoDao.queryMeetingInfoByState(info, pageBean);
//注意:layui中的数据的格式
ResponseUtil.writeJson(resp, R.ok(0, "待开会议数据查询成功",pageBean.getTotal(),lst));
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp,R.error(0, "待开会议数据查询失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 我的会议
public String myInfos(HttpServletRequest req,HttpServletResponse resp) {
try {
PageBean pageBean = new PageBean();
pageBean.setRequest(req);
List<Map<String, Object>> lst = meetingInfoDao.myInfos(info, pageBean);
//注意:layui中的数据的格式
ResponseUtil.writeJson(resp, R.ok(0, "我的会议数据查询成功",pageBean.getTotal(),lst));
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp,R.error(0, "我的会议数据查询失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
// 根据会议ID更新会议的审批人(送审)
public String updateAuditorById(HttpServletRequest req, HttpServletResponse resp) {
try {
int rs = meetingInfoDao.updateAuditorById(info);
if (rs > 0) {
ResponseUtil.writeJson(resp, R.ok(200, "会议审批成功"));
}else {
ResponseUtil.writeJson(resp, R.error(0, "会议审批失败"));
}
} catch (Exception e) {
e.printStackTrace();
try {
ResponseUtil.writeJson(resp, R.error(0, "会议审批失败"));
} catch (Exception e1) {
e1.printStackTrace();
}
}
return null;
}
}
前台
Meetingwaiting.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@include file="/common/head.jsp"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/meetingWaiting.js"></script>
</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">
<div class="layui-inline">
<label class="layui-form-label">会议标题:</label>
<div class="layui-input-inline">
<input type="hidden" id="userid" value="${sessionScope.user.id }"/>
<input type="text" id="title" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-inline">
<button id="btn_meeting_search" class="layui-btn layui-btn-normal">
<i class="layui-icon"></i> 查询
</button>
</div>
</div>
<table style="margin-top: -15px;" id="tb_meeting" lay-filter="tb_meeting"></table>
</body>
</html>
MeetingWaiting.js
let layer,form,table,$;
var row;
layui.use(['layer','form','table'],function(){
layer=layui.layer,form=layui.form,table=layui.table,$=layui.jquery;
//初始化会议列表
initMeeting();
//绑定查询按钮的点击事件
$('#btn_meeting_search').click(function(){
query();
});
});
//1.初始化会议列表
function initMeeting(){
table.render({ //执行渲染
elem: '#tb_meeting', //指定原始表格元素选择器(推荐id选择器)
height: 400, //自定义高度
loading: false, //是否显示加载条(默认 true)
cols: [[ //设置表头
{field: 'title', title: '会议标题', width: 180},
{field: 'location', title: '会议地点', width: 120},
{field: 'startTime', title: '开始时间', width: 180},
{field: 'endTime', title: '结束时间', width: 180},
{field: 'meetingstate', title: '会议状态', width: 90},
{field: 'zhuchirenname', title: '主持人', width: 120},
//{field: '', title: '操作', width: 260, toolbar: '#tbMeeting'}
]]
});
}
//2.待开会议
function query(){
table.reload('tb_meeting', {
url: 'info.action', //请求地址
method: 'POST', //请求方式,GET或者POST
loading: true, //是否显示加载条(默认 true)
page: true, //是否分页
where: { //设定异步数据接口的额外参数,任意设
'methodName':'queryMeetingInfoByState',
'title':$('#title').val(),
'zhuchiren':$('#userid').val(),
'state':4
},
request: { //自定义分页请求参数名
pageName: 'page', //页码的参数名称,默认:page
limitName: 'rows' //每页数据量的参数名,默认:limit
},
done: function (res, curr, count) {
//查询完成的回调函数
}
});
}
运行结果:

测试
边栏推荐
- 将Servlet项目改为SSM项目
- 走进音视频的世界——mp3封装格式
- GBase 8s 锁分类
- Gethostbyname \ getaddrinfo DNS domain name IP address is not safe
- Go-Excelize API源码阅读(八)——GroupSheets(sheets []string)、UngroupSheets()
- 会议OA(待开会议&所有会议)
- C语言中编译时出现警告C4013(C语言不加函数原型产生的潜在错误)
- Redis middleware (from building to refuse pit)
- Leetcode - 6135: the longest part of the figure
- STM32个人笔记-看门狗
猜你喜欢

sqlserver怎么查询一张表中同人员的交叉日期

Parsing MySQL Databases: "SQL Optimization" vs. "Index Optimization"

Redis中间件(从搭建到弃坑)

HoloView -- Tabular Datasets
![[Dataset] Dataset summary of various insulators, bird's nests and anti-vibration hammers](/img/02/927f4e228eb3abbd76cade5be00352.png)
[Dataset] Dataset summary of various insulators, bird's nests and anti-vibration hammers

巧妙利用unbuffer实时写入

How to get page data

BGP综合实验

Comprehensive experiment BGP

网络个各种协议
随机推荐
HoloView 在 jyputer lab/notebook 不显示总结
将aof文件转换为命令waoffle安装和使用
Lsky Pro 企业版手动升级、优化教程
leetcode-6135:图中的最长环
Mysql数据库的部署以及初始化步骤
leetcode-6132:使数组中所有元素都等于零
网络个各种协议
Optimal dazzle Oracle database support what kinds of type of the time and date
SaaS安全认证综合指南
sqlserver 对比两张表的差异
various network protocols
ACmix 论文精读,并解析其模型结构
杰理AD14N/AD15N---串口中断问题
如何保证数据库与缓存数据一致性?
ASP.NET Core 6框架揭秘实例演示[30]:利用路由开发REST API
How to query database configuration parameters in GBase 8c, such as datestyle
Detailed explanation of JVM runtime data area and JMM memory model
Ogg synchronizes oracle to mysql, there may be characters that need to be escaped in the field, how to configure escape?
基于MySql,Redis,Mq,ES的高可用方案解析
STM32个人笔记-看门狗