-----box----- 程式 1 void tbDocMouseClicked(MouseEvent e) { //以上略... //若點選公文對應登入者有處理中狀態,則開放內容維護 sql.setLength(0); sql.append("select docno from document_detail where docno = '" + docno + "' and iscomplete = 'P' and userid = '" + this.loginFrame.userid + "' "); log.debug("sql=" + sql); hd = loginFrame.dao.executeQuery(sql.toString()); if (hd.getRowcount() > 0) { rbYes.setEnabled(true); rbNo.setEnabled(true); taProDoccontent2.setEditable(true); btSend.setEnabled(true); } else { rbYes.setEnabled(false); rbNo.setEnabled(false); taProDoccontent2.setEditable(false); btSend.setEnabled(false); } tpContent.setSelectedIndex(2); } -----end----- -----box----- #程式 2 /** * 送出處理 * @param e ActionEvent */ void btSendActionPerformed(ActionEvent e) { if (!rbYes.isSelected() && !rbNo.isSelected()) { JOptionPane.showMessageDialog(this, "動作未選擇!", "錯誤", JOptionPane.ERROR_MESSAGE); return; } if (rbYes.isSelected()) { //允可 String dockind = tfProDockind.getText(); String userid = this.loginFrame.userid; String docno = tfProDocno.getText(); String doctitle = tfProDoctitle.getText(); String doccontent = tfProDoccontent.getText(); String docstatus = tfProDocstatus.getText(); String today = new java.sql.Timestamp(System.currentTimeMillis()).toString(); today = today.substring(0, today.indexOf(".")); today = today.replace('-', '/'); //update document_detail StringBuffer sql = new StringBuffer(); String doccontent2 = ""; try { doccontent2 = new String(taProDoccontent2.getText().getBytes("BIG5"), "ISO-8859-1"); } catch (UnsupportedEncodingException ex) { log.error(ex); } sql.append("update document_detail set doccontent = '" + doccontent2 + "', iscomplete = 'Y' where docno = '" + docno + "' and userid = '" + userid + "' and iscomplete = 'P' "); //---------(1) log.debug("sql=" + sql); this.loginFrame.dao.executeUpdate(sql.toString()); //---------(2) if (this.isStepComplete(docno, userid)) { //判斷此站對應使用者是否全部完成 //取得下一流程要傳送人員 ArrayList user_list = this.getSendUser(dockind, userid); //---------(3) //略... if (user_list.size() == 0) { //公文流程已全部完成 //---------(4) sql.setLength(0); sql.append("update document set docstatus = 'Y' where docno = '" + docno + "' "); log.debug("sql=" + sql); this.loginFrame.dao.executeUpdate(sql.toString()); tfProDocstatus.setText("Y"); //回傳給發送人 try { String send_userid = tfProUserid.getText(); //決定docseq int docseq = getDocseq(docno); log.debug("docseq=" + docseq); //insert document_detail ---------(5) doccontent2 = "簽核完成!"; try { doccontent2 = new String(doccontent2.getBytes("BIG5"), "ISO-8859-1"); } catch (UnsupportedEncodingException ex) { log.error(ex); } sql.setLength(0); sql.append("insert into document_detail (docno, docseq, docdate, doccontent, userid, iscomplete) values ('" + docno + "'," + docseq + ",'" + today + "','" + doccontent2 + "','" + send_userid + "','N' ) "); log.debug("sql=" + sql); this.loginFrame.dao.executeUpdate(sql.toString()); QueueConnection queueConn = sl.getQueueConection(); //傳送Message QueueSession qcSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = sl.getQueue("queue/" + send_userid + "Queue"); log.debug("send queue name=" + "queue/" + send_userid + "Queue"); QueueSender sender = qcSession.createSender(queue); sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT); MapMessage msg = qcSession.createMapMessage(); msg.setString("docno", docno); msg.setInt("docseq", docseq); msg.setString("dockind", dockind); msg.setString("docdate", today); msg.setString("doctitle", doctitle); msg.setString("doccontent", doccontent); msg.setString("userid", userid); msg.setString("docstatus", "Y"); sender.send(msg); qcSession.close(); queueConn.close(); } catch (Exception ex) { log.error(ex); } } } //end 判斷此流程是否全部完成 } else if (rbNo.isSelected()) { //駁回 String dockind = tfProDockind.getText(); String userid = this.loginFrame.userid; String docno = tfProDocno.getText(); String doctitle = tfProDoctitle.getText(); String doccontent = tfProDoccontent.getText(); String docstatus = tfProDocstatus.getText(); String today = new java.sql.Timestamp(System.currentTimeMillis()).toString(); today = today.substring(0, today.indexOf(".")); today = today.replace('-', '/'); //update document_detail StringBuffer sql = new StringBuffer(); String doccontent2 = ""; try { doccontent2 = new String(taProDoccontent2.getText().getBytes("BIG5"), "ISO-8859-1"); } catch (UnsupportedEncodingException ex) { log.error(ex); } //---------(6) sql.append("update document_detail set doccontent = '" + doccontent2 + "', iscomplete = 'Y' where docno = '" + docno + "' and userid = '" + userid + "' and iscomplete = 'P' "); log.debug("sql=" + sql); this.loginFrame.dao.executeUpdate(sql.toString()); //回傳給發送人 try { String send_userid = tfProUserid.getText(); //決定docseq int docseq = getDocseq(docno); log.debug("docseq=" + docseq); //insert document_detail ---------(7) sql.setLength(0); sql.append("insert into document_detail (docno, docseq, docdate, doccontent, userid, iscomplete) values ('" + docno + "'," + docseq + ",'" + today + "','','" + send_userid + "','N' ) "); log.debug("sql=" + sql); this.loginFrame.dao.executeUpdate(sql.toString()); QueueConnection queueConn = sl.getQueueConection(); //傳送Message QueueSession qcSession = queueConn.createQueueSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = sl.getQueue("queue/" + send_userid + "Queue"); log.debug("send queue name=" + "queue/" + send_userid + "Queue"); QueueSender sender = qcSession.createSender(queue); sender.setDeliveryMode(DeliveryMode.NON_PERSISTENT); MapMessage msg = qcSession.createMapMessage(); msg.setString("docno", docno); msg.setInt("docseq", docseq); msg.setString("dockind", dockind); msg.setString("docdate", today); msg.setString("doctitle", doctitle); msg.setString("doccontent", doccontent); msg.setString("userid", userid); msg.setString("docstatus", docstatus); sender.send(msg); qcSession.close(); queueConn.close(); } catch (Exception ex) { log.error(ex); } } -----end----- -----box----- #程式 3 //update document_detail if (docstatus.equals("Y")) { sql.setLength(0); sql.append("update document_detail set iscomplete ='Y' where docno ='" + docno + "' and docseq=" + docseq + " "); log.debug("sql=" + sql); dao.executeUpdate(sql.toString()); } -----end----- -----box----- #程式 3 /** * 判別此使用者所處站別是否全部完成 */ private boolean isStepComplete(String docno, String userid) { boolean is_complete = true; //是否完成 DAOBean dao = loginFrame.dao; ArrayList role_list = new ArrayList(); //---------(1) //取得對應角色 StringBuffer sql = new StringBuffer(); sql.append("select rolename from useraccount where userid = '" + userid + "' "); log.debug("sql=" + sql); HashData hd_rolename = dao.executeQuery(sql.toString()); String rolename = hd_rolename.getString(1, "rolename"); try { rolename = new String(rolename.getBytes("ISO-8859-1"), "BIG5"); } catch (UnsupportedEncodingException ex) { log.error(ex); } //---------(2) sql.setLength(0); sql.append("select dockind from document where docno ='" + docno + "' "); log.debug("sql=" + sql); HashData hd_dockind = dao.executeQuery(sql.toString()); String dockind = hd_dockind.getString(1, "dockind"); try { dockind = new String(dockind.getBytes("ISO-8859-1"), "BIG5"); } catch (UnsupportedEncodingException ex) { log.error(ex); } //---------(3) ArrayList list = (ArrayList) loginFrame.forms_map.get(dockind); boolean is_found = false; for (int i = 0; i < list.size(); i++) { ArrayList list2 = (ArrayList) list.get(i); for (int j = 0; j < list2.size(); j++) { String rolename2 = (String) list2.get(j); if (rolename.equals(rolename2)) { //found is_found = true; role_list = list2; } if (is_found) { break; } } if (is_found) { break; } } if (role_list.size() > 0) { // for (int i = 0; i < role_list.size(); i++) { String t_role = (String) role_list.get(i); try { t_role = new String(t_role.getBytes("BIG5"), "ISO-8859-1"); } catch (UnsupportedEncodingException ex) { log.error(ex); } //---------(4) sql.setLength(0); sql.append("select userid from useraccount where rolename = '" + t_role + "' "); log.debug("sql=" + sql); HashData hd_user = dao.executeQuery(sql.toString()); String t_userid = hd_user.getString(1, "userid"); sql.setLength(0); sql.append("select b.docno from document_detail b where b.docno ='" + docno + "' and b.userid = '" + t_userid + "' and b.iscomplete <> 'Y' "); log.debug("sql=" + sql); HashData hd_check = dao.executeQuery(sql.toString()); if (hd_check.getRowcount() > 0) { //尚有人未完成 is_complete = false; break; } } } return is_complete; } -----end----- -----box----- #程式 5
-----end----- -----box----- insert into useraccount (userid, passwd, rolename) values ('senshaw', 'senshaw','員工' ); insert into useraccount (userid, passwd, rolename) values ('nana', 'nana','經理' ); insert into useraccount (userid, passwd, rolename) values ('dodo', 'dodo','總經理' ); -----end----- -----box----- #程式 6 jboss.mq:service=DestinationManager jboss.mq:service=SecurityManager jboss.mq:service=DestinationManager jboss.mq:service=SecurityManager jboss.mq:service=DestinationManager jboss.mq:service=SecurityManager -----end----- -----box----- insert into useraccount (userid, passwd, rolename) values ('user', 'user','使用者' ); insert into useraccount (userid, passwd, rolename) values ('umgr', 'umgr','使用者部門主管' ); insert into useraccount (userid, passwd, rolename) values ('mismgr', 'mismgr','MIS部門主管' ); -----end-----