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

📄 agsavepaib.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;

/*
 * @author: yeshq
 * @date:2007-8-11
 * 保存周排班数据和个人的排班数据
 * 运行逻辑:
 * 1、先检查有无原来的个人排班数据,如果有,则全部删除
 * 2、根据页面上的xml生成个人排班数据
 * 3、保存部门的周表单数据
 */
import java.io.*;
import com.fzet.cois.common.scriptLib.Common;
import com.fzet.cois.common.scriptLib.ErrHandle;

import lotus.domino.*;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

public class AgSavePaib extends AgentBase {

    public void NotesMain() {
	ErrHandle err = null;
	PrintWriter pw = null;
	Session session = null;
	AgentContext ac = null;
	Database db = null;
	lotus.domino.Document doc = null;
	lotus.domino.Document docPersonPaib = null;
	lotus.domino.Document docTemp = null;
	View vwUser = null;
	View vwPersonPaib = null; // 个人排班视图
	DocumentCollection dcPersonPaib = null; // 个人排班文档集
	String sbResult = null; // 返回结果

	DocumentBuilderFactory domfac = DocumentBuilderFactory.newInstance();
	DocumentCollection dc = null;

	try {
	    session = getSession();
	    ac = session.getAgentContext();
	    db = ac.getCurrentDatabase();
	    doc = ac.getDocumentContext();
	    pw = getAgentOutput();
	    err = new ErrHandle(session, 0, "", "AgSavePaib.xml");

	    // 步骤1:删除个人排班数据
	    vwPersonPaib = db.getView("vwPersonPaib");
	    if (vwPersonPaib != null) {
		String sKey = doc.getItemValue("Start_day").firstElement().toString()
			+ doc.getItemValueString("DeptName");

		dcPersonPaib = vwPersonPaib.getAllDocumentsByKey(sKey, true);

		// 此处会出现bug,当A部门建立U1用户,B部门也建立U1用户,然后A部门再提交时,B部门中的U1用户将会丢失
		docPersonPaib = dcPersonPaib.getFirstDocument();
		while (docPersonPaib != null) {
		    docTemp = docPersonPaib;
		    docPersonPaib = dcPersonPaib.getNextDocument(docPersonPaib);
		    if (docTemp.getItemValueString("DeptName").equals(docTemp.getItemValueString("DeptName_1"))) {
			docTemp.remove(true);
		    }
		    docTemp.recycle();

		}
		// dcPersonPaib.removeAll(true);
		dcPersonPaib.recycle();
	    }

	    // 2、根据页面上的xml生成个人排班数据
	    sbResult = doc.getItemValueString("PaibXML");
	    View vwUsers = db.getView("vwPersonPaibForStat");
	    String sname = null;
	    String sCurDeptName = doc.getItemValueString("DeptName");

	    StringReader sr = new StringReader(sbResult);
	    InputSource is = new InputSource(sr);

	    // 解析xml数据
	    DocumentBuilder dombuilder = domfac.newDocumentBuilder();
	    org.w3c.dom.Document doc1 = dombuilder.parse(is);

	    Element root = doc1.getDocumentElement();
	    NodeList documents = root.getChildNodes();
	    if (documents != null) {
		for (int i = 0; i < documents.getLength(); i++) {

		    // 判断此条记录是否在其他部门中设置过,以下主要是增加一个人员在不同部门中均有排班的情况,如A用户上半周在1区
		    // 下半周在2区,则实际上系统中只保存一条记录,所以1区和2区所改的结果都会反映在这条记录上
		    // add by yeshq ,2008/1/30

		    Node document = documents.item(i);
		    Node node = document.getFirstChild();
		    // 加此判断,当节点不为空时,把取出的节点值付给姓名
		    if (node.getFirstChild() != null) {
			sname = node.getFirstChild().getNodeValue();
			// 如果姓名中含有标识符,取标识符前面的姓名
			if (sname.indexOf("(") != -1) {
			   sname = sname.substring(0, sname.indexOf("("));
			}
		    }
		    dc = vwUsers.getAllDocumentsByKey(doc.getItemValue("Start_day").firstElement().toString()
			    + sname.trim(), true);
		    docPersonPaib = dc.getFirstDocument();
		    if (docPersonPaib != null) {
			String sDeptName = docPersonPaib.getItemValueString("DeptName");
			String sDeptName_1 = docPersonPaib.getItemValueString("DeptName_1");
			if (sDeptName.equals(sDeptName_1)) {
			    if (!sCurDeptName.equals(sDeptName_1)) {
				docPersonPaib.replaceItemValue("DeptName_1", sCurDeptName); // 设置deptName1部门名
				docPersonPaib.replaceItemValue("DeptUser_1", sname);
				docPersonPaib.replaceItemValue("Sequence_1", Integer.toString(i)); // 设置排序的序法,防止重载时顺序乱
				node = node.getNextSibling();
				//docPersonPaib.replaceItemValue("group_1", (node.getFirstChild() == null) ? "" : node
				//	.getFirstChild().getNodeValue());
				docPersonPaib.replaceItemValue("group", (node.getFirstChild() == null) ? "" : node
						.getFirstChild().getNodeValue());

			    } else {
				node = node.getNextSibling();
				docPersonPaib.replaceItemValue("group", (node.getFirstChild() == null) ? "" : node
					.getFirstChild().getNodeValue());
			    }
			} else if (sCurDeptName.equals(sDeptName_1)) {
			    docPersonPaib.replaceItemValue("DeptName_1", sCurDeptName); // 设置deptName1部门名
			    docPersonPaib.replaceItemValue("DeptUser_1", sname);
			    docPersonPaib.replaceItemValue("Sequence_1", Integer.toString(i)); // 设置排序的序法,防止重载时顺序乱
			    node = node.getNextSibling();
			    //docPersonPaib.replaceItemValue("group_1", (node.getFirstChild() == null) ? "" : node
				//    .getFirstChild().getNodeValue());
			    docPersonPaib.replaceItemValue("group", (node.getFirstChild() == null) ? "" : node
					.getFirstChild().getNodeValue());
			} else {
			    node = node.getNextSibling();
			    docPersonPaib.replaceItemValue("group", (node.getFirstChild() == null) ? "" : node
				    .getFirstChild().getNodeValue());
			}

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day1", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day2", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day3", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day4", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day5", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day6", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day7", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());
			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("Zj", (node.getFirstChild() == null) ? "" : node.getFirstChild()
				.getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("Lj", (node.getFirstChild() == null) ? "" : node.getFirstChild()
				.getNodeValue());
			docPersonPaib.save(true);

		    } else {
			docPersonPaib = db.createDocument();
			docPersonPaib.replaceItemValue("Form", "frmPersonPaib");
			docPersonPaib.replaceItemValue("UNID", docPersonPaib.getUniversalID());
			docPersonPaib.replaceItemValue("DeptName", doc.getItemValueString("DeptName"));
			docPersonPaib.replaceItemValue("DeptName_1", doc.getItemValueString("DeptName"));
			docPersonPaib.replaceItemValue("start_day", doc.getItemValue("start_day"));
			docPersonPaib.replaceItemValue("Sequence", Integer.toString(i)); // 设置排序的序法,防止重载时顺序乱
			docPersonPaib.replaceItemValue("end_day", doc.getItemValue("end_day"));
			docPersonPaib.replaceItemValue("Zbrq", doc.getItemValueString("Zbrq"));
			docPersonPaib.replaceItemValue("Xgrq", doc.getItemValueString("Xgrq"));
			docPersonPaib.replaceItemValue("LastModifyUser", doc.getItemValueString("LastModifyUser"));
			docPersonPaib.replaceItemValue("DraftUserName", doc.getItemValueString("DraftUserName"));
			docPersonPaib.replaceItemValue("Year", doc.getItemValueString("Year"));
			docPersonPaib.replaceItemValue("WeekID", doc.getItemValueString("WeekID"));

			// 以下是保存姓名、组名、周一至周日的数据及周计、累计
			// 保存个人排班的表单
			// document = documents.item(i);
			// node = document.getFirstChild();
			// 加此判断,当节点不为空时,把取出的节点值付给姓名

			// 保存不含有标识符的姓名
			docPersonPaib.replaceItemValue("DeptUser", sname);
			docPersonPaib.replaceItemValue("name", node.getFirstChild().getNodeValue());
			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("group", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());
			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day1", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day2", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day3", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day4", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day5", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day6", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("day7", (node.getFirstChild() == null) ? "" : node
				.getFirstChild().getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("Zj", (node.getFirstChild() == null) ? "" : node.getFirstChild()
				.getNodeValue());

			node = node.getNextSibling();
			docPersonPaib.replaceItemValue("Lj", (node.getFirstChild() == null) ? "" : node.getFirstChild()
				.getNodeValue());
		    }

		    docPersonPaib.save(true);
		}

	    }	    
	    // 3、保存部门的周表单数据
	    // 保存周排班数据
	    doc.replaceItemValue("SaveOptions", "1");
	    doc.save();
	    // 防止F5刷新出错,所以加上窗口关闭,by yeshq, 2008/1/10
	    if (doc.getItemValueString("IsSubmit").equals("1")) {
		pw.println("<script language=javascript>alert(\"排班已提交成功!\");window.close();</script>");
	    } else {
		pw.println("<script language=javascript>alert(\"临时保存成功,但未提交到上级部门!\");window.close();</script>");

	    }
	} catch (ParserConfigurationException e) {

	    e.printStackTrace();

	} catch (IOException e) {

	    e.printStackTrace();

	} catch (SAXException e) {

	    e.printStackTrace();

	} catch (NotesException e) {
	    err.record(true, e.id, e.text);
	    e.printStackTrace();
	    // StringBuffer sbReturn = new StringBuffer().append("<root><Return>0</Return><Error>").append(e.text).append(
	    // "</Error></root>");
	    // Common.returnXML(pw, sbReturn.toString());
	    pw.println("<script language=javascript>alert(\"排班提交失败,请重新尝试!错误信息:" + e.toString()
		    + "\");window.location=window.location;</script>");

	} finally {
	    try {
		if (docPersonPaib != null)
		    docPersonPaib.recycle();
		if (vwUser != null)
		    vwUser.recycle();
		if (vwPersonPaib != null)
		    vwPersonPaib.recycle();
		if (dcPersonPaib != null)
		    dcPersonPaib.recycle();
		if (doc != null)
		    doc.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 + -