www.pudn.com > UDS1.1_51aspx.rar > DocumentFlow.cs


using System;
using System.Data;
using System.Data.SqlClient;

namespace UDS.Components
{
#region 工作流的函数
/// <summary>
/// DocumentFlow 的摘要说明。
/// </summary>
public class DocumentFlow
{

//////////////////////////////////////////
/// 公文流转
//////////////////////////////////////////

#region 添加文档
/// <summary>
/// 添加文档
/// </summary>
/// <param name="UserName">拟稿人</param>
/// <param name="FlowID">所用流程ID</param>
/// <param name="SQL">样式表数据的SQL语句</param>
public int AddDocument(string UserName,long FlowID,string SQL)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocBuilder",SqlDbType.VarChar,300,UserName),
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@SQL",SqlDbType.NText,4000,SQL)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 删除文档
/// <summary>
/// 删除文档
/// </summary>
/// <param name="DocID">被删除的文档ID</param>
public int DeleteDocument(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_DeleteDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改文档
/// <summary>
/// 修改文档
/// </summary>
/// <param name="UpdateSQL">更新文档语句</param>
public int UpdateDocument(string UpdateSQL)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@SQL",SqlDbType.NText,4000,UpdateSQL)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_UpdateDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 文档签收
/// <summary>
/// 文档签收
/// </summary>
/// <param name="UserName">签收人</param>
/// <param name="DocID">要被签收的文档ID</param>
public int SignInDocument(string UserName,long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StaffName",SqlDbType.VarChar ,300,UserName),
mySQL.MakeInParam("@DocID",SqlDbType.Int,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_SignINDoc",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 取消签收
/// <summary>
/// 取消签收
/// </summary>
/// <param name="UserName">签收人</param>
/// <param name="DocID">被取消的文档ID</param>
public int CancelSignInDocument(string UserName,long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StaffName",SqlDbType.VarChar ,300,UserName),
mySQL.MakeInParam("@DocID",SqlDbType.Int,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_CancelSignINDoc",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 添加批注
/// <summary>
/// 添加批注
/// </summary>
/// <param name="UserName">批注人</param>
/// <param name="DocID">批注的文档ID</param>
/// <param name="PostilType">批注类型,通过,拒绝,完成</param>
public int AddPostil(string UserName,long DocID,string Postil,int PostilType,long ObjID,long ObjType)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID),
mySQL.MakeInParam("@Postiler",SqlDbType.VarChar ,300,UserName),
mySQL.MakeInParam("@PostilContent",SqlDbType.NText,3000,Postil),
mySQL.MakeInParam("@PostilType",SqlDbType.Int ,4,PostilType),
mySQL.MakeInParam("@ObjID",SqlDbType.Int ,4,ObjID),
mySQL.MakeInParam("@ObjType",SqlDbType.Int ,4,ObjType)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddPostil",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 否决文档
/// <summary>
/// 否决文档
/// </summary>
/// <param name="DocID">被否决的文档ID</param>
public int FaileDocument(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_FaileDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 打回文档
/// <summary>
/// 打回文档
/// </summary>
/// <param name="DocID">被打回的文档ID</param>
public int BackDocument(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_BackDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 通过文档
/// <summary>
/// 通过文档
/// </summary>
/// <param name="UserName">审批人</param>
/// <param name="DocID">当前文档ID</param>
/// <param name="ProjectID">所在项目ID</param>
public int PostDocument(string UserName,long DocID,long ProjectID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StaffName",SqlDbType.VarChar,300,UserName),
mySQL.MakeInParam("@DocID",SqlDbType.VarChar,300,DocID),
mySQL.MakeInParam("@ProjectID",SqlDbType.Int,4,ProjectID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_PostDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 结束文档
/// <summary>
/// 结束文档
/// </summary>
/// <param name="DocID">被结束的文档ID</param>
public int FinishDocument(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_FinishDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 删除文档最近的批注
/// <summary>
/// 删除文档最近的批注
/// </summary>
/// <param name="DocID">文档ID</param>
public int CancelPostil(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_CancelPostil",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 获得步骤流转规则
/// <summary>
/// 获得步骤流转规则
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
public int GetStepRule(long FlowID,long StepID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int,4,StepID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_GetStepRule",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 获得步骤结束权利
/// <summary>
/// 获得步骤结束权利
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
public int GetStepRightToFinish(long FlowID,long StepID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int,4,StepID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_GetStepRightToFinish",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 获得文档的是否为新拟稿
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="DocID">文档ID</param>
public int IsNewDocument(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_IsNewDocument",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 获得用户所有的项目,返回表格
/// <summary>
/// 获得用户所有的项目
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="dt">返回表格</param>
public int GetProject(string UserName,out DataTable dt )
{
//int iReturn=0;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@UserName",SqlDbType.VarChar ,300,UserName)
};

try
{
mySQL.RunProc("sp_GetTaskClass",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得用户所有的项目,返回表格
/// <summary>
/// 获得用户所有的项目
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="dt">返回表格</param>
public int GetProject(string UserName,out SqlDataReader dr )
{
//int iReturn=0;
dr = null;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@UserName",SqlDbType.VarChar ,300,UserName)
};

try
{
mySQL.RunProc("sp_GetTaskClass",parameters,out dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 获得文档的批注,返回记录集
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dr">返回表格</param>
public int GetDocumentPostil(long DocID,out SqlDataReader dr )
{
//int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetDocumentPostil",parameters,out dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dr = null;
}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 获得文档的批注,返回表格
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetDocumentPostil(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetDocumentPostil",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得文档的信息实体,返回记录集
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dr">返回记录集</param>
public int GetDocumentInfo(long DocID,out SqlDataReader dr )
{
//int iReturn=-1;
//SqlDataReader dd;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
mySQL.RunProc("sp_Flow_GetDocumentInfo",parameters,out dr);
}
catch(Exception e)
{
dr = null;
Error.Log(e.ToString());
}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 获得文档的信息实体,返回表格
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dr">返回表格</param>
public int GetDocumentInfo(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
mySQL.RunProc("sp_Flow_GetDocumentInfo",parameters,out dr);
dt =UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
dt = null;
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion



#region 获得步骤成员,返回表格
/// <summary>
/// 获得环节成员,返回表格
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="dt">返回表格</param>
public int GetStaffInStep(long FlowID,long StepID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID)

};

try
{
mySQL.RunProc("sp_Flow_GetStaffInStep",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得步骤成员,返回表格
/// <summary>
/// 获得环节成员,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetStaffInStep(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetStaffInStep_Ex",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得步骤接受人员,返回表格
/// <summary>
/// 获得步骤接受人员,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetReceiver(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetReceiver",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得步骤已经签收人员,返回表格
/// <summary>
/// 获得步骤已经签收人员,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetSignIner(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetSignIner",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得步骤未签收人员,返回表格
/// <summary>
/// 获得步骤未签收人员,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetUnSignIner(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetUnSignIner",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得步骤已经批阅人员,返回表格
/// <summary>
/// 获得步骤已经批阅人员,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetPostiler(long DocID,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetPostiler",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 获得流程头信息,返回表格
/// <summary获得流程头信息
/// 获得环节已经批阅人员,返回表格
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="dt">返回表格</param>
public string GetStyleHeadline(long FlowID)
{
string str="";
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID)
};

try
{
mySQL.RunProc("sp_Flow_GetStyleHead",parameters,out dr);
if(dr.Read())
{
str = dr["Flow_Name"].ToString() + "(流水号:" + string.Format(dr["Times"].ToString(),"03d") + ")";
}
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return str;
}
#endregion

#region 获得文档的附件,返回表格
/// <summary>
/// 获得文档的附件,返回表格
/// </summary>
/// <param name="DocID">文档ID</param>
/// <param name="dt">返回表格</param>
public int GetDocumentAttach(long DocID,out DataTable dt)
{
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetDocumentAttach",parameters,out dr);

dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
throw new Exception("获得公文的附件出错!",e);
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

#region 添加公文附件数据库
/// <summary>
/// 添加文件附件数据库操作
/// </summary>
/// <param name="att">DocAttachFile类</param>
/// <param name="DocID">文件ID</param>
public void AddAttach(UDS.Components.DocAttachFile att,long DocID)
{

UDS.Components.Database data = new UDS.Components.Database();
SqlParameter[] prams = {
data.MakeInParam("@DocID", SqlDbType.Int, 20, DocID),
data.MakeInParam("@FileName", SqlDbType.VarChar, 300, att.FileName),
data.MakeInParam("@FileSize", SqlDbType.Int, 20, att.FileSize),
data.MakeInParam("@FileAttribute", SqlDbType.SmallInt,20, att.FileAttribute),
data.MakeInParam("@FileVisualPath", SqlDbType.NVarChar, 200, att.FileVisualPath),
data.MakeInParam("@FileAuthor", SqlDbType.NVarChar, 50, att.FileAuthor),
data.MakeInParam("@FileCatlog", SqlDbType.NVarChar, 20, att.FileCatlog),
data.MakeInParam("@FileAddedDate", SqlDbType.DateTime, 30, DateTime.Parse(att.FileAddedDate))
};
try
{
data.RunProc("sp_Flow_AddFile", prams);
}
catch (Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("文件附件发送出错!",ex);
}

}
#endregion

#region 删除公文附件数据库
/// <summary>
/// 删除文件附件数据库操作
/// </summary>
/// <param name="DocID">文件ID</param>
public void DeleteAttach(long DocID)
{

UDS.Components.Database data = new UDS.Components.Database();
SqlParameter[] prams = {
data.MakeInParam("@DocID", SqlDbType.Int, 20, DocID)
};
try
{
data.RunProc("sp_Flow_DeleteFile", prams);
}
catch (Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("文件附件删除出错!",ex);
}
}
#endregion

#region 获得公文附件名
/// <summary>
/// 获得公文附件名
/// </summary>
/// <param name="DocID">文件ID</param>
public string GetAttachName(long DocID)
{

string AttachName="";

UDS.Components.Database data = new UDS.Components.Database();
SqlDataReader dr = null;

SqlParameter[] prams = {
data.MakeInParam("@DocID", SqlDbType.Int, 20, DocID)
};
try
{
data.RunProc("sp_Flow_GetDocumentAttach", prams,out dr);
if(dr.Read())
AttachName = dr["FileVisualPath"].ToString() + dr["FileName"].ToString();
}
catch (Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("获得文件附出错!",ex);
}
finally
{
dr.Close();
dr = null;
data = null;
}
return AttachName;
}
#endregion

#region 添加公文批注附件数据库
/// <summary>
/// 添加文件批注附件数据库操作
/// </summary>
/// <param name="att">DocAttachFile类</param>
/// <param name="DocID">文件ID</param>
public void AddPostilAttach(UDS.Components.DocAttachFile att,long PostilID)
{

UDS.Components.Database data = new UDS.Components.Database();
SqlParameter[] prams = {
data.MakeInParam("@PostilID", SqlDbType.Int, 20, PostilID),
data.MakeInParam("@FileName", SqlDbType.VarChar, 300, att.FileName),
data.MakeInParam("@FileSize", SqlDbType.Int, 20, att.FileSize),
data.MakeInParam("@FileAttribute", SqlDbType.SmallInt,20, att.FileAttribute),
data.MakeInParam("@FileVisualPath", SqlDbType.NVarChar, 200, att.FileVisualPath),
data.MakeInParam("@FileAuthor", SqlDbType.NVarChar, 50, att.FileAuthor),
data.MakeInParam("@FileCatlog", SqlDbType.NVarChar, 20, att.FileCatlog),
data.MakeInParam("@FileAddedDate", SqlDbType.DateTime, 30, DateTime.Parse(att.FileAddedDate))
};
try
{
data.RunProc("sp_Flow_AddPostilFile", prams);
}
catch (Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("文件附件发送出错!",ex);
}

}
#endregion

#region 获得文档的所在项目ID
/// <summary>
/// 获得文档的所在项目ID
/// </summary>
/// <param name="DocID">文档ID</param>
public static int GetDocumentProjectID(long DocID)
{
int iReturn=0;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
iReturn = mySQL.RunProc("sp_Flow_GetDocumentProjectID",parameters);

}
catch(Exception e)
{
Error.Log(e.ToString());
throw new Exception("获得公文的项目ID出错!",e);
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 获得是否按照项目流转
/// <summary>
/// 获得是否按照项目流转ID
/// </summary>
/// <param name="UserName">用户名</param>
/// <param name="DocID">文档ID</param>
public bool IsProject(string UserName,long DocID)
{
bool iReturn = false;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StaffName",SqlDbType.VarChar,100,UserName),
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};

try
{
mySQL.RunProc("sp_Flow_GetPrePostInfo",parameters,out dr);
if(dr.Read())
{
if(dr["Flow_Rule"].ToString()=="2")
iReturn = true;
}

dr.Close();
dr = null;

}
catch(Exception e)
{
Error.Log(e.ToString());
throw new Exception("获得是否按照项目流转出错!",e);
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

/////////////////////////////////////////////
/// 流程自定义表单
/////////////////////////////////////////////

#region 添加自定义风格表格
/// <summary>
/// 添加自定义风格表格
/// </summary>
/// <param name="StyleName">风格名</param>
/// <param name="StyleRemark">简介ID</param>
/// <param name="Teamplate">模板路径</param>
public int AddStyle(string StyleName,string StyleRemark,string Teamplate)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleName",SqlDbType.VarChar,100,StyleName),
mySQL.MakeInParam("@StyleRemark",SqlDbType.VarChar,100,StyleRemark),
mySQL.MakeInParam("@Teamplate",SqlDbType.VarChar,100,Teamplate)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddStyle",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 删除自定义风格表格
/// <summary>
/// 删除自定义风格表格
/// </summary>
/// <param name="StyleID">风格ID</param>
public int DeleteStyle(long StyleID,string Path)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int,4,StyleID)
};
try
{
DeleteTemplate(StyleID,Path); //删除模板实体
iReturn = mySQL.RunProc("sp_Flow_DeleteStyle",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改自定义风格表格
/// <summary>
/// 修改自定义风格表格
/// </summary>
/// <param name="StyleID">风格ID</param>
/// <param name="StyleName">风格名</param>
/// <param name="StyleRemark">简介ID</param>
/// <param name="Teamplate">模板路径</param>
public int UpdateStyle(long StyleID,string StyleName,string StyleRemark,string Teamplate,string Path)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int,4,StyleID),
mySQL.MakeInParam("@StyleName",SqlDbType.VarChar,100,StyleName),
mySQL.MakeInParam("@StyleRemark",SqlDbType.VarChar,100,StyleRemark),
mySQL.MakeInParam("@Teamplate",SqlDbType.VarChar,100,Teamplate)
};
try
{
DeleteTemplate(StyleID,Path);
iReturn = mySQL.RunProc("sp_Flow_UpdateStyle",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 添加自定义风格详细定义
/// <summary>
/// 添加自定义风格详细定义
/// </summary>
/// <param name="StyleID">风格表格ID</param>
/// <param name="FieldName">帮定字段名</param>
/// <param name="FieldDescription">字段意义</param>
/// <param name="Judged">是否作为条件判断字段</param>
/// <param name="MultiLine">是否多行</param>
/// <param name="Height">控件高度</param>
/// <param name="Width">控件宽</param>
/// <param name="Position">控件在表单中的位置</param>
/// <param name="Example">填表示例</param>

public int AddStyleDescription(long StyleID,string FieldName,string FieldDescription,int Judged,int MultiLine,int Height,int Width,int Position,string Example)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int,4,StyleID),
mySQL.MakeInParam("@FieldName",SqlDbType.VarChar,100,FieldName),
mySQL.MakeInParam("@FieldDescription",SqlDbType.VarChar,100,FieldDescription),
mySQL.MakeInParam("@Judged",SqlDbType.Int,4,Judged),
mySQL.MakeInParam("@MultiLine",SqlDbType.Int,4,MultiLine),
mySQL.MakeInParam("@Height",SqlDbType.Int,4,Height),
mySQL.MakeInParam("@Width",SqlDbType.Int,4,Width),
mySQL.MakeInParam("@Position",SqlDbType.Int,4,Position),
mySQL.MakeInParam("@Example",SqlDbType.VarChar,100,Example)

};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddStyle_Description",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 删除自定义风格表格详细定义
/// <summary>
/// 删除自定义风格表格详细定义,一行定义表示一个控件
/// </summary>
/// <param name="DescriptionID">风格详细定义ID</param>
public int DeleteStyleDescription(long DescriptionID)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DescriptionID",SqlDbType.Int,4,DescriptionID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_DeleteStyle_Description",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改自定义风格详细定义
/// <summary>
/// 修改自定义风格详细定义
/// </summary>
/// <param name="DescriptionID">风格详细定义ID</param>
/// <param name="StyleID">风格表格ID</param>
/// <param name="FieldName">帮定字段名</param>
/// <param name="FieldDescription">字段意义</param>
/// <param name="Judged">是否作为条件判断字段</param>
/// <param name="MultiLine">是否多行</param>
/// <param name="Height">控件高度</param>
/// <param name="Width">控件宽</param>
/// <param name="Position">控件在表单中的位置</param>
/// <param name="Example">填表示例</param>

public int UpdateStyleDescription(long DescriptionID,long StyleID,string FieldName,string FieldDescription,int Judged,int MultiLine,int Height,int Width,int Position,string Example)
{

int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DescriptionID",SqlDbType.Int,4,DescriptionID),
mySQL.MakeInParam("@StyleID",SqlDbType.Int,4,StyleID),
mySQL.MakeInParam("@FieldName",SqlDbType.VarChar,100,FieldName),
mySQL.MakeInParam("@FieldDescription",SqlDbType.VarChar,100,FieldDescription),
mySQL.MakeInParam("@Judged",SqlDbType.Int,4,Judged),
mySQL.MakeInParam("@MultiLine",SqlDbType.Int,4,MultiLine),
mySQL.MakeInParam("@Height",SqlDbType.Int,4,Height),
mySQL.MakeInParam("@Width",SqlDbType.Int,4,Width),
mySQL.MakeInParam("@Position",SqlDbType.Int,4,Position),
mySQL.MakeInParam("@Example",SqlDbType.VarChar,100,Example)

};
try
{
iReturn = mySQL.RunProc("sp_Flow_UpdateStyle_Description",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 获得自定义风格表格一条详细定义
/// <summary>
/// 获得单一样式描述
/// </summary>
/// <param name="StyleID">流程ID</param>
/// <param name="dr">数据集合</param>
public int GetDescription(long DescriptionID,out SqlDataReader dr )
{
//int iReturn=-1;
dr = null;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DescriptionID",SqlDbType.Int ,4,DescriptionID)
};

try
{
mySQL.RunProc("sp_Flow_GetDescription",parameters,out dr);
}
catch(Exception ex)
{
Error.Log(ex.ToString());

}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 通过流程ID得到流程模板名
/// <summary>
/// 通过流程ID得到流程模板名
/// </summary>
/// <param name="FlowID">流程ID</param>
public string GetStyleTemplate(long FlowID)
{
string str="";
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeOutParam("@Template",SqlDbType.VarChar,100)
};

try
{
mySQL.RunProc("sp_Flow_GetStyleTemplate",parameters);
str = parameters[1].Value.ToString();
}
catch(Exception e)
{
Error.Log(e.ToString());
throw new Exception("获得表格模板错误!",e);
}
finally
{
mySQL.Close();
mySQL = null;
}

if(str.Length>0)
return @"Template\" + str;
else
return "";
}
#endregion

#region 通过表单ID得到流程模板名
/// <summary>
/// 通过表单ID得到流程模板名
/// </summary>
/// <param name="FlowID">流程ID</param>
public string GetStyleTemplateEx(long StyleID)
{
string str="";
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int ,4,StyleID),
mySQL.MakeOutParam("@Template",SqlDbType.VarChar,100)
};

try
{
mySQL.RunProc("sp_Flow_GetStyleTemplateEx",parameters);
str = parameters[1].Value.ToString();
}
catch(Exception e)
{
Error.Log(e.ToString());
throw new Exception("获得表格模板错误!",e);
}
finally
{
mySQL.Close();
mySQL = null;
}

if(str.Length>0)
return @"Template\" + str;
else
return "";
}
#endregion

#region 删除模板实体
/// <summary>
/// 删除模板实体
/// </summary>
/// <param name="StyleID">风格表格ID</param>
/// <param name="Path">路径</param>
public int DeleteTemplate(long StyleID,string Path)
{

int iReturn=0;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlDataReader dr;
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int,4,StyleID)
};
try
{
mySQL.RunProc("sp_Flow_GetStyle",parameters,out dr);
if(dr.Read())
{
string FileName;
FileName = Path + "\\" + dr["Template"].ToString();

if(System.IO.File.Exists(FileName)==true)
{
System.IO.File.Delete(FileName);
}
}
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 获得流程的表格样式描述
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="Judged">是否包括条件判断的字段</param>
/// <param name="dr">数据集合</param>
public int GetStyleDescription(long FlowID,int Judged,out SqlDataReader dr )
{
//int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@Judged",SqlDbType.Int ,4,0)
};

try
{
mySQL.RunProc("sp_flow_getstyle_description",parameters,out dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dr = null;
}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 获得流程的表格样式描述
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="StyleID">流程ID</param>
/// <param name="dr">数据集合</param>
public int GetStyleDescription(long StyleID,out SqlDataReader dr )
{
//int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StyleID",SqlDbType.Int ,4,StyleID)
};

try
{
mySQL.RunProc("sp_flow_getstyle_description_ex",parameters,out dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dr = null;
}
finally
{
//mySQL.Close();
//mySQL = null;
}
return 0;
}
#endregion

#region 获得流程的表格样式描述
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="Judged">是否包括条件判断的字段</param>
/// <param name="dt">返回表格</param>
public int GetStyleDescription(long FlowID,int Judged,out DataTable dt )
{
//int iReturn=-1;
SqlDataReader dr;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@Judged",SqlDbType.Int ,4,0)
};

try
{
mySQL.RunProc("sp_flow_getstyle_description",parameters,out dr);
dt = UDS.Components.Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return 0;
}
#endregion

//////////////////////////////////////////////
/// 流程管理相关
//////////////////////////////////////////////

#region 添加流程
/// <summary>
/// 添加流程
/// </summary>
/// <param name="FlowName">流程名</param>
/// <param name="FlowRemark">流程简介</param>
/// <param name="Builder">流程制定者</param>
/// <param name="StyleID">流程自定义表单</param>
public int AddFlow(string FlowName,string FlowRemark,string Builder,long StyleID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowName",SqlDbType.VarChar ,300,FlowName),
mySQL.MakeInParam("@FlowRemark",SqlDbType.NText ,3000,FlowRemark ),
mySQL.MakeInParam("@Builder",SqlDbType.VarChar,300,Builder),
mySQL.MakeInParam("@StyleID",SqlDbType.Int ,4,StyleID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddFlow",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

#region 删除流程
/// <summary>
/// 删除流程
/// </summary>
/// <param name="FlowID">被删除的流程ID</param>
public int DeleteFlow(long FlowID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_DeleteFlow",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改流程
/// <summary>
/// 修改流程
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="FlowName">流程名</param>
/// <param name="FlowRemark">流程简介</param>
/// <param name="Builder">流程制定者</param>
/// <param name="StyleID">流程自定义表单</param>
public int UpdateFlow(long FlowID,string FlowName,string FlowRemark,string Builder,long StyleID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@FlowName",SqlDbType.VarChar ,300,FlowName),
mySQL.MakeInParam("@FlowRemark",SqlDbType.NText ,3000,FlowRemark ),
mySQL.MakeInParam("@Builder",SqlDbType.VarChar,300,Builder),
mySQL.MakeInParam("@StyleID",SqlDbType.Int ,4,StyleID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_UpdateFlow",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

#region 得到流程基本信息
/// <summary>
/// 得到流程基本信息
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="dt">返回表格</param>
public int GetFlow(long FlowID,out DataTable dt)
{
int iReturn=-1;
SqlDataReader dr;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID)
};
try
{
mySQL.RunProc("sp_Flow_GetFlow",parameters,out dr);
iReturn = 0;
dt = Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 得到流程名
/// <summary>
/// 得到流程名
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="dt">返回表格</param>
public string GetFlowTitle(long FlowID)
{
string strReturn="";
SqlDataReader dr;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID)
};
try
{
mySQL.RunProc("sp_Flow_GetFlow",parameters,out dr);
if(dr.Read())
{
strReturn = "<a href='#' title='" + dr["Remark"].ToString() + "'>" + dr["Flow_Name"].ToString() + "</a>";
}
dr.Close();
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return strReturn;
}

#endregion

//////////////////////////////////////////////
/// 流程步骤管理相关
//////////////////////////////////////////////


#region 添加步骤
/// <summary>
/// 添加步骤
/// </summary>
/// <param name="StepName">步骤名</param>
/// <param name="StepRemark">步骤简介</param>
/// <param name="RightToFinish">是否有权利结束</param>
/// <param name="FlowRule">流转规则</param>
/// <param name="PassNum">会签数目</param>
public int AddStep(long FlowID,string StepName,string StepRemark,int RightToFinish,int FlowRule,int PassNum,int LocalAlert,int BaseHour,int CycTimes,int Period)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepName",SqlDbType.VarChar ,300,StepName),
mySQL.MakeInParam("@StepRemark",SqlDbType.NText ,3000,StepRemark),
mySQL.MakeInParam("@RightToFinish",SqlDbType.Bit,1,RightToFinish),
mySQL.MakeInParam("@FlowRule",SqlDbType.Int,4,FlowRule),
mySQL.MakeInParam("@PassNum",SqlDbType.Int,4,PassNum),
mySQL.MakeInParam("@LocalAlert",SqlDbType.Bit,1,LocalAlert),
mySQL.MakeInParam("@BaseHour",SqlDbType.Int,4,BaseHour),
mySQL.MakeInParam("@CycTimes",SqlDbType.Int,4,CycTimes),
mySQL.MakeInParam("@Period",SqlDbType.Int,4,Period)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddStep",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 删除步骤
/// <summary>
/// 删除步骤
/// </summary>
/// <param name="FlowID">被删除的步骤的流程ID</param>
/// <param name="StepID">被删除的步骤的步骤ID</param>
public int DeleteStep(long FlowID,long StepID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_DeleteStep",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改步骤
/// <summary>
/// 修改步骤
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="TacheName">步骤名</param>
/// <param name="TacheRemark">步骤简介</param>
/// <param name="RightToFinish">是否有权利结束</param>
/// <param name="FlowRule">流转规则</param>
/// <param name="PassNum">会签数目</param>
public int UpdateStep(long FlowID,long StepID,string StepName,string StepRemark,int RightToFinish,int FlowRule,int PassNum,int LocalAlert,int BaseHour,int CycTimes,int Period)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@StepName",SqlDbType.VarChar ,300,StepName),
mySQL.MakeInParam("@StepRemark",SqlDbType.NText ,3000,StepRemark),
mySQL.MakeInParam("@RightToFinish",SqlDbType.Bit,1,RightToFinish),
mySQL.MakeInParam("@FlowRule",SqlDbType.Int,4,FlowRule),
mySQL.MakeInParam("@PassNum",SqlDbType.Int,4,PassNum),
mySQL.MakeInParam("@LocalAlert",SqlDbType.Bit,1,LocalAlert),
mySQL.MakeInParam("@BaseHour",SqlDbType.Int,4,BaseHour),
mySQL.MakeInParam("@CycTimes",SqlDbType.Int,4,CycTimes),
mySQL.MakeInParam("@Period",SqlDbType.Int,4,Period)

};
try
{
iReturn = mySQL.RunProc("sp_Flow_UpdateStep",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 上移步骤
/// <summary>
/// 上移步骤
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
public int MoveUpStep(long FlowID,long StepID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_MoveUpStep",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 得到步骤基本信息
/// <summary>
/// 得到步骤基本信息
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="dt">返回表格</param>
public int GetStep(long FlowID,long StepID,out DataTable dt)
{
int iReturn=-1;
SqlDataReader dr;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID)
};
try
{
mySQL.RunProc("sp_Flow_GetStep",parameters,out dr);
iReturn = 0;
dt = Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

#region 得到流程的最大步骤
/// <summary>
/// 得到流程的最大步骤
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <returns>最大步骤</returns>
public int GetMaxStep(long FlowID)
{
int iReturn=-1;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_GetMaxStep",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

#region 得到步骤名
/// <summary>
/// 得到步骤名
/// </summary>
/// <param name="FlowID">流程ID</param>
public string GetStepTitle(long FlowID,long StepID)
{
string strReturn="";
SqlDataReader dr;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID)
};
try
{
mySQL.RunProc("sp_Flow_GetStep",parameters,out dr);
if(dr.Read())
{
strReturn = "<a href='#' title='" + dr["Step_Remark"].ToString() + "'>" + dr["Step_Name"].ToString() + "</a>";
}
dr.Close();
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return strReturn;
}

#endregion

//////////////////////////////////////////////
/// 流程跳转管理相关
//////////////////////////////////////////////


#region 添加跳转
/// <summary>
/// 添加跳转
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="FieldName">字段名</param>
/// <param name="Compare">比较符号</param>
/// <param name="CompareValue">比较值</param>
/// <returns></returns>
public int AddJump(long FlowID,long StepID,string FieldName,string Compare,double CompareValue,long ToStepID,int FlowRule)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@FieldName",SqlDbType.VarChar ,50,FieldName),
mySQL.MakeInParam("@Compare",SqlDbType.VarChar,50,Compare),
mySQL.MakeInParam("@CompareValue",SqlDbType.Float ,8,CompareValue),
mySQL.MakeInParam("@ToStepID",SqlDbType.Float ,8,ToStepID),
mySQL.MakeInParam("@FlowRule",SqlDbType.Int ,4,FlowRule)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_AddJump",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 删除跳转
/// <summary>
/// 删除步骤
/// </summary>
/// <param name="FlowID">被删除的跳转的流程ID</param>
/// <param name="StepID">被删除的跳转的步骤ID</param>
/// <param name="Priority">被删除的跳转的优先等级</param>
public int DeleteJump(long FlowID,long StepID,long Priority)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@Priority",SqlDbType.Int ,4,Priority)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_DeleteJump",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;

}
#endregion

#region 修改跳转
/// <summary>
/// 修改跳转
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="Priority">优先级</param>
/// <param name="FieldName">字段名</param>
/// <param name="Compare">比较符号</param>
/// <param name="CompareValue">比较值</param>
/// <returns></returns>
public int UpdateJump(long FlowID,long StepID,long Priority,string FieldName,string Compare,double CompareValue,long ToStepID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@Priority",SqlDbType.Int ,4,Priority),
mySQL.MakeInParam("@FieldName",SqlDbType.VarChar ,50,FieldName),
mySQL.MakeInParam("@Compare",SqlDbType.VarChar,50,Compare),
mySQL.MakeInParam("@CompareValue",SqlDbType.Float ,8,CompareValue),
mySQL.MakeInParam("@ToStepID",SqlDbType.Float ,8,ToStepID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_UpdateJump",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 上移跳转
/// <summary>
/// 上移跳转
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="Priority">优先级</param>
public int MoveUpJump(long FlowID,long StepID,long Priority)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@Priority",SqlDbType.Int ,4,Priority)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_MoveUpJump",parameters);
}
catch (Exception ex)
{
UDS.Components.Error.Log(ex.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}

return iReturn;
}

#endregion

#region 得到跳转基本信息
/// <summary>
/// 得到步骤基本信息
/// </summary>
/// <param name="FlowID">流程ID</param>
/// <param name="StepID">步骤ID</param>
/// <param name="Priority">优先级</param>
/// <param name="dt">返回表格</param>
public int GetJump(long FlowID,long StepID,long Priority,out DataTable dt)
{
int iReturn=-1;
SqlDataReader dr;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@FlowID",SqlDbType.Int ,4,FlowID),
mySQL.MakeInParam("@StepID",SqlDbType.Int ,4,StepID),
mySQL.MakeInParam("@Priority",SqlDbType.Int ,4,Priority)
};
try
{
mySQL.RunProc("sp_Flow_GetJump",parameters,out dr);
iReturn = 0;
dt = Tools.ConvertDataReaderToDataTable(dr);
}
catch(Exception e)
{
Error.Log(e.ToString());
dt = null;
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

//////////////////////////////////////////////
/// 其他杂项
//////////////////////////////////////////////

#region 处理消息
/// <summary>
/// 获得流程的表格样式描述
/// </summary>
/// <param name="ErrorNum">错误消息</param>
/// <param name="DocID">文档ID</param>
public string DoMessage(int ErrorNum,long DocID,bool DefaultOperation)
{
string ErrorMessage="";

switch(ErrorNum)
{
case 0:
ErrorMessage="成功";
break;
case -1:
ErrorMessage="流程结束!";
break;
case -2:
if(DefaultOperation==true)
{
if(this.IsNewDocument(DocID)>0)
this.DeleteDocument(DocID);
else
this.CancelPostil(DocID);
}
ErrorMessage="没有职位上级";
break;
case -3:
if(DefaultOperation==true)
{
if(this.IsNewDocument(DocID)>0)
this.DeleteDocument(DocID);
else
this.CancelPostil(DocID);
}
ErrorMessage="没有项目上级";
break;
case -4:
ErrorMessage="需要全体通过";
break;
case -5:
ErrorMessage="通过人数不够";
break;
case -6:
if(DefaultOperation==true)
{
if(this.IsNewDocument(DocID)>0)
this.DeleteDocument(DocID);
else
this.CancelPostil(DocID);
}
ErrorMessage="该流程无你所在的环节";
break;
case -7:
ErrorMessage="下一步骤没有成员";
break;
default:
break;
}
return ErrorMessage;
}
#endregion

#region 获得文档的存在状态
/// <summary>
/// 获得文档的存在状态
/// </summary>
/// <param name="DocID">被检查的文档ID</param>
public int GetDocumentStatus(long DocID)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_GetDocumentStatus",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 获得文档的操作状态
/// <summary>
/// 获得文档的操作状态
/// </summary>
/// <param name="DocID">被检查的文档ID</param>
public int GetDocumentStatus(long DocID,string UserName)
{
int iReturn=-1;
UDS.Components.Database mySQL = new UDS.Components.Database();
SqlParameter[] parameters = {
mySQL.MakeInParam("@StaffName",SqlDbType.VarChar ,300,UserName),
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_Flow_GetDocumentStatusByStaff",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}
#endregion

#region 权限判断
/// <summary>
/// 权限判断
/// </summary>
/// <param name="classID">对象接点ID</param>
/// <param name="UserName">用户名</param>
/// <param name="actID">权利代号</param>
/// <returns>是否有权利 1有 0无</returns>
public bool GetAccessPermission(int classID,string UserName,int actID)
{
int flag = 0;
// 定义数据库操作类及DataReader
Database data = new Database();

// 执行存储过程,并返回SqlDataReader对象
SqlParameter[] prams = {
data.MakeInParam("@Class_ID" , SqlDbType.Int, 20, classID),
data.MakeInParam("@UserName" , SqlDbType.NVarChar, 20, UserName),
data.MakeInParam("@Act_ID" , SqlDbType.Int, 20, actID),
// data.MakeInParam("@Inheit" , SqlDbType.Bit, 1, 1),
data.MakeOutParam("@ReturnValue",SqlDbType.Int,20)
};

try
{
data.RunProc("sp_GetAccessPermission",prams);
flag = Int32.Parse(prams[3].Value.ToString());
return (flag==1)?true:false;
}
catch(Exception ex)
{
Error.Log(ex.ToString());
throw new Exception("获取访问权出错",ex);
}
finally
{
data = null;
}

}

#endregion

#region 得到文档关联的流程
/// <summary>
/// 得到文档关联的流程
/// </summary>
/// <param name="DocID">文档ID</param>
/// <returns>文档关联的流程ID</returns>
public int GetDocumentFlowID(long DocID)
{
int iReturn=-1;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_GetDocumentFlowID",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

#region 得到文档关联的步骤
/// <summary>
/// 得到文档关联的步骤
/// </summary>
/// <param name="DocID">文档ID</param>
/// <returns>文档关联的流程ID</returns>
public int GetDocumentStepID(long DocID)
{
int iReturn=-1;

UDS.Components.Database mySQL = new UDS.Components.Database();

SqlParameter[] parameters = {
mySQL.MakeInParam("@DocID",SqlDbType.Int ,4,DocID)
};
try
{
iReturn = mySQL.RunProc("sp_GetDocumentStepID",parameters);
}
catch(Exception e)
{
Error.Log(e.ToString());
}
finally
{
mySQL.Close();
mySQL = null;
}
return iReturn;
}

#endregion

}
#endregion

}