📄 dept.java
字号:
package com.sys.deptuser;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.List;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import thtf.ebuilder.UP.UP;
import thtf.ebuilder.webservice.UP_S;
import com.work.db.DbUtil;
public class Dept {
private static Log log = LogFactory.getLog(Dept.class);
/**
* 返回当前登录用户的所在的一级部门的汉语名称。例如'办公室'.
*
* @param request
* @return 返回当前登录用户所在的一级部门的汉语名称。
*/
public String getFirstLevelDept(HttpServletRequest request) {
// =============================获取所在处室===开始=======================================================
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
InitialContext init = null;
DataSource ds = null;
try {
init = new InitialContext();
ds = (DataSource) init.lookup("java:/eBuilder"); // 获取连接池对象
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (NamingException e) {
} catch (SQLException ex) {
}
UP UP = new UP();
UP_S ups = new UP_S();
String username = UP.getCookieValue(request, "username");
// String[] userdetail = ups.GetUserDetail(username);//
// 返回数组内容依次为用户ID:USERINFO_ID;用户姓名:USERINFO_NAME;
// 用户密码:USERINFO_PWD;用户邮件:USERINFO_EMAIL;用户手机:USERINFO_MOBILE;用户全名:USERINFO_ALIAS。
String deptname = request.getParameter("deptname");
if (deptname == null) {
deptname = ups.GetPrimDeptName(username);
// 通过菜单上的deptname参数,区别处室文件柜和局文件柜,
// 局文件柜deptname=中纤局,而处室文件柜菜单中没有deptname参数
// String deptid = ups.GetPrimDept(username);//所在部门ID
String deptsql = "select dept_id,dept_name,dept_parent from up_dept where dept_id='"
+ ups.GetPrimDept(username) + "'";
try {
// 查询当前用户所属处室,而不需要科室。处室作为文件柜分类依据
rs = stmt.executeQuery(deptsql);
rs.next(); // 如果是管理员那么就会抛出异常,因为管理员不属于任何一个部门,查询不到任何结果。
String dept_parent = rs.getString("dept_parent");// 当前部门的上一级部门
if (dept_parent.equals("1")) {
deptname = rs.getString("dept_name");
} else {
// 中纤局的组织机构只有处室和科室,没有更多级别,所以不需要多层嵌套
deptsql = "select dept_id,dept_name,dept_parent from up_dept where dept_id='"
+ dept_parent + "'";
rs.close();
rs = stmt.executeQuery(deptsql);
rs.next();
deptname = rs.getString("dept_name");
}
} catch (SQLException se) {
System.out.println(se);
} finally {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
}
try {
if (stmt != null)
stmt.close();
} catch (SQLException e) {
}
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
}
}
// out.println(deptname);
} else {
// deptname = new String(deptname.getBytes("iso-8859-1"),"gb2312");
}
// =======================获取所在处室=====结束===========================================================
return deptname;
}
/**
* 返回当前登录用户的所在的一级部门的汉语名称。例如'办公室'.
*
* @param username 用户的登陆帐户名称,例如administrator,zhangsan
* @return 返回当前登录用户所在的一级部门的汉语名称。
*/
public String getFirstLevelDept(String username) {
// =============================获取所在处室===开始=======================================================
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
InitialContext init = null;
DataSource ds = null;
try {
init = new InitialContext();
ds = (DataSource) init.lookup("java:/eBuilder"); // 获取连接池对象
conn = ds.getConnection();
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
} catch (NamingException e) {
} catch (SQLException ex) {
}
// UP UP = new UP();
UP_S ups = new UP_S();
// String username = UP.getCookieValue(request, "username");
// String[] userdetail = ups.GetUserDetail(username);//
// 返回数组内容依次为用户ID:USERINFO_ID;用户姓名:USERINFO_NAME;
// 用户密码:USERINFO_PWD;用户邮件:USERINFO_EMAIL;用户手机:USERINFO_MOBILE;用户全名:USERINFO_ALIAS。
// String deptname = request.getParameter("deptname");
String deptname =null;
if (deptname == null) {
deptname = ups.GetPrimDeptName(username);
// 通过菜单上的deptname参数,区别处室文件柜和局文件柜,
// 局文件柜deptname=中纤局,而处室文件柜菜单中没有deptname参数
// String deptid = ups.GetPrimDept(username);//所在部门ID
String deptsql = "select dept_id,dept_name,dept_parent from up_dept where dept_id='"
+ ups.GetPrimDept(username) + "'";
try {
// 查询当前用户所属处室,而不需要科室。处室作为文件柜分类依据
rs = stmt.executeQuery(deptsql);
rs.next(); // 如果是管理员那么就会抛出异常,因为管理员不属于任何一个部门,查询不到任何结果。
String dept_parent = rs.getString("dept_parent");// 当前部门的上一级部门
if (dept_parent.equals("1")) {
deptname = rs.getString("dept_name");
} else {
// 中纤局的组织机构只有处室和科室,没有更多级别,所以不需要多层嵌套
//TODO 实现递归查询
deptsql = "select dept_id,dept_name,dept_parent from up_dept where dept_id='"
+ dept_parent + "'";
rs.close();
rs = stmt.executeQuery(deptsql);
rs.next();
deptname = rs.getString("dept_name");
}
} catch (SQLException se) {
System.out.println(se);
} finally {
try {
if (rs != null)
rs.close();
} catch (SQLException e) {
}
try {
if (stmt != null)
stmt.close();
} catch (SQLException e) {
}
try {
if (conn != null)
conn.close();
} catch (SQLException e) {
}
}
// out.println(deptname);
} else {
// deptname = new String(deptname.getBytes("iso-8859-1"),"gb2312");
}
// =======================获取所在处室=====结束===========================================================
return deptname;
}
/**
* 中纤局总共两级部门,用来查询一级部门下面所有的用户。返回的是一个list对象,list中包含的是String【】对象,长度为4.
* 其中string[] [1] 即,数组中的第二个为用户的中文名称。 其中1)userinfo_id(用户的id),2)username
* (中文名称-用户名), 3)userinfo_name(用户的登录帐号),4)dept_name(直接所在部门的名称)
* (暂时无法测试,但是在jsp中已经测试通过!)
* @param deptname
* @return 查询一级部门下面所有的用户。
*
*/
public List searchDeptUser(String deptname) {
String sql = "";
if (deptname == null || deptname.trim().equals("")) {
sql = "SELECT USERINFO_ID, USERINFO_ALIAS AS username FROM UP_USERINFO WHERE (USERINFO_NAME <> 'administrator') " +
" order by userinfo_alias ";
}else{
sql = " SELECT c.USERINFO_ID, c.USERINFO_ALIAS AS username, c.USERINFO_NAME, "
+ " a.DEPT_NAME "
+ " FROM UP_DEPT a INNER JOIN "
+ " UP_USERDEPT b ON a.DEPT_ID = b.DEPT_ID INNER JOIN "
+ " UP_USERINFO c ON b.USERINFO_ID = c.USERINFO_ID "
+ " WHERE (a.dept_id IN "
+ " (SELECT dept_id "
+ " FROM UP_DEPT "
+ " WHERE (DEPT_PARENT = "
+ " (SELECT dept_id "
+ " FROM up_dept "
+ " WHERE dept_name = '"
+ deptname
+ "')))) "
+ " UNION "
+ " SELECT c.USERINFO_ID, c.USERINFO_ALIAS AS username, c.USERINFO_NAME, "
+ " a.DEPT_NAME "
+ " FROM UP_DEPT a INNER JOIN "
+ " UP_LDDEPT b ON a.DEPT_ID = b.DEPT_ID INNER JOIN "
+ " UP_USERINFO c ON b.USERINFO_ID = c.USERINFO_ID "
+ " WHERE (a.DEPT_NAME = '" + deptname + "') " +
" order by c.USERINFO_ALIAS ";
}
log.debug(sql);
List l = null;
l = DbUtil.executeQueryStringList(sql);
return l;
}
/**
* 获取指定一级部门下面所有的用户信息。返回一个字符串数组对象。
* @param deptname
* @return 包含用户的汉语名称。
*/
public String[] searchUserInFirstLevelDept(String deptname) {
List l = null;
l = searchDeptUser(deptname);
if (l == null)
return null;
int LEN = l.size();
String[] result = new String[LEN];
for (int i = 0; i < LEN; i++) {
result[i] = ((String[]) l.get(i))[1];
}
return result;
}
public static void main(String[] args) {
Dept t = new Dept();
String[] kq = t.searchUserInFirstLevelDept("办公室");
if(kq!=null)
for (int j = 0; j < kq.length; j++)
System.out.print(kq[j] + "\t");
System.out.println();
//System.out.println(t.getFirstLevelDept("gaosumei"));
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -