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

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 CaseDataReport.
  15. /// </summary>
  16.     public partial class InstanceDataReport : ReportPage
  17. {
  18. protected void Page_Load(object sender, System.EventArgs e)
  19. {
  20. if(!this.IsPostBack)
  21. {
  22.                 // 验证是否具有管理员权限
  23.                 if (!this.UserValidator.ValidateViewReport())
  24.                 {
  25.                     this.NotifyMessage(LackOfAuth);
  26.                 }
  27. // 设置默认的搜索时间
  28. System.DateTime today = System.DateTime.Now;
  29. System.DateTime tomorrow = today.Add(new System.TimeSpan(1, 0, 0, 0, 0));
  30. this.txtFromTime.Text = today.ToShortDateString();
  31. this.txtToTime.Text = tomorrow.ToShortDateString();
  32.                 string[] catalogs = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowPackages();
  33. // 添加一空元素表示全部
  34. this.lstWorkflowPackage.Items.Add(NullItemValue);
  35. foreach(string catalog in catalogs)
  36. {
  37. this.lstWorkflowPackage.Items.Add(catalog);
  38. }
  39. }
  40. }
  41. #region Web Form Designer generated code
  42. override protected void OnInit(EventArgs e)
  43. {
  44. //
  45. // CODEGEN: This call is required by the ASP.NET Web Form Designer.
  46. //
  47. InitializeComponent();
  48. base.OnInit(e);
  49. }
  50. /// <summary>
  51. /// Required method for Designer support - do not modify
  52. /// the contents of this method with the code editor.
  53. /// </summary>
  54. private void InitializeComponent()
  55. {    
  56. this.btnQuery.Click += new System.Web.UI.ImageClickEventHandler(this.btnQuery_Click);
  57. this.btnExport.Click += new System.Web.UI.ImageClickEventHandler(this.btnExport_Click);
  58. }
  59. #endregion
  60. protected void lstWorkflowPackage_SelectedIndexChanged(object sender, System.EventArgs e)
  61. {
  62. string catalog = this.lstWorkflowPackage.SelectedValue;
  63. if(this.IsSelectedNull(catalog))
  64. {
  65. this.lstWorkflowName.Items.Clear();
  66. this.lstWorkflowName.Items.Add(NullItemValue);
  67. this.lstWorkflowVersion.Items.Clear();
  68. this.lstWorkflowVersion.Items.Add(NullItemValue);
  69. }
  70. else
  71. {
  72.                 string[] names = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowNames(catalog, OThinker.H3.WorkflowTemplate.WorkflowState.Unspecified);
  73. this.lstWorkflowName.Items.Clear();
  74. this.lstWorkflowName.Items.Add(NullItemValue);
  75. foreach(string name in names)
  76. {
  77. this.lstWorkflowName.Items.Add(name);
  78. }
  79. }
  80. }
  81. protected void lstWorkflowName_SelectedIndexChanged(object sender, System.EventArgs e)
  82. {
  83. string catalog = this.lstWorkflowPackage.SelectedValue;
  84. string name = this.lstWorkflowName.SelectedValue;
  85. if(this.IsSelectedNull(name))
  86. {
  87. this.lstWorkflowVersion.Items.Clear();
  88. this.lstWorkflowVersion.Items.Add(NullItemValue);
  89. }
  90. else
  91. {
  92. int[] versions = OThinker.H3.Server.Engine.WorkflowManager.GetWorkflowVersions(
  93. catalog, 
  94. name);
  95. this.lstWorkflowVersion.Items.Clear();
  96. this.lstWorkflowVersion.Items.Add(NullItemValue);
  97. if(versions != null)
  98. {
  99. foreach(int version in versions)
  100. {
  101. this.lstWorkflowVersion.Items.Add(version.ToString());
  102. }
  103. }
  104. }
  105. }
  106. protected void lstWorkflowVersion_SelectedIndexChanged(object sender, System.EventArgs e)
  107. {
  108. string catalog = this.lstWorkflowPackage.SelectedValue;
  109. string name = this.lstWorkflowName.SelectedValue;
  110. string strVersion = this.lstWorkflowVersion.SelectedValue;
  111. WorkflowTemplate.WorkflowTemplate workflow = null;
  112. this.lstDataItem.Items.Clear();
  113. if(
  114. this.IsSelectedNull(strVersion) || 
  115. (workflow = this.GetWorkflow(
  116. catalog, 
  117. name, 
  118. int.Parse(strVersion))) == null || 
  119. workflow.DataItems == null)
  120. {
  121. this.lstDataItem.Items.Add(NullItemValue);
  122. }
  123. else
  124. {
  125. // 获得所有数据项
  126. foreach(OThinker.H3.Data.WorkflowDataItem item in workflow.DataItems)
  127. {
  128. // 能够进行统计的数据有两个条件:1、不是公式计算出来的值,2、是能够进行统计的类型
  129. if(item.Source == OThinker.H3.Data.DataSourceType.Common && OThinker.Data.Convertor.CanStatistic(item.RealType))
  130. {
  131. this.lstDataItem.Items.Add(item.ItemName);
  132. }
  133. }
  134. }
  135. }
  136. private System.Data.DataTable StatTable
  137. {
  138. get
  139. {
  140. string sessionName = OThinker.H3.WorkSheet.Sessions.GetInstanceDataStatTable();
  141. return (System.Data.DataTable)this.Session[sessionName];
  142. }
  143. set
  144. {
  145.                 string sessionName = OThinker.H3.WorkSheet.Sessions.GetInstanceDataStatTable();
  146. this.Session[sessionName] = value;
  147. }
  148. }
  149. #region 查询
  150. private void btnQuery_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  151. {
  152. this.Query();
  153. }
  154. protected void lnkQuery_Click(object sender, System.EventArgs e)
  155. {
  156. this.Query();
  157. }
  158. private void Query()
  159. {
  160. string catalog;
  161. if(this.IsSelectedNull(this.lstWorkflowPackage.SelectedValue))
  162. {
  163. catalog = null;
  164. }
  165. else
  166. {
  167. catalog = this.lstWorkflowPackage.SelectedValue;
  168. }
  169. string name;
  170. if(this.IsSelectedNull(this.lstWorkflowName.SelectedValue))
  171. {
  172. name = null;
  173. }
  174. else
  175. {
  176. name = this.lstWorkflowName.SelectedValue;
  177. }
  178. int version = OThinker.H3.WorkflowTemplate.WorkflowTemplate.NullWorkflowVersion;
  179. if(!this.IsSelectedNull(this.lstWorkflowVersion.SelectedValue))
  180. {
  181. try
  182. {
  183. version = int.Parse(this.lstWorkflowVersion.SelectedValue);
  184. }
  185. catch
  186. {
  187. version = OThinker.H3.WorkflowTemplate.WorkflowTemplate.NullWorkflowVersion;
  188. }
  189. }
  190. string dataItemName = null;
  191. if(this.IsSelectedNull(this.lstDataItem.SelectedValue))
  192. {
  193. dataItemName = null;
  194. }
  195. else
  196. {
  197. dataItemName = this.lstDataItem.SelectedValue;
  198. }
  199. System.DateTime from = System.DateTime.MinValue;
  200. try
  201. {
  202. from = System.DateTime.Parse(this.txtFromTime.Text);
  203. }
  204. catch
  205. {
  206. from = System.DateTime.MinValue;
  207. }
  208. System.DateTime to = System.DateTime.MaxValue;
  209. try
  210. {
  211. to = System.DateTime.Parse(this.txtToTime.Text);
  212. }
  213. catch
  214. {
  215. to = System.DateTime.MaxValue;
  216. }
  217. // 检查是否所有参数都填写了
  218. if(catalog == null || 
  219. name == null || 
  220. version == OThinker.H3.WorkflowTemplate.WorkflowTemplate.NullWorkflowVersion || 
  221. dataItemName == null)
  222. {
  223. this.NotifyMessage("您需要输入模板类型、模板名称、模板版本和数据项名称参数!");
  224. }
  225. // 查询到这些流程
  226. string[] instances = OThinker.H3.Server.Engine.InstanceManager.Query(
  227. null, 
  228. null, 
  229. OThinker.H3.Instance.InstanceContext.UnspecifiedID, 
  230. OThinker.H3.Instance.InstanceState.Unspecified, 
  231. catalog, 
  232. name, 
  233. version, 
  234. from, 
  235. to, 
  236.                 null);
  237. // 获得统计信息
  238.             OThinker.H3.Data.InstanceDataStatistics statistics = OThinker.H3.Server.Engine.InstanceDataManager.Stat(
  239. catalog, 
  240. name, 
  241. version, 
  242. instances, 
  243. dataItemName);
  244. if(statistics != null)
  245. {
  246. // 查询
  247. System.Data.DataTable statTable = new DataTable();
  248. statTable.TableName = "数据报表";
  249. statTable.Columns.Add("ItemName");
  250.                 statTable.Columns.Add(OThinker.H3.Data.InstanceDataStatistics.PropertyName_Times);
  251.                 statTable.Columns.Add(OThinker.H3.Data.InstanceDataStatistics.PropertyName_Sum);
  252.                 statTable.Columns.Add(OThinker.H3.Data.InstanceDataStatistics.PropertyName_MinValue);
  253.                 statTable.Columns.Add(OThinker.H3.Data.InstanceDataStatistics.PropertyName_AverageValue);
  254.                 statTable.Columns.Add(OThinker.H3.Data.InstanceDataStatistics.PropertyName_MaxValue);
  255. statTable.Rows.Add(new object[]{
  256.    dataItemName, 
  257.    statistics.Times, 
  258.    statistics.Sum, 
  259.    statistics.MinValue, 
  260.    statistics.AverageValue, 
  261.    statistics.MaxValue});
  262. this.StatTable = statTable;
  263. // 绑定显示
  264. this.DataStatisticsGrid.DataSource = this.StatTable;
  265. this.DataStatisticsGrid.DataBind();
  266. }
  267. }
  268. #endregion
  269. #region 导出
  270. protected void btnExport_Click(object sender, System.EventArgs e)
  271. {
  272. this.Export();
  273. }
  274. protected void btnExport_Click(object sender, System.Web.UI.ImageClickEventArgs e)
  275. {
  276. this.Export();
  277. }
  278. private void Export()
  279. {
  280. if(this.StatTable != null)
  281. {
  282. byte[] content = this.Export(this.StatTable);
  283. this.Response.ContentType = "application/vnd.ms-excel";
  284. this.Response.OutputStream.Write(content, 0, content.Length);
  285. }
  286. }
  287. #endregion
  288. }
  289. }