📄 agmodifyuser.java.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 + -