using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.ChemicalWeighingPlc; using Mesnac.Action.ChemicalWeighing.Entity; using Mesnac.Action.ChemicalWeighing.Entity.PptPlan; using Mesnac.Action.ChemicalWeighing.Product.PptPlan; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Timers; using System.Windows.Forms; namespace Mesnac.Action.ChemicalWeighing.Show { public class InitFormAction : ChemicalWeighingAction, IAction { #region 字段定义 public static bool IsFirstRun = true; //是否首次运行 private RuntimeParameter _runtime; //private DbMCControl _planDateControl = null; //计划日期 //private DbMCControl _pptShiftControl = null; //班次 private DbMCControl _clientGridControl = null; //本地计划控件 #endregion public void Run(RuntimeParameter runtime) { base.RunIni(runtime); #region 首次执行,进行事件订阅 if (IsFirstRun) { ICSharpCode.Core.LoggingService.Debug("小料展示界面-窗体初始化业务..."); } #endregion DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Pmt_weigh").FirstOrDefault(); //获取本机台计划控件 if (clientGridControl == null || !(clientGridControl.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Error("{首页展示}缺少本机台计划网格控件..."); return; } StartServer(); // if (IsFirstRun) { //System.Timers.Timer timer = new System.Timers.Timer(5000); //timer.Elapsed += new ElapsedEventHandler(StartServer); //timer.AutoReset = true; //timer.Enabled = true; //timer.Start(); IsFirstRun = false; // } #region 初始化 #region 获取界面控件 string source = string.Empty; //DbMCControl planDateControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "[xl_plan].[Plan_Date]").FirstOrDefault(); //DbMCControl pptShiftControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Pmt_Shiftime").FirstOrDefault(); //DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "xl_plan").FirstOrDefault(); //获取本机台计划网格控件 //if (planDateControl == null) //{ // ICSharpCode.Core.LoggingService.Error("{当班计划-窗体加载} 缺少日期选择控件..."); // return; //} //if (pptShiftControl == null) //{ // ICSharpCode.Core.LoggingService.Error("{当班计划-窗体加载} 缺少班次组合框控件..."); // return; //} //if (clientGridControl == null) //{ // ICSharpCode.Core.LoggingService.Error("{小料展示界面-窗体加载} 缺少计划列表网格控件..."); // return; //} //this._runtime = runtime; //this._clientGridControl = clientGridControl; #endregion #region 初始化操作 //DataGridView clientGrid = (clientGridControl.BaseControl as DataGridView); //this.InitGridViewEvent(clientGrid); //this.InitData(); #endregion #endregion } #region 方法定义 #region 网格事件处理方法 /// /// 初始化网格样式 /// /// DataGridView网格控件对象 private void InitGridViewEvent(DataGridView dgv) { } #endregion #region 初始化界面控件数据 /// /// 初始化界面控件数据 /// private void InitData() { } #endregion #endregion private void StartServer()//object sender, ElapsedEventArgs e { var lblPlanName = base.GetControlById("lblPlanName") as System.Windows.Forms.Label;//配方名称 if (lblPlanName == null) { return; } var lblRecipeName = base.GetControlById("lblRecipeName") as System.Windows.Forms.Label;//配方名称 var lblTotalBatch = base.GetControlById("lblTotalBatch") as System.Windows.Forms.Label;//总批次 //var lblRealBatch = base.GetControlById("lblRealBatch") as System.Windows.Forms.Label;//已处理批次 var lblMaterial = base.GetControlById("lblMaterial") as System.Windows.Forms.Label;//物料名称 var XProgressBar = base.GetControlById("XProgressBar") as System.Windows.Forms.ProgressBar;//进度条 var lblStandardWeight = base.GetControlById("lblStandardWeight") as System.Windows.Forms.Label;//标重 //var lblActualWeight = base.GetControlById("lblActualWeight") as System.Windows.Forms.Label;//实际重量 ////var lblSetError = base.GetControlById("lblActualWeight") as System.Windows.Forms.Label;//总误差 ////var lblActualError = base.GetControlById("lblActualWeight") as System.Windows.Forms.Label;//实际误差 //var lblCurrentBatch = base.GetControlById("lblCurrentBatch") as System.Windows.Forms.Label;//当前批次 //if (lblRecipeName == null) { return; } //int plt_Set_Plan_Serial = 2;// BasePlcHelper.Instance.plt_Set_Plan_Serial.NowValue.ToInt();//执行计划唯一值 List materialList = PlanHelper.GetExecPlan();//正在执行的任务 if (materialList.Count == 0) { return; } int i = 0; foreach (var item in materialList) { if (i == 0) { lblPlanName.Text = item.Plan_Id; lblRecipeName.Text = item.Recipe_Name; lblStandardWeight.Text = item.Total_Weight.ToString(); lblTotalBatch.Text = item.Plan_Num.ToString(); XProgressBar.Maximum =Convert.ToInt32(item.Total_Weight); XProgressBar.Minimum = 0; string no = PlcPlanHelper.GetExecMaterName(); if (!string.IsNullOrEmpty(no)) { int mNo = int.Parse(no); lblMaterial.Text = materialList.SingleOrDefault(d=>d.MID== mNo).Material_name; } int value = Convert.ToInt32(PlcPlanHelper.GetExecMaterWeight()); XProgressBar.Value = value; break; } } DbMCControl clientGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Pmt_weigh").FirstOrDefault(); //获取本机台计划控件 if (clientGridControl == null || !(clientGridControl.BaseControl is DataGridView)) { ICSharpCode.Core.LoggingService.Error("{首页展示}缺少本机台计划网格控件..."); return; } lock (String.Empty) { //本地计划 if (clientGridControl != null && clientGridControl.BaseControl != null) { var data = PlanHelper.GetDataTablePlan(); clientGridControl.BaseControl.BindDataSource = null; clientGridControl.BaseControl.BindDataSource = data; #region 根据计划状态处理背景色 DataGridView clientGrid = clientGridControl.BaseControl as DataGridView; SetBackColor(clientGrid); #endregion } else { ICSharpCode.Core.LoggingService.Warn("接在首页展示物料失败:本地计划控件为Null..."); } } } #region 设置(网格控件)计划状态背景色 /// /// 设置计划状态背景色 /// /// public static void SetBackColor(DataGridView grid) { lock (String.Empty) { try { if (grid == null || grid.Visible == false) { ICSharpCode.Core.LoggingService.Warn("设置背景色失败:网格控件为null或不可见"); return; } grid.ClearSelection(); //清空选中行 grid.ColumnHeadersHeight = 25; grid.ColumnHeadersDefaultCellStyle.Font = new System.Drawing.Font("宋体", 10F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); grid.RowHeadersVisible = false; grid.RowTemplate.Height = 28; grid.RowsDefaultCellStyle.Font = new System.Drawing.Font("宋体", 12, System.Drawing.FontStyle.Bold); foreach (DataGridViewRow row in grid.Rows) { row.DefaultCellStyle.BackColor = System.Drawing.Color.FromArgb(220, 220, 220); //灰色 } } catch (Exception ex) { ICSharpCode.Core.LoggingService.Error("设置背景色失败:" + ex.Message); } } } #endregion } }