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

📄 agmodifyuser.java.svn-base

📁 一个包含排班信息的模块 2.1. 最新排班 6 2.2. 所有排班 6 2.3. 日常排班统计 7 2.4. 排班管理 7 2.5. 班次配置 7 2.6. 部门人员配置 7
💻 SVN-BASE
字号:
/*
 此代理定于每天凌晨2:00运行,扫描所有已提交的“用户变更单”,并处理变更单登记的任务。
 
 变更类型有五种类型:
 1、用户更名:由于注册时书写错误,需要将更正用户姓名。此操作需要修改所有此用户相关的文档。
 2、部门调动:人员部门调动,引起用户全称的改变,从而需要修改所有此用户相关的文档的权限。
 3、工作移交:将A用户有权限查看或办理的文件移交给B(个人性的文档除外,包括:通讯录、日程安排、界面方案)
 4、权限克隆:仅对查询权限进行克隆,为B用户赋给与A用户相同的权限。
 5、部门更名:将A部门的名称更改为B,同时修改该部门下的所有子部门及用户。
 
 用户更名和部门调动还要修改用户信息,包括:用户名,邮件等。
 */
package com.fzet.cois.dividework.agents;

import lotus.domino.*;

import java.util.Vector;
import java.io.*;
import com.fzet.cois.common.scriptLib.*;

public class AgModifyUser extends AgentBase {
	// 初始化过程
	AgentContext ac = null; // 当前上下文环境

	Session session = null;

	Database db = null;

	View vwPerson = null;

	PrintWriter pw = null; // 输出流

	StringBuffer sbReport = null;

	Document doc = null;

	Document docModify = null;

	ViewEntry docFormerDeptUsers = null;

	ViewEntry docAfterDeptUsers = null;

	ErrHandle err = null; // 错误日志

	String sQuery = null; // 查询参数

	String sUNID = null;

	String sViewName = null;

	// 定义变量分别如下 :原部门名称,要调离的部门,原用户名,要调离的人员名,新部门名称,注册新用户名;新用户部门名
	String sOldDeptName, sDelDeptName, sOldUserName, sDelUserName,
			sNewDeptName, sNewUserName, sNewDepartment = null;

	String sNewDeptUsers = null;

	String sOldDeptUsers = null;

	String sModifyType = null;

	String aOldDeptUsers[] = null;

	View vwUserModify = null;

	View vwDeptUsers = null;

	Vector vTemp = null; // 条目字符串变量

	public void NotesMain() {
		try {

			session = getSession();
			ac = session.getAgentContext();
			doc = ac.getDocumentContext();
			db = ac.getCurrentDatabase();
			pw = getAgentOutput();

			// 初始化错误日志类
			err = new ErrHandle(session, 0, "", "agCalendarWr.xml");
			// 取得查询参数
			sQuery = doc.getItemValueString("Query_String_Decoded");
			// 提取管理員參數
			sUNID = Common.parseParameter(sQuery, "UNID");
			/*
			 * ModifyType="1" 注册用户 ModifyType="2" 部门变更 ModifyType="3" 调离部门
			 */
			vwUserModify = db.getView("vwUserModify");
			docModify = db.getDocumentByUNID(sUNID);
			if (docModify != null) {
				sModifyType = docModify.getItemValueString("ModifyType");
				sOldDeptName = docModify.getItemValueString("OldDeptName");
				sDelDeptName = docModify.getItemValueString("DelDeptName");
				sOldUserName = docModify.getItemValueString("OldUserName");
				sDelUserName = docModify.getItemValueString("DelUserName");
				sNewDeptName = docModify.getItemValueString("NewDeptName");
				sNewUserName = docModify.getItemValueString("NewUserName");
				sNewDepartment = docModify.getItemValueString("NewDepartment");
			}
			if (sModifyType.equals("1"))
				modifyRegister();
			if (sModifyType.equals("2"))
				modifyDept();
			if (sModifyType.equals("3"))
				modifyMove();

		} catch (NotesException e) {
			StringBuffer sbReturn = new StringBuffer().append(
					"<root><Return>0</Return><Error>").append(e.text).append(
					"</Error></root>");
			Common.returnXML(pw, sbReturn.toString());
			err.record(true, e.id, e.text);
			e.printStackTrace();
		} catch (Exception e) {
			StringBuffer sbReturn = new StringBuffer().append(
					"<root><Return>0</Return><Error>").append(e.toString())
					.append("</Error></root>");
			Common.returnXML(pw, sbReturn.toString());
			err.record(true, 0, e.toString());
			e.printStackTrace();
		} finally {
			// 释放所有申请的资源
			try {
				if (doc != null)
					doc.recycle();
				if (docFormerDeptUsers != null)
					docFormerDeptUsers.recycle();
				if (docAfterDeptUsers != null)
					docAfterDeptUsers.recycle();

				if (db != null)
					db.recycle();
				if (ac != null)
					ac.recycle();
				if (session != null)
					session.recycle();
			} catch (NotesException e) {
				System.out.println(e.text);
				e.printStackTrace();
			}
		}
	}

	// 部门调动
	private void modifyDept() throws NotesException {
		vwDeptUsers = db.getView("vwDeptUsers");
		// 取原來部門的文檔
		docFormerDeptUsers = vwDeptUsers.getEntryByKey(sOldDeptName);
		// 取所在新部門的文檔
		docAfterDeptUsers = vwDeptUsers.getEntryByKey(sNewDeptName);
		vTemp = docAfterDeptUsers.getColumnValues();
		if (docAfterDeptUsers != null) {
			String sTemp = vTemp.elementAt(1).toString();

			int len = sTemp.length();
			// 第一次調動人員取[]之間的值,然後把新調人員加進去;否則直接加在部門人員後面
			if (sTemp.substring(0, 1).equals("[")
					&& sTemp.substring(len - 1, len).equals("]"))
				sNewDeptUsers = sTemp.substring(1, len - 1) + ","
						+ sOldUserName;
			else {
				if (sTemp.substring(len - 1).indexOf(",") == -1)
					sNewDeptUsers = sTemp + "," + sOldUserName;
				else
					sNewDeptUsers = sTemp + sOldUserName;
			}
			// 把調入人員後的部門人員重新付值,然後保存
			docAfterDeptUsers.getDocument().replaceItemValue("DeptUsers",
					sNewDeptUsers);
			docAfterDeptUsers.getDocument().save();
		}
		// 重置sNewDeptUsers
		sNewDeptUsers = "";
		vTemp = docFormerDeptUsers.getColumnValues();
		if (docFormerDeptUsers != null) {
			String sTemp = vTemp.elementAt(1).toString();
			int len = sTemp.length();
			// 如果第一次調動人員時,部門人員取[]之間的值,然後把調出的人員去掉;否則直接去掉調出的人員
			if (sTemp.substring(0, 1).equals("[")
					&& sTemp.substring(len - 1, len).equals("]")) {
				sOldDeptUsers = sTemp.substring(1, len - 1);
				// System.out.println(sOldDeptUsers);
				// System.out.println(sModifyUser);
			} else
				sOldDeptUsers = sTemp;
			aOldDeptUsers = sOldDeptUsers.split(",");
			for (int i = 0; i < aOldDeptUsers.length; i++) {
				// 把調出人員篩選掉。
				if (!(aOldDeptUsers[i].trim().equals(sOldUserName.trim()))) {
					sNewDeptUsers += aOldDeptUsers[i] + ",";
				}
			}
			// 把調出後的部門人員重新付值,再保存
			docFormerDeptUsers.getDocument().replaceItemValue("DeptUsers",
					sNewDeptUsers);
			docFormerDeptUsers.getDocument().save();
		}
		docModify.remove(true);

		Common.returnXML(pw,
				"<root><Return>1</Return><Content>变更成功</Content></root>");
	}

	// 注册人员
	private void modifyRegister() throws NotesException {
		vwDeptUsers = db.getView("vwDeptUsers");
		// 取所在新部門的文檔
		docAfterDeptUsers = vwDeptUsers.getEntryByKey(sNewDepartment);
		vTemp = docAfterDeptUsers.getColumnValues();
		if (docAfterDeptUsers != null) {
			String sTemp = vTemp.elementAt(1).toString();

			int len = sTemp.length();
			// 第一次調動人員取[]之間的值,然後把新調人員加進去;否則直接加在部門人員後面
			if (sTemp.substring(0, 1).equals("[")
					&& sTemp.substring(len - 1, len).equals("]"))
				sNewDeptUsers = sTemp.substring(1, len - 1) + ","
						+ sNewUserName;
			else {
				if (sTemp.substring(len - 1).indexOf(",") == -1)
					sNewDeptUsers = sTemp + "," + sNewUserName;
				else
					sNewDeptUsers = sTemp + sNewUserName;
			}
			// 把調入人員後的部門人員重新付值,然後保存
			docAfterDeptUsers.getDocument().replaceItemValue("DeptUsers",
					sNewDeptUsers);
			docAfterDeptUsers.getDocument().save();
		}

		docModify.remove(true);

		Common.returnXML(pw,
				"<root><Return>1</Return><Content>变更成功</Content></root>");
	}

	// 调离人员
	private void modifyMove() throws NotesException {
		vwDeptUsers = db.getView("vwDeptUsers");
		// 取原來部門的文檔
		docFormerDeptUsers = vwDeptUsers.getEntryByKey(sDelDeptName);
		// 重置sNewDeptUsers
		sNewDeptUsers = "";
		vTemp = docFormerDeptUsers.getColumnValues();
		if (docFormerDeptUsers != null) {
			String sTemp = vTemp.elementAt(1).toString();
			int len = sTemp.length();
			// 如果第一次調動人員時,部門人員取[]之間的值,然後把調出的人員去掉;否則直接去掉調出的人員
			if (sTemp.substring(0, 1).equals("[")
					&& sTemp.substring(len - 1, len).equals("]")) {
				sOldDeptUsers = sTemp.substring(1, len - 1);
				// System.out.println(sOldDeptUsers);
				// System.out.println(sModifyUser);
			} else
				sOldDeptUsers = sTemp;
			aOldDeptUsers = sOldDeptUsers.split(",");
			for (int i = 0; i < aOldDeptUsers.length; i++) {
				// 把調出人員篩選掉。
				if (!(aOldDeptUsers[i].trim().equals(sDelUserName.trim()))) {
					sNewDeptUsers += aOldDeptUsers[i] + ",";
				}
			}
			// 把調出後的部門人員重新付值,再保存
			docFormerDeptUsers.getDocument().replaceItemValue("DeptUsers",
					sNewDeptUsers);
			docFormerDeptUsers.getDocument().save();
		}
		docModify.remove(true);
		Common.returnXML(pw,
				"<root><Return>1</Return><Content>变更成功</Content></root>");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -