• 会议OA系统07(所有会议,待开会议)


    目录

    一,所有会议

    二,待开会议


    一,所有会议

    MeetingInfoDao.java

    1. // 待开会议、历史会议
    2. public List> queryMeetingInfoByState(MeetingInfo info,PageBean pageBean) throws Exception{
    3. String sql=this.getSQL();
    4. String title = info.getTitle();
    5. //按照会议标题模糊查询
    6. if(StringUtils.isNotBlank(title))
    7. sql+=" and title like '%"+title+"%'";
    8. //根据当前登陆用户ID作为主持人字段的条件
    9. String zhuchiren = info.getZhuchiren();
    10. if(StringUtils.isNotBlank(zhuchiren)) {
    11. sql+="and FIND_IN_SET('"+zhuchiren+"',CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren))";
    12. }
    13. //根据会议状态,查询会议信息
    14. Integer state = info.getState();
    15. if(state != null) {
    16. sql+=" and state = " + state;
    17. }
    18. //按照会议ID降序排序
    19. sql+=" order by a.id desc";
    20. System.out.println(sql);
    21. return super.executeQuery(sql, pageBean);
    22. }

    MeetingInfoAction.java

    1. // 待开会议、历史会议
    2. public String queryMeetingInfoByState(HttpServletRequest req, HttpServletResponse resp) {
    3. try {
    4. PageBean pageBean = new PageBean();
    5. pageBean.setRequest(req);
    6. List> infos = meetingInfoDao.queryMeetingInfoByState(info, pageBean);
    7. ResponseUtil.writeJson(resp, R.ok(0, "会议查询成功!!!", pageBean.getTotal(), infos));
    8. } catch (Exception e) {
    9. e.printStackTrace();
    10. try {
    11. ResponseUtil.writeJson(resp, R.error(0, "会议查询失败"));
    12. } catch (Exception e1) {
    13. e1.printStackTrace();
    14. }
    15. }
    16. return null;
    17. }

    meetingWaiting.jsp

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/head.jsp"%>
    4. html>
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/meetingWaiting.js">script>
    9. head>
    10. <style>
    11. body{
    12. margin:15px;
    13. }
    14. .layui-table-cell {height: inherit;}
    15. .layui-layer-page .layui-layer-content { overflow: visible !important;}
    16. style>
    17. <body>
    18. <div class="layui-form-item">
    19. <div class="layui-inline">
    20. <label class="layui-form-label">会议标题:label>
    21. <div class="layui-input-inline">
    22. <input type="hidden" id="userid" value="${sessionScope.user.id }"/>
    23. <input type="text" id="title" autocomplete="off"
    24. class="layui-input">
    25. div>
    26. div>
    27. <div class="layui-inline">
    28. <button id="btn_meeting_search" class="layui-btn layui-btn-normal">
    29. <i class="layui-icon">i> 查询
    30. button>
    31. div>
    32. div>
    33. <table style="margin-top: -15px;" id="tb_meeting" lay-filter="tb_meeting">table>
    34. body>
    35. html>

     meetingWaiting.js

    1. let layer,form,table,$;
    2. var row;
    3. layui.use(['layer','form','table'],function(){
    4. layer=layui.layer,form=layui.form,table=layui.table,$=layui.jquery;
    5. //初始化会议列表
    6. initMeeting();
    7. //绑定查询按钮的点击事件
    8. $('#btn_meeting_search').click(function(){
    9. query();
    10. });
    11. });
    12. //1.初始化会议列表
    13. function initMeeting(){
    14. table.render({ //执行渲染
    15. elem: '#tb_meeting', //指定原始表格元素选择器(推荐id选择器)
    16. height: 400, //自定义高度
    17. loading: false, //是否显示加载条(默认 true)
    18. cols: [[ //设置表头
    19. {field: 'title', title: '会议标题', width: 180},
    20. {field: 'location', title: '会议地点', width: 120},
    21. {field: 'startTime', title: '开始时间', width: 180},
    22. {field: 'endTime', title: '结束时间', width: 180},
    23. {field: 'meetingState', title: '会议状态', width: 90},
    24. {field: 'name', title: '主持人', width: 120},
    25. //{field: '', title: '操作', width: 260, toolbar: '#tbMeeting'}
    26. ]]
    27. });
    28. }
    29. //2.待开会议
    30. function query(){
    31. table.reload('tb_meeting', {
    32. url: 'info.action', //请求地址
    33. method: 'POST', //请求方式,GET或者POST
    34. loading: true, //是否显示加载条(默认 true)
    35. page: true, //是否分页
    36. where: { //设定异步数据接口的额外参数,任意设
    37. 'methodName':'queryMeetingInfoByState',
    38. 'title':$('#title').val(),
    39. 'zhuchiren':$('#userid').val(),
    40. 'state':4
    41. },
    42. request: { //自定义分页请求参数名
    43. pageName: 'page', //页码的参数名称,默认:page
    44. limitName: 'rows' //每页数据量的参数名,默认:limit
    45. },
    46. done: function (res, curr, count) {
    47. //查询完成的回调函数
    48. }
    49. });
    50. }

    二,待开会议

    MeetingInfoDao.java

    1. // 所有会议
    2. public List> allInfos(MeetingInfo info,PageBean pageBean) throws Exception{
    3. String sql=this.getSQL();
    4. String title = info.getTitle();
    5. //按照会议标题模糊查询
    6. if(StringUtils.isNotBlank(title))
    7. sql+=" and title like '%"+title+"%'";
    8. //根据当前登陆用户ID作为主持人字段的条件
    9. String zhuchiren = info.getZhuchiren();
    10. if(StringUtils.isNotBlank(zhuchiren)) {
    11. sql+="and FIND_IN_SET('"+zhuchiren+"',CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)))";
    12. }
    13. //按照会议ID降序排序
    14. sql+=" order by a.id desc";
    15. System.out.println(sql);
    16. return super.executeQuery(sql, pageBean);
    17. }

    MeetingInfoAction.java

    1. // 所有会议
    2. public String allInfos(HttpServletRequest req, HttpServletResponse resp) {
    3. try {
    4. PageBean pageBean = new PageBean();
    5. pageBean.setRequest(req);
    6. List> infos = meetingInfoDao.allInfos(info, pageBean);
    7. ResponseUtil.writeJson(resp, R.ok(0, "会议查询成功!!!", pageBean.getTotal(), infos));
    8. } catch (Exception e) {
    9. e.printStackTrace();
    10. try {
    11. ResponseUtil.writeJson(resp, R.error(0, "会议查询失败"));
    12. } catch (Exception e1) {
    13. e1.printStackTrace();
    14. }
    15. }
    16. return null;
    17. }

    meetingAll.jsp

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/head.jsp"%>
    4. html>
    5. <html>
    6. <head>
    7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    8. <script type="text/javascript" src="${pageContext.request.contextPath }/static/js/meeting/meetingAll.js">script>
    9. head>
    10. <style>
    11. body{
    12. margin:15px;
    13. }
    14. .layui-table-cell {height: inherit;}
    15. .layui-layer-page .layui-layer-content { overflow: visible !important;}
    16. style>
    17. <body>
    18. <div class="layui-form-item">
    19. <div class="layui-inline">
    20. <label class="layui-form-label">会议标题:label>
    21. <div class="layui-input-inline">
    22. <input type="hidden" id="userid" value="${sessionScope.user.id }"/>
    23. <input type="text" id="title" autocomplete="off"
    24. class="layui-input">
    25. div>
    26. div>
    27. <div class="layui-inline">
    28. <button id="btn_meeting_search" class="layui-btn layui-btn-normal">
    29. <i class="layui-icon">i> 查询
    30. button>
    31. div>
    32. div>
    33. <table style="margin-top: -15px;" id="tb_meeting" lay-filter="tb_meeting">table>
    34. body>
    35. html>

    meetingAll.js

    1. let layer,form,table,$;
    2. var row;
    3. layui.use(['layer','form','table'],function(){
    4. layer=layui.layer,form=layui.form,table=layui.table,$=layui.jquery;
    5. //初始化会议列表
    6. initMeeting();
    7. //绑定查询按钮的点击事件
    8. $('#btn_meeting_search').click(function(){
    9. query();
    10. });
    11. });
    12. //1.初始化会议列表
    13. function initMeeting(){
    14. table.render({ //执行渲染
    15. elem: '#tb_meeting', //指定原始表格元素选择器(推荐id选择器)
    16. height: 400, //自定义高度
    17. loading: false, //是否显示加载条(默认 true)
    18. cols: [[ //设置表头
    19. {field: 'title', title: '会议标题', width: 180},
    20. {field: 'location', title: '会议地点', width: 120},
    21. {field: 'startTime', title: '开始时间', width: 180},
    22. {field: 'endTime', title: '结束时间', width: 180},
    23. {field: 'meetingState', title: '会议状态', width: 90},
    24. {field: 'name', title: '主持人', width: 120},
    25. //{field: '', title: '操作', width: 260, toolbar: '#tbMeeting'}
    26. ]]
    27. });
    28. }
    29. //2.查询所有会议
    30. function query(){
    31. table.reload('tb_meeting', {
    32. url: 'info.action', //请求地址
    33. method: 'POST', //请求方式,GET或者POST
    34. loading: true, //是否显示加载条(默认 true)
    35. page: true, //是否分页
    36. where: { //设定异步数据接口的额外参数,任意设
    37. 'methodName':'allInfos',
    38. 'title':$('#title').val(),
    39. 'zhuchiren':$('#userid').val()
    40. },
    41. request: { //自定义分页请求参数名
    42. pageName: 'page', //页码的参数名称,默认:page
    43. limitName: 'rows' //每页数据量的参数名,默认:limit
    44. },
    45. done: function (res, curr, count) {
    46. //查询完成的回调函数
    47. }
    48. });
    49. }

    待开会议、历史会议
    -- 待开会议:当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是待开,则查询出来
    -- 历史会议:当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是结束,则查询出来
    -- 区别就在于state
    SELECT a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren,b.`name`,a.location
    ,DATE_FORMAT(a.startTime,'%Y-%m-%d %H:%i:%s') as startTime
    ,DATE_FORMAT(a.endTime,'%Y-%m-%d %H:%i:%s') as endTime
    ,a.state
    ,(case a.state
    when 0 then '取消会议'
    when 1 then '新建'
    when 2 then '待审核'
    when 3 then '驳回'
    when 4 then '待开'
    when 5 then '进行中'
    when 6 then '开启投票'
    else '结束会' end
    ) as meetingState
    ,a.seatPic,a.remark,a.auditor,c.`name` as 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))  and title like '%%' and state = 4 order by a.id desc


    # 5.某一会议反馈统计    2号会议的反馈详情
    select result,group_concat(name) names from(
    select t1.name,ifnull(f.result,-1) result from 
    (select * from t_oa_user where find_in_set(id,(
    select concat(canyuze,',',liexize,',',zhuchiren) from t_oa_meeting_info 
    where id=2 ))) t1 left join t_oa_meeting_feedback f 
    on t1.id=f.personId and meetingId=2 ) temp group by result

  • 相关阅读:
    20230905 比赛总结
    Linux基础教程:7、文件i/o操作补充
    类继承关系梳理
    “最强7B模型”论文发布,揭秘如何超越13B版Llama 2
    Karmada 1.3 新特性:基于污点的故障迁移
    【JavaSE】异常
    三极管:潜伏3个月的彩蛋是来自火星的么
    R语言计算时间序列数据的移动平均值(滚动平均值、例如5日均线、10日均线等):使用zoo包中的rollmean函数计算k个周期移动平均值
    OpenCV实现人脸检测(Haar特征)
    一文讲清场景工程方法论及运维组织能力内化
  • 原文地址:https://blog.csdn.net/weixin_67338832/article/details/126054229