FrmScrapNum.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Windows.Forms;
  7. using Core.Mes.Client.Comm.Format;
  8. using Core.Mes.Client.Comm.Server;
  9. using Core.Mes.Client.Comm.Tool;
  10. using Core.StlMes.Client.Mcp.Control;
  11. using Core.StlMes.Client.Mcp.Control.Entity;
  12. using CoreFS.CA06;
  13. using Infragistics.Win;
  14. using Infragistics.Win.UltraWinGrid;
  15. namespace Core.StlMes.Client.Mcp.Mch
  16. {
  17. public partial class FrmScrapNum : FrmBase
  18. {
  19. private readonly List<string> SignOfflineMatNo = new DataSourceList<string>();
  20. private string _heatPlanNo;
  21. private string _batchNo;
  22. private string _gx;
  23. private string _userName;
  24. private string _shift;
  25. private string _group;
  26. private List<PortMchBatchSampleResultEntityWithCheck> list;
  27. public FrmScrapNum(OpeBase ob, string heatPlanNo, string BatchNo, string gx, string Username, string Shift, string Group)
  28. {
  29. InitializeComponent();
  30. this.ob = ob;
  31. SignOfflineMatNo = new DataSourceList<string>();
  32. _batchNo = BatchNo;
  33. _gx = gx;
  34. _userName = Username;
  35. _shift = Shift;
  36. _group = Group;
  37. list = EntityHelper.GetData<PortMchBatchSampleResultEntityWithCheck>(
  38. "com.steering.mes.mcp.common.PlanService.getQueryJGPortVrphot", new object[] { heatPlanNo, BatchNo }, ob);
  39. mchOfflineResultEntityBindingSource.DataSource = new List<MchOfflineResultEntity>();
  40. EntityHelper.ShowGridCaption<PortMchBatchSampleResultEntityWithCheck>(ultraGridDetailDes1.DisplayLayout.Bands[1]);
  41. }
  42. public string alamNum = "";
  43. public string scrapNum = "";
  44. public string testOfflineNum = "";
  45. private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
  46. {
  47. switch (e.Tool.Key)
  48. {
  49. case "Save":
  50. Save();
  51. break;
  52. case "Close":
  53. CloseFrm();
  54. break;
  55. }
  56. }
  57. private void CloseFrm()
  58. {
  59. this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
  60. this.Close();
  61. }
  62. protected override void OnLoad(EventArgs e)
  63. {
  64. base.OnLoad(e);
  65. ultraGridDetailDes1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False;
  66. ultraGridDetailDes1.DisplayLayout.Override.HeaderClickAction = HeaderClickAction.Default;
  67. var dt =
  68. ServerHelper.GetData(
  69. "com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo",
  70. new object[] { "7014" }, ob);
  71. ucMemo.DataSource = dt;
  72. ucMemo.DisplayMember = "BASENAME";
  73. ucMemo.ValueMember = "BASENAME";
  74. }
  75. /// <summary>
  76. /// 保存离线
  77. /// </summary>
  78. private void Save()
  79. {
  80. this.ultraGridDetailDes1.UpdateData();
  81. if (MessageUtil.ShowYesNoAndQuestion("是否离线?") == DialogResult.No) return;
  82. var list1 =
  83. mchOfflineResultEntityBindingSource.DataSource as List<MchOfflineResultEntity>;
  84. list1 = list1.Where(p => p.Chk).ToList();
  85. if (list1.Any(p => p.OfflineNum == null || p.OfflineNum == 0))
  86. {
  87. MessageUtil.ShowTips("支数不能为空或者为零支,请输入!");
  88. return;
  89. }
  90. if (list1.Any(p => !p.OfflineNum.ToString2().TryParseInt()))
  91. {
  92. MessageUtil.ShowTips("支数请输入整数!");
  93. return;
  94. }
  95. CoreClientParam ccp = new CoreClientParam();
  96. try
  97. {
  98. this.Cursor = Cursors.WaitCursor; //控制鼠标的样式为等待
  99. if (Constant.WaitingForm == null)
  100. {
  101. Constant.WaitingForm = new WaitingForm();
  102. }
  103. Constant.WaitingForm.ShowToUser = true;
  104. Constant.WaitingForm.Show();
  105. Constant.WaitingForm.Update();
  106. ccp.ServerName = "com.steering.mes.mcp.common.OfflineHelper";
  107. ccp.MethodName = "MchOffLine";
  108. ccp.ServerParams = new Object[] { list1.Select(JSONFormat.Format).ToList() };
  109. ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
  110. this.Cursor = Cursors.Default;
  111. Constant.WaitingForm.ShowToUser = false;
  112. Constant.WaitingForm.Close();
  113. Constant.WaitingForm = null;
  114. }
  115. catch (Exception ex)
  116. {
  117. this.Cursor = Cursors.Default;
  118. Constant.WaitingForm.ShowToUser = false;
  119. Constant.WaitingForm.Close();
  120. Constant.WaitingForm = null;
  121. }
  122. if (ccp.ReturnCode != -1)
  123. {
  124. MessageUtil.ShowTips(ccp.ReturnInfo);
  125. if (ccp.ReturnInfo.Equals("离线成功!"))
  126. {
  127. this.DialogResult = System.Windows.Forms.DialogResult.OK;
  128. }
  129. }
  130. }
  131. private void ultraGridDetailDes1_CellChange(object sender, Infragistics.Win.UltraWinGrid.CellEventArgs e)
  132. {
  133. this.ultraGridDetailDes1.UpdateData();
  134. GridEdite(e.Cell.Row);
  135. MchOfflineResultEntity Entity = e.Cell.Row.ListObject as MchOfflineResultEntity;
  136. if ((e.Cell.Column.Key == "Check") && e.Cell.Row.HasParent())
  137. {
  138. var t =
  139. e.Cell.Row.ListObject as PortMchBatchSampleResultEntityWithCheck;
  140. if ((bool)e.Cell.Value)
  141. AddWes(t);
  142. else
  143. RemoveWes(t);
  144. ultraGridDetailDes1.UpdateData();
  145. var MchOfflineResultEntity = e.Cell.Row.ParentRow.ListObject as MchOfflineResultEntity;
  146. MchOfflineResultEntity.OfflineNum = MchOfflineResultEntity.ListPortMarts.Count(p => p.Check);
  147. }
  148. else if ((e.Cell.Column.Key == "OfflineNum") && e.Cell.Row.HasChild())
  149. {
  150. var MchOfflineResultEntity = e.Cell.Row.ListObject as MchOfflineResultEntity;
  151. if ((MchOfflineResultEntity != null) && (MchOfflineResultEntity.OfflineNum != null))
  152. {
  153. var signedData = MchOfflineResultEntity.ListPortMarts.Where(p => p.Check).ToList();
  154. int count = 0;
  155. if (!int.TryParse(MchOfflineResultEntity.OfflineNum.ToString3(), out count))
  156. {
  157. count = 0;
  158. }
  159. if (signedData.Count >= count)
  160. signedData.Skip(count).ToList().ForEach(RemoveWes);
  161. else
  162. MchOfflineResultEntity.ListPortMarts.Where(p =>
  163. {
  164. if (p.InstoreFlag == "已入库" || p.MatStatus != "合格")
  165. return false;
  166. return !SignOfflineMatNo.Contains(p.MatNo);
  167. }
  168. ).ToList()
  169. .OrderBy(
  170. p=> p.IsSamplePipe
  171. ).ThenBy(p=>p.MatNo)
  172. .Take(count - signedData.Count).ToList().ForEach(
  173. AddWes
  174. );
  175. var listCheck = MchOfflineResultEntity.ListPortMarts.Where(p => p.Check).ToList();
  176. int Count = listCheck.Count;
  177. if (Count < count)
  178. {
  179. MessageBox.Show("无足够的合格管可以离线,请检查是否入库或者已经离线!");
  180. MchOfflineResultEntity.OfflineNum = Count;
  181. ultraGridDetailDes1.PerformAction(UltraGridAction.ExitEditMode);
  182. }
  183. }
  184. }
  185. ultraGridDetailDes1.UpdateData();
  186. if (e.Cell.Row.HasParent()) ultraGridDetailDes1.PerformAction(UltraGridAction.ExitEditMode);
  187. ultraGridDetailDes1.Refresh();
  188. }
  189. public void AddWes(PortMchBatchSampleResultEntityWithCheck t)
  190. {
  191. try
  192. {
  193. if (t.InstoreFlag == "已入库")
  194. {
  195. MessageBox.Show("该管号已入库!");
  196. t.Check = false;
  197. return;
  198. }
  199. if (t.MatStatus != "合格")
  200. {
  201. MessageBox.Show("该管号不是合格管号!");
  202. t.Check = false;
  203. return;
  204. }
  205. if (SignOfflineMatNo.Contains(t.MatNo))
  206. {
  207. MessageBox.Show("该管号在另一行已被标记将要离线!");
  208. t.Check = false;
  209. return;
  210. }
  211. SignOfflineMatNo.Add(t.MatNo);
  212. t.Check = true;
  213. }
  214. catch (Exception ex)
  215. {
  216. MessageBox.Show(ex.Message);
  217. t.Check = false;
  218. }
  219. }
  220. public void RemoveWes(PortMchBatchSampleResultEntityWithCheck t)
  221. {
  222. try
  223. {
  224. t.Check = false;
  225. SignOfflineMatNo.Remove(t.MatNo);
  226. }
  227. catch (Exception ex)
  228. {
  229. }
  230. }
  231. /// <summary>
  232. ///
  233. /// ulltragrid控件受勾影响(打钩可编辑,不打勾不能编辑)**
  234. /// </summary>
  235. /// <param name="row"></param>
  236. private void GridEdite(UltraGridRow row)
  237. {
  238. if(row.HasParent()) return;
  239. if (row.GetValue("Chk") == "True")
  240. {
  241. foreach (UltraGridCell cell in row.Cells)
  242. {
  243. if (cell.Column.CellActivation == Activation.AllowEdit)
  244. {
  245. cell.Activation = Activation.AllowEdit;
  246. }
  247. }
  248. }
  249. else
  250. {
  251. foreach (UltraGridCell cell in row.Cells)
  252. {
  253. if (cell.Column.Key.Contains("Chk")) continue;
  254. if (cell.Column.CellActivation == Activation.AllowEdit)
  255. {
  256. cell.Activation = Activation.ActivateOnly;
  257. }
  258. }
  259. }
  260. ultraGridDetailDes1.UpdateData();
  261. }
  262. private void ultraGridDetailDes1_AfterRowInsert(object sender, RowEventArgs e)
  263. {
  264. this.ultraGridDetailDes1.UpdateData();
  265. MchOfflineResultEntity currentEntity = e.Row.ListObject as MchOfflineResultEntity;
  266. currentEntity.ListPortMarts = list.Select(p => p.Clone()).ToList();
  267. var listOk = currentEntity.ListPortMarts.Where(p =>
  268. {
  269. if (p.InstoreFlag == "已入库" || p.MatStatus != "合格")
  270. return false;
  271. return !SignOfflineMatNo.Contains(p.MatNo);
  272. }
  273. )
  274. .ToList();
  275. try
  276. {
  277. currentEntity.OfflineNum = listOk.Count;
  278. listOk.ForEach(AddWes);
  279. }
  280. catch (Exception)
  281. {
  282. currentEntity.OfflineNum = 0;
  283. }
  284. ultraGridDetailDes1.DisplayLayout.Bands[1].Columns["BarCode"].PerformAutoResize(Infragistics.Win.UltraWinGrid.PerformAutoSizeType.AllRowsInBand,
  285. true);
  286. GridEdite(e.Row);
  287. ultraGridDetailDes1.UpdateData();
  288. ultraGridDetailDes1.Refresh();
  289. }
  290. private void ultraGridDetailDes1_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e)
  291. {
  292. if (ultraGridDetailDes1.ActiveRow == null)
  293. e.TemplateAddRow.Activated = true;
  294. }
  295. }
  296. }