using System; using System.Data; using System.Linq; using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.LjMaterial; namespace Mesnac.Action.ChemicalWeighing.LjPlanning { public class InItDbAction:ChemicalWeighingAction, IAction { private DbMCControl _materialGridControl = null; //物料列表控件 private RuntimeParameter _runtime; public void Run(RuntimeParameter runtime) { base.RunIni(runtime); //必须调用 this._runtime = runtime; AddAction.OnAdd -= Process_Event; AddAction.OnAdd += Process_Event; UpdateAction.OnUpdate -= Process_Event; UpdateAction.OnUpdate += Process_Event; DbMCControl materialGridControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "lj_planning") .FirstOrDefault(); //获取物料数据控件 this._materialGridControl = materialGridControl; FileControl(); } private void FileControl() { DataTable table = DBHelp.GetTable(@"select Id,PlanName, PlanNo, Status, CreateTime, UpdateTime, BegTime, EndTime, NumCar, Unit, Remark, IsEnable, FormulaId, FormulaName,'' as StatusName ,ClassName from lj_planning where IsEnable=1 order by CreateTime desc "); if (this._materialGridControl != null && this._materialGridControl.BaseControl != null) { if (table.Columns["StatusName"].ReadOnly) { table.Columns["StatusName"].ReadOnly = false; } table.Columns["StatusName"].MaxLength = 20; //-1 任务暂停 0 新建任务 1 任务下发 2 重发 3执行中 10 任务完成 11 放弃 20 异常 foreach (DataRow tableRow in table.Rows) { int status = Convert.ToInt32(tableRow["Status"].ToString()); string statusName = ""; switch (status) { case -1: statusName = "任务暂停"; break; case 0: statusName = "新建任务"; break; case 1: statusName = "任务下发"; break; case 2: statusName = "重发"; break; case 3: statusName = "执行中"; break; case 10: statusName = "任务完成"; break; case 20: statusName = "异常"; break; } tableRow["StatusName"] = statusName; } this._materialGridControl.BaseControl.BindDataSource = null; this._materialGridControl.BaseControl.BindDataSource = table; DBLog("下发计划!"); } else { ICSharpCode.Core.LoggingService.Warn("刷新物料信息失败:物料数据控件为Null..."); } } #region 事件处理方法 private void Process_Event(object sender, EventArgs e) { if (sender is RuntimeParameter) { this.Run(sender as RuntimeParameter); } else { this.Run(this._runtime); } } #endregion } }