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

📄 readstream.cs

📁 很不错的公文流转系统
💻 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 + -