#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);
|
*/
|
|
/// <summary>
|
/// 操作报告
|
/// </summary>
|
public partial class frmOperateReport : frmBase
|
{
|
private static frmOperateReport _Instance;
|
|
/// <summary>
|
/// 操作报告开始记录时间
|
/// </summary>
|
private DateTime _BeginTime;
|
|
/// <summary>
|
/// 数据表
|
/// </summary>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 增加一条报告内容
|
/// </summary>
|
/// <param name="error">是否错误报告,错误:True, 提示:False</param>
|
/// <param name="stepText">操作步骤</param>
|
/// <param name="refID">参考编号</param>
|
/// <param name="content">报告内容</param>
|
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);
|
}
|
|
/// <summary>
|
/// 添加操作报告表
|
/// </summary>
|
/// <param name="dtReport">操作报告表</param>
|
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());
|
}
|
|
/// <summary>
|
/// 添加操作报告表
|
/// </summary>
|
/// <param name="reports"></param>
|
public static void AddReport(List<OperateReportItem> 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;
|
}
|
|
/// <summary>
|
/// 生成报表内容表
|
/// </summary>
|
/// <returns></returns>
|
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();
|
}
|
|
/// <summary>
|
/// 初始化报告窗体标题,列宽度
|
/// </summary>
|
/// <param name="caption">窗体标题,不设置,预设为空</param>
|
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;
|
}
|
}
|
|
/// <summary>
|
/// 初始化报告窗体标题,列宽度
|
/// </summary>
|
/// <param name="caption">窗体标题,不设置,预设为空</param>
|
/// <param name="col1Width">不设置,预设为0</param>
|
/// <param name="col2Width">不设置,预设为0</param>
|
/// <param name="col3Width">不设置,预设为0</param>
|
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() + " 秒";
|
}
|
|
/// <summary>
|
/// 显示报告
|
/// </summary>
|
/// <param name="success"></param>
|
/// <param name="failed"></param>
|
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<OperateReportItem> items)
|
{
|
if (_Instance == null) InitReport(caption);
|
|
_Instance._Result.Rows.Clear();
|
AddReport(items);
|
ShowReport();
|
}
|
|
/// <summary>
|
/// 显示报告
|
/// </summary>
|
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();
|
}
|
}
|
|
/// <summary>
|
/// 报告项,用于frmOperateReport界面
|
/// </summary>
|
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; }
|
}
|
}
|