• OA项目之待开会议&历史会议&所有会议


    目录

    一、待开会议&所有会议SQL编写

    1.待开会议SQL编写 

    2.所有会议SQL编写 

     二、待开会议及所有会议功能开发


    一、待开会议&所有会议SQL编写

    待开会议:
    当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是待开,则查询出来

    1. -- 待开会议
    2. -- 与我的会议的区别在于,待开会议需要匹配3个数据库列段
    3. select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren
    4. ,b.`name` zhuchirennmae,
    5. a.location,
    6. DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,
    7. DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
    8. a.state,
    9. (
    10. case a.state
    11. when 0 then '取消会议'
    12. when 1 then '新建'
    13. when 2 then '待审核'
    14. when 3 then '驳回'
    15. when 4 then '待开'
    16. when 5 then '进行中'
    17. when 6 then '开始投票'
    18. when 7 then '结束会议'
    19. else '其他' end
    20. ) meetingstate,
    21. a.seatPic,a.remark,a.auditor,
    22. c.`name` auditorname from t_oa_meeting_info a
    23. inner join t_oa_user b on a.zhuchiren=b.id
    24. left join t_oa_user c on a.auditor=c.id where 1=1


    历史会议:当前登录账号,只要是 某会议 的参与者、列席者、主持人中的一员,并且会议状态是结束,则查询出来


    所有会议:
    当前登录账号,只要是 某会议 的参与者、列席者、主持人、审批人中的一员,那么必须查询出来

    1.待开会议SQL编写 

    1. select CONCAT(canyuze,',',liexize,',',zhuchiren),a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren
    2. ,b.`name` zhuchirennmae,
    3. a.location,
    4. DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,
    5. DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
    6. a.state,
    7. (
    8. case a.state
    9. when 0 then '取消会议'
    10. when 1 then '新建'
    11. when 2 then '待审核'
    12. when 3 then '驳回'
    13. when 4 then '待开'
    14. when 5 then '进行中'
    15. when 6 then '开始投票'
    16. when 7 then '结束会议'
    17. else '其他' end
    18. ) meetingstate,
    19. a.seatPic,a.remark,a.auditor,
    20. c.`name` auditorname from t_oa_meeting_info a
    21. inner join t_oa_user b on a.zhuchiren=b.id
    22. left join t_oa_user c on a.auditor=c.id where 1=1
    23. and state=4 and FIND_IN_SET(6,CONCAT(canyuze,',',liexize,',',zhuchiren))

    2.所有会议SQL编写 

     假设id为6的用户,是会议A的列席人员,会议A又处于新建状态,意味着没有审批人,这条数据一定要查询出来 

    最终的所有会议SQL语句:

    1. select CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)),a.id,a.title,a.content,
    2. a.canyuze,a.liexize,a.zhuchiren,b.`name` zhuchirennmae,a.location,
    3. DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s')
    4. startTime,DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,
    5. a.state,(
    6. case a.state
    7. when 0 then '取消会议'
    8. when 1 then '新建'
    9. when 2 then '待审核'
    10. when 3 then '驳回'
    11. when 4 then '待开'
    12. when 5 then '进行中'
    13. when 6 then '开始投票'
    14. when 7 then '结束会议'
    15. else '其他' end
    16. )
    17. meetingstate,a.seatPic,a.remark,a.auditor,c.`name` auditorname
    18. from t_oa_meeting_info a
    19. inner join t_oa_user b on a.zhuchiren=b.id
    20. left join t_oa_user c on a.auditor=c.id where 1=1
    21. and FIND_IN_SET(6,CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)))

     错误示范如图所示:

     二、待开会议及所有会议功能开发

    先运行我们的待开会议和所有会议项目如图所示:

    缺失这两个jsp代码块注意路径问题,还有我们的js代码块

    -----------------

    meetingAll.jsp代码块: 

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/header.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: 'zhuchirennmae', 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. }

    meetingWaiting.jsp代码块:

    1. <%@ page language="java" contentType="text/html; charset=UTF-8"
    2. pageEncoding="UTF-8"%>
    3. <%@include file="/common/header.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: 'zhuchirennmae', 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. }

    我们先写待开会议如图所示:

    现在目前没有数据因为我们还没有写我们的后台的方法 

    接着写所有会议如图所示 

    现在目前没有数据因为我们还没有写我们的后台的方法 

     

    MeetingInfoAction.java代码块:

    1. package com.zking.web;
    2. import java.util.Date;
    3. import java.util.List;
    4. import java.util.Map;
    5. import java.util.UUID;
    6. import javax.servlet.http.HttpServletRequest;
    7. import javax.servlet.http.HttpServletResponse;
    8. import org.apache.commons.beanutils.ConvertUtils;
    9. import com.zking.dao.MeetingInfoDao;
    10. import com.zking.entity.MeetingInfo;
    11. import com.zking.framework.ActionSupport;
    12. import com.zking.framework.ModelDriver;
    13. import com.zking.util.Base64ImageUtils;
    14. import com.zking.util.MyDateConverter;
    15. import com.zking.util.PageBean;
    16. import com.zking.util.PropertiesUtil;
    17. import com.zking.util.R;
    18. import com.zking.util.ResponseUtil;
    19. public class MeetingInfoAction extends ActionSupport implements ModelDriver<MeetingInfo>{
    20. private MeetingInfo info = new MeetingInfo();
    21. private MeetingInfoDao infoDao = new MeetingInfoDao();
    22. @Override
    23. public MeetingInfo getModel() {
    24. // 注册一个转换器
    25. ConvertUtils.register(new MyDateConverter(), Date.class);
    26. return info;
    27. }
    28. public String updateSeatPicById(HttpServletRequest req, HttpServletResponse resp) {
    29. try {
    30. // E:/temp/images/T280/abcdefg.png
    31. // 获取图片的存放地址 dirPath=/temp/images/T280/
    32. String dirPath = PropertiesUtil.getValue("dirPath");
    33. // 获取浏览器请求路径,为了后续保存到数据库 serverPath=/upload/paizuo/
    34. String serverPath = PropertiesUtil.getValue("serverPath");
    35. // 随机生成一个图片名称
    36. String fileName=UUID.randomUUID().toString().replace("-", "")+".png";
    37. info.getSeatPic();// 图片字符串
    38. Base64ImageUtils.GenerateImage(info.getSeatPic().replaceAll("data:image/png;base64", ""), dirPath+fileName);
    39. // 将seatPic中的内容修改为 请求地址
    40. info.setSeatPic(serverPath+fileName);
    41. // 修改会议排座 数据库 图片 对应的 数据库列段
    42. int rs = infoDao.updateSeatPicById(info);
    43. if(rs>0) {
    44. ResponseUtil.writeJson(resp, R.ok(200, "会议排座成功"));
    45. }
    46. else {
    47. ResponseUtil.writeJson(resp, R.ok(0, "会议排座失败"));
    48. }
    49. } catch (Exception e) {
    50. e.printStackTrace();
    51. try {
    52. ResponseUtil.writeJson(resp, R.error(0, "会议排座失败"));
    53. } catch (Exception e1) {
    54. // TODO Auto-generated catch block
    55. e1.printStackTrace();
    56. }
    57. finally {
    58. }}
    59. return null;
    60. }
    61. // 会议送审
    62. public String updateAuditorById(HttpServletRequest req, HttpServletResponse resp) {
    63. try {
    64. // n是sql语句执行的影响行数
    65. int n=infoDao.updateAuditorById(info);
    66. // 如果大于0说明可以新增
    67. if(n>0) {
    68. ResponseUtil.writeJson(resp, R.ok(200, "会议送审成功"));
    69. }
    70. else {
    71. ResponseUtil.writeJson(resp, R.ok(0, "会议送审失败"));
    72. }
    73. } catch (Exception e) {
    74. e.printStackTrace();
    75. try {
    76. ResponseUtil.writeJson(resp, R.error(0, "会议送审失败"));
    77. } catch (Exception e1) {
    78. // TODO Auto-generated catch block
    79. e1.printStackTrace();
    80. }
    81. }
    82. return null;
    83. }
    84. public String add(HttpServletRequest req, HttpServletResponse resp) {
    85. try {
    86. // n是sql语句执行的影响行数
    87. int n=infoDao.add(info);
    88. // 如果大于0说明可以新增
    89. if(n>0) {
    90. ResponseUtil.writeJson(resp, R.ok(200, "会议信息数据新增成功"));
    91. }
    92. else {
    93. ResponseUtil.writeJson(resp, R.ok(0, "会议信息数据新增失败"));
    94. }
    95. } catch (Exception e) {
    96. e.printStackTrace();
    97. try {
    98. ResponseUtil.writeJson(resp, R.error(0, "会议信息数据新增失败"));
    99. } catch (Exception e1) {
    100. // TODO Auto-generated catch block
    101. e1.printStackTrace();
    102. }
    103. }
    104. return null;
    105. }
    106. // 我的会议
    107. public String myInfos(HttpServletRequest req, HttpServletResponse resp) {
    108. try {
    109. PageBean pageBean = new PageBean();
    110. pageBean.setRequest(req);
    111. List<Map<String, Object>> infos = infoDao.myInfos(info, pageBean);
    112. // 注意:layui中的数据格式
    113. ResponseUtil.writeJson(resp, R.ok(0, "我的会议数据查询成功", pageBean.getTotal(), infos));
    114. } catch (Exception e) {
    115. e.printStackTrace();
    116. try {
    117. ResponseUtil.writeJson(resp, R.error(0, "我的会议数据查询错误"));
    118. } catch (Exception e1) {
    119. e1.printStackTrace();
    120. }
    121. }
    122. return null;
    123. }
    124. // 我的审批
    125. public String myAudit(HttpServletRequest req, HttpServletResponse resp) {
    126. try {
    127. PageBean pageBean = new PageBean();
    128. pageBean.setRequest(req);
    129. List<Map<String, Object>> list = infoDao.myAudit(info, pageBean);
    130. // 注意:layui中的数据格式
    131. ResponseUtil.writeJson(resp, R.ok(0, "我的审批查询成功", pageBean.getTotal(), list));
    132. } catch (Exception e) {
    133. e.printStackTrace();
    134. try {
    135. ResponseUtil.writeJson(resp, R.error(0, "我的审批查询错误"));
    136. } catch (Exception e1) {
    137. e1.printStackTrace();
    138. }
    139. }
    140. return null;
    141. }
    142. // 待开会议
    143. public String queryMeetingInfoByState(HttpServletRequest req, HttpServletResponse resp) {
    144. try {
    145. PageBean pageBean = new PageBean();
    146. pageBean.setRequest(req);
    147. List<Map<String, Object>> list = infoDao.queryMeetingInfoByState(info, pageBean);
    148. // 注意:layui中的数据格式
    149. ResponseUtil.writeJson(resp, R.ok(0, "待开会议数据查询成功", pageBean.getTotal(), list));
    150. } catch (Exception e) {
    151. e.printStackTrace();
    152. try {
    153. ResponseUtil.writeJson(resp, R.error(0, "待开会议数据查询错误"));
    154. } catch (Exception e1) {
    155. e1.printStackTrace();
    156. }
    157. }
    158. return null;
    159. }
    160. // 所有会议
    161. public String allInfos(HttpServletRequest req, HttpServletResponse resp) {
    162. try {
    163. PageBean pageBean = new PageBean();
    164. pageBean.setRequest(req);
    165. List<Map<String, Object>> list = infoDao.allInfos(info, pageBean);
    166. // 注意:layui中的数据格式
    167. ResponseUtil.writeJson(resp, R.ok(0, "所有会议数据查询成功", pageBean.getTotal(), list));
    168. } catch (Exception e) {
    169. e.printStackTrace();
    170. try {
    171. ResponseUtil.writeJson(resp, R.error(0, "所有会议数据查询错误"));
    172. } catch (Exception e1) {
    173. e1.printStackTrace();
    174. }
    175. }
    176. return null;
    177. }
    178. }

    MeetingInfoDao.java代码块:

    1. package com.zking.dao;
    2. import java.sql.SQLException;
    3. import java.util.List;
    4. import java.util.Map;
    5. import com.zking.entity.MeetingInfo;
    6. import com.zking.util.BaseDao;
    7. import com.zking.util.PageBean;
    8. import com.zking.util.StringUtils;
    9. public class MeetingInfoDao extends BaseDao<MeetingInfo>{
    10. // 会议信息新增
    11. public int add(MeetingInfo t) throws Exception {
    12. String sql="insert into t_oa_meeting_info(title,content,canyuze,liexize,zhuchiren,location,startTime,endTime,remark) values(?,?,?,?,?,?,?,?,?)";
    13. return super.executeUpdate(sql, t, new String[] {"title","content","canyuze","liexize","zhuchiren","location","startTime","endTime","remark"});
    14. }
    15. // 我的会议,后续其他的菜单也会使用
    16. private String getSQL() {
    17. return "select a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren\r\n" +
    18. ",b.`name` zhuchirennmae,\r\n" +
    19. "a.location,\r\n" +
    20. "DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,\r\n" +
    21. "DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" +
    22. "a.state,\r\n" +
    23. "(\r\n" +
    24. " case a.state\r\n" +
    25. " when 0 then '取消会议'\r\n" +
    26. " when 1 then '新建'\r\n" +
    27. " when 2 then '待审核'\r\n" +
    28. " when 3 then '驳回'\r\n" +
    29. " when 4 then '待开'\r\n" +
    30. " when 5 then '进行中'\r\n" +
    31. " when 6 then '开始投票'\r\n" +
    32. " when 7 then '结束会议'\r\n" +
    33. " else '其他' end\r\n" +
    34. ") meetingstate,\r\n" +
    35. "a.seatPic,a.remark,a.auditor,\r\n" +
    36. "c.`name` auditorname from t_oa_meeting_info a \r\n" +
    37. "inner join t_oa_user b on a.zhuchiren=b.id\r\n" +
    38. "left join t_oa_user c on a.auditor=c.id where 1=1";
    39. }
    40. // 我的会议
    41. public List<Map<String, Object>> myInfos(MeetingInfo info, PageBean pageBean)
    42. throws SQLException, InstantiationException, IllegalAccessException {
    43. // 拿到那些可能传的条件
    44. // 拿到我们封装好的SQL语句
    45. String sql = getSQL();
    46. // 会议标题
    47. String title = info.getTitle();
    48. if(StringUtils.isNotBlank(title)) {
    49. sql+=" and a.title like '%"+title+"%'";
    50. }
    51. sql+=" and a.zhuchiren = "+info.getZhuchiren();
    52. // 降序
    53. sql+=" order by a.id desc ";
    54. return super.executeQuery(sql, pageBean);
    55. }
    56. // 设置会议排座图片
    57. public int updateSeatPicById(MeetingInfo info) throws Exception {
    58. String sql = " update t_oa_meeting_info set seatPic=? where id=?";
    59. return super.executeUpdate(sql, info, new String[] {"seatPic","id"});
    60. }
    61. // 会议送审
    62. public int updateAuditorById(MeetingInfo info) throws Exception {
    63. String sql = " update t_oa_meeting_info set auditor=?,state=2 where id=?";
    64. return super.executeUpdate(sql, info, new String[] {"auditor","id"});
    65. }
    66. // 我的审批
    67. public List<Map<String, Object>> myAudit(MeetingInfo info, PageBean pageBean)
    68. throws SQLException, InstantiationException, IllegalAccessException {
    69. // 拿到那些可能传的条件
    70. // 拿到我们封装好的SQL语句
    71. String sql = getSQL();
    72. // 会议标题
    73. String title = info.getTitle();
    74. if(StringUtils.isNotBlank(title)) {
    75. sql+=" and a.title like '%"+title+"%'";
    76. }
    77. // 当前登录账号等于审批人字段值
    78. sql+=" and a.auditor = "+info.getAuditor();
    79. // 待审核状态的会议信息才需要查询出来
    80. sql+=" and a.state=2 ";
    81. // 降序
    82. sql+=" order by a.id desc ";
    83. return super.executeQuery(sql, pageBean);
    84. }
    85. // 待开会议
    86. public List<Map<String, Object>> queryMeetingInfoByState(MeetingInfo info, PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException {
    87. String sql="select CONCAT(canyuze,',',liexize,',',zhuchiren),a.id,a.title,a.content,a.canyuze,a.liexize,a.zhuchiren\r\n" +
    88. " ,b.`name` zhuchirennmae,\r\n" +
    89. " a.location,\r\n" +
    90. " DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') startTime,\r\n" +
    91. " DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" +
    92. " a.state,\r\n" +
    93. " (\r\n" +
    94. " case a.state\r\n" +
    95. " when 0 then '取消会议'\r\n" +
    96. " when 1 then '新建'\r\n" +
    97. " when 2 then '待审核'\r\n" +
    98. " when 3 then '驳回'\r\n" +
    99. " when 4 then '待开'\r\n" +
    100. " when 5 then '进行中'\r\n" +
    101. " when 6 then '开始投票'\r\n" +
    102. " when 7 then '结束会议'\r\n" +
    103. " else '其他' end\r\n" +
    104. " ) meetingstate,\r\n" +
    105. " a.seatPic,a.remark,a.auditor,\r\n" +
    106. " c.`name` auditorname from t_oa_meeting_info a \r\n" +
    107. " inner join t_oa_user b on a.zhuchiren=b.id\r\n" +
    108. " left join t_oa_user c on a.auditor=c.id where 1=1\r\n" +
    109. " and state=4 and FIND_IN_SET("+info.getZhuchiren()+",CONCAT(canyuze,',',liexize,',',zhuchiren)) ";
    110. return super.executeQuery(sql, pageBean);
    111. }
    112. // 所有会议
    113. public List<Map<String, Object>> allInfos(MeetingInfo info, PageBean pageBean) throws InstantiationException, IllegalAccessException, SQLException {
    114. String sql="select CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',IFNULL(a.auditor,-1)),a.id,a.title,a.content,\r\n" +
    115. " a.canyuze,a.liexize,a.zhuchiren,b.`name` zhuchirennmae,a.location,\r\n" +
    116. " DATE_FORMAT(a.startTime,'%Y-%m-%d %H-%m-%s') \r\n" +
    117. " startTime,DATE_FORMAT(a.endTime,'%Y-%m-%d %H-%m-%s') endTime,\r\n" +
    118. " a.state,(\r\n" +
    119. " case a.state\r\n" +
    120. " when 0 then '取消会议' \r\n" +
    121. " when 1 then '新建' \r\n" +
    122. " when 2 then '待审核' \r\n" +
    123. " when 3 then '驳回' \r\n" +
    124. " when 4 then '待开' \r\n" +
    125. " when 5 then '进行中' \r\n" +
    126. " when 6 then '开始投票' \r\n" +
    127. " when 7 then '结束会议' \r\n" +
    128. " else '其他' end\r\n" +
    129. " ) \r\n" +
    130. " meetingstate,a.seatPic,a.remark,a.auditor,c.`name` auditorname \r\n" +
    131. " from t_oa_meeting_info a \r\n" +
    132. " inner join t_oa_user b on a.zhuchiren=b.id \r\n" +
    133. " left join t_oa_user c on a.auditor=c.id where 1=1 \r\n" +
    134. " and FIND_IN_SET("+info.getZhuchiren()+",CONCAT(a.canyuze,',',a.liexize,',',a.zhuchiren,',',a.auditor))";
    135. return super.executeQuery(sql, pageBean);
    136. }
    137. }

     我们在来重新运行一下我就用id为6的登录如图所示:

    对应数据库里的 

     

    在对应一下数据库里的是不是也是这么多条记录

  • 相关阅读:
    浅浅的 Cmake
    关于IDEA没有显示日志输出?IDEA控制台没有显示Tomcat Localhost Log和Catalina Log 怎么办?
    java基于微信小程序的新冠疫苗接种预约系统 uinapp
    arthas进阶版排查问题之idea插件工具操作
    Docker 容器中运行 Kibana
    理“ Druid 元数据”之乱
    07-垃圾收集算法详解
    【ViT详解】Vision Transformer网络结构及代码解读
    快速创建软件安装包-ClickOnce
    FPGA 学习笔记:IP Clocking Wizard 的基本操作
  • 原文地址:https://blog.csdn.net/weixin_67465673/article/details/126061516