#region using System; using System.Collections.Generic; using System.Data; using System.Drawing.Imaging; using System.Windows.Forms; using CSFrameworkV5.Common; using CSFrameworkV5.Core; #endregion namespace CSFrameworkV5.Library.CommonForms { /* 使用方法: int success = 0; int failed = 0; frmOperateReport.AddReport(false, "生成数据", "", "开始生成数据..."); frmOperateReport.ShowReport(success, failed); */ /// /// 操作报告 /// public partial class frmOperateReport : frmBase { private static frmOperateReport _Instance; /// /// 操作报告开始记录时间 /// private DateTime _BeginTime; /// /// 数据表 /// private DataTable _Result; private frmOperateReport() { InitializeComponent(); _BeginTime = DateTime.Now; _Result = BuildResultTable(); } public int Failed { get { if (_Result != null) { var rs = _Result.Select("IsError='Y'"); return rs.Length; } return 0; } } public static frmOperateReport Instance => _Instance; public int Success { get { if (_Result != null) { var rs = _Result.Select("IsError<>'Y'"); return rs.Length; } return 0; } } /// /// 增加一条报告内容 /// /// 是否错误报告,错误:True, 提示:False /// 操作步骤 /// 参考编号 /// 报告内容 public static void AddReport(bool error, string stepText, string refID, string content) { if (_Instance == null) _Instance = new frmOperateReport(); var R = _Instance._Result.NewRow(); R["IsError"] = error ? "Y" : "N"; R["Icon"] = CImageLibrary.GetImageBytes( error ? _Instance.picErr.Image : _Instance.picInfo.Image, ImageFormat.Jpeg); R["StepText"] = stepText; R["RefID"] = refID; R["Content"] = content; _Instance._Result.Rows.Add(R); } /// /// 添加操作报告表 /// /// 操作报告表 public static void AddReport(DataTable dtReport) { foreach (DataRow R in dtReport.Rows) AddReport( R["IsError"].ToStringEx() == "Y", R["StepText"].ToStringEx(), R["RefID"].ToStringEx(), R["Content"].ToStringEx()); } /// /// 添加操作报告表 /// /// public static void AddReport(List reports) { foreach (var item in reports) AddReport(item.IsError, item.StepText, item.RefID, item.Content); } private void btnClose_Click(object sender, EventArgs e) { Close(); _Instance = null; } /// /// 生成报表内容表 /// /// private DataTable BuildResultTable() { var dt = new DataTable(); dt.Columns.Add("IsError", typeof(string)); dt.Columns.Add("Icon", typeof(byte[])); dt.Columns.Add("StepText", typeof(string)); dt.Columns.Add("RefID", typeof(string)); dt.Columns.Add("Content", typeof(string)); return dt; } private void frmAttendGeneratorReport_FormClosed(object sender, FormClosedEventArgs e) { _Instance = null; } private void frmAttendGeneratorReport_Load(object sender, EventArgs e) { gcSummary.DataSource = _Result; gcSummary.RefreshDataSource(); } /// /// 初始化报告窗体标题,列宽度 /// /// 窗体标题,不设置,预设为空 public static void InitReport(string caption) { if (_Instance == null) _Instance = new frmOperateReport(); _Instance._Result.Rows.Clear(); if (caption != "") { _Instance.Text = caption; _Instance.lblTitle.Text = caption; } } /// /// 初始化报告窗体标题,列宽度 /// /// 窗体标题,不设置,预设为空 /// 不设置,预设为0 /// 不设置,预设为0 /// 不设置,预设为0 public static void InitReport(string caption, int col1Width, int col2Width, int col3Width) { InitReport(caption); if (col1Width > 0) _Instance.colStepText.Width = col1Width; if (col2Width > 0) _Instance.colRefID.Width = col2Width; if (col3Width > 0) _Instance.colContent.Width = col3Width; } private void ShowInfo(int success, int failed) { lbSuccess.Text = success.ToStringEx(); lbFailed.Text = failed.ToStringEx(); var ts = DateTime.Now - _BeginTime; var ss = Math.Round(ts.TotalSeconds, 1) + double.Parse("0.1"); lbTime.Text = ss.ToStringEx() + " 秒"; } /// /// 显示报告 /// /// /// public static void ShowReport(int success, int failed) { if (_Instance != null) { _Instance.panel3.Visible = true; _Instance.ShowInfo(success, failed); _Instance.ShowDialog(); } } public static void ShowReport(string caption, List items) { if (_Instance == null) InitReport(caption); _Instance._Result.Rows.Clear(); AddReport(items); ShowReport(); } /// /// 显示报告 /// public static void ShowReport() { if (_Instance != null) { _Instance.panel3.Visible = false; _Instance.ShowInfo(_Instance.Success, _Instance.Failed); _Instance.ShowDialog(); } } public static void ShowReport(DataTable dtReport) { AddReport(dtReport); ShowReport(); } } /// /// 报告项,用于frmOperateReport界面 /// public class OperateReportItem { public OperateReportItem() { } public OperateReportItem(bool isError, string stepText, string refID, string content) { IsError = isError; StepText = stepText; RefID = refID; Content = content; } public string Content { get; set; } public bool IsError { get; set; } public string RefID { get; set; } public string StepText { get; set; } } }