FrmVrpMeasureResult .cs 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  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.VRP.Entity.PortMchBatchSampleResultEntity;
  23. namespace Core.StlMes.Client.Mcp.VRP.Vrp
  24. {
  25. public partial class FrmVrpMeasureResult : FrmVrpMchBase
  26. {
  27. public FrmVrpMeasureResult()
  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. }
  56. protected override void DoAdd()
  57. {
  58. if (ActiveRow != null)
  59. {
  60. int num = 0;
  61. int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num);
  62. if( num==null || num<0)
  63. {
  64. MessageBox.Show("请输入正确的作业支数");
  65. return;
  66. }
  67. List<MchLenWeightEntity> Detail = (mchControlBase1 as MeasureControl).MeasureData;
  68. if (Detail.Any())
  69. {
  70. if (Detail.Sum(p => p.ActCount) != num)
  71. {
  72. MessageBox.Show("手动维护的数据的支数和作业支数不符合");
  73. return;
  74. }
  75. }
  76. var list =
  77. portMchBatchControl1.Data.Where(
  78. p =>
  79. p.TrFlag != "1" &&
  80. !mchControlBase1.ScrappedList.Any(q => q.MatNo.Split(',').Contains(p.MatNo))
  81. &&
  82. (((p.MatStatus == "00") || (p.MatStatus == "合格"))
  83. || (p.MatStatus == "剔除" //&&
  84. // mchControlBase1.CheckGx(p.OpProcessCode, Gx)
  85. )
  86. )
  87. ).Take(num).ToList();//
  88. if (list.Count != num)
  89. {
  90. List<MchOfflineResultEntity> mchOffline = EntityHelper.GetData<MchOfflineResultEntity>("com.steering.mes.mcp.common.OfflineHelper.QueryMchOffLineData", new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo }, ob);
  91. if (mchOffline.Any(p => p.ReNum == null || p.ReNum <= 0))
  92. {
  93. MessageBox.Show(
  94. mchOffline.Any(p => (p.ReNum == null || p.ReNum <= 0) && p.SubcontractcompleteNum > 0)
  95. ? "无足够的合格在线管, 存在离线委托已经完成的管未返线, 请联系出料人员对该炉批进行返线操作!"
  96. : "无足够的合格在线管, 存在离线数据未返线, 请联系出料人员对该炉批进行返线操作!");
  97. return;
  98. }
  99. }
  100. //if(list.Any(p=>p.OutnumCut!=1))
  101. //{
  102. // MessageBox.Show("存在管号未分切, 请先录入分切!");
  103. // return;
  104. //}
  105. if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No)
  106. return;
  107. List<string> MatNos =
  108. list.Select(p => p.MatNo).ToList();
  109. var ccp = new CoreClientParam();
  110. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  111. ccp.MethodName = "DoAddDB";//DoAddDB--DoAdd
  112. ccp.ServerParams = new object[]
  113. {
  114. JSONFormat.Format(Value),
  115. Gx,
  116. mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(),
  117. mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(),
  118. MatNos,
  119. (mchControlBase1 as MeasureControl).MeasureData.Select(JSONFormat.Format).ToList()
  120. };
  121. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  122. if (ccp.ReturnCode != -1)
  123. {
  124. MessageUtil.ShowTips(ccp.ReturnInfo);
  125. if (ccp.ReturnInfo.Equals("新增成功!"))
  126. {
  127. Query();
  128. }
  129. }
  130. }
  131. }
  132. protected override void DoAddNew()
  133. {
  134. if (ActiveRow != null)
  135. {
  136. int num = 0;
  137. int.TryParse((Value as MchMeasureResultEntity).ProNum.ToString3(), out num);
  138. if (num == null || num < 0)
  139. {
  140. MessageBox.Show("请输入正确的作业支数");
  141. return;
  142. }
  143. if (MessageUtil.ShowYesNoAndQuestion("是否增加实绩?") == DialogResult.No)
  144. return;
  145. var ccp = new CoreClientParam();
  146. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  147. ccp.MethodName = "DoAddNew";
  148. ccp.ServerParams = new object[]
  149. {
  150. JSONFormat.Format(Value), Gx,
  151. mchControlBase1.ScrappedList.Select(JSONFormat.Format).ToList(),
  152. mchControlBase1.SuspiciousList.Select(JSONFormat.Format).ToList(),
  153. };
  154. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  155. if (ccp.ReturnCode != -1)
  156. {
  157. MessageUtil.ShowTips(ccp.ReturnInfo);
  158. if (ccp.ReturnInfo.Equals("新增成功!"))
  159. {
  160. Query();
  161. }
  162. }
  163. }
  164. }
  165. protected override void DoDelete()
  166. {
  167. {
  168. if (ActiveRow != null && ActitveResultRow != null)
  169. {
  170. if (MessageUtil.ShowYesNoAndQuestion("是否删除实绩?") == DialogResult.No)
  171. return;
  172. MchMeasureResultEntity MchMeasureResultEntity =
  173. ActitveResultRow.ListObject as MchMeasureResultEntity;
  174. bool NeedMesure = portMchBatchControl1.Data.All(p => p.TrFlag != "1"); // 没接测量点数据的产线
  175. List<string> MatNos =
  176. portMchBatchControl1.Data.Where(
  177. p =>
  178. (p.TrFlag == "1" || NeedMesure) && (((p.MatStatus == "00") || (p.MatStatus == "合格")) ||
  179. mchControlBase1.CheckGx(p.OpProcessCode, Gx)))
  180. .Reverse()
  181. .Take((int) MchMeasureResultEntity.ProNum)
  182. .Select(p => p.MatNo)
  183. .ToList();
  184. var ccp = new CoreClientParam();
  185. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  186. ccp.MethodName = "DoDeleteDbk";
  187. ccp.ServerParams = new object[]
  188. {
  189. JSONFormat.Format(ActitveResultRow.ListObject), Gx,
  190. MatNos
  191. };
  192. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  193. if (ccp.ReturnCode != -1)
  194. {
  195. MessageUtil.ShowTips(ccp.ReturnInfo);
  196. if (ccp.ReturnInfo.Equals("删除成功!"))
  197. Query();
  198. }
  199. }
  200. }
  201. }
  202. protected override void DoForceDelete()
  203. {
  204. if (ActiveRow != null && ActitveResultRow != null)
  205. {
  206. if (MessageUtil.ShowYesNoAndQuestion("是否强制清空数据?") == DialogResult.No)
  207. return;
  208. var ccp = new CoreClientParam();
  209. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  210. ccp.MethodName = "DoForceDelete";
  211. ccp.ServerParams = new object[]
  212. {
  213. ActiveRow.HeatPlanNo,ActiveRow.JudgeStoveNo, ActiveRow.BatchNo , Gx
  214. };
  215. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  216. if (ccp.ReturnCode != -1)
  217. {
  218. MessageUtil.ShowTips(ccp.ReturnInfo);
  219. if (ccp.ReturnInfo.Equals("清空成功!"))
  220. Query();
  221. }
  222. }
  223. }
  224. protected override void GetResultData()
  225. {
  226. (mchControlBase1 as MeasureControl).ResetM(ActiveRow.MeasureCount == null || ActiveRow.MeasureCount <= 0 || ActiveRow.ProducType == "C" || ActiveRow.ProducType=="E");
  227. base.GetResultData();
  228. mchMeasureResultEntityBindingSource.DataSource = EntityHelper.GetData<MchMeasureResultEntity>(
  229. "com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryExpandResult",//实绩表用加工线的不改
  230. new object[] { ActiveRow.HeatPlanNo, ActiveRow.BatchNo },
  231. ob);
  232. commHelper.RefreshAndAutoSize(CrackDetectGrid);
  233. rtdMeasurePosdataEntityBindingSource.DataSource = EntityHelper.GetData<RtdMeasurePosdataEntity>(
  234. "com.steering.mes.mcp.Mch.FrmMeasureResult.geRtdMeasurePosdata",//测量点数据采集用加工线的
  235. new object[] { ActiveRow.JudgeStoveNo, ActiveRow.BatchNo, ActiveRow.HeatPlanNo },
  236. ob);
  237. commHelper.RefreshAndAutoSize(ugData);
  238. // List<PortMchBatchSampleResultEntity> listSource = EntityHelper.GetData<PortMchBatchSampleResultEntity>(
  239. //"com.steering.mes.mcp.Vrp.FrmMchInStore.doQueryVrpRack", new object[] { ActiveRow.HeatPlanNo, ActiveRow.JudgeStoveNo, ActiveRow.BatchNo,"" }, this.ob);
  240. // PortMchBatchSampleResultEntitybindingSource.DataSource = listSource;//炉批信息不用查询
  241. // commHelper.RefreshAndAutoSize(ultraGrid2);
  242. // DataTable dt = ServerHelper.GetData("com.steering.mes.mcp.Mch.FrmMeasureResult.getQueryPhyResult", new object[] { ActiveRow.OrdLnDlyPk }, this.ob);
  243. // GridHelper.CopyDataToDatatable(ref dt, ref dataTable1, true);//这个也不用处理
  244. if (ActiveRow == null) return;
  245. var MeasureControl = mchControlBase1 as MeasureControl;
  246. if (MeasureControl == null) return;
  247. var result = new MchMeasureResultEntity
  248. {
  249. HeatPlanNo = ActiveRow.HeatPlanNo,
  250. JudgeStoveNo = ActiveRow.JudgeStoveNo,
  251. BatchNo = ActiveRow.BatchNo,
  252. PlineCode = ActiveRow.PlineCode,
  253. PlineName = ActiveRow.PlineName,
  254. ProNum = MeasureControl.OkPort2.Count(p => p.TrFlag != "1"),
  255. FailNum = 0,
  256. FailWt = 0,
  257. ProShift = UserInfo.GetUserOrder(),
  258. ProGroup = UserInfo.GetUserGroup(),
  259. ProUser = UserInfo.GetUserName(),
  260. ProTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
  261. ProEndTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
  262. };
  263. MeasureControl.Value = result;
  264. }
  265. private void ultraTextEditor1_EditorButtonClick(object sender, Infragistics.Win.UltraWinEditors.EditorButtonEventArgs e)
  266. {
  267. if (ActiveRow != null && ActitveResultRow != null)
  268. {
  269. if (MessageUtil.ShowYesNoAndQuestion("是否同步测量点二级数据?") == DialogResult.No)
  270. return;
  271. MchMeasureResultEntity MchMeasureResultEntity =
  272. ActitveResultRow.ListObject as MchMeasureResultEntity;
  273. List<string> MatNos =
  274. portMchBatchControl1.Data.Where(
  275. p => p.TrFlag != "0" && string.IsNullOrWhiteSpace(p.MeasuringSeq.ToString2()))
  276. .Take((int)MchMeasureResultEntity.ProNum)
  277. .Select(p => p.MatNo)
  278. .ToList();
  279. var ccp = new CoreClientParam();
  280. ccp.ServerName = "com.steering.mes.mcp.Mch.FrmMeasureResult";
  281. ccp.MethodName = "DoSynchronous";
  282. ccp.ServerParams = new object[]
  283. {
  284. JSONFormat.Format(MchMeasureResultEntity),
  285. MatNos
  286. };
  287. ccp = ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  288. if (ccp.ReturnCode != -1)
  289. {
  290. MessageUtil.ShowTips(ccp.ReturnInfo);
  291. if (ccp.ReturnInfo.Equals("同步成功!"))
  292. ultraGrid1_AfterRowActivate(null,null);
  293. }
  294. }
  295. }
  296. private void CrackDetectGrid_InitializeRow(object sender, InitializeRowEventArgs e)
  297. {
  298. if (e.Row.Cells["Flag"].Value.ToString2() == "1")
  299. {
  300. e.Row.Cells["ResultNo"].IgnoreRowColActivation = true;
  301. e.Row.Cells["ResultNo"].EditorComponent = uceSys;
  302. }
  303. }
  304. }
  305. }