using MainForm.ClassFile.ProjectClass; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MainForm.FaForm { public partial class Form_DevAlarm : Form { #region 变量 /// /// 日志 /// public event AlarmMessageHandler MessageEvent; #endregion 变量 #region 窗体事件 public Form_DevAlarm() { InitializeComponent(); } private void Form_DevAlarm_Load(object sender, EventArgs e) { #region 页面样式 // 实时表 dgv_Current.ColumnHeadersDefaultCellStyle.BackColor = Color.WhiteSmoke; dgv_Current.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black; dgv_Current.RectColor = Color.Gainsboro; dgv_Current.GridColor = Color.Gainsboro; dgv_Current.BackgroundColor = Color.White; // 历史表 dgv_History.ColumnHeadersDefaultCellStyle.BackColor = Color.WhiteSmoke; dgv_History.ColumnHeadersDefaultCellStyle.ForeColor = Color.Black; dgv_History.RectColor = Color.Gainsboro; dgv_History.GridColor = Color.Gainsboro; dgv_History.BackgroundColor = Color.White; #endregion 页面样式 } private void Form_DevAlarm_VisibleChanged(object sender, EventArgs e) { if (!this.IsDisposed && this.Visible) { UpdDeviceStatus_Today(); // 加载设备运行数据 UpdDeviceAlarm_History_48H(); // 加载报警数据 } } #endregion 窗体事件 #region 设备运行信息 /// /// 更新设备运行信息-本次(废弃) /// /// 设备信息 public void UpdDeviceStatus_ThisTime(LineWorkingData_ThisTime lineWorkingData) { if (this.InvokeRequired) // 当前线程不是控件UI线程时为true { this.Invoke(new Action(UpdDeviceStatus_ThisTime), lineWorkingData); return; } RPrc_Normal.Value = lineWorkingData.NormalTimeLong < 24 ? Convert.ToInt32(lineWorkingData.NormalTimeLong) : 24; // 本次运行时间 Lbl__Normal.Text = string.Concat("本次运行时间:", lineWorkingData.NormalTimeLong.ToString("0.00"), "小时"); RPrc_Fault.Value = lineWorkingData.FaultTimeLong < 24 ? Convert.ToInt32(lineWorkingData.FaultTimeLong) : 24; // 本次故障时间 Lbl_Fault.Text = string.Concat("本次故障时间:", lineWorkingData.FaultTimeLong.ToString("0.00"), "小时"); RPrc_Standby.Value = lineWorkingData.StandbyTimeLong < 24 ? Convert.ToInt32(lineWorkingData.StandbyTimeLong) : 24; // 本次待机时间 Lbl_Standby.Text = string.Concat("本次待机时间:", lineWorkingData.StandbyTimeLong.ToString("0.00"), "小时"); RPrc_MaterialShortage.Value = lineWorkingData.MaterialShortageTimeLong < 24 ? Convert.ToInt32(lineWorkingData.MaterialShortageTimeLong) : 24; // 本次缺料时间 Lbl_MaterialShortage.Text = string.Concat("本次缺料时间:", lineWorkingData.MaterialShortageTimeLong.ToString("0.00"), "小时"); RPrc_Maintenance.Value = lineWorkingData.MaintenanceTimeLong < 24 ? Convert.ToInt32(lineWorkingData.MaintenanceTimeLong) : 24; // 本次维修时间 Lbl_Maintenance.Text = string.Concat("本次维修时间:", lineWorkingData.MaintenanceTimeLong.ToString("0.00"), "小时"); // 本次未知状态时间 float unknown = lineWorkingData.BootTimeLong - lineWorkingData.NormalTimeLong - lineWorkingData.FaultTimeLong - lineWorkingData.StandbyTimeLong - lineWorkingData.MaterialShortageTimeLong; unknown = unknown < 24 ? unknown : 24; unknown = unknown < 0 ? 0 : unknown; RPrc_Unknown.Value = Convert.ToInt32(unknown); Lbl_Unknown.Text = string.Concat("本次未知状态时间:", unknown.ToString("0.00"), "小时"); } /// /// 更新设备运行信息-本日 /// public void UpdDeviceStatus_Today() { try { if (this.InvokeRequired) // 当前线程不是控件UI线程时为true { this.Invoke(new Action(UpdDeviceStatus_Today)); return; } LineWorkingData_Today lineWorkingData_Today = new LineWorkingData_Today(); DateTime dtNow = DateTime.Now; string dtStart = dtNow.ToString("yyyy-MM-dd") + " 00:00:00"; string dtEnd = dtNow.ToString("yyyy-MM-dd") + " 23:59:59"; string querySQL = @"SELECT [LineName] AS 线体名称 ,SUM([BootTimeLong]) AS 本日开机时间 ,SUM([NormalTimeLong]) AS 本日开机运行时间 ,SUM([StandbyTimeLong]) AS 本日开机待机时间 ,SUM([FaultTimeLong]) AS 本日开机故障时间 ,SUM([MaterialShortageTimeLong]) AS 本日开机缺料时间 ,SUM([MaintenanceTimeLong]) AS 本日开机维修时间 ,SUM([FaultNumber]) AS 本日故障停机次数 FROM [LineWorkingData] Where [CreateTime] between '{0}' and '{1}' And [LineName]='{2}' Group by [LineName]"; querySQL = string.Format(querySQL, dtStart, dtEnd, GlobalContext.LineCode); DataSet ds = SQLHelper_New.Query(querySQL, null); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { lineWorkingData_Today.线体名称 = ds.Tables[0].Rows[0][0].ToString(); lineWorkingData_Today.本日开机时间 = ds.Tables[0].Rows[0][1] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][1]) : 0; lineWorkingData_Today.本日开机运行时间 = ds.Tables[0].Rows[0][2] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][2]) : 0; lineWorkingData_Today.本日开机待机时间 = ds.Tables[0].Rows[0][3] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][3]) : 0; lineWorkingData_Today.本日开机故障时间 = ds.Tables[0].Rows[0][4] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][4]) : 0; lineWorkingData_Today.本日开机缺料时间 = ds.Tables[0].Rows[0][5] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][5]) : 0; lineWorkingData_Today.本日开机维修时间 = ds.Tables[0].Rows[0][6] != null ? Convert.ToSingle(ds.Tables[0].Rows[0][6]) : 0; lineWorkingData_Today.本日故障停机次数 = ds.Tables[0].Rows[0][7] != null ? Convert.ToInt32(ds.Tables[0].Rows[0][7]) : 0; } // 本日运行时间 RPrc_Normal.Maximum = lineWorkingData_Today.本日开机时间 > lineWorkingData_Today.本日开机运行时间 ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(lineWorkingData_Today.本日开机运行时间); RPrc_Normal.Value = lineWorkingData_Today.本日开机运行时间 < 24 ? Convert.ToInt32(lineWorkingData_Today.本日开机运行时间) : 24; Lbl__Normal.Text = string.Concat("本日运行时间:", lineWorkingData_Today.本日开机运行时间.ToString("0.00"), "小时"); // 本日故障时间 RPrc_Fault.Maximum = lineWorkingData_Today.本日开机时间 > lineWorkingData_Today.本日开机故障时间 ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(lineWorkingData_Today.本日开机故障时间); RPrc_Fault.Value = lineWorkingData_Today.本日开机故障时间 < 24 ? Convert.ToInt32(lineWorkingData_Today.本日开机故障时间) : 24; Lbl_Fault.Text = string.Concat("本日故障时间:", lineWorkingData_Today.本日开机故障时间.ToString("0.00"), "小时"); // 本日待机时间 RPrc_Standby.Maximum = lineWorkingData_Today.本日开机时间 > lineWorkingData_Today.本日开机待机时间 ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(lineWorkingData_Today.本日开机待机时间); RPrc_Standby.Value = lineWorkingData_Today.本日开机待机时间 < 24 ? Convert.ToInt32(lineWorkingData_Today.本日开机待机时间) : 24; Lbl_Standby.Text = string.Concat("本日待机时间:", lineWorkingData_Today.本日开机待机时间.ToString("0.00"), "小时"); // 本日缺料时间 RPrc_MaterialShortage.Maximum = lineWorkingData_Today.本日开机时间 > lineWorkingData_Today.本日开机缺料时间 ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(lineWorkingData_Today.本日开机缺料时间); RPrc_MaterialShortage.Value = lineWorkingData_Today.本日开机缺料时间 < 24 ? Convert.ToInt32(lineWorkingData_Today.本日开机缺料时间) : 24; Lbl_MaterialShortage.Text = string.Concat("本日缺料时间:", lineWorkingData_Today.本日开机缺料时间.ToString("0.00"), "小时"); // 本日维修时间 RPrc_Maintenance.Maximum = lineWorkingData_Today.本日开机时间 > lineWorkingData_Today.本日开机维修时间 ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(lineWorkingData_Today.本日开机维修时间); RPrc_Maintenance.Value = lineWorkingData_Today.本日开机维修时间 < 24 ? Convert.ToInt32(lineWorkingData_Today.本日开机维修时间) : 24; Lbl_Maintenance.Text = string.Concat("本日维修时间:", lineWorkingData_Today.本日开机维修时间.ToString("0.00"), "小时"); // 本日未知状态时间 float unknown = lineWorkingData_Today.本日开机时间 - lineWorkingData_Today.本日开机运行时间 - lineWorkingData_Today.本日开机故障时间 - lineWorkingData_Today.本日开机待机时间 - lineWorkingData_Today.本日开机缺料时间; unknown = unknown < 24 ? unknown : 24; unknown = unknown < 0 ? 0 : unknown; RPrc_Unknown.Maximum = lineWorkingData_Today.本日开机时间 > unknown ? Convert.ToInt32(lineWorkingData_Today.本日开机时间) : Convert.ToInt32(unknown); RPrc_Unknown.Value = Convert.ToInt32(unknown); Lbl_Unknown.Text = string.Concat("本次未知状态时间:", unknown.ToString("0.00"), "小时"); } catch (Exception ex) { string str = ex.StackTrace; AddMessage(LogType.Error, "设备报警统计面板初始化出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 更新设备报警信息-48H内的历史报警信息 /// public void UpdDeviceAlarm_History_48H() { try { if (this.InvokeRequired) // 当前线程不是控件UI线程时为true { this.Invoke(new Action(UpdDeviceAlarm_History_48H)); return; } DateTime dateTime = DateTime.Now.AddDays(-2); //// dgv_Current //string querySQL1 = @"select //LineName 线体名称, //AlarmType 报警类型, //AlarmDesc 报警内容, //StartTime 开始时间 //from AlarmData //where StartTime > '{0}' //and PersistTime = 0 //order by StartTime desc"; //querySQL1 = string.Format(querySQL1, dateTime); //SQLHelper.ExecuteNonDataSet(querySQL1, out DataSet ds, ConnString); //if (ds != null && ds.Tables.Count > 0) //{ // dgv_Current.DataSource = ds.Tables[0].DefaultView; //} // dgv_History string querySQL2 = @"select LineName 线体名称, AlarmType 报警类型, AlarmDesc 报警内容, StartTime 开始时间, case when [PersistTime]=0 then '-' else cast([PersistTime] as varchar) end as 耗时 from AlarmData where StartTime > '{0}' order by StartTime desc"; querySQL2 = string.Format(querySQL2, dateTime); DataSet dsHis = SQLHelper_New.Query(querySQL2, null); if (dsHis != null && dsHis.Tables.Count > 0) { dgv_History.DataSource = dsHis.Tables[0].DefaultView; } } catch (Exception ex) { string str = ex.StackTrace; AddMessage(LogType.Error, "更新设备报警History信息出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } /// /// 更新设备报警信息-当前报警信息 /// public void UpdDeviceAlarm_Cur(List deviceAlarm_Curs) { try { if (this.InvokeRequired) // 当前线程不是控件UI线程时为true { this.Invoke(new Action>(UpdDeviceAlarm_Cur), deviceAlarm_Curs); return; } if (deviceAlarm_Curs != null) { dgv_Current.DataSource = deviceAlarm_Curs; } } catch (Exception ex) { string str = ex.StackTrace; AddMessage(LogType.Error, "更新设备当前报警信息出错!异常位置:" + str.Substring(str.LastIndexOf("\\") + 1, str.Length - str.LastIndexOf("\\") - 1) + ";异常信息:" + ex.Message.ToString()); } } #endregion 设备运行信息 private void AddMessage(LogType logType, string msg) { MessageEvent?.Invoke(logType, msg); } } /// /// 当前设备报警 /// public class DeviceAlarm_Cur { //LineName 线体名称, //AlarmType 报警类型, //AlarmDesc 报警内容, //StartTime 开始时间 public string 线体名称 { set; get; } public string 报警类型 { set; get; } public string 报警内容 { set; get; } public DateTime 开始时间 { set; get; } } }