You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

226 lines
5.6 KiB
C#

9 months ago
using System;
using System.Threading;
using System.Collections;
using System.Data;
using BP.DA;
using BP.En;
using BP.Web;
namespace BP.Sys.Base
{
/// <summary>
/// 事件基类
/// </summary>
abstract public class EventBase
{
#region 属性.
public Entity HisEn = null;
private Row _SysPara = null;
/// <summary>
/// 参数
/// </summary>
public Row SysPara
{
get
{
if (_SysPara == null)
_SysPara = new Row();
return _SysPara;
}
set
{
_SysPara = value;
}
}
/// <summary>
/// 成功信息
/// </summary>
public string SucessInfo = null;
private string _title = null;
/// <summary>
/// 标题
/// </summary>
public string Title
{
get
{
if (_title == null)
_title = "未命名";
return _title;
}
set
{
_title = value;
}
}
#endregion 属性.
#region 系统参数
/// <summary>
/// 表单ID
/// </summary>
public string FK_Mapdata
{
get
{
return this.GetValStr("FK_MapData");
}
}
/// <summary>
/// 事件类型
/// </summary>
public string EventSource
{
get
{
return this.GetValStr("EventSource");
}
}
#endregion
#region 常用属性.
/// <summary>
/// 工作ID
/// </summary>
public int OID
{
get
{
return this.GetValInt("OID");
}
}
/// <summary>
/// 工作ID
/// </summary>
public Int64 WorkID
{
get
{
if (this.OID == 0)
return this.GetValInt64("WorkID"); /*有可能开始节点的WorkID=0*/
return this.OID;
}
}
/// <summary>
/// FID
/// </summary>
public Int64 FID
{
get
{
return this.GetValInt64("FID");
}
}
/// <summary>
/// 流程编号
/// </summary>
public string FlowNo
{
get
{
return this.GetValStr("FK_Flow");
}
}
/// <summary>
/// 节点编号
/// </summary>
public int NodeID
{
get
{
try
{
return this.GetValInt("FK_Node");
}
catch {
return 0;
}
}
}
/// <summary>
/// 传过来的WorkIDs集合子流程.
/// </summary>
public string WorkIDs
{
get
{
return this.GetValStr("WorkIDs");
}
}
/// <summary>
/// 编号集合s
/// </summary>
public string Nos
{
get
{
return this.GetValStr("Nos");
}
}
#endregion 常用属性.
#region 获取参数方法
public DateTime GetValDateTime(string key)
{
string str= this.SysPara.GetValByKey(key).ToString();
return DataType.ParseSysDateTime2DateTime(str);
}
/// <summary>
/// 获取字符串参数
/// </summary>
/// <param name="key">key</param>
/// <returns>如果为Nul,或者不存在就抛出异常</returns>
public string GetValStr(string key)
{
return this.SysPara.GetValByKey(key).ToString();
}
/// <summary>
/// 获取Int64的数值
/// </summary>
/// <param name="key">键值</param>
/// <returns>如果为Nul,或者不存在就抛出异常</returns>
public Int64 GetValInt64(string key)
{
return Int64.Parse(this.GetValStr(key));
}
/// <summary>
/// 获取int的数值
/// </summary>
/// <param name="key">键值</param>
/// <returns>如果为Nul,或者不存在就抛出异常</returns>
public int GetValInt(string key)
{
return int.Parse(this.GetValStr(key));
}
#endregion 获取参数方法
/// <summary>
/// 事件基类
/// </summary>
public EventBase()
{
}
/// <summary>
/// 执行事件
/// 1如果遇到错误就抛出异常信息前台界面就会提示错误并不向下执行。
/// 2执行成功把执行的结果赋给SucessInfo变量如果不需要提示就赋值为空或者为null。
/// 3所有的参数都可以从 this.SysPara.GetValByKey中获取。
/// </summary>
abstract public void Do();
/// <summary>
/// 获得最后一个action的ID.
/// </summary>
/// <returns></returns>
public string GetLastActionTrackID()
{
string sql = "SELECT MyPK FROM ND" + int.Parse(this.FlowNo) + "Track WHERE WorkID=" + this.WorkID + " AND NDFrom=" + this.NodeID + " ORDER BY RDT ";
DataTable dt=DBAccess.RunSQLReturnTable(sql);
if (dt.Rows.Count == 0)
return null;
return dt.Rows[0][0].ToString();
}
}
}