using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data; using ICSharpCode.Core; using Mesnac.Controls.Base; using Mesnac.Action.Base; using Mesnac.Codd.Session; using Mesnac.Action.ChemicalWeighing.Entity; using Mesnac.Action.ChemicalWeighing.Technical; namespace Mesnac.Action.ChemicalWeighing.FinishBatch.SCADAHelper { public class AlarmRefreshAction : ChemicalWeighingAction,IAction { #region 事件定义 /// /// 刷新计划事件 /// public static event EventHandler OnAlarmRefresh; #endregion #region 字段定义 private RuntimeParameter _runtime; private IBaseControl _clientGridControl = null; //报警信息列表控件 private IBaseControl _clientAlarmInfoControl = null; //报警控件容器 Mesnac.Controls.Default.MultiColHeaderDgv clientGrid = null; #endregion #region IAction接口实现 public void Run(RuntimeParameter runtime) { Global.PublicVar.Instance.isFlashFlag = false; base.RunIni(runtime); //必须要调用的 this._runtime = runtime; #region 事件订阅 if (true) { Mesnac.Basic.InvokeHelper.OnAlarmRefresh -= Process_Event; Mesnac.Basic.InvokeHelper.OnAlarmRefresh += Process_Event; // //报警刷新保存事件绑定 // SaveHelper.AlarmSaveHelper.Instance.sender = runtime; // SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave -= Process_Event; // SaveHelper.AlarmSaveHelper.Instance.OnAlarmSave += Process_Event; } #endregion IBaseControl baseControl = null; IBaseControl infoControl = null; bool gridFlag = false; bool infoFlag = false; foreach(IBaseControl ib in GetAllMCControls()) { if(ib.MCKey == null) { continue; } else { if(ib.MCKey == "alarmDG") { baseControl = ib; gridFlag = true; } if(ib.MCKey == "alarmInfoList") { infoControl = ib; infoFlag = true; } } if(gridFlag && infoFlag) { break; } } if (baseControl == null || !(baseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Error("{当班计划—刷新计划}缺少本机台计划网格控件..."); //return; } this._clientGridControl = baseControl; this._clientAlarmInfoControl = infoControl; this.DoWork(); } #endregion #region 方法定义 /// /// 刷新计划 /// protected void DoWork() { #region 业务实现 DataTable table = DataListShow(); lock (String.Empty) { //本地计划 if (this._clientGridControl != null && this._clientAlarmInfoControl != null) { if (table != null) { _clientGridControl.BindDataSource = null; _clientGridControl.BindDataSource = table; if (Global.PublicVar.Instance.AlarmStrList != null && Global.PublicVar.Instance.AlarmStrList.Count != 0) { this._clientAlarmInfoControl.MCVisible = true; } else { this._clientAlarmInfoControl.MCVisible = false; } } else { this._clientAlarmInfoControl.MCVisible = false; } } else { ICSharpCode.Core.LoggingService.Warn("刷新本地计划失败:本地计划控件为Null..."); } } #endregion #region 触发事件 if (OnAlarmRefresh != null) { OnAlarmRefresh(this._runtime.BaseControl.MCRoot, System.EventArgs.Empty); } #endregion } #endregion #region 事件处理方法 private void Process_Event(object sender, EventArgs e) { if (sender is RuntimeParameter) { this.Run(sender as RuntimeParameter); } else { this.Run(this._runtime); } } #endregion #region DataTable数据整理显示 private DataTable DataListShow() { DataTable dataTable = null; if(Global.PublicVar.Instance.AlarmStrList != null && Global.PublicVar.Instance.AlarmStrList.Count > 0) { dataTable = new DataTable(); DataColumn SerialNumColumnText = new DataColumn("SerialNum", Type.GetType("System.String")); DataColumn ShowTextColumnText = new DataColumn("ShowText", Type.GetType("System.String")); dataTable.Columns.Add(SerialNumColumnText); dataTable.Columns.Add(ShowTextColumnText); for (int i = 0;i< Global.PublicVar.Instance.AlarmStrList.Count;i++) { DataRow dataRow = dataTable.NewRow(); dataRow["SerialNum"] = (i + 1).ToString(); dataRow["ShowText"] = Global.PublicVar.Instance.AlarmStrList[i]; dataTable.Rows.Add(dataRow); } } return dataTable; } #endregion } }