?? departmentbean.java
字號:
package oa.bean;
import java.sql.*;
import java.util.*;
import javax.swing.tree.DefaultMutableTreeNode;
import oa.main.*;
public class DepartmentBean extends ParentBean
{
String depNo = "";
String zgNo = "";
private static DefaultMutableTreeNode s_root = null;
//設置部門編號
public void setID(String depNo)
{
this.depNo = depNo;
}
public void setZGBH(String zgNo)
{
this.zgNo = zgNo;
}
//構造函數
public DepartmentBean() {
}
//根據職工權限生成這個職工相應權限的被剪枝的樹
public DefaultMutableTreeNode buildSelectedBMTree(String PersonNo)
{
DefaultMutableTreeNode root = buildTree(false);
ResultSet rs = null;
Statement stmt = null;
if(!PersonNo.equals("1"))
{ //操作者對當前部門有 "人員信息\分配職務:73" 的權限才能分配當前部門的職務
String sql = " Select distinct a.BMBH "
+ " from ZZ_ZGZWB a,ZZ_ZWB b "
+ " where a.BMBH=b.BMBH and a.ZWBH=b.ZWBH "
+ " and (a.CZQX like '%,73' or a.CZQX like '%,73,%' or a.CZQX like '73,%' "
+ " or b.CZQX like '%,73' or b.CZQX like '%,73,%' or b.CZQX like '73%,') "
+ " and a.ZGBH='"+ PersonNo + "' "
+ " order by a.BMBH ";
/*
sql = "select distinct bmbh as BMBH "
+ " from zz_zgzwb "
+ " where zgbh='"+PersonNo+"'"
+ " and (CZQX like '%,73' or CZQX like '%,73,%' or CZQX like '73,%') "
+ "union "
+ "select distinct b.bmbh as BMBH "
+ " from zz_zgzwb a,zz_zwb b "
+ " where a.zgbh='"+PersonNo+"'"
+ " and a.bmbh=b.bmbh "
+ " and (b.CZQX like '%,73' or b.CZQX like '%,73,%' or b.CZQX like '73%,') ";*/
Vector vectBMBH = new Vector();
try{
rs = selectRecord(sql);
while (rs.next())
vectBMBH.add(rs.getString("BMBH"));
}catch(Exception e){System.out.println("DepartmentBean.buildSelectedBMTree(String)運行時出錯:"+e);}
finally{
if(rs!=null)try{ stmt = rs.getStatement(); rs.close();}catch(Exception e){System.out.println("DepartmentBean.buildSelectedBMTree(String)關閉記錄集rs時出錯"+e);}
if(stmt!=null) try{stmt.close();}catch(Exception e){System.out.println("DepartmentBean.buildSelectedBMTree(String)關閉聲明時statement出錯"+e);}
}
//開始剪枝
boolean canCut = true;
boolean cut = true;
while (canCut && root.getChildCount() > 0)
{
canCut = false;
for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements();)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
Hashtable hs = (Hashtable) (node.getUserObject());
String strID = (String) hs.get("BMBH");
if (!vectBMBH.contains(strID))
{
//檢查這個節點的根路徑上的節點是否有效 向下兼容
Object[] obj = node.getUserObjectPath();
cut = true;
//檢查其到根路徑上的節點
for (int i = 0; i < obj.length; i++)
{
hs = (Hashtable) obj[i];
strID = ds.toString((String) hs.get("BMBH"));
if (vectBMBH.contains(strID))
{
cut = false;
}
}
if ((cut) && (node.isLeaf()))
{
node.removeFromParent();
canCut = true;
continue;
}
if (!cut)
{
Hashtable hst = (Hashtable) node.getUserObject();
hst.put("Enabled", "True");
} //end if
}
else
{
Hashtable hst = (Hashtable) node.getUserObject();
hst.put("Enabled", "True");
} //end if
} //end for
} //end while
/*
String sql =
" select distinct a.BMBH "
+ " from ZZ_ZGZWB a,ZZ_ZWB b "
+ " where a.BMBH = b.BMBH "
+ " and a.ZWBH = b.ZWBH "
+ " and (b.SFJC is null or b.SFJC=0) "
+ " and a.ZGBH='"+ PersonNo+ "'"
+ " order by a.BMBH"; //當前操作者有職務的部門
ResultSet rs = selectRecord(sql);
Vector vectBMBH = new Vector();
while (rs.next())
vectBMBH.add(rs.getString("BMBH"));
rs.getStatement().close();
//開始剪枝
boolean canCut = true;
boolean cut = true;
while (canCut && root.getChildCount() > 0)
{
canCut = false;
for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements();)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
Hashtable hs = (Hashtable) (node.getUserObject());
String strID = (String) hs.get("BMBH");
if (!vectBMBH.contains(strID))
{
cut = true;
DefaultMutableTreeNode temproot = buildTree(strID); //檢查這個節點的子路徑上的節點是否有效
for (Enumeration tempe = temproot.preorderEnumeration(); tempe.hasMoreElements();)
{
DefaultMutableTreeNode tempnode = (DefaultMutableTreeNode) tempe.nextElement();
hs = (Hashtable) (tempnode.getUserObject());
strID = ds.toString((String) hs.get("BMBH"));
if (vectBMBH.contains(strID)) cut = false;
}
if (cut)
{
node.removeFromParent();
canCut = true;
continue;
}
}
else
{
//System.out.println("\n"+toName(strID)+" Enabled!!!!!!!!! ");
Hashtable hst = (Hashtable) node.getUserObject();
hst.put("Enabled", "True");
} //end if
} //end for
} //end while
*/
}
else //PersonNo=='1':admin
{
for (Enumeration e = root.preorderEnumeration(); e.hasMoreElements();)
{
DefaultMutableTreeNode node = (DefaultMutableTreeNode) e.nextElement();
Hashtable hst = (Hashtable) node.getUserObject();
hst.put("Enabled", "True");
}
}
return root;
}
public DefaultMutableTreeNode buildTree(){
return buildTree(true);
}
//生成樹并返回根節點
public DefaultMutableTreeNode buildTree(boolean useStatic){
if(useStatic){
synchronized(this){
if(s_root==null)
rebuildTree();
}
return s_root;
}
else
{
DefaultMutableTreeNode root = null;
boolean err = false;
/* for(int i=0;i<3;i++){
System.gc();
try{
Thread.sleep(10);
}catch(Exception e){}
}
//*/ String sql =
" Select BMBH,BMFBH,BMMC,JBXH from ZZ_BMB "
+ " Where BMFBH is null "
+ " order by JBXH ";
ResultSet rs = selectRecord(sql);
Hashtable hash = new Hashtable();
Statement stmt = null;
try{
ResultSetMetaData rsmd = rs.getMetaData();
// 結果集為空時返回
if (!(rs.next())) {
//System.err.println("數據表錯誤:根為空。");
return null;
}
int cols = rsmd.getColumnCount();
hash.clear();
for (int i = 1; i <= cols; i++) {
String field = ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field, value);
}
}catch(Exception e){System.out.println("DepartmentBean.buildTree()運行時出錯:"+e);}
finally{
if(rs!=null)try{ stmt = rs.getStatement(); rs.close();}catch(Exception e){System.out.println("DepartmentBean.buildTree()關閉記錄集rs時出錯"+e);}
if(stmt!=null) try{stmt.close();}catch(Exception e){System.out.println("DepartmentBean.buildTree()關閉聲明時statement出錯"+e);}
}
root = new DefaultMutableTreeNode(hash);
buildSubTree(root);
return root;
}
}
//生成樹并返回根節點
public DefaultMutableTreeNode rebuildTree(){
DefaultMutableTreeNode r=s_root;
s_root = null;
boolean err = false;
/* for(int i=0;i<3;i++){
System.gc();
try{
Thread.sleep(10);
}catch(Exception e){}
}
//*/ String sql =
" Select BMBH,BMFBH,BMMC,JBXH from ZZ_BMB "
+ " Where BMFBH is null "
+ " order by JBXH ";
ResultSet rs = selectRecord(sql);
Hashtable hash = new Hashtable();
Statement stmt = null;
try{
ResultSetMetaData rsmd = rs.getMetaData();
// 結果集為空時返回
if (!(rs.next())) {
//System.err.println("數據表錯誤:根為空。");
return null;
}
int cols = rsmd.getColumnCount();
hash.clear();
for (int i = 1; i <= cols; i++) {
String field = ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field, value);
}
}catch(Exception e){System.out.println("DepartmentBean.buildTree()運行時出錯:"+e);err=true;}
finally{
if(rs!=null)try{ stmt = rs.getStatement(); rs.close();}catch(Exception e){System.out.println("DepartmentBean.buildTree()關閉記錄集rs時出錯"+e);}
if(stmt!=null) try{stmt.close();}catch(Exception e){System.out.println("DepartmentBean.buildTree()關閉聲明時statement出錯"+e);}
}
if(err)
s_root=r;
else{
s_root = new DefaultMutableTreeNode(hash);
buildSubTree(s_root);
}
return s_root;
}
//生成一層的樹
public DefaultMutableTreeNode build1LevTree(String strDepartID)
{
String sql =
" Select BMBH,BMFBH,BMMC,JBXH from ZZ_BMB "
+ " Where BMBH ='"
+ strDepartID
+ "'"
+ " order by JBXH ";
ResultSet rs = db.QuerySQL(sql);
Statement stmt = null;
Hashtable hash = new Hashtable();
ResultSetMetaData rsmd = null;
try{
//結果集為空時返回
if (!(rs.next())) {
//System.err.println("內部錯誤:根為空。at oa.bean.PersonFileBean");
return null;
}
rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
hash.clear();
for (int i = 1; i <= cols; i++) {
String field = ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field, value);
}
}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)運行時出錯:"+e);}
finally{
if(rs!=null)try{ stmt = rs.getStatement(); rs.close();}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)關閉記錄集rs時出錯"+e);}
if(stmt!=null) try{stmt.close();}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)關閉聲明時statement出錯"+e);}
}
DefaultMutableTreeNode root = new DefaultMutableTreeNode(hash);
//選出rootNode的子節點
String DepartNo =
(String) ((Hashtable) root.getUserObject()).get("BMBH");
sql =
" Select BMBH,BMFBH,BMMC,JBXH from ZZ_BMB "
+ " Where BMFBH='"
+ DepartNo
+ "' "
+ " and BMZT=0 order by JBXH ";
rs = db.QuerySQL(sql);
try{
rsmd = rs.getMetaData();
int cols = rsmd.getColumnCount();
while (rs.next()) {
hash = new Hashtable();
hash.clear();
for (int i = 1; i <= cols; i++) {
String field = ds.toString(rsmd.getColumnName(i));
String value = ds.toString(rs.getString(i));
hash.put(field, value);
}
DefaultMutableTreeNode treeNode = new DefaultMutableTreeNode(hash);
root.add(treeNode);
}
}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)運行時出錯:"+e);}
finally{
if(rs!=null)try{stmt = rs.getStatement();rs.close();}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)釋放記錄集rs時出錯:"+e);}
if(stmt!=null)try{stmt.close();}catch(Exception e){System.out.println("DepartmentBean.build1LevTree(String)釋放記錄集stmt時出錯:"+e);}
}
return root;
}
// 根據職部門編號生成其子樹并返回根節點
public DefaultMutableTreeNode buildTree(String strDepartID)
{
strDepartID = ds.toString(strDepartID);
String sql =
" Select BMBH,BMFBH,BMMC,JBXH from ZZ_BMB "
+ " Where BMBH ='"
+ strDepartID
+ "'"
+ " order by JBXH ";
ResultSet rs = selectRecord(sql);
Hashtable hash = new Hashtable();
Statement stmt = null;
try{
ResultSetMetaData rsmd = rs.getMetaData();
// 結果集為空時返回
if (!(rs.next())) {
//System.err.println("數據表錯誤:根為空。");
return null;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -