123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278 |
- 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 变量
- /// <summary>
- /// 日志
- /// </summary>
- 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 设备运行信息
- /// <summary>
- /// 更新设备运行信息-本次(废弃)
- /// </summary>
- /// <param name="lineWorkingData">设备信息</param>
- public void UpdDeviceStatus_ThisTime(LineWorkingData_ThisTime lineWorkingData)
- {
- if (this.InvokeRequired) // 当前线程不是控件UI线程时为true
- {
- this.Invoke(new Action<LineWorkingData_ThisTime>(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"), "小时");
- }
- /// <summary>
- /// 更新设备运行信息-本日
- /// </summary>
- 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());
- }
- }
- /// <summary>
- /// 更新设备报警信息-48H内的历史报警信息
- /// </summary>
- 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());
- }
- }
- /// <summary>
- /// 更新设备报警信息-当前报警信息
- /// </summary>
- public void UpdDeviceAlarm_Cur(List<DeviceAlarm_Cur> deviceAlarm_Curs)
- {
- try
- {
- if (this.InvokeRequired) // 当前线程不是控件UI线程时为true
- {
- this.Invoke(new Action<List<DeviceAlarm_Cur>>(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);
- }
- }
- /// <summary>
- /// 当前设备报警
- /// </summary>
- public class DeviceAlarm_Cur
- {
- //LineName 线体名称,
- //AlarmType 报警类型,
- //AlarmDesc 报警内容,
- //StartTime 开始时间
- public string 线体名称 { set; get; }
- public string 报警类型 { set; get; }
- public string 报警内容 { set; get; }
- public DateTime 开始时间 { set; get; }
- }
- }
|