📄 agreportdeptstat.java.svn-base
字号:
package com.fzet.cois.dividework.agents;
import java.io.PrintWriter;
import lotus.domino.*;
import java.util.Vector;
import com.fzet.cois.common.scriptLib.*;
public class AgReportDeptStat extends AgentBase {
public void NotesMain() {
ErrHandle err = null; // 错误日志
Session session = null; // 当前会话
AgentContext ac = null; // 当前上下文环境
Database dbMain = null; // 配置中心数据库
Database db = null; // 当前数据库
Document doc = null;// 当前文档
PrintWriter pw = null; // 输出流
DocumentCollection dcDept = null; // 部门文档
ViewEntryCollection vecDept = null, vecQueryDept = null;
ViewEntry veDept = null;
View vwDept = null, vwQueryDept = null;
Document vTemp = null;
StringBuffer sbResult = new StringBuffer(); // 输出结果字符串缓冲:查询结果
Vector vQuery = new Vector(); // 查询向量
String sDept = "";
int nCount = 0;
int nTemp = 0;
String sQuery, sType, sYear,sDeptParent;
try {
// 初始化过程
session = getSession();
ac = session.getAgentContext();
doc = ac.getDocumentContext();
db = ac.getCurrentDatabase();
pw = getAgentOutput();
dbMain = Common.getMainDb(session);
// 初始化错误日志类
err = new ErrHandle(session, 0, "", "agReportDeptStat.xml");
sQuery = doc.getItemValueString("Query_String_Decoded"); // 取得查询参数
sType = Common.parseParameter(sQuery, "Type"); // 提取上报类型
sYear = Common.parseParameter(sQuery, "Year"); // 提取年
sDeptParent = Common.parseParameter(sQuery,"DeptParent");
String sWeekID = Common.parseParameter(sQuery, "WeekID"); // 提取当月
// sType:1 已上报部门 0:未上报部门
if (sType.equals("1")) {
System.out.println("sType" + sType);
vwDept = db.getView("vwPaibIndex1"); // 查询按月份索引的已上报考勤的视图
if (vwDept == null)
throw new NotesException(NotesError.NOTES_ERR_NOSUCH_VIEW,
"未找到视图:");
System.out.println(vwDept.getName());
if (vwDept != null) {
vQuery.addElement(sYear + sWeekID); // 生成查询向量
System.out.println(vQuery);
vecDept = vwDept.getAllEntriesByKey(vQuery, true);
Common.returnXML(pw,
"<root><Return>1</Return><Content><Day>");
veDept = vecDept.getFirstEntry();
System.out.println(veDept.getDocument().getUniversalID());
while (veDept != null) {
sbResult = new StringBuffer();
vTemp = veDept.getDocument();
nCount++;
// 生成XML
sbResult.append("<Event>").append("<DeptName>").append(
vTemp.getItemValueString("DeptName")).append(
"</DeptName>").append("<Drafter>").append(
vTemp.getItemValueString("LastModifyUser"))
.append("</Drafter>").append("<DraftDate>")
.append(
vTemp.getItemValue("DraftDate").firstElement()
.toString()).append(
"</DraftDate>").append("<NowStatus>")
.append(
vTemp.getItemValue("start_day").firstElement()
.toString()).append(
"</NowStatus>").append("</Event>");
pw.println(sbResult.toString());
veDept = vecDept.getNextEntry(veDept);
vTemp.recycle();
}
pw.println("</Day><Count>" + nCount
+ "</Count></Content></root>");
}
} else {
// 未上报部门
// 思路:先找出配置中心的所有不重复的最低层部门,用每个部门的名称+年月做为关键字到按月份+部门索引视图中去查询
// 如果未找到说明该部门未上报,返回部门xml数据,否则说明已上报,不返回部门xml数据
Common.returnXML(pw, "<root><Return>1</Return><Content><Day>");
vwDept = dbMain.getView("vwDept"); // 用配置中心的vwDeptInfoByDeptName查找所有的部门
vwQueryDept = db.getView("vwWeekPaibByDept"); // 查询按月份+部门索引的已上报考勤的视图
if (vwDept != null) {
vecDept = vwDept.getAllEntriesByKey(sDeptParent,true);
veDept = vecDept.getFirstEntry();
while (veDept != null) {
sbResult = new StringBuffer();
vTemp = veDept.getDocument();
nTemp++;
sDept = vTemp.getItemValueString("DeptName"); // 查询配置中心的每个最低级部门名
// nPos = sDept.indexOf("/");
// sDept = (nPos<0)?sDept:sDept.substring(0,nPos);
vQuery = new Vector();
vQuery.addElement(sYear + sWeekID + sDept); // 生成查询向量
vecQueryDept = vwQueryDept.getAllEntriesByKey(vQuery,
true);
if (vecQueryDept.getCount() == 0) {
// 找不到,说明该部门未上报考勤
// 生成XML
nCount++;
sbResult
.append("<Event>")
.append("<DeptName>")
.append(
vTemp
.getItemValueString("DeptName"))
.append("</DeptName>")
.append("<Drafter>")
.append(
(vTemp
.getItemValueString("LastModifyUser") == null) ? "无"
: vTemp
.getItemValueString("LastModifyUser"))
.append("</Drafter>")
.append("<DraftDate>")
.append("无")
.append("</DraftDate>")
.append("<NowStatus>")
.append(
(vTemp
.getItemValue("start_day").toString() == null) ? "未上报"
: vTemp
.getItemValue("start_day").toString())
.append("</NowStatus>").append("</Event>");
}
pw.println(sbResult.toString());
veDept = vecDept.getNextEntry(veDept);
vTemp.recycle();
}
}
pw.println("</Day><Count>" + nCount
+ "</Count></Content></root>");
}
} 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();
} finally {
// 释放所有申请的资源
try {
if (vTemp != null)
vTemp.recycle();
if (veDept != null)
veDept.recycle();
if (doc != null)
doc.recycle();
if (veDept != null)
veDept.recycle();
if (vecDept != null)
vecDept.recycle();
if (vwDept != null)
vwDept.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();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -