using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Windows.Forms; using com.steering.mes.mcp.entity; using Core.Mes.Client.Comm.Server; using Core.Mes.Client.Comm.Tool; using Core.StlMes.Client.Mcp.Control.Common; using Core.StlMes.Client.Mcp.Control.Entity; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using Infragistics.Win.UltraWinToolbars; namespace Core.StlMes.Client.Mcp.Control { public partial class FrmScrapHttNew : FrmBase { private readonly List BatchNos; private string heatPlanNo = ""; private readonly List SignSuspiciousMatNo = new DataSourceList(); private readonly List SignWasteMatNo = new DataSourceList(); private string DefaultBatchNo = ""; public FrmScrapHttNew(OpeBase ob) { InitializeComponent(); this.ob = ob; SuspiciousList = new List(); ScrappedList = new List(); } public FrmScrapHttNew(OpeBase ob, List list1, List list2, bool ShowSuspicious, string HeatPlanNo, int processSeq, string FailCode, string OnlyBatchNo, string defaultBatchNo = "", List portHttBatch = null, List _signWasteMatNo =null) { InitializeComponent(); this.ob = ob; heatPlanNo = HeatPlanNo; DefaultBatchNo = defaultBatchNo; EntityHelper.ShowGridCaption(ultraGridDetailDes1.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridDetailDes2.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridDetailDes1.DisplayLayout.Bands[1]); EntityHelper.ShowGridCaption(ultraGridDetailDes2.DisplayLayout.Bands[1]); ClientSize = new Size(1400 / 2, ClientSize.Height); if (!ShowSuspicious) splitMain.Panel1Collapsed = true; else splitMain.Panel2Collapsed = true; ultraGridDetailDes1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; ultraGridDetailDes2.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; SuspiciousList = list1 == null ? new List() : list1.Select(p => p.Clone()).ToList(); ScrappedList = list2 == null ? new List() : list2.Select(p => p.Clone()).ToList(); //下拉选探伤废品原因 var dt2 = ServerHelper.GetData("com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo", new object[] {"6005"}, ob); kreason.DataSource = dt2; kreason.DisplayMember = "BASENAME"; kreason.ValueMember = "BASECODE"; YdmBaseClass.SetComboItemHeight(kreason); var dt3 = ServerHelper.GetData("com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo", new object[] {FailCode}, ob); reason.DataSource = dt3; reason.DisplayMember = "BASENAME"; reason.ValueMember = "BASECODE"; YdmBaseClass.SetComboItemHeight(reason); if (portHttBatch!=null) { PortHttBatch = portHttBatch; } else { PortHttBatch = EntityHelper.GetData( "com.steering.mes.mcp.common.PlanService.getQueryDbkPortVrphot", new object[] {HeatPlanNo, processSeq}, ob); } if (PortHttBatch==null) return; /* var dt4 = ServerHelper.GetData("com.steering.mes.mcp.heatTreatment.ScrapHelper.doQueryBatchNo", new object[] { heatPlanNo, processSeq }, ob); if (dt4.Rows.Count <= 0) { var row = dt4.NewRow(); row["PHY_BATCH_NO"] = defaultBatchNo; dt4.Rows.Add(row); }*/ if (defaultBatchNo != "") { PortHttBatch.ForEach(p => p.PhyBatchNo = defaultBatchNo); } BatchNos = OnlyBatchNo != "" ? new List() { OnlyBatchNo } : PortHttBatch.Select(p => p.PhyBatchNo).Distinct().ToList(); kBatchNo.DataSource = BatchNos; /* kBatchNo.DisplayMember = "PhyBatchNo"; kBatchNo.ValueMember = "PhyBatchNo";*/ YdmBaseClass.SetComboItemHeight(kBatchNo); BatchNo.DataSource = BatchNos; /* BatchNo.DisplayMember = "PhyBatchNo"; BatchNo.ValueMember = "PhyBatchNo";*/ YdmBaseClass.SetComboItemHeight(BatchNo); List SuspiciousList1 = SuspiciousList.Select(SetData).ToList(); List ScrappedList1 = ScrappedList.Select(SetData).ToList(); SuspiciousList1.ForEach(p => p.ListPortMarts = PortHttBatch.Select(q => { PortHttBatchSampleResultEntityWithCheck data = q.Clone(); if (!string.IsNullOrEmpty(p.MatNo) && p.MatNo.Split(',').Contains(q.MatNo)) data.Check = true; return data; }).ToList()); ScrappedList1.ForEach(p => p.ListPortMarts = PortHttBatch.Select(q => { PortHttBatchSampleResultEntityWithCheck data = q.Clone(); if (!string.IsNullOrEmpty(p.MatNo) && p.MatNo.Split(',').Contains(q.MatNo)) data.Check = true; return data; }).ToList()); SignSuspiciousMatNo = SuspiciousList1.SelectMany(p => p.MatNo.Split(',').ToList()).ToList(); SignWasteMatNo = _signWasteMatNo ?? ScrappedList1.SelectMany(p => p.MatNo.Split(',').ToList()).ToList(); httWasteResultEntityBindingSource1.DataSource = SuspiciousList1; httWasteResultEntityBindingSource2.DataSource = ScrappedList1; } protected override void OnLoad(EventArgs e) { base.OnLoad(e); foreach (var ugc in ultraGridDetailDes1.DisplayLayout.Bands[1].Columns) ugc.SortIndicator = SortIndicator.Disabled; foreach (var ugc in ultraGridDetailDes2.DisplayLayout.Bands[1].Columns) ugc.SortIndicator = SortIndicator.Disabled; } private List PortHttBatch { get; set; } /// /// 可疑 /// public List SuspiciousList { get; private set; } /// /// 废品 /// public List ScrappedList { get; private set; } private void ultraToolbarsManager1_ToolClick(object sender, ToolClickEventArgs e) { switch (e.Tool.Key) { case "Save": Save(); break; case "Close": CloseFrm(); break; } } private void CloseFrm() { DialogResult = DialogResult.Cancel; Close(); } /// /// 保存可疑、剔除品 /// private void Save() { ultraGridDetailDes1.UpdateData(); ultraGridDetailDes2.UpdateData(); var list1 = httWasteResultEntityBindingSource1.DataSource as List; list1 = list1.Where(p => p.Chk).Select(p => { var list = p.ListPortMarts.Where(q => q.Check).ToList(); p.MatNo = list.Any() ? list .Select(q => q.MatNo) .Aggregate((a, b) => a + (a == "" ? "" : ",") + b) : ""; p.DefFillWt = list.Any() ? list .Sum(q => q.ActWeight ?? 0) : 0; return p; }).ToList(); foreach (var httWasteResultEntity in list1) { if (httWasteResultEntity.DefFillCode == "") { MessageUtil.ShowTips("可疑原因不能为空,请选择!"); return; } if ((httWasteResultEntity.DefFillNum == null) || (httWasteResultEntity.DefFillNum <= 0)) { MessageUtil.ShowTips("可疑支数不能为空或者为零支,请输入!"); return; } } var list2 = httWasteResultEntityBindingSource2.DataSource as List; list2 = list2.Where(p => p.Chk).Select(p => { var list = p.ListPortMarts.Where(q => q.Check).ToList(); p.MatNo = list.Any() ? list .Select(q => q.MatNo) .Aggregate((a, b) => a + (a == "" ? "" : ",") + b) : ""; p.DefFillWt = list.Any() ? list .Sum(q => q.ActWeight??0) : 0; return p; }).ToList(); foreach (var httWasteResultEntity in list2) { if (httWasteResultEntity.DefFillCode == "") { MessageUtil.ShowTips("废品原因不能为空,请选择!"); return; } if ((httWasteResultEntity.DefFillNum == null) || (httWasteResultEntity.DefFillNum <= 0)) { MessageUtil.ShowTips("废品支数不能为空或者为零支,请输入!"); return; } } SuspiciousList = list1.Select(p => p as HttWasteResultEntity).ToList(); ScrappedList = list2.Select(p=>p as HttWasteResultEntity).ToList(); DialogResult = DialogResult.OK; } private void FrmScrap_Load(object sender, EventArgs e) { EntityHelper.ShowGridCaption(ultraGridDetailDes1.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGridDetailDes2.DisplayLayout.Bands[0]); splitMain.SplitterDistance = splitMain.Size.Width/2; } private void ultraGridDetailDes1_CellChange(object sender, CellEventArgs e) { var UltraGrid = sender as UltraGrid; UltraGrid.UpdateData(); if (e.Cell.Column.Key == "Chk") GridEdite(e.Cell.Row); else if (e.Cell.Column.Key == "DefFillCode") e.Cell.Row.Cells["DefFillName"].Value = e.Cell.Text; else if ((e.Cell.Column.Key == "Check") && e.Cell.Row.HasParent()) { var t = e.Cell.Row.ListObject as PortHttBatchSampleResultEntityWithCheck; if (UltraGrid == ultraGridDetailDes1) if((bool)e.Cell.Value) AddSuspicious(t); else RemoveSuspicious(t); else if ((bool)e.Cell.Value) AddWes(t); else RemoveWes(t); UltraGrid.UpdateData(); var HttWasteResultEntity = e.Cell.Row.ParentRow.ListObject as HttWasteResultEntityWithList; HttWasteResultEntity.DefFillNum = HttWasteResultEntity.ListPortMarts.Count(p => p.Check); } else if ((e.Cell.Column.Key == "DefFillNum") && e.Cell.Row.HasChild()) { var HttWasteResultEntity = e.Cell.Row.ListObject as HttWasteResultEntityWithList; if ((HttWasteResultEntity != null) && (HttWasteResultEntity.DefFillNum != null)) { var signedData = HttWasteResultEntity.ListPortMarts.Where(p => p.Check).ToList(); if (signedData.Count >= HttWasteResultEntity.DefFillNum) signedData.Skip((int) HttWasteResultEntity.DefFillNum).ToList().ForEach(p => { if (UltraGrid == ultraGridDetailDes1) RemoveSuspicious(p); else RemoveWes(p); }); else HttWasteResultEntity.ListPortMarts.Where(p => { if (UltraGrid == ultraGridDetailDes1) { if (p.MatStatus != "合格") return false; return !SignSuspiciousMatNo.Contains(p.MatNo); } else { if (p.InstoreFlag == "已入库" || p.MatStatus != "合格") return false; return !SignWasteMatNo.Contains(p.MatNo); } } ) .OrderBy( p => p.IsSamplePipe ).ThenBy(p => p.MatNo) .Take((int) HttWasteResultEntity.DefFillNum - signedData.Count).ToList().ForEach(p => { if (UltraGrid == ultraGridDetailDes1) AddSuspicious(p); else AddWes(p); }); var listCheck = HttWasteResultEntity.ListPortMarts.Where(p => p.Check).ToList(); int Count = listCheck.Count; if (Count < HttWasteResultEntity.DefFillNum) { MessageBox.Show("无足够的合格管标废!"); HttWasteResultEntity.DefFillNum = Count; UltraGrid.PerformAction(UltraGridAction.ExitEditMode); } } } UltraGrid.UpdateData(); if (e.Cell.Row.HasParent()) UltraGrid.PerformAction(UltraGridAction.ExitEditMode); UltraGrid.Refresh(); } /// /// ulltragrid控件受勾影响(打钩可编辑,不打勾不能编辑)** /// /// private void GridEdite(UltraGridRow row) { if (row.HasParent()) return; if (row.GetValue("Chk") == "True") { foreach (var cell in row.Cells) if (cell.Column.CellActivation == Activation.AllowEdit) cell.Activation = Activation.AllowEdit; } else { foreach (var cell in row.Cells) { if (cell.Column.Key.Contains("Chk")) continue; if (cell.Column.CellActivation == Activation.AllowEdit) cell.Activation = Activation.ActivateOnly; } } ultraGridDetailDes1.UpdateData(); ultraGridDetailDes2.UpdateData(); } private void ultraGridDetailDes_AfterRowInsert(object sender, RowEventArgs e) { var HttWasteResultEntity = e.Row.ListObject as HttWasteResultEntityWithList; if ((BatchNos != null) && (BatchNos.Count > 0)) HttWasteResultEntity.BatchNo = BatchNos[BatchNos.Count - 1]; if (PortHttBatch!=null) HttWasteResultEntity.ListPortMarts = PortHttBatch.Select(q => q.Clone()).ToList(); GridEdite(e.Row); } private void ultraGridDetailDes1_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e) { if (ultraGridDetailDes1.ActiveRow == null) e.TemplateAddRow.Activated = true; } private void ultraGridDetailDes2_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e) { if (ultraGridDetailDes2.ActiveRow == null) e.TemplateAddRow.Activated = true; } public void AddWes(PortHttBatchSampleResultEntityWithCheck t) { try { if (t.InstoreFlag == "已入库") { MessageBox.Show("该管号已入库!"); t.Check = false; } if (t.MatStatus != "合格") { MessageBox.Show("该管号不是合格管号!"); t.Check = false; return; } if (SignWasteMatNo.Contains(t.MatNo)) { MessageBox.Show("该管号已被标记废品!"); t.Check = false; return; } SignWasteMatNo.Add(t.MatNo); t.Check = true; } catch (Exception ex) { MessageBox.Show(ex.Message); t.Check = false; } } public void AddSuspicious(PortHttBatchSampleResultEntityWithCheck t) { try { if (t.MatStatus != "合格") { MessageBox.Show("该管号不是合格管号!"); t.Check = false; return; } if (SignSuspiciousMatNo.Contains(t.MatNo)) { MessageBox.Show("该管号已被标记可疑!"); t.Check = false; return; } SignSuspiciousMatNo.Add(t.MatNo); t.Check = true; } catch (Exception ex) { MessageBox.Show(ex.Message); t.Check = false; } } public void RemoveWes(PortHttBatchSampleResultEntityWithCheck t) { try { t.Check = false; SignWasteMatNo.Remove(t.MatNo); } catch (Exception ex) { } } public void RemoveSuspicious(PortHttBatchSampleResultEntityWithCheck t) { try { t.Check = false; SignSuspiciousMatNo.Remove(t.MatNo); } catch (Exception ex) { } } private void ultraGridDetailDes2_InitializeRow(object sender, InitializeRowEventArgs e) { if (e.Row.HasParent()) if (!e.Row.Cells["MatStatus"].Text.Equals("合格")) e.Row.Cells["MatStatus"].Appearance.ForeColor = Color.Red; } public HttWasteResultEntityWithList SetData(HttWasteResultEntity HttWasteResultEntity) { return new HttWasteResultEntityWithList() { Chk = true, DefSerialItem = HttWasteResultEntity.DefSerialItem, DefSerialNo = HttWasteResultEntity.DefSerialNo, HeatPlanNo = HttWasteResultEntity.HeatPlanNo, DefFillNo = HttWasteResultEntity.DefFillNo, DefFillCode = HttWasteResultEntity.DefFillCode, DefFillName = HttWasteResultEntity.DefFillName, DefFillNum = HttWasteResultEntity.DefFillNum, CreTime = HttWasteResultEntity.CreTime, ResultNo = HttWasteResultEntity.ResultNo, PlineCode = HttWasteResultEntity.PlineCode, PlineName = HttWasteResultEntity.PlineName, DefFillWt = HttWasteResultEntity.DefFillWt, TotalLen = HttWasteResultEntity.TotalLen, BatchNo = DefaultBatchNo != ""? DefaultBatchNo: HttWasteResultEntity.BatchNo, MatNo = HttWasteResultEntity.MatNo, }; } } }