📄 departmentbean.java
字号:
/**********************************************************
Copyright (C),2003-10-12, Beijing USTB.
All rights reserved.
Filename: DepartmentBean.java
@author:
@version 1.0
Date:2003-10-14
Description:部门管理表Bean
Other:
Variable List:
1.String depno;//部门父编号、部门编号
Function List:
1.public DepartmentBean()//构造函数
2.public void setID(String no)//设置部门编号
3.public Vector getArr()//查询某部门的职务信息记录
4.private String makeNewNo()//生成新增纪录的'部门编号'
5.public int addRec(Hashtable ht)//增加一条纪录
6.public int modRec(Hashtable ht,String flg)//修改一条纪录(由公共变量-部门编号depno确定)正确修改返回0,否则返回错误类型值
7.public boolean delRec()//判断纪录是否可以删除,可以,删除一条纪录返回true.否则返回false(由公共变量部门编号depno确定)
8.private buildSubTree(DefaultMutableTreeNode rootNode,String departNo)//迭代生成子树
9.public DefaultMutableTreeNode buildTree();//生成树并返回根节点
10.public String toName()//根据编号返回名称
11. public string getJBNo()//返回级别序号最大值+1
12.public String getFatherNo() throws SQLException//返回父编号
13. public String getBmNo(String bmName)throws SQLException//根据部门名称返回部门编号。暂且没用,部门名称有相同的
14. public String getBossDutyNo(String bossName)throws SQLException//根据职务名称返回职务编号
15. public String getDutyNo()throws SQLException//根据部门编号返回其头职务编号
16. public Vector allBmName()//返回所有的部门名称,除了自己
17.public Hashtable getAllInf()//返回某个部门的所有界面显示信息
18.public boolean nameExist(String bmname)//判断同一个部门下名称是否重
19 public Vector getOnePage(int page,int records);//分页时取得一页的数据量
20 public Vector getOneBMPs()//返回某个部门的所有人员
21.public Vector getOrgDutys() //查询某部门职务名称
22.public String getBmName()
23.public String getBMBH(String strPersonNO)//取得当前人员所在部门的部门编号new
24.public DefaultMutableTreeNode build1LevTree(String strDepartID) //生成一层的树
25.public DefaultMutableTreeNode buildSelectedBMTree(String PersonNo) //根据职工权限生成这个职工相应权限的被剪枝的树
History:
1. Date:2003-10-14
Author:
Modification:文件头、架子
2. Date:2003-10-15,18
Author:
Modification:函数体
3. Date:2003-10-17
Author:
Modification:函数9,10
4. Date:2003-11-1
Author:
Modification:getOnePage
5. Date:2003-11-8
Author:
Modification:getOneBMPs()//返回某个部门的“在职”所有人员
6. Date:2003-11-9
Author:
Modification:public Vector getOrgDutys() //查询某部门职务名称
7. Date:2003-11-15
Author:
Modification:public DefaultMutableTreeNode buildTree(String strDepartID) //查询某部门职务名称根据职部门编号生成其子树并返回根节点
8. Date:2003-11-16
Author:
Modification:isWho(String zgbh)//判断当前人员的身份new
9. Date:2003-11-16
Author:
Modification://管理员和文书数据汉化;
10. Date:2003-11-22
Author:
Modification:级别序号问题修正
11. Date:2003-11-23
Author:
Modification:增加了2个函数
11. Date:2003-11-30
Author:
Modification:增加了1个函数
12. public String getOrgNo(String bmbh) //取得二级部门编号
***********************************************************/
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));
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -