WorkflowReport.aspx.cs
上传用户:li2971742
上传日期:2021-11-18
资源大小:39096k
文件大小:8k
源码类别:

OA系统

开发平台:

C#

  1. using System;
  2. using System.Collections;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Web;
  7. using System.Web.SessionState;
  8. using System.Web.UI;
  9. using System.Web.UI.WebControls;
  10. using System.Web.UI.HtmlControls;
  11. namespace OThinker.H3.Portal
  12. {
  13. /// <summary>
  14. /// Summary description for WorkflowReport.
  15. /// </summary>
  16.     public partial class WorkflowReport : WorkflowReportBase
  17. {
  18. protected void Page_Load(object sender, System.EventArgs e)
  19. {
  20.             this.OriginatorSelector.SelectUserUrl = PageName_SelectUser;
  21.             this.OriginatorSelector.SelectUserImageUrl = PageName_SelectUserImage;
  22. if(!this.IsPostBack)
  23.             {
  24.                 // 验证是否具有管理员权限
  25.                 if (!this.UserValidator.ValidateViewReport())
  26.                 {
  27.                     this.NotifyMessage(LackOfAuth);
  28.                 }
  29. // 设置默认的搜索时间
  30. System.DateTime today = System.DateTime.Now;
  31. System.DateTime tomorrow = today.Add(new System.TimeSpan(1, 0, 0, 0, 0));
  32. this.txtFromTime.Text = today.ToShortDateString();
  33. this.txtToTime.Text = tomorrow.ToShortDateString();
  34.                 string[] catalogs = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowPackages();
  35. // 添加一空元素表示全部
  36. this.lstWorkflowPackage.Items.Add(NullItemValue);
  37. foreach(string catalog in catalogs)
  38. {
  39. this.lstWorkflowPackage.Items.Add(catalog);
  40. }
  41. }
  42. }
  43. #region Web Form Designer generated code
  44. override protected void OnInit(EventArgs e)
  45. {
  46. //
  47. // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  48. //
  49. InitializeComponent();
  50. base.OnInit(e);
  51. }
  52. /// <summary>
  53. /// Required method for Designer support - do not modify
  54. /// the contents of this method with the code editor.
  55. /// </summary>
  56. private void InitializeComponent()
  57. {    
  58. this.btnQuery.Click += new System.Web.UI.ImageClickEventHandler(this.btnQuery_Click);
  59. this.PerformanceGrid.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.PerformanceGrid_ItemDataBound);
  60. }
  61. #endregion
  62. protected void lstWorkflowPackage_SelectedIndexChanged(object sender, System.EventArgs e)
  63. {
  64. string catalog = this.lstWorkflowPackage.SelectedValue;
  65. if(this.IsSelectedNull(catalog))
  66. {
  67. this.lstWorkflowName.Items.Clear();
  68. this.lstWorkflowName.Items.Add(NullItemValue);
  69. this.lstWorkflowVersion.Items.Clear();
  70. this.lstWorkflowVersion.Items.Add(NullItemValue);
  71. }
  72. else
  73. {
  74. string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(catalog, OThinker.H3.WorkflowTemplate.WorkflowState.Unspecified);
  75. this.lstWorkflowName.Items.Clear();
  76. this.lstWorkflowName.Items.Add(NullItemValue);
  77. foreach(string name in names)
  78. {
  79. this.lstWorkflowName.Items.Add(name);
  80. }
  81. }
  82. }
  83. protected void lstWorkflowName_SelectedIndexChanged(object sender, System.EventArgs e)
  84. {
  85. string catalog = this.lstWorkflowPackage.SelectedValue;
  86. string name = this.lstWorkflowName.SelectedValue;
  87. if(this.IsSelectedNull(name))
  88. {
  89. this.lstWorkflowVersion.Items.Clear();
  90. this.lstWorkflowVersion.Items.Add(NullItemValue);
  91. }
  92. else
  93. {
  94. int[] versions = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowVersions(
  95. catalog, 
  96. name);
  97. this.lstWorkflowVersion.Items.Clear();
  98. this.lstWorkflowVersion.Items.Add(NullItemValue);
  99. if(versions != null)
  100. {
  101. foreach(int version in versions)
  102. {
  103. this.lstWorkflowVersion.Items.Add(version.ToString());
  104. }
  105. }
  106. }
  107. }
  108. protected override string ReportTableSessionName
  109. {
  110. get
  111. {
  112. return OThinker.H3.WorkSheet.Sessions.GetWorkflowPerformanceTable();
  113. }
  114. }
  115. #region 查询
  116. protected void lnkQuery_Click(object sender, System.EventArgs e)
  117. {
  118. this.Query();
  119. }
  120. private void btnQuery_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  121. {
  122. this.Query();
  123. }
  124. private void Query()
  125. {
  126. string catalog = this.ParseWorkflowPackage(this.lstWorkflowPackage.SelectedValue);
  127. string name = this.ParseWorkflowName(this.lstWorkflowName.SelectedValue);
  128. int version = this.ParseWorkflowVersion(this.lstWorkflowVersion.SelectedValue);
  129. System.DateTime from = this.ParseFromTime(this.txtFromTime.Text);
  130. System.DateTime to = this.ParseToTime(this.txtToTime.Text);
  131. // 获得发起人
  132. string[] originators = this.ParseOriginators(this.OriginatorSelector.SelectedUser);
  133. // 设置查询的结果表
  134. this.ReportTable = this.Query(
  135. catalog, 
  136. name, 
  137. version, 
  138. originators, 
  139. from, 
  140. to);
  141. this.PerformanceGrid.DataSource = this.ReportTable;
  142. this.PerformanceGrid.DataBind();
  143. }
  144. private System.Data.DataTable Query(
  145. string WorkflowPackage, 
  146. string WorkflowName, 
  147. int WorkflowVersion, 
  148. string[] Originators, 
  149. System.DateTime From, 
  150. System.DateTime To)
  151. {
  152. System.Data.DataTable performances = this.CreatePerformanceTable();
  153. if(WorkflowPackage == null)
  154. {
  155.                 string[] catalogs = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowPackages();
  156. if(catalogs != null)
  157. {
  158. foreach(string catalog in catalogs)
  159. {
  160.                         string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(catalog, OThinker.H3.WorkflowTemplate.WorkflowState.Unspecified);
  161. if(names != null)
  162. {
  163. foreach(string name in names)
  164. {
  165. this.GetPerformance(
  166. performances, 
  167. catalog, 
  168. name,
  169.                                     OThinker.H3.WorkflowTemplate.WorkflowTemplate.AllWorkflowVersion, 
  170. Originators, 
  171. From, 
  172. To);
  173. }
  174. }
  175. }
  176. }
  177. }
  178. else if(WorkflowName == null)
  179. {
  180.                 string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(WorkflowPackage, OThinker.H3.WorkflowTemplate.WorkflowState.Unspecified);
  181. if(names != null)
  182. {
  183. foreach(string name in names)
  184. {
  185. this.GetPerformance(
  186. performances, 
  187. WorkflowPackage, 
  188. name,
  189.                             OThinker.H3.WorkflowTemplate.WorkflowTemplate.AllWorkflowVersion, 
  190. Originators, 
  191. From, 
  192. To);
  193. }
  194. }
  195. }
  196. else if(
  197.                 WorkflowVersion == OThinker.H3.WorkflowTemplate.WorkflowTemplate.AllWorkflowVersion ||
  198.                 WorkflowVersion == OThinker.H3.WorkflowTemplate.WorkflowTemplate.NullWorkflowVersion)
  199. {
  200. int[] versions = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowVersions(
  201. WorkflowPackage, 
  202. WorkflowName);
  203. foreach(int version in versions)
  204. {
  205. this.GetPerformance(
  206. performances, 
  207. WorkflowPackage, 
  208. WorkflowName, 
  209. version, 
  210. Originators, 
  211. From, 
  212. To);
  213. }
  214. }
  215. else
  216. {
  217. this.GetPerformance(
  218. performances, 
  219. WorkflowPackage, 
  220. WorkflowName, 
  221. WorkflowVersion, 
  222. Originators, 
  223. From, 
  224. To);
  225. }
  226. return performances;
  227. }
  228. #endregion
  229. private void PerformanceGrid_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
  230. {
  231. if(e.Item.ItemType != ListItemType.Header && e.Item.ItemType != ListItemType.Footer)
  232. {
  233. string url =
  234.                     PageName_ActivityReport + "?" + 
  235. Param_WorkflowPackage + "=" + System.Web.HttpUtility.UrlEncode(this.lstWorkflowPackage.SelectedValue) + "&" + 
  236. Param_WorkflowName + "=" + System.Web.HttpUtility.UrlEncode(this.lstWorkflowName.SelectedValue) + "&" + 
  237. Param_WorkflowVersion + "=" + System.Web.HttpUtility.UrlEncode(this.lstWorkflowVersion.SelectedValue) + "&" + 
  238. Param_From + "=" + System.Web.HttpUtility.UrlEncode(this.txtFromTime.Text) + "&" + 
  239. Param_To + "=" + System.Web.HttpUtility.UrlEncode(this.txtToTime.Text);
  240. e.Item.Cells[5].Text = "<a onclick="javascript:window.open('" + url + "', 50, 50);" style="CURSOR: hand">查看</a>";
  241. }
  242. }
  243. protected void btnExport_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  244. {
  245. this.Export();
  246. }
  247. protected void lnkExport_Click(object sender, System.EventArgs e)
  248. {
  249. this.Export();
  250. }
  251. }
  252. }