FrmMeasureResult.cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. 
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Windows.Forms;
  7. using com.steering.mes.mcp.entity;
  8. using Core.Mes.Client.Comm.Control;
  9. using Core.Mes.Client.Comm.Format;
  10. using Core.Mes.Client.Comm.Server;
  11. using Core.Mes.Client.Comm.Tool;
  12. using Core.StlMes.Client.Mcp.Control;
  13. using Core.StlMes.Client.Mcp.Control.Common;
  14. using Core.StlMes.Client.Mcp.Control.Entity;
  15. using Core.StlMes.Client.Mcp.Mch.Entity;
  16. using Core.StlMes.Client.Mcp.Mch.MchResult;
  17. using CoreFS.CA06;
  18. using Infragistics.Win;
  19. using Infragistics.Win.UltraWinGrid;
  20. using ButtonDisplayStyle = Infragistics.Win.UltraWinGrid.ButtonDisplayStyle;
  21. using MchOfflineResultEntity = Core.StlMes.Client.Mcp.Control.Entity.MchOfflineResultEntity;
  22. using PortMchBatchSampleResultEntity = Core.StlMes.Client.Mcp.Mch.Entity.PortMchBatchSampleResultEntity;
  23. namespace Core.StlMes.Client.Mcp.Mch
  24. {
  25. public partial class FrmMeasureResult : FrmMchBase
  26. {
  27. public FrmMeasureResult()
  28. {
  29. InitializeComponent();
  30. mchControlBase1 = new MeasureControl()
  31. {
  32. Dock = DockStyle.Fill
  33. };
  34. plnEdit.Controls.Add(mchControlBase1);
  35. }
  36. protected override UltraGridRow ActitveResultRow { get { return CrackDetectGrid.ActiveRow; } }
  37. protected override object Value { get { return (mchControlBase1 as MeasureControl).Value; } }
  38. protected override void OnLoad(EventArgs e)
  39. {
  40. base.OnLoad(e);
  41. EntityHelper.ShowGridCaption<MchMeasureResultEntity>(CrackDetectGrid.DisplayLayout.Bands[0]);
  42. EntityHelper.ShowGridCaption<RtdMeasurePosdataEntity>(ugData.DisplayLayout.Bands[0]);
  43. EntityHelper.ShowGridCaption<PortMchBatchSampleResultEntity>(ultraGrid2.DisplayLayout.Bands[0]);
  44. base.ultraGrid1.DisplayLayout.Bands[0].Columns["ActCount"].Hidden = true;
  45. base.ultraGrid1.DisplayLayout.Bands[0].Columns["ActWeight"].Hidden = true;
  46. base.ultraGrid1.DisplayLayout.Bands[0].Columns["BatchGroudNo"].Hidden = true;
  47. CrackDetectGrid.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False;
  48. CrackDetectGrid.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default;
  49. ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].Hidden = false;
  50. ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].ButtonDisplayStyle = ButtonDisplayStyle.Always;
  51. ultraGrid1.DisplayLayout.Bands[0].Columns["MeasureCount"].EditorComponent = uteMeasureData;
  52. ultraOptionSet2.Visible = false;
  53. portMchBatchControl1.ShowSeq = true;
  54. egbOther.Expanded = true;
  55. base.ultraGrid1.DisplayLayout.Bands[0].Columns["FilePath2"].Hidden = false;
  56. }
  57. protected override void DoAdd()
  58. {
  59. if (ActiveRow != null)
  60. {
  61. int num = 0;
  62. int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num);
  63. if( num==null || num<0)
  64. {
  65. MessageBox.Show("请输入正确的作业支数");
  66. return;
  67. }
  68. List<MchLenWeightEntity> Detail = (mchControlBase1 as MeasureControl).MeasureData;
  69. if (Detail.Any())
  70. {
  71. if (Detail.Sum(p => p.ActCount) != num)
  72. {
  73. MessageBox.Show("手动维护的数据的支数和作业支数不符合");
  74. return;
  75. }
  76. }
  77. var list =
  78. portMchBatchControl1.Data.Where(
  79. p =>
  80. p.TrFlag != "1" &&
  81. !mchControlBase1.ScrappedList.Any(q => q.MatNo.Split(',').Contains(p.MatNo)) &&
  82. (((p.MatStatus == "00") || (p.MatStatus == "合格")) || (p.MatStatus == "剔除" &&
  83. mchControlBase1.CheckGx(p.OpProcessCode, Gx)) )).Take(num).ToList();
  84. if (list.Count != num)
  85. {
  86. List<MchOfflineResultEntity> mchOffline = EntityHelper.GetData<MchOfflineResultEntity>("com.steering.mes.mcp.common.OfflineHelper.QueryMchOffLineData", new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo }, ob);
  87. if (mchOffline.Any(p => p.ReNum == null || p.ReNum <= 0))
  88. {
  89. MessageBox.Show(
  90. mchOffline.Any(p => (p.ReNum == null || p.ReNum <= 0) && p.SubcontractcompleteNum > 0)
  91. ? "无足够的合格在线管, 存在离线委托已经完成的管未返线, 请联系出料人员对该炉批进行返线操作!"
  92. : "无足够的合格在线管, 存在离线数据未返线, 请联系出料人员对该炉批进行返线操作!");
  93. return;
  94. }
  95. }
  96. if(list.Any(p=>p.OutnumCut!=1))
  97. {
  98. MessageBox.Show("存在管号未分切, 请先录入分切!");
  99. return;
  100. }
  101. if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No)
  102. return;
  103. List<string> MatNos =
  104. list.Select(p => p.MatNo).ToList();
  105. var ccp = new CoreClientParam();
  106. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  107. ccp.MethodName = "DoAdd";
  108. ccp.ServerParams = new object[]
  109. {
  110. JSONFormat.Format(Value),
  111. Gx,
  112. mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(),
  113. mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(),
  114. MatNos,
  115. (mchControlBase1 as MeasureControl).MeasureData.Select(JSONFormat.Format).ToList()
  116. };
  117. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  118. if (ccp.ReturnCode != -1)
  119. {
  120. MessageUtil.ShowTips(ccp.ReturnInfo);
  121. if (ccp.ReturnInfo.Equals("新增成功!"))
  122. {
  123. Query();
  124. }
  125. }
  126. }
  127. }
  128. protected override void DoAddNew()
  129. {
  130. if (ActiveRow != null)
  131. {
  132. int num = 0;
  133. int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num);
  134. if (num == null || num < 0)
  135. {
  136. MessageBox.Show("请输入正确的作业支数");
  137. return;
  138. }
  139. if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No)
  140. return;
  141. var ccp = new CoreClientParam();
  142. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  143. ccp.MethodName = "DoAddNew";
  144. ccp.ServerParams = new object[]
  145. {
  146. JSONFormat.Format(Value), Gx,
  147. mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(),
  148. mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(),
  149. };
  150. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  151. if (ccp.ReturnCode != -1)
  152. {
  153. MessageUtil.ShowTips(ccp.ReturnInfo);
  154. if (ccp.ReturnInfo.Equals("新增成功!"))
  155. {
  156. Query();
  157. }
  158. }
  159. }
  160. }
  161. protected override void DoDelete()
  162. {
  163. {
  164. if (ActiveRow != null && ActitveResultRow != null)
  165. {
  166. if (MessageUtil.ShowYesNoAndQuestion("是否删除实绩?") == DialogResult.No)
  167. return;
  168. MchMeasureResultEntity MchMeasureResultEntity =
  169. ActitveResultRow.ListObject as MchMeasureResultEntity;
  170. bool NeedMesure = portMchBatchControl1.Data.All(p => p.TrFlag != "1"); // 没接测量点数据的产线
  171. List<string> MatNos =
  172. portMchBatchControl1.Data.Where(
  173. p =>
  174. (p.InstoreFlag=="0"|| p.InstoreFlag =="未入库") &&(p.TrFlag == "1" || NeedMesure) && (((p.MatStatus == "00") || (p.MatStatus == "合格")) ||
  175. mchControlBase1.CheckGx(p.OpProcessCode, Gx)))
  176. .Reverse()
  177. .Take((int) MchMeasureResultEntity.ProNum)
  178. .Select(p => p.MatNo)
  179. .ToList();
  180. if (MchMeasureResultEntity.ProNum.ToString() != MatNos.Count.ToString())
  181. {
  182. MessageBox.Show("管号队明细状态不对,请确认");
  183. return;
  184. }
  185. var ccp = new CoreClientParam();
  186. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  187. ccp.MethodName = "DoDelete";
  188. ccp.ServerParams = new object[]
  189. {
  190. JSONFormat.Format(ActitveResultRow.ListObject), Gx,
  191. MatNos
  192. };
  193. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  194. if (ccp.ReturnCode != -1)
  195. {
  196. MessageUtil.ShowTips(ccp.ReturnInfo);
  197. if (ccp.ReturnInfo.Equals("删除成功!"))
  198. Query();
  199. }
  200. }
  201. }
  202. }
  203. protected override void DoForceDelete()
  204. {
  205. if (ActiveRow != null && ActitveResultRow != null)
  206. {
  207. if (MessageUtil.ShowYesNoAndQuestion("是否强制清空数据?") == DialogResult.No)
  208. return;
  209. var ccp = new CoreClientParam();
  210. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  211. ccp.MethodName = "DoForceDelete";
  212. ccp.ServerParams = new object[]
  213. {
  214. ActiveRow.HeatPlanNo,ActiveRow.JudgeStoveNo, ActiveRow.BatchNo , Gx
  215. };
  216. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  217. if (ccp.ReturnCode != -1)
  218. {
  219. MessageUtil.ShowTips(ccp.ReturnInfo);
  220. if (ccp.ReturnInfo.Equals("清空成功!"))
  221. Query();
  222. }
  223. }
  224. }
  225. protected override void GetResultData()
  226. {
  227. (mchControlBase1 as MeasureControl).ResetM(ActiveRow.MeasureCount == null || ActiveRow.MeasureCount <= 0 || ActiveRow.ProducType == "C" || ActiveRow.ProducType=="E" || ActiveRow.ProducType == "B" || ActiveRow.ProducType == "A");
  228. base.GetResultData();
  229. mchMeasureResultEntityBindingSource.DataSource = EntityHelper.GetData<MchMeasureResultEntity>(
  230. "com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryExpandResult",
  231. new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo },
  232. ob);
  233. commHelper.RefreshAndAutoSize(CrackDetectGrid);
  234. rtdMeasurePosdataEntityBindingSource.DataSource = EntityHelper.GetData<RtdMeasurePosdataEntity>(
  235. "com.steering.mes.mcp.Mch.FrmMeasureResult.geRtdMeasurePosdata",
  236. new object[] { ActiveRow.JudgeStoveNo, ActiveRow.BatchNo, ActiveRow.HeatPlanNo },
  237. ob);
  238. commHelper.RefreshAndAutoSize(ugData);
  239. List<PortMchBatchSampleResultEntity> listSource = EntityHelper.GetData<PortMchBatchSampleResultEntity>(
  240. "com.steering.mes.mcp.Vrp.FrmMchInStore.doQueryVrpRack", new object[] { ActiveRow.HeatPlanNo, ActiveRow.JudgeStoveNo, ActiveRow.BatchNo,"" }, this.ob);
  241. PortMchBatchSampleResultEntitybindingSource.DataSource = listSource;
  242. commHelper.RefreshAndAutoSize(ultraGrid2);
  243. DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryPhyResult", new object[] { ActiveRow.OrdLnDlyPk }, this.ob);
  244. GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);
  245. if (ActiveRow == null) return;
  246. var MeasureControl = mchControlBase1 as MeasureControl;
  247. if (MeasureControl == null) return;
  248. var result = new MchMeasureResultEntity
  249. {
  250. HeatPlanNo = ActiveRow.HeatPlanNo,
  251. JudgeStoveNo = ActiveRow.JudgeStoveNo,
  252. BatchNo = ActiveRow.BatchNo,
  253. PlineCode = ActiveRow.PlineCode,
  254. PlineName = ActiveRow.PlineName,
  255. ProNum = MeasureControl.OkPort2.Count(p => p.TrFlag != "1"),
  256. FailNum = 0,
  257. FailWt = 0,
  258. ProShift = UserInfo.GetUserOrder(),
  259. ProGroup = UserInfo.GetUserGroup(),
  260. ProUser = UserInfo.GetUserName(),
  261. ProTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  262. ProEndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  263. };
  264. MeasureControl.Value = result;
  265. }
  266. private void ultraTextEditor1_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e)
  267. {
  268. if (ActiveRow != null && ActitveResultRow != null)
  269. {
  270. if (MessageUtil.ShowYesNoAndQuestion("是否同步测量点二级数据?") == DialogResult.No)
  271. return;
  272. MchMeasureResultEntity MchMeasureResultEntity =
  273. ActitveResultRow.ListObject as MchMeasureResultEntity;
  274. List<string> MatNos =
  275. portMchBatchControl1.Data.Where(
  276. p => p.TrFlag != "0" && string.IsNullOrWhiteSpace(p.MeasuringSeq.ToString2()))
  277. .Take((int)MchMeasureResultEntity.ProNum)
  278. .Select(p => p.MatNo)
  279. .ToList();
  280. var ccp = new CoreClientParam();
  281. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  282. ccp.MethodName = "DoSynchronous";
  283. ccp.ServerParams = new object[]
  284. {
  285. JSONFormat.Format(MchMeasureResultEntity),
  286. MatNos
  287. };
  288. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  289. if (ccp.ReturnCode != -1)
  290. {
  291. MessageUtil.ShowTips(ccp.ReturnInfo);
  292. if (ccp.ReturnInfo.Equals("同步成功!"))
  293. ultraGrid1_AfterRowActivate(null,null);
  294. }
  295. }
  296. }
  297. private void CrackDetectGrid_InitializeRow(object sender, InitializeRowEventArgs e)
  298. {
  299. if (e.Row.Cells["Flag"].Value.ToString2() == "1")
  300. {
  301. e.Row.Cells["ResultNo"].IgnoreRowColActivation = true;
  302. e.Row.Cells["ResultNo"].EditorComponent = uceSys;
  303. }
  304. }
  305. }
  306. }