using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.LgClassModel; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinEditors; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.LgCommon { /// /// 实绩管理响应炉号选中事件 /// public delegate void GetStoveResultDelegate(PlnSteelforfurnaceEntity PlnSteelforfurnaceEntity,bool Refresh); public partial class ucStoveQuery : UserControl { public event GetStoveResultDelegate GetStoveResultDelegate; private OpeBase Ob; private List _plines; private string Stove; private volatile bool refresh; private Task rereshTast; private DateTime LastQuery = DateTime.Now; private bool Run = true; private LG_PROCESS _process; private object lockHelper = new object(); public Func GiveUp =null; private bool AskGiveUp = false; private UltraGridRow ugActiveRow; public ucStoveQuery() { InitializeComponent(); } private bool _orderByPline = true; public bool OrderByPline { get { return _orderByPline; } set { _orderByPline = value; ugPlan.DisplayLayout.Bands[0].Columns["CastNo"].Hidden = _orderByPline; } } public string uceStatusText { get { return uceStatus.Text; } set { uceStatus.Text = value; } } public void Init(OpeBase Ob,List Plines,LG_PROCESS process) { this.Ob = Ob; _plines = Plines; _process = process; InitDropDowList(); dtpStart.Value = DateTime.Now.AddDays(-1); dtpEnd.Value = DateTime.Now.AddDays(1); QueryStovePlan(); ClsControlPack.RefreshAndAutoSize(ugPlan); GoNext(); rereshTast = new Task(RereshTask); rereshTast.Start(); } public void RereshTask() { while (Run) { try { Thread.Sleep(2000); if (cbx_AutoRefresh==null) break; if (!cbx_AutoRefresh.Checked) continue; TimeSpan timeSpan = DateTime.Now - LastQuery; if(timeSpan.Seconds<10) continue; if (AskGiveUp) continue; QueryStovePlan(); } catch (Exception) { } } } // 刷新炉次信息 /// /// 刷新炉次信息 /// public void QueryStovePlan() { /*lock (lockHelper) {*/ try{ LastQuery = DateTime.Now; var status = uceStatus.CheckedItems.Select(p => p.DataValue.ToString()).ToList(); if (!chbStatus.Checked || !status.Any()) status = new List(){"10","20","30","40"}; var datas = EntityHelper.GetData( "Core.LgMes.Server.LgDeviceManager.PerformanceManage.SelectPlnSteelforfurnaceEntity", new[] { chbStove.Checked?Edt_StoveNo.Text:"", _plines, !chbGrade.Checked || cbEdt_Steel.SelectedItem==null?"": cbEdt_Steel.SelectedItem.DataValue, status, _process, chbStart.Checked? dtpStart.Value.ToString("yyyyMMdd"):"", chbEnd.Checked? dtpEnd.Value.ToString("yyyyMMdd"):"", OrderByPline }, Ob); ClsControlPack.SaftRefreshUI(ugPlan, () => { plnSteelforfurnaceEntityBindingSource.DataSource = datas; }); } catch (Exception ex) { // ignored } /* }*/ } #region 初始化 public void InitDropDowList() { var vlistGradeCode = ClsBusinessPack.GetValuelistSteel(Ob); cbEdt_Steel.ValueList = vlistGradeCode; var list = ClsBusinessPack.GetStatus(); ClsControlPack.SetGridValuelist(ref ugPlan, "Status", ref list); } #endregion #region 事件 private void btnQuery_Click(object sender, EventArgs e) { QueryStovePlan(); } public void GoNext() { Stove = ""; ugPlan.ActiveRow = ugPlan.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforfurnaceEntity; if (row != null) { int HeatState = 0; int CurrentState = ClsBusinessPack.GetHeatState(_process); int.TryParse(row.HeatState, out HeatState); if ((HeatState <= CurrentState) || row.Status == "10") return true; } return false; }).FirstOrDefault(); if (ugPlan.ActiveRow!=null) ugPlan.Rows[ugPlan.ActiveRow.Index].Activate(); ugPlan_AfterRowActivate(null, null); } private void cbx_AutoRefresh_CheckedChanged(object sender, EventArgs e) { try { btnQuery.Enabled = !cbx_AutoRefresh.Checked; cbEdt_Steel.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked; uceStatus.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked; dtpStart.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked; dtpEnd.Enabled = Edt_StoveNo.Enabled = !cbx_AutoRefresh.Checked; } catch { // ignored } } private void Edt_HeatNo_EditorButtonClick(object sender, EditorButtonEventArgs e) { try { if (cbx_AutoRefresh.Checked) return; if (e.Button.Key.ToUpper().Equals("CLEAR".ToUpper())) { if (!string.IsNullOrEmpty(Edt_StoveNo.Text.Trim())) { Edt_StoveNo.Tag = Edt_StoveNo.Text.Trim(); Edt_StoveNo.Clear(); } else if (Edt_StoveNo.Tag != null) Edt_StoveNo.Text = Convert.ToString(Edt_StoveNo.Tag); } else if (e.Button.Key.ToUpper().Equals("EDIT".ToUpper())) { var frm = new frmHeatNoEditor {InputText = Edt_StoveNo.Text.Trim()}; frm.Location = ClsControlPack.GetChildWindowLocation(frm.Size); if (frm.ShowDialog() == DialogResult.OK) Edt_StoveNo.Text = frm.InputText; } } catch { // ignored } } #endregion private void ucStoveQuery_Load(object sender, EventArgs e) { ClsControlPack.SetReadOnly(ugPlan); EntityHelper.ShowGridCaption(ugPlan.DisplayLayout.Bands[0]); ValueList vlist = ClsBusinessPack.GetHeatStatus(); ClsControlPack.SetGridValuelist(ref ugPlan, "HEATSTATE", ref vlist); ugPlan.DisplayLayout.Bands[0].Columns["CastNo"].MergedCellStyle = MergedCellStyle.Always; } private void ugPlan_AfterRowActivate(object sender, EventArgs e) { // if (Activing) return; /* if (bGiveUp) { ugPlan.ActiveRow = ugActiveRow; bGiveUp = false; // Activing = false; return; }*/ if (refresh) return; if (GetStoveResultDelegate != null && ugPlan.ActiveRow != null) { var plnSteelforfurnaceEntity = ugPlan.ActiveRow.ListObject as PlnSteelforfurnaceEntity; if (plnSteelforfurnaceEntity != null ) { if ( plnSteelforfurnaceEntity.StoveNo!=Stove && Stove != "" && GiveUp != null ) { //询问是否放弃编辑的时候 不刷新界面 AskGiveUp = true; if (!GiveUp()) { //放弃更改炉计划 则聚焦原炉计划 ugPlan.ActiveRow = ugPlan.Rows.AsEnumerable().Where(p => { var row = p.ListObject as PlnSteelforfurnaceEntity; if (row != null && row.StoveNo == Stove) { return true; } return false; }).FirstOrDefault(); AskGiveUp = false; return; } } GetStoveResultDelegate(plnSteelforfurnaceEntity, plnSteelforfurnaceEntity.StoveNo == Stove); Stove = plnSteelforfurnaceEntity.StoveNo; AskGiveUp = false; } } //Activing = false; } private void ugPlan_InitializeRow(object sender, InitializeRowEventArgs e) { PlnSteelforfurnaceEntity plnSteelforfurnaceEntity = e.Row.ListObject as PlnSteelforfurnaceEntity; if (plnSteelforfurnaceEntity==null) return; switch (_process) { case LG_PROCESS.EAF: if (plnSteelforfurnaceEntity.BofStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.BofStarttime) ) { e.Row.Appearance.ResetBackColor(); } else if (plnSteelforfurnaceEntity.BofEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.BofEndtime)) { e.Row.Appearance.BackColor = Color.LightGreen; } else { e.Row.Appearance.BackColor = Color.Yellow; } break; case LG_PROCESS.LF: if (plnSteelforfurnaceEntity.LfsStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.LfsStarttime)) { e.Row.Appearance.ResetBackColor(); } else if (plnSteelforfurnaceEntity.LfsEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.LfsEndtime)) { e.Row.Appearance.BackColor = Color.LightGreen; } else { e.Row.Appearance.BackColor = Color.Yellow; } break; case LG_PROCESS.VD: if (plnSteelforfurnaceEntity.VdStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.VdStarttime)) { e.Row.Appearance.ResetBackColor(); } else if (plnSteelforfurnaceEntity.VdEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.VdEndtime)) { e.Row.Appearance.BackColor = Color.LightGreen; } else { e.Row.Appearance.BackColor = Color.Yellow; } break; case LG_PROCESS.RH: if (plnSteelforfurnaceEntity.RhStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.RhStarttime)) { e.Row.Appearance.ResetBackColor(); } else if (plnSteelforfurnaceEntity.RhEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.RhEndtime)) { e.Row.Appearance.BackColor = Color.LightGreen; } else { e.Row.Appearance.BackColor = Color.Yellow; } break; case LG_PROCESS.CCM: if (plnSteelforfurnaceEntity.CcmStarttime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.CcmStarttime)) { e.Row.Appearance.ResetBackColor(); } else if (plnSteelforfurnaceEntity.CcmEndtime == null || string.IsNullOrEmpty(plnSteelforfurnaceEntity.CcmEndtime)) { e.Row.Appearance.BackColor = Color.LightGreen; } else { e.Row.Appearance.BackColor = Color.Yellow; } break; } } } }