標籤:
會議管理設計與實現文檔
會議管理
資料庫:meetingdb
資料表:1、meeting_info 2、meeting_join_user (一對多關聯性)
菜單
1、我發起的會議(公開)
2、待參與的會議(公開)
3、待審批的會議(管理員,經理,主管)
4、所有會議列表(管理員)
註: 角色目前是按照個人自己的設計的角色,後期需要改為省平台的對應的角色
建立會議:建立會議時,把相關參與人的資料插入到meeting_join_user表
刪除會議:刪除會議時,把相關參與人的資料從meeting_join_user表刪除
預覽會議詳情頁面:查看會議詳情資訊
查詢會議參與人列表:查看會議參與人的資訊列表
帶參與會議列表:
回複是否參與會議:彈窗回複是否參與會議
會議流程圖:
員工:建立會議(提交)s----審批(提交)----發布
經理、主管:建立會議(提交)-----發布
運行:
員工:(我發起的會議,待參與的會議)
主管、經理:(我發起的會議,待參與的會議,待審批的會議)
管理員:(我發起的會議,待參與的會議,待審批的會議、所有會議管理列表)
開發技術關鍵點記錄:
添加資料:
在儲存操作的 動作後,或者動作前,進行對C表添加資料。
A表添加資料時,向C表也添加資料:
(function(){var doc = getCurrentDocument();var meeting_id=getItemValueAsString("meeting_id");var aa = doc.getItemValueAsString("user_list"); //表單使用者選擇框欄位if(!aa.equals("")&& aa.length()>0){var docids = splitText(aa, ";");var userlist = createObject("java.util.ArrayList");for (var i = 0; i < docids.length; i++) {if (docids != null) {var userVO = getUserById(docids[i]);userlist.add(userVO);}}var formProcess = getFormProcess();var process = getDocumentProcess(); var form = formProcess.doViewByFormName("meeting_join_user" , getApplication()); if(userlist!=null && userlist.size()>0){for(var i = 0; i < userlist.size(); i++){//迴圈條件var dataUser = userlist.get(i);var itemDoc = process.doNew(form,getWebUser(),createParamsTable());var userid=dataUser.getId();var sql = "select * from tlk_meeting_join_user where item_meeting_id='"+meeting_id; sql +="' and item_user_id='"+userid+"'";var existlist = queryBySQL(sql);if(existlist!=null && existlist.size()>0){}else{var depts = dataUser.getDepartments();var departmentName = "";for (var iter = depts.iterator(); iter.hasNext();) {var dept = iter.next();departmentName = dept.getName();} //itemDoc.setParent(doc.getId());itemDoc.setAuthor(userid);//itemDoc.setIstmp(false);itemDoc.setApplicationid(getApplication());itemDoc.setDomainid(dataUser.getDomainid());itemDoc.addStringItem("meeting_id", meeting_id);itemDoc.addStringItem("user_id", userid);itemDoc.addStringItem("username", dataUser.getName());itemDoc.addStringItem("tel_phone", dataUser.getTelephone());itemDoc.addStringItem("department", departmentName);itemDoc.addStringItem("message", "");itemDoc.addStringItem("status", "wait");itemDoc.addDateItem("add_date", getToday());process.doCreate(itemDoc);}}}}})()
刪除資料:
A表刪除資料時,向C表也刪除資料:
(跟添加資料時的原理一樣):
(function(){var params = getParameter("_selects"); if(params!=null && params!=""){var recordids = splitText(params,";");//得到選中記錄組的idvar recordid = "";var appid=getApplication();//擷取應用IDvar a=new Packages.cn.myapps.core.deploy.application.ejb.ApplicationProcessBean();//執行個體化application的應用處理類var avo=a.doView(appid);//擷取軟體應用對象var did=avo.getDatasourceid();//擷取資料來源的IDvar db=new Packages.cn.myapps.core.dynaform.dts.datasource.ejb.DataSourceProcessBean();//執行個體化資料來源的應用處理類var kk=db.doView(did);//擷取資料來源對象var dbsname=kk.getName();//擷取資料來源名稱var process = new Packages.cn.myapps.core.dynaform.document.ejb.DocumentProcessBean(getApplication()); //執行個體化文檔對象for(var i=0;i<recordids.length;i++){var id = recordids[i];//process.doRemove(recordids[i]);//根據文檔ID,刪除文檔對象var sql = "delete from tlk_meeting_join_user where parent='"+id+"'";if(!"".equals(dbsname)){deleteByDSName(dbsname,sql);}}}})()
待參加會議資料查詢:
資料查詢SQL
(function(){ var user = getWebUser(); var userid = user.getId();var sql="";if(null!=userid || !"".equals(userid)){ sql = "select u.item_status, m.* from tlk_meeting_join_user as u LEFT JOIN tlk_meeting_info as m on u.ITEM_MEETING_ID =m.ITEM_MEETING_ID where u.ITEM_USER_ID='"+userid+"' and m.ITEM_MEETING_STATUS='發行' and m.ITEM_START_TIME>=now()";} return sql;})()
視圖列跳轉視圖(當前頁)
查詢會議參與人列表
(function(){var request = $WEB.getParamsTable().getHttpRequest();//擷取當前 requestvar curr= getCurrentDocument();var meetingId=getItemValueAsString("meeting_id"); //var uid = getWebUser().getId();var url1="http://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath();var view_id="11e6-10d5-c8907e8b-a931-c7e163d030f2";//視圖 id,瀏覽器的http請求可以看到var oldUrl = url1+"/portal/dynaform/view/displayView.action?_viewid="+view_id+"&clearTemp=true&application=11e6-10c7-cb2f4e2b-a931-c7e163d030f2&meetingId="+meetingId+"&_resourceid=11e6-10da-4b00d761-a931-c7e163d030f2";var rtn = "<a style=\"cursor:pointer;\" href='"+oldUrl+"' title='查詢參會人' ><font color='blue' >查詢參會人</font></a>";return rtn;})();
視圖上接收參數去查詢相關的記錄:
(function(){ var request = $WEB.getParamsTable().getHttpRequest(); var meetingId = request.getParameter("meetingId"); if(isNotNull(meetingId)){ request.getSession().setAttribute("usermeetingId",meetingId); }else{ meetingId = request.getSession().getAttribute("usermeetingId"); } println("=======mid=========="+meetingId); var sql="select * from tlk_meeting_join_user where item_meeting_id='"+meetingId+"'"; return sql;})()
視圖列跳轉表單(彈窗)
回複會議:
(function(){ var doc = getCurrentDocument();//當前的文檔對象var meetingid = doc.getItemValueAsString("meeting_id");//擷取所在行的會議idvar user = getWebUser(); var userid = user.getId();//擷取目前使用者的IDprintln("=======m======="+meetingid);println("=======u======="+userid); var docid="";//記錄id var formid="11e6-10d2-5c67ecc1-a931-c7e163d030f2";//相應記錄的表單id 固定的if(meetingid!=null && userid!=null){var sql = "select * from tlk_meeting_join_user where item_meeting_id='"+meetingid;sql +="' and item_user_id='"+userid+"'";var userlist = queryBySQL(sql);println("============="+userlist.size());if(userlist!=null && userlist.size()>0){ //遍曆結果集for(var iter1 = userlist.iterator();iter1.hasNext();){var itemdoc = iter1.next();if(itemdoc!=null){ docid=itemdoc.getId();//擷取查詢出的文檔的id println("======m======"+itemdoc.getItemValueAsString("meeting_id")); println("======u======"+itemdoc.getItemValueAsString("user_id"));}}}} var subject = "回複"; var request = $WEB.getParamsTable().getHttpRequest();//擷取當前request var url1="http://"+request.getServerName()+":"+request.getServerPort()+request.getContextPath(); var oldUrl = url1+"/portal/dynaform/document/view.action?user_reply=yes&_docid="+docid+"&_formid="+formid; oldUrl += "&application="+getApplication(); oldUrl += "&isedit=true&signatureExist=false"; var url = "OBPM.dialog.show({opener:window.parent,title:'回複會議',url:'"+oldUrl+"',width:960,height:500,close:function(){}})"; return "<a style=\"cursor:pointer;\" onclick=\""+url+";\"><font color='blue'>"+subject+"</font></a>";})();
表單操作跳轉模板表單(會議詳情頁)(預覽)
視圖列跳轉模板表單
(function(){var id="";var formid="";var applicationid="";var url="";var pnama=getItemValueAsString("meeting_id");var sql="select id ,formid, applicationid,DOMAINID from tlk_meeting_info where item_meeting_id='"+pnama+"'";var querys=queryBySQL(sql); //println("sql****"+sql);if(querys!=null&& querys.size()>0){ var iter = querys.iterator();if(iter != null && iter.hasNext()){ doc = iter.next();id = doc.getId();formid=doc.getFormid();applicationid=doc.getApplicationid();}var request = $WEB.getParamsTable().getHttpRequest();url += "http://" + request.getServerName()+":" + request.getServerPort() + request.getContextPath();var templateForm="11e6-1259-48d33857-8df4-1fe7f193ff40";//模板idurl += "/portal/dynaform/document/view.action?_docid="+id+"&_formid="+formid+"&_templateForm="+templateForm+"&application="+applicationid;}return url;})()
流程中判斷角色是否允許進入路徑
判斷角色是否允許進入路徑:(主管、經理)
var rtn = false;var curDoc = getCurrentDocument();var webUser = curDoc.getAuthor();var roles = webUser.getRoles();if(roles != null && roles.size()>0){for(var iter = roles.iterator();iter.hasNext();){var roleVo = iter.next();var roleName = roleVo.getName();if("主管".equals(roleName)||"經理".equals(roleName)){rtn = true;break;}}} rtn;
判斷角色是否允許進入路徑:(員工)(代碼基本都差不多一致,只是返回true/false調整一下)
var rtn = true;var curDoc = getCurrentDocument();var webUser = curDoc.getAuthor();var roles = webUser.getRoles();if(roles != null && roles.size()>0){for(var iter = roles.iterator();iter.hasNext();){var roleVo = iter.next();var roleName = roleVo.getName();if("主管".equals(roleName)||"經理".equals(roleName)){rtn = false;break;}}} rtn;
路勁執行的指令碼:(更改資料庫meeting_status欄位的狀態)
var doc =getCurrentDocument();doc.findItem("meeting_status").setValue("待審批");
var doc =getCurrentDocument();doc.findItem("meeting_status").setValue("發行");
流程執行路徑發布時 發送站內信、簡訊的、郵件
var doc =getCurrentDocument();doc.findItem("meeting_status").setValue("發行");var userIds = doc.getItemValueAsString("user_list");var meetingTitle = doc.getItemValueAsString("title");var startTime = doc.getItemValueAsString("start_time");var address = doc.getItemValueAsString("address");//發送語音總機參會人var send_way = doc.getItemValueAsString("send_way");var msgtitle=meetingTitle;var msgcontent="請各位準時出席《"+meetingTitle+"》會議,開始時間:"+startTime+"地點:"+address;var receiverId=userIds;var msgdescription="";var emailpassword="";var senderid=doc.getItemValueAsString("user_id");var uid = getWebUser().getId(); println("======cu======="+uid)println("======s======="+senderid)//調用#include "autosqllib";deliverMassage(send_way, msgtitle, msgcontent, receiverId,msgdescription,emailpassword, senderid);/*函數格式:deliverMassage(manner, msgtitle, msgcontent, receiverId, msgdescription, emailpassword, senderid)函數說明:Manner: 是發送類別 "10,20,30";字串類型 title : 是主題msgContent:內容receiverId:收件者的idmsgdescription :描述emailpassword :要發送郵件時,需要的郵箱密碼senderid :類型的值 (可不傳)(date類型*/function deliverMassage(manner, title, content, receiverId, description, emailpassword, senderid) { content = description + content; var curuserprocess = getUserProcess(); var curuser = getWebUser(); var userIds = receiverId; if (manner.indexOf("10") > -1) { var MSreceiver = createObject("java.util.ArrayList"); MSreceiver = getUserIdList(userIds); if (MSreceiver != null && MSreceiver.size() > 0) { for (var j = 0; j < MSreceiver.size(); j++) { sendMessage(senderid, MSreceiver.get(j), title, content); } } } if (manner.indexOf("20") > -1) { var docid = getId(); var receiver = ""; var isReply = false; var isMass = true; var SMSuser = createObject("java.util.ArrayList"); SMSuser = getUserList(userIds); if (SMSuser != null && SMSuser.size()) { if (SMSuser.size() == 0) { isMass = false; } for (var i = 0; i < SMSuser.size(); i++) { receiver = receiver + SMSuser.get(i).getTelephone() + ","; } sendSMS(docid, title, content, receiver, isReply, isMass); } } if (manner.indexOf("30") > -1 && emailpassword) { var userVO = curuserprocess.doView(senderid); var from = userVO.getEmail(); // [email][email protected][/email] var to = ""; // [email][email protected][/email] var SMuser = createObject("java.util.ArrayList"); SMuser = getUserList(userIds); var i = from.indexOf("@"); var host = from.substring(i + 1); // teemlink.com var user = from; // [email][email protected][/email] // var emailpassword=getItemValue("emailpassword"); 123456 var bbc = null; // 抄送 var validate = true; var subject = title; var body = content; if (SMuser != null && SMuser.size() > 0) { for (var i = 0; i < SMuser.size(); i++) { to = SMuser.get(i).getEmail(); sendMail(from, to, subject, body, host, user, emailpassword, bbc, validate); } } }}//擷取userid結合返回list集合function getUserIdList(userIds) { var userProcess = getUserProcess(); var userIdList = createObject("java.util.ArrayList"); var userList = createObject("java.util.ArrayList"); var doc = getCurrentDocument(); // var domainid = getDomainid(); userIdList = userIds.split(";"); for ( var i = 0; i < userIdList.length; i++) { var user = userProcess.doView(userIdList[i]); userList.add(user.getId()); } return userList;}//擷取使用者物件集合function getUserList(userIds) { var userProcess = getUserProcess(); var userIdList = createObject("java.util.ArrayList"); var userList = createObject("java.util.ArrayList"); var doc = getCurrentDocument(); // var domainid = getDomainid(); userIdList = userIds.split(";"); for ( var i = 0; i < userIdList.length; i++) { var user = userProcess.doView(userIdList[i]);var userVo = getUserById(user.getId()); userList.add(userVo); } return userList;}
myapps 會議管理設計與實現