📄 readstream.cs
字号:
/*
作者:蒲丰.
创建日期:2003-12-9
修改者:
修改日期:
修改部分:
类功能: 读取流程中的节点.
*/
using System;
using System.Xml;
using System.Web ;
using System.Web .UI;
namespace OI.cs
{
/// <summary>
/// readStream 的摘要说明。
/// </summary>
public class readStream : OI.PageBase
{
protected OI.DatabaseOper.DatabaseConnect Dbc=new OI.DatabaseOper.DatabaseConnect ();
XmlDocument doc=new XmlDocument ();
protected int documentid;
protected string streamid;
/// <summary>
/// documentID:当前操作公文ID.
/// </summary>
public int doucmentID
{
set
{
documentid=value;
}
}
public int StreamID
{
set
{
streamid=value.ToString ();
}
get
{
return int.Parse (streamid);
}
}
public readStream()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public void XmlLoad() //12.15 modify here
{
string sql;
if (streamid ==null)
{
sql="select Stream from Stream s,document d where s.StreamID=d.StreamID and d.documentid="+documentid;
}
else
{
sql="select stream from stream where streamid="+streamid;
}
object o=Dbc.GetObjectBySql (sql);
if (o==null)
{
throw new ApplicationException ("没有找到此公文或者此公文对应的流程") ;
}
try
{
doc.Load (Server.MapPath ( @"../upfile/stream/"+ o.ToString()));
}
catch
{
throw new AppException ("装载流程失败,请检察你的文件路径是否正确");
}
}
/// <summary>
/// 得到起草药节点的id
/// </summary>
/// <returns></returns>
public string GetQcNodeID()
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NextNodeId[../NodeType/@NodeTypeId=1]");
return Nodeed.ChildNodes[0].Value ;
//return Nodeed.ChildNodes[0].Value==null?"0":Nodeed.ChildNodes [0].Value ;
}
/// <summary>
/// 根据当前节点名称得到当前ID
/// </summary>
/// <param name="nodeName">当前节点名称</param>
/// <returns></returns>
public string GetNodeIdByName(string nodeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NodeId[../NodeName='"+nodeName+"']");
if (Nodeed != null)//modified by 黎斌
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
/// <summary>
/// 根据当前节点类型得到当前ID
/// </summary>
/// <param name="nodeName">当前节点名称</param>
/// <returns></returns>
public string GetNodeIdByType(string TypeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NodeId[../NodeType='"+TypeName+"']");
if (Nodeed!=null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
public string [] GetNodeIdsByType(string TypeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NodeId[../NodeType='"+TypeName+"']");
if (Nodeed!=null)
{
string [] id =new string [Nodeed.ChildNodes .Count ];
for (int i=0;i<Nodeed.ChildNodes .Count;i++)
{
id[i]=Nodeed.ChildNodes[i].Value ;
}
//return Nodeed.ChildNodes[0].Value ;
return id;
}
else
{
return null;
}
}
//public string
/// <summary>
/// 根据当前节点类型得到下一节点的ID
/// </summary>
/// <param name="nodeName">当前节点名称</param>
/// <returns></returns>
public string GetNextIdByType(string TypeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NextNodeId[../NodeType='"+TypeName+"']");
if (Nodeed != null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
/// <summary>
/// 根据当前ID得到节点类型
/// </summary>
/// <param name="nodeName">当前节点ID</param>
/// <returns></returns>
public string GetNodeTypeByID(string StepID)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NodeType[../NodeId='"+StepID+"']");
if (Nodeed!=null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
/// <summary>
/// 根据当前节点ID得到下一节点的ID
/// </summary>
/// <param name="id">当前节点的ID</param>
/// <returns>找到返回工点ID.没找到返回null.</returns>
public string GetNextNodeIdByID(string id)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NextNodeId[../NodeId='"+id+"']");
if (Nodeed != null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
/// <summary>
/// 判断从数据表中读出的节点是否是当前操作类型下的节点.
/// </summary>
/// <param name="nodeid"></param>
/// <param name="TypeName"></param>
/// <returns></returns>
public bool IsCurrentOprateNode(string nodeid,string TypeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//Node[NodeId='"+nodeid+"' and NodeType='"+TypeName+"']");
if (Nodeed==null)
return false;
else
{
return true;
}
}
/// <summary>
/// 根据当前节点ID得出当前节点的操作类型
/// </summary>
/// <param name="CurrentNodeDd"></param>
/// <returns></returns>
public string GetCurrentOprateTypeByNodeID(string CurrentNodeDd)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//NodeType[../NodeId='"+CurrentNodeDd+"']");
if (Nodeed==null)
return null;
else
{
return Nodeed.ChildNodes[0].Value ;
}
}
/// <summary>
/// 根据当前节点ID 得到本节点处理期限
/// </summary>
/// <param name="CurrentNodeid"></param>
/// <returns></returns>
public string GetTimeByNodeID(string CurrentNodeid)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//Time[../NodeId='"+CurrentNodeid+"']");
if (Nodeed!=null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
/// <summary>
/// 得出当前节点下的所有操作用户(从数据库中得取)
/// </summary>
/// <param name="nodeid"></param>
/// <returns>返回用户ID数组</returns>
public string[] GetCurrentNodeUsersByID(string nodeid) //
{
System.Data.DataSet ds=new System.Data.DataSet() ;
ds=Dbc.getBinding (" select userid from TransactUsers where documentid=" +documentid +" and stepid=" + nodeid ,"t" );
string []users=new string [ds.Tables[0].Rows .Count ];
for ( int i=0;i < ds.Tables[0].Rows.Count ;i++ )
{
users[i]=ds.Tables[0].Rows[i]["userid"].ToString ();
}
return users;
}
public string GetQcUser(int documentid)
{
string sql="select userid from document where documentid="+documentid.ToString ();
object o=Dbc.GetObjectBySql (sql);
if(o==null)
{
throw new ApplicationException ("没有找到数据!");
}
else
{
return o.ToString ();
}
}
/// <summary>
/// 得出当前节点下的所有操作用户(从xml文档中得取)
/// </summary>
/// <param name="nodeid"></param>
/// <returns></returns>
public string[] GetCurrentNodeUsersByid(string nodeid) //
{
XmlLoad();
XmlNodeList Nodeed= doc.SelectNodes ("//Hander[../../NodeId='"+nodeid+"']");
string []users=new string [Nodeed.Count ];
for(int i=0;i<Nodeed.Count ;i++)
{
users[i]=Nodeed[i].Attributes["HanderId"].Value ; // .ChildNodes[0].Value ;
}
return users;
// System.Data.DataSet ds=new System.Data.DataSet() ;
// ds=Dbc.getBinding (" select userid from TransactUsers where documentid=" +documentid +" and stepid=" + nodeid ,"t" );
// string []users=new string [ds.Tables[0].Rows .Count ];
// for ( int i=0;i < ds.Tables[0].Rows.Count ;i++ )
// {
// users[i]=ds.Tables[0].Rows[i]["userid"].ToString ();
//
// }
// return users;
}
/// <summary>
/// 判断当前的用户是否存在当前节点的用户群中.
/// </summary>
/// <param name="userid"></param>
/// <param name="nodeid"></param>
/// <returns></returns>
public bool IsUserInCurrrentNode(string userid,string nodeid)//and .='"+userid+"'
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//Handers[../NodeId='"+nodeid+"' and Hander/@HanderId='"+userid+"']");
if (Nodeed==null)
return false;
else
{
return true;
}
}
/// <summary>
/// 得到处理当前节点处理的人数
/// </summary>
/// <param name="nodeid">当前节点ID</param>
/// <returns></returns>
public int GetCurrentNodePersonNum(string nodeid)
{
XmlLoad();
XmlNodeList Nodeed= doc.SelectNodes ("//Hander[../../NodeId='"+nodeid+"']");
return Nodeed.Count ;
}
/// <summary>
/// 得到前一个节点的ID
/// </summary>
/// <param name="CurrentNodeid">当前节点ID</param>
/// <returns></returns>
public int GetPrivateNodeID(string CurrentNodeid)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode("//NodeId[../NextNodeId ='"+CurrentNodeid+"']");
if (Nodeed ==null)
{
return 0;
}
else
{
return int.Parse (Nodeed.InnerText ) ;
}
}
/// <summary>
/// 得到当前节点的时间长短
/// </summary>
/// <param name="CurrentNodeid">当前节点的节点ID</param>
/// <returns></returns>
public int GetTimeLength(string CurrentNodeid)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode("//Time[../../NodeId='"+CurrentNodeid+"']");
if (Nodeed ==null)
{
return 0;
}
else
{
return int.Parse (Nodeed.Value) ;
}
}
/// <summary>
/// 判断多人当前节点是否处理结束
/// </summary>
/// <param name="documentID">当前处理文档id</param>
/// <param name="currentnodeid">当前节点ID</param>
/// <returns>返回true 时表示本节点所有人处理完成.返回false表示本还等待他人处理</returns>
public bool IsEndCurrentNode(string documentID,string currentnodeid)//当前节点是否结束
{
//OI.cs.readStream rs=new OI.cs.readStream ();
//rs.doucmentID =int.Parse (documentid);
documentid=int.Parse (documentID);
int totalman=int.Parse (Dbc.GetValueBySql(" select count(*) from TransactUsers where documentid=" +documentID +" and stepid=" + currentnodeid) ); //GetCurrentNodePersonNum (currentnodeid);
string sql="select count(*) from DocumentTransact where documentid= "+documentid +" and StepID =" +currentnodeid + " and BackState=(select max(BackState) from DocumentTransact where documentid= "+documentid +" and StepID =" +currentnodeid +")";
int compeletePersonMan=int.Parse (Dbc.GetValueBySql(sql));
string mFlowType = this.GetNodeValueByID(currentnodeid,"FlowType");//modified by lb 12.21
if (mFlowType == "1")// 判断流程是否需多人全部完成
{
if (totalman > compeletePersonMan)
return false;
else
return true;
}
else
return true;
}
/// <summary>
/// 根据当前ID得到节点值
/// </summary>
/// <param name="NodeName">子节点名称</param>
/// <param name="StepID">当前节点ID</param>
/// <returns></returns>
public string GetNodeValueByID(string StepID,string NodeName)
{
XmlLoad();
XmlNode Nodeed= doc.SelectSingleNode ("//"+NodeName+"[../NodeId='"+StepID+"']");
if (Nodeed!=null)
{
return Nodeed.ChildNodes[0].Value ;
}
else
{
return null;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -