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

📄 dept.java

📁 一个真实项目的源代码。有一个比较优秀的时间类
💻 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 + -