using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Windows.Forms; using com.steering.mes.mcp.entity; using Core.Mes.Client.Comm.Control; 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.Common; using Core.StlMes.Client.Mcp.Control.Entity; using Core.StlMes.Client.Mcp.Mch.Entity; using Core.StlMes.Client.Mcp.Mch.MchResult; using CoreFS.CA06; using Infragistics.Win; using Infragistics.Win.UltraWinGrid; using ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle; using MchOfflineResultEntity = Core.StlMes.Client.Mcp.Control.Entity.MchOfflineResultEntity; using PortMchBatchSampleResultEntity = Core.StlMes.Client.Mcp.Mch.Entity.PortMchBatchSampleResultEntity; namespace Core.StlMes.Client.Mcp.Mch { public partial class FrmMeasureResult : FrmMchBase { public FrmMeasureResult() { InitializeComponent(); mchControlBase1 = new MeasureControl() { Dock = DockStyle.Fill }; plnEdit.Controls.Add(mchControlBase1); } protected override UltraGridRow ActitveResultRow { get { return CrackDetectGrid.ActiveRow; } } protected override object Value { get { return (mchControlBase1 as MeasureControl).Value; } } protected override void OnLoad(EventArgs e) { base.OnLoad(e); EntityHelper.ShowGridCaption(CrackDetectGrid.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ugData.DisplayLayout.Bands[0]); EntityHelper.ShowGridCaption(ultraGrid2.DisplayLayout.Bands[0]); base.ultraGrid1.DisplayLayout.Bands[0].Columns["ActCount"].Hidden = true; base.ultraGrid1.DisplayLayout.Bands[0].Columns["ActWeight"].Hidden = true; base.ultraGrid1.DisplayLayout.Bands[0].Columns["BatchGroudNo"].Hidden = true; CrackDetectGrid.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False; CrackDetectGrid.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default; ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].Hidden = false; ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].ButtonDisplayStyle = ButtonDisplayStyle.Always; ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].EditorComponent = uteMeasureData; ultraOptionSet2.Visible = false; portMchBatchControl1.ShowSeq = true; egbOther.Expanded = true; base.ultraGrid1.DisplayLayout.Bands[0].Columns["FilePath2"].Hidden = false; } protected override void DoAdd() { if (ActiveRow != null) { int num = 0; int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num); if( num==null || num<0) { MessageBox.Show("请输入正确的作业支数"); return; } List Detail = (mchControlBase1 as MeasureControl).MeasureData; if (Detail.Any()) { if (Detail.Sum(p => p.ActCount) != num) { MessageBox.Show("手动维护的数据的支数和作业支数不符合"); return; } } var list = portMchBatchControl1.Data.Where( p => p.TrFlag != "1" && !mchControlBase1.ScrappedList.Any(q => q.MatNo.Split(',').Contains(p.MatNo)) && (((p.MatStatus == "00") || (p.MatStatus == "合格")) || (p.MatStatus == "剔除" && mchControlBase1.CheckGx(p.OpProcessCode, Gx)) )).Take(num).ToList(); if (list.Count != num) { List mchOffline = EntityHelper.GetData("com.steering.mes.mcp.common.OfflineHelper.QueryMchOffLineData", new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo }, ob); if (mchOffline.Any(p => p.ReNum == null || p.ReNum <= 0)) { MessageBox.Show( mchOffline.Any(p => (p.ReNum == null || p.ReNum <= 0) && p.SubcontractcompleteNum > 0) ? "无足够的合格在线管, 存在离线委托已经完成的管未返线, 请联系出料人员对该炉批进行返线操作!" : "无足够的合格在线管, 存在离线数据未返线, 请联系出料人员对该炉批进行返线操作!"); return; } } if(list.Any(p=>p.OutnumCut!=1)) { MessageBox.Show("存在管号未分切, 请先录入分切!"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No) return; List MatNos = list.Select(p => p.MatNo).ToList(); var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult"; ccp.MethodName = "DoAdd"; ccp.ServerParams = new object[] { JSONFormat.Format(Value), Gx, mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(), mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(), MatNos, (mchControlBase1 as MeasureControl).MeasureData.Select(JSONFormat.Format).ToList() }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("新增成功!")) { Query(); } } } } protected override void DoAddNew() { if (ActiveRow != null) { int num = 0; int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num); if (num == null || num < 0) { MessageBox.Show("请输入正确的作业支数"); return; } if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No) return; var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult"; ccp.MethodName = "DoAddNew"; ccp.ServerParams = new object[] { JSONFormat.Format(Value), Gx, mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(), mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(), }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("新增成功!")) { Query(); } } } } protected override void DoDelete() { { if (ActiveRow != null && ActitveResultRow != null) { if (MessageUtil.ShowYesNoAndQuestion("是否删除实绩?") == DialogResult.No) return; MchMeasureResultEntity MchMeasureResultEntity = ActitveResultRow.ListObject as MchMeasureResultEntity; bool NeedMesure = portMchBatchControl1.Data.All(p => p.TrFlag != "1"); // 没接测量点数据的产线 List MatNos = portMchBatchControl1.Data.Where( p => (p.InstoreFlag=="0"|| p.InstoreFlag =="未入库") &&(p.TrFlag == "1" || NeedMesure) && (((p.MatStatus == "00") || (p.MatStatus == "合格")) || mchControlBase1.CheckGx(p.OpProcessCode, Gx))) .Reverse() .Take((int) MchMeasureResultEntity.ProNum) .Select(p => p.MatNo) .ToList(); if (MchMeasureResultEntity.ProNum.ToString() != MatNos.Count.ToString()) { MessageBox.Show("管号队明细状态不对,请确认"); return; } var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult"; ccp.MethodName = "DoDelete"; ccp.ServerParams = new object[] { JSONFormat.Format(ActitveResultRow.ListObject), Gx, MatNos }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("删除成功!")) Query(); } } } } protected override void DoForceDelete() { if (ActiveRow != null && ActitveResultRow != null) { if (MessageUtil.ShowYesNoAndQuestion("是否强制清空数据?") == DialogResult.No) return; var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult"; ccp.MethodName = "DoForceDelete"; ccp.ServerParams = new object[] { ActiveRow.HeatPlanNo,ActiveRow.JudgeStoveNo, ActiveRow.BatchNo , Gx }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("清空成功!")) Query(); } } } protected override void GetResultData() { (mchControlBase1 as MeasureControl).ResetM(ActiveRow.MeasureCount == null || ActiveRow.MeasureCount <= 0 || ActiveRow.ProducType == "C" || ActiveRow.ProducType=="E" || ActiveRow.ProducType == "B" || ActiveRow.ProducType == "A"); base.GetResultData(); mchMeasureResultEntityBindingSource.DataSource = EntityHelper.GetData( "com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryExpandResult", new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo }, ob); commHelper.RefreshAndAutoSize(CrackDetectGrid); rtdMeasurePosdataEntityBindingSource.DataSource = EntityHelper.GetData( "com.steering.mes.mcp.Mch.FrmMeasureResult.geRtdMeasurePosdata", new object[] { ActiveRow.JudgeStoveNo, ActiveRow.BatchNo, ActiveRow.HeatPlanNo }, ob); commHelper.RefreshAndAutoSize(ugData); List listSource = EntityHelper.GetData( "com.steering.mes.mcp.Vrp.FrmMchInStore.doQueryVrpRack", new object[] { ActiveRow.HeatPlanNo, ActiveRow.JudgeStoveNo, ActiveRow.BatchNo,"" }, this.ob); PortMchBatchSampleResultEntitybindingSource.DataSource = listSource; commHelper.RefreshAndAutoSize(ultraGrid2); DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryPhyResult", new object[] { ActiveRow.OrdLnDlyPk }, this.ob); GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true); if (ActiveRow == null) return; var MeasureControl = mchControlBase1 as MeasureControl; if (MeasureControl == null) return; var result = new MchMeasureResultEntity { HeatPlanNo = ActiveRow.HeatPlanNo, JudgeStoveNo = ActiveRow.JudgeStoveNo, BatchNo = ActiveRow.BatchNo, PlineCode = ActiveRow.PlineCode, PlineName = ActiveRow.PlineName, ProNum = MeasureControl.OkPort2.Count(p => p.TrFlag != "1"), FailNum = 0, FailWt = 0, ProShift = UserInfo.GetUserOrder(), ProGroup = UserInfo.GetUserGroup(), ProUser = UserInfo.GetUserName(), ProTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), ProEndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") }; MeasureControl.Value = result; } private void ultraTextEditor1_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e) { if (ActiveRow != null && ActitveResultRow != null) { if (MessageUtil.ShowYesNoAndQuestion("是否同步测量点二级数据?") == DialogResult.No) return; MchMeasureResultEntity MchMeasureResultEntity = ActitveResultRow.ListObject as MchMeasureResultEntity; List MatNos = portMchBatchControl1.Data.Where( p => p.TrFlag != "0" && string.IsNullOrWhiteSpace(p.MeasuringSeq.ToString2())) .Take((int)MchMeasureResultEntity.ProNum) .Select(p => p.MatNo) .ToList(); var ccp = new CoreClientParam(); ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult"; ccp.MethodName = "DoSynchronous"; ccp.ServerParams = new object[] { JSONFormat.Format(MchMeasureResultEntity), MatNos }; ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal); if (ccp.ReturnCode != -1) { MessageUtil.ShowTips(ccp.ReturnInfo); if (ccp.ReturnInfo.Equals("同步成功!")) ultraGrid1_AfterRowActivate(null,null); } } } private void CrackDetectGrid_InitializeRow(object sender, InitializeRowEventArgs e) { if (e.Row.Cells["Flag"].Value.ToString2() == "1") { e.Row.Cells["ResultNo"].IgnoreRowColActivation = true; e.Row.Cells["ResultNo"].EditorComponent = uceSys; } } } }