⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 departmentbean.java

📁 “JSP数据库项目案例导航”一书从第一章到第十一章各章实例的源程序文件以及数据库文件。 注意: 1. 本书中的案例提供的数据库环境不同
💻 JAVA
📖 第 1 页 / 共 4 页
字号:

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 + -