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

📄 agreportdeptstat.java.svn-base

📁 一个包含排班信息的模块 2.1. 最新排班 6 2.2. 所有排班 6 2.3. 日常排班统计 7 2.4. 排班管理 7 2.5. 班次配置 7 2.6. 部门人员配置 7
💻 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 + -