using System; using System.Collections; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using Core.Mes.Client.Comm.Format; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.Mcp.Control; using Core.StlMes.Client.Mcp.Control.Entity; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; namespace Core.StlMes.Client.Mcp.Mch { public partial class FrmScrapNum : FrmBase { private readonly List SignOfflineMatNo = new DataSourceList(); private string _heatPlanNo; private string _batchNo; private string _gx; private string _userName; private string _shift; private string _group; private List list; public FrmScrapNum(OpeBase ob, string heatPlanNo, string BatchNo, string gx, string Username, string Shift, string Group) { InitializeComponent(); this.ob = ob; SignOfflineMatNo = new DataSourceList(); _batchNo = BatchNo; _gx = gx; _userName = Username; _shift = Shift; _group = Group; list = EntityHelper.GetData( "com.steering.mes.mcp.common.PlanService.getQueryJGPortVrphot", new object[] { heatPlanNo, BatchNo }, ob); mchOfflineResultEntityBindingSource.DataSource = new List(); EntityHelper.ShowGridCaption(ultraGridDetailDes1.DisplayLayout.Bands[1]); } public string alamNum = ""; public string scrapNum = ""; public string testOfflineNum = ""; private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e) { switch (e.Tool.Key) { case "Save": Save(); break; case "Close": CloseFrm(); break; } } private void CloseFrm() { this.DialogResult = System.Windows.Forms.DialogResult.Cancel; this.Close(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); ultraGridDetailDes1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; ultraGridDetailDes1.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default; var dt = ServerHelper.GetData( "com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo", new object[] { "7014" }, ob); ucMemo.DataSource = dt; ucMemo.DisplayMember = "BASENAME"; ucMemo.ValueMember = "BASENAME"; } /// /// 保存离线 /// private void Save() { this.ultraGridDetailDes1.UpdateData(); if (MessageUtil.ShowYesNoAndQuestion("是否离线?") == DialogResult.No) return; var list1 = mchOfflineResultEntityBindingSource.DataSource as List; list1 = list1.Where(p => p.Chk).ToList(); if (list1.Any(p => p.OfflineNum == null || p.OfflineNum == 0)) { MessageUtil.ShowTips("支数不能为空或者为零支,请输入!"); return; } if (list1.Any(p => !p.OfflineNum.ToString2().TryParseInt())) { MessageUtil.ShowTips("支数请输入整数!"); return; } CoreClientParam ccp = new CoreClientParam(); try { this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待 if (Constant.WaitingForm == null) { Constant.WaitingForm = new WaitingForm(); } Constant.WaitingForm.ShowToUser = true; Constant.WaitingForm.Show(); Constant.WaitingForm.Update(); ccp.ServerName = "com.steering.mes.mcp.common.OfflineHelper"; ccp.MethodName = "MchOffLine"; ccp.ServerParams = new Object[] { list1.Select(JSONFormat.Format).ToList() }; ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal); this.Cursor = Cursors.Default; Constant.WaitingForm.ShowToUser = false; Constant.WaitingForm.Close(); Constant.WaitingForm = null; } catch (Exception ex) { this.Cursor = Cursors.Default; Constant.WaitingForm.ShowToUser = false; Constant.WaitingForm.Close(); Constant.WaitingForm = null; } if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("离线成功!")) { this.DialogResult = System.Windows.Forms.DialogResult.OK; } } } private void ultraGridDetailDes1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e) { this.ultraGridDetailDes1.UpdateData(); GridEdite(e.Cell.Row); MchOfflineResultEntity Entity = e.Cell.Row.ListObject as MchOfflineResultEntity; if ((e.Cell.Column.Key == "Check") && e.Cell.Row.HasParent()) { var t = e.Cell.Row.ListObject as PortMchBatchSampleResultEntityWithCheck; if ((bool)e.Cell.Value) AddWes(t); else RemoveWes(t); ultraGridDetailDes1.UpdateData(); var MchOfflineResultEntity = e.Cell.Row.ParentRow.ListObject as MchOfflineResultEntity; MchOfflineResultEntity.OfflineNum = MchOfflineResultEntity.ListPortMarts.Count(p => p.Check); } else if ((e.Cell.Column.Key == "OfflineNum") && e.Cell.Row.HasChild()) { var MchOfflineResultEntity = e.Cell.Row.ListObject as MchOfflineResultEntity; if ((MchOfflineResultEntity != null) && (MchOfflineResultEntity.OfflineNum != null)) { var signedData = MchOfflineResultEntity.ListPortMarts.Where(p => p.Check).ToList(); int count = 0; if (!int.TryParse(MchOfflineResultEntity.OfflineNum.ToString3(), out count)) { count = 0; } if (signedData.Count >= count) signedData.Skip(count).ToList().ForEach(RemoveWes); else MchOfflineResultEntity.ListPortMarts.Where(p => { if (p.InstoreFlag == "已入库" || p.MatStatus != "合格") return false; return !SignOfflineMatNo.Contains(p.MatNo); } ).ToList() .OrderBy( p=> p.IsSamplePipe ).ThenBy(p=>p.MatNo) .Take(count - signedData.Count).ToList().ForEach( AddWes ); var listCheck = MchOfflineResultEntity.ListPortMarts.Where(p => p.Check).ToList(); int Count = listCheck.Count; if (Count < count) { MessageBox.Show("无足够的合格管可以离线,请检查是否入库或者已经离线!"); MchOfflineResultEntity.OfflineNum = Count; ultraGridDetailDes1.PerformAction(UltraGridAction.ExitEditMode); } } } ultraGridDetailDes1.UpdateData(); if (e.Cell.Row.HasParent()) ultraGridDetailDes1.PerformAction(UltraGridAction.ExitEditMode); ultraGridDetailDes1.Refresh(); } public void AddWes(PortMchBatchSampleResultEntityWithCheck t) { try { if (t.InstoreFlag == "已入库") { MessageBox.Show("该管号已入库!"); t.Check = false; return; } if (t.MatStatus != "合格") { MessageBox.Show("该管号不是合格管号!"); t.Check = false; return; } if (SignOfflineMatNo.Contains(t.MatNo)) { MessageBox.Show("该管号在另一行已被标记将要离线!"); t.Check = false; return; } SignOfflineMatNo.Add(t.MatNo); t.Check = true; } catch (Exception ex) { MessageBox.Show(ex.Message); t.Check = false; } } public void RemoveWes(PortMchBatchSampleResultEntityWithCheck t) { try { t.Check = false; SignOfflineMatNo.Remove(t.MatNo); } catch (Exception ex) { } } /// /// /// ulltragrid控件受勾影响(打钩可编辑,不打勾不能编辑)** /// /// private void GridEdite(UltraGridRow row) { if(row.HasParent()) return; if (row.GetValue("Chk") == "True") { foreach (UltraGridCell cell in row.Cells) { if (cell.Column.CellActivation == Activation.AllowEdit) { cell.Activation = Activation.AllowEdit; } } } else { foreach (UltraGridCell cell in row.Cells) { if (cell.Column.Key.Contains("Chk")) continue; if (cell.Column.CellActivation == Activation.AllowEdit) { cell.Activation = Activation.ActivateOnly; } } } ultraGridDetailDes1.UpdateData(); } private void ultraGridDetailDes1_AfterRowInsert(object sender, RowEventArgs e) { this.ultraGridDetailDes1.UpdateData(); MchOfflineResultEntity currentEntity = e.Row.ListObject as MchOfflineResultEntity; currentEntity.ListPortMarts = list.Select(p => p.Clone()).ToList(); var listOk = currentEntity.ListPortMarts.Where(p => { if (p.InstoreFlag == "已入库" || p.MatStatus != "合格") return false; return !SignOfflineMatNo.Contains(p.MatNo); } ) .ToList(); try { currentEntity.OfflineNum = listOk.Count; listOk.ForEach(AddWes); } catch (Exception) { currentEntity.OfflineNum = 0; } ultraGridDetailDes1.DisplayLayout.Bands[1].Columns["BarCode"].PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand, true); GridEdite(e.Row); ultraGridDetailDes1.UpdateData(); ultraGridDetailDes1.Refresh(); } private void ultraGridDetailDes1_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e) { if (ultraGridDetailDes1.ActiveRow == null) e.TemplateAddRow.Activated = true; } } }