📄 aggetljdata.java.svn-base
字号:
package com.fzet.cois.dividework.agents;
import java.io.PrintWriter;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Vector;
import com.fzet.cois.common.scriptLib.Common;
import com.fzet.cois.common.scriptLib.ErrHandle;
import lotus.domino.AgentBase;
import lotus.domino.AgentContext;
import lotus.domino.Database;
import lotus.domino.Document;
import lotus.domino.DocumentCollection;
import lotus.domino.NotesError;
import lotus.domino.NotesException;
import lotus.domino.Session;
import lotus.domino.View;
import lotus.domino.ViewEntry;
import lotus.domino.ViewEntryCollection;
import java.util.StringTokenizer;
/**
* @author yeshq 取用户排班数据的运行逻辑: 1、 新文档? |-------------------------Y--------------------------| |N | 取所有的个人数据byUnid 判断sType | |---------- |循环取出所有的人员排班数据 |0(从本库取) |从配置中心取 | |
* |----------------------------------------------------- 返回XML
*
*
* 返回值:
* Case 1: <Return>0</Return>
* <Error>
* 错误消息
* </Error>
*
* Case 2: <Return>1</Return>
* <Content>
* <rows>
* 数据体,包括所有返回的数据
* <row>
* <cell>姓名</cell>
* <cell>组名</cell>
* <cell>周1数据</cell>
* <cell>周2数据</cell>
* <cell>周3数据</cell>
* <cell>周4数据</cell>
* <cell>周5数据</cell>
* <cell>周6数据</cell>
* <cell>周7数据</cell>
* <cell>周计数据</cell>
* <cell>累计数据</cell>
* </Document>
* …… *
* </Data>
* </Content>
*/
// modify by yeshq,2008-1-8凌晨,把xml格式改为dhtmlxGrid识别的格式
public class AgGetLjData extends AgentBase {
public void NotesMain() {
ErrHandle err = null; // 错误日志
Session session = null; // 当前会话
AgentContext ac = null; // 当前上下文环境
Database dbMain = null;
Database db = null; // 当前数据库
View vwCalendar = null; // 日程安排查询视图
ViewEntryCollection vecReturn = null; // 日程安排返回查询结果记录集实体
ViewEntryCollection vecNstartReturn = null; // 日程安排返回查询结果记录集实体
ViewEntry veReturn = null; // 查询结果集中一条实体
ViewEntry veNstartReturn = null; // 查询结果集中一条实体
ViewEntry veTemp = null;
Document doc = null, docPerson = null , docNstartPaib;// 当前文档
PrintWriter pw = null; // 输出流
String sQuery = null; // 查询参数
String sDeptName = null, sUNID = null; // 查询条件------当前用户名称
String sGroup = null; // 用户所有在组
float nZj;
float nLj;
StringBuffer sbResult = new StringBuffer(); // 输出结果字符串缓冲:查询结果
Document docTemp = null; // 条目字符串变量
DocumentCollection dc = null;
try {
// 初始化过程
session = getSession();
ac = session.getAgentContext();
doc = ac.getDocumentContext();
db = ac.getCurrentDatabase();
pw = getAgentOutput();
dbMain = Common.getMainDb(session);
// 初始化错误日志类
err = new ErrHandle(session, 0, "", "agGetLjData.xml");
// 取得查询参数
// sQuery = doc.getItemValueString("Query_String_Decoded");
// 取UNID
// sUNID = Common.parseParameter(sQuery, "UNID");
sUNID = doc.getUniversalID();
// 提取当部门户名称
// sDeptName = Common.parseParameter(sQuery, "DeptName");
sDeptName = doc.getItemValueString("Dept");
if (sDeptName == null)
throw new NotesException(NotesError.NOTES_ERR_OBJECT_NOT_FOUND, "未找到参数DeptName");
// String sStartday = Common.parseParameter(sQuery, "start_day");
String sStartday = doc.getItemValue("start_day").firstElement().toString();
Document oriDoc = db.getDocumentByUNID(sUNID);
if (oriDoc != null) { // 说明是已保存过的文档
View vwPersonPaib = db.getView("vwPaibIndx");
if (vwPersonPaib == null) {
Common.returnXML(pw, "<root><Return>0</Return><Error>vwPaibIndx!</Error></root>");
return;
}
vwPersonPaib = db.getView("vwPersonPaib");
if (vwPersonPaib == null) {
Common.returnXML(pw, "<root><Return>0</Return><Error>未找到视图vwPersonPaib!</Error></root>");
return;
}
// 计算下周开始日期
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
sStartday = df.format(new java.util.Date(df.parse(sStartday).getTime()));
String sNstartday = df.format(new java.util.Date(df.parse(sStartday).getTime() + 7 * 24 * 60 * 60 * 1000));
// 查找下周排班数据
vecNstartReturn = vwPersonPaib.getAllEntriesByKey(sNstartday + sDeptName, true);
while (vecNstartReturn.getCount()!=0) {
veNstartReturn = vecNstartReturn.getFirstEntry();
while (veNstartReturn != null) {
docNstartPaib = veNstartReturn.getDocument();
// 查找本周排班数据
vecReturn = vwPersonPaib.getAllEntriesByKey(sStartday + sDeptName, true);
veReturn = vecReturn.getFirstEntry();
while (veReturn != null) {
docPerson = veReturn.getDocument();
if(docPerson.getItemValueString("name").trim().equals(docNstartPaib.getItemValueString("name").trim())){
// System.out.println(docPerson.getItemValueString("name")+docNstartPaib.getItemValueString("name"));
nZj = Float.parseFloat(docPerson.getItemValueString("Zj"));
nLj = Float.parseFloat(docPerson.getItemValueString("Lj"));
docNstartPaib.replaceItemValue("Lj", String.valueOf(nZj+nLj));
docNstartPaib.save();
break;
}
docPerson.recycle();
veTemp = veReturn;
veReturn = vecReturn.getNextEntry(veReturn);
veTemp.recycle();
}
docNstartPaib.recycle();
veTemp = veNstartReturn;
veNstartReturn = vecNstartReturn.getNextEntry(veNstartReturn);
veTemp.recycle();
}
sStartday = sNstartday;
sNstartday = df.format(new java.util.Date(df.parse(sStartday).getTime() + 7 * 24 * 60 * 60 * 1000));
vecNstartReturn = vwPersonPaib.getAllEntriesByKey(sNstartday + sDeptName, true);
}
}
// 防止F5刷新出错,所以加上窗口关闭,by yeshq, 2008/1/10
pw.println("<script language=javascript>alert(\"排班已提交成功!\");window.close();</script>");
} 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 (veReturn != null)
veReturn.recycle();
if (vecReturn != null)
vecReturn.recycle();
if (vwCalendar != null)
vwCalendar.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();
}
}
}
public String[] split(String source, String sign) {
StringTokenizer commaToker = new StringTokenizer(source, sign);
String[] result = new String[commaToker.countTokens()];
for (int i = 0; commaToker.hasMoreTokens(); i++)
result[i] = commaToker.nextToken();
return result;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -