FrmScrapHttNew.cs 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Windows.Forms;
  6. using com.steering.mes.mcp.entity;
  7. using Core.Mes.Client.Comm.Server;
  8. using Core.Mes.Client.Comm.Tool;
  9. using Core.StlMes.Client.Mcp.Control.Common;
  10. using Core.StlMes.Client.Mcp.Control.Entity;
  11. using CoreFS.CA06;
  12. using Infragistics.Win;
  13. using Infragistics.Win.UltraWinGrid;
  14. using Infragistics.Win.UltraWinToolbars;
  15. namespace Core.StlMes.Client.Mcp.Control
  16. {
  17. public partial class FrmScrapHttNew : FrmBase
  18. {
  19. private readonly List<string> BatchNos;
  20. private string heatPlanNo = "";
  21. private readonly List<string> SignSuspiciousMatNo = new DataSourceList<string>();
  22. private readonly List<string> SignWasteMatNo = new DataSourceList<string>();
  23. private string DefaultBatchNo = "";
  24. public FrmScrapHttNew(OpeBase ob)
  25. {
  26. InitializeComponent();
  27. this.ob = ob;
  28. SuspiciousList = new List<HttWasteResultEntity>();
  29. ScrappedList = new List<HttWasteResultEntity>();
  30. }
  31. public FrmScrapHttNew(OpeBase ob, List<HttWasteResultEntity> list1, List<HttWasteResultEntity> list2,
  32. bool ShowSuspicious, string HeatPlanNo, int processSeq, string FailCode, string OnlyBatchNo, string defaultBatchNo = "", List<PortHttBatchSampleResultEntityWithCheck> portHttBatch = null,
  33. List<string> _signWasteMatNo =null)
  34. {
  35. InitializeComponent();
  36. this.ob = ob;
  37. heatPlanNo = HeatPlanNo;
  38. DefaultBatchNo = defaultBatchNo;
  39. EntityHelper.ShowGridCaption<HttWasteResultEntity>(ultraGridDetailDes1.DisplayLayout.Bands[0]);
  40. EntityHelper.ShowGridCaption<HttWasteResultEntity>(ultraGridDetailDes2.DisplayLayout.Bands[0]);
  41. EntityHelper.ShowGridCaption<PortHttBatchSampleResultEntityWithCheck>(ultraGridDetailDes1.DisplayLayout.Bands[1]);
  42. EntityHelper.ShowGridCaption<PortHttBatchSampleResultEntityWithCheck>(ultraGridDetailDes2.DisplayLayout.Bands[1]);
  43. ClientSize = new Size(1400 / 2, ClientSize.Height);
  44. if (!ShowSuspicious)
  45. splitMain.Panel1Collapsed = true;
  46. else
  47. splitMain.Panel2Collapsed = true;
  48. ultraGridDetailDes1.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False;
  49. ultraGridDetailDes2.DisplayLayout.Override.AllowRowFiltering = DefaultableBoolean.False;
  50. SuspiciousList = list1 == null ? new List<HttWasteResultEntity>() : list1.Select(p => p.Clone()).ToList();
  51. ScrappedList = list2 == null ? new List<HttWasteResultEntity>() : list2.Select(p => p.Clone()).ToList();
  52. //下拉选探伤废品原因
  53. var dt2 = ServerHelper.GetData("com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo",
  54. new object[] {"6005"}, ob);
  55. kreason.DataSource = dt2;
  56. kreason.DisplayMember = "BASENAME";
  57. kreason.ValueMember = "BASECODE";
  58. YdmBaseClass.SetComboItemHeight(kreason);
  59. var dt3 = ServerHelper.GetData("com.steering.mes.mcp.collarMaterial.ComBaseInfo.getBaseInfo",
  60. new object[] {FailCode}, ob);
  61. reason.DataSource = dt3;
  62. reason.DisplayMember = "BASENAME";
  63. reason.ValueMember = "BASECODE";
  64. YdmBaseClass.SetComboItemHeight(reason);
  65. if (portHttBatch!=null)
  66. {
  67. PortHttBatch =
  68. portHttBatch;
  69. }
  70. else
  71. {
  72. PortHttBatch =
  73. EntityHelper.GetData<PortHttBatchSampleResultEntityWithCheck>(
  74. "com.steering.mes.mcp.common.PlanService.getQueryDbkPortVrphot",
  75. new object[] {HeatPlanNo, processSeq}, ob);
  76. }
  77. if (PortHttBatch==null) return;
  78. /* var dt4 = ServerHelper.GetData("com.steering.mes.mcp.heatTreatment.ScrapHelper.doQueryBatchNo",
  79. new object[] { heatPlanNo, processSeq }, ob);
  80. if (dt4.Rows.Count <= 0)
  81. {
  82. var row = dt4.NewRow();
  83. row["PHY_BATCH_NO"] = defaultBatchNo;
  84. dt4.Rows.Add(row);
  85. }*/
  86. if (defaultBatchNo != "")
  87. {
  88. PortHttBatch.ForEach(p => p.PhyBatchNo = defaultBatchNo);
  89. }
  90. BatchNos = OnlyBatchNo != "" ? new List<string>() { OnlyBatchNo } : PortHttBatch.Select(p => p.PhyBatchNo).Distinct().ToList();
  91. kBatchNo.DataSource = BatchNos;
  92. /* kBatchNo.DisplayMember = "PhyBatchNo";
  93. kBatchNo.ValueMember = "PhyBatchNo";*/
  94. YdmBaseClass.SetComboItemHeight(kBatchNo);
  95. BatchNo.DataSource = BatchNos;
  96. /* BatchNo.DisplayMember = "PhyBatchNo";
  97. BatchNo.ValueMember = "PhyBatchNo";*/
  98. YdmBaseClass.SetComboItemHeight(BatchNo);
  99. List<HttWasteResultEntityWithList> SuspiciousList1 =
  100. SuspiciousList.Select(SetData).ToList();
  101. List<HttWasteResultEntityWithList> ScrappedList1 =
  102. ScrappedList.Select(SetData).ToList();
  103. SuspiciousList1.ForEach(p => p.ListPortMarts = PortHttBatch.Select(q =>
  104. {
  105. PortHttBatchSampleResultEntityWithCheck data = q.Clone();
  106. if (!string.IsNullOrEmpty(p.MatNo) && p.MatNo.Split(',').Contains(q.MatNo)) data.Check = true;
  107. return data;
  108. }).ToList());
  109. ScrappedList1.ForEach(p => p.ListPortMarts = PortHttBatch.Select(q =>
  110. {
  111. PortHttBatchSampleResultEntityWithCheck data = q.Clone();
  112. if (!string.IsNullOrEmpty(p.MatNo) && p.MatNo.Split(',').Contains(q.MatNo)) data.Check = true;
  113. return data;
  114. }).ToList());
  115. SignSuspiciousMatNo = SuspiciousList1.SelectMany(p => p.MatNo.Split(',').ToList()).ToList();
  116. SignWasteMatNo = _signWasteMatNo ?? ScrappedList1.SelectMany(p => p.MatNo.Split(',').ToList()).ToList();
  117. httWasteResultEntityBindingSource1.DataSource = SuspiciousList1;
  118. httWasteResultEntityBindingSource2.DataSource = ScrappedList1;
  119. }
  120. protected override void OnLoad(EventArgs e)
  121. {
  122. base.OnLoad(e);
  123. foreach (var ugc in ultraGridDetailDes1.DisplayLayout.Bands[1].Columns)
  124. ugc.SortIndicator = SortIndicator.Disabled;
  125. foreach (var ugc in ultraGridDetailDes2.DisplayLayout.Bands[1].Columns)
  126. ugc.SortIndicator = SortIndicator.Disabled;
  127. }
  128. private List<PortHttBatchSampleResultEntityWithCheck> PortHttBatch { get; set; }
  129. /// <summary>
  130. /// 可疑
  131. /// </summary>
  132. public List<HttWasteResultEntity> SuspiciousList { get; private set; }
  133. /// <summary>
  134. /// 废品
  135. /// </summary>
  136. public List<HttWasteResultEntity> ScrappedList { get; private set; }
  137. private void ultraToolbarsManager1_ToolClick(object sender, ToolClickEventArgs e)
  138. {
  139. switch (e.Tool.Key)
  140. {
  141. case "Save":
  142. Save();
  143. break;
  144. case "Close":
  145. CloseFrm();
  146. break;
  147. }
  148. }
  149. private void CloseFrm()
  150. {
  151. DialogResult = DialogResult.Cancel;
  152. Close();
  153. }
  154. /// <summary>
  155. /// 保存可疑、剔除品
  156. /// </summary>
  157. private void Save()
  158. {
  159. ultraGridDetailDes1.UpdateData();
  160. ultraGridDetailDes2.UpdateData();
  161. var list1 =
  162. httWasteResultEntityBindingSource1.DataSource as List<HttWasteResultEntityWithList>;
  163. list1 = list1.Where(p => p.Chk).Select(p =>
  164. {
  165. var list = p.ListPortMarts.Where(q => q.Check).ToList();
  166. p.MatNo = list.Any()
  167. ? list
  168. .Select(q => q.MatNo)
  169. .Aggregate((a, b) => a + (a == "" ? "" : ",") + b)
  170. : "";
  171. p.DefFillWt = list.Any()
  172. ? list
  173. .Sum(q => q.ActWeight ?? 0)
  174. : 0;
  175. return p;
  176. }).ToList();
  177. foreach (var httWasteResultEntity in list1)
  178. {
  179. if (httWasteResultEntity.DefFillCode == "")
  180. {
  181. MessageUtil.ShowTips("可疑原因不能为空,请选择!");
  182. return;
  183. }
  184. if ((httWasteResultEntity.DefFillNum == null) || (httWasteResultEntity.DefFillNum <= 0))
  185. {
  186. MessageUtil.ShowTips("可疑支数不能为空或者为零支,请输入!");
  187. return;
  188. }
  189. }
  190. var list2 =
  191. httWasteResultEntityBindingSource2.DataSource as List<HttWasteResultEntityWithList>;
  192. list2 = list2.Where(p => p.Chk).Select(p =>
  193. {
  194. var list = p.ListPortMarts.Where(q => q.Check).ToList();
  195. p.MatNo = list.Any()
  196. ? list
  197. .Select(q => q.MatNo)
  198. .Aggregate((a, b) => a + (a == "" ? "" : ",") + b)
  199. : "";
  200. p.DefFillWt = list.Any()
  201. ? list
  202. .Sum(q => q.ActWeight??0)
  203. : 0;
  204. return p;
  205. }).ToList();
  206. foreach (var httWasteResultEntity in list2)
  207. {
  208. if (httWasteResultEntity.DefFillCode == "")
  209. {
  210. MessageUtil.ShowTips("废品原因不能为空,请选择!");
  211. return;
  212. }
  213. if ((httWasteResultEntity.DefFillNum == null) || (httWasteResultEntity.DefFillNum <= 0))
  214. {
  215. MessageUtil.ShowTips("废品支数不能为空或者为零支,请输入!");
  216. return;
  217. }
  218. }
  219. SuspiciousList = list1.Select(p => p as HttWasteResultEntity).ToList();
  220. ScrappedList = list2.Select(p=>p as HttWasteResultEntity).ToList();
  221. DialogResult = DialogResult.OK;
  222. }
  223. private void FrmScrap_Load(object sender, EventArgs e)
  224. {
  225. EntityHelper.ShowGridCaption<HttLoadingResultEntity>(ultraGridDetailDes1.DisplayLayout.Bands[0]);
  226. EntityHelper.ShowGridCaption<HttLoadingResultEntity>(ultraGridDetailDes2.DisplayLayout.Bands[0]);
  227. splitMain.SplitterDistance = splitMain.Size.Width/2;
  228. }
  229. private void ultraGridDetailDes1_CellChange(object sender, CellEventArgs e)
  230. {
  231. var UltraGrid = sender as UltraGrid;
  232. UltraGrid.UpdateData();
  233. if (e.Cell.Column.Key == "Chk")
  234. GridEdite(e.Cell.Row);
  235. else if (e.Cell.Column.Key == "DefFillCode")
  236. e.Cell.Row.Cells["DefFillName"].Value = e.Cell.Text;
  237. else if ((e.Cell.Column.Key == "Check") && e.Cell.Row.HasParent())
  238. {
  239. var t =
  240. e.Cell.Row.ListObject as PortHttBatchSampleResultEntityWithCheck;
  241. if (UltraGrid == ultraGridDetailDes1)
  242. if((bool)e.Cell.Value)
  243. AddSuspicious(t);
  244. else
  245. RemoveSuspicious(t);
  246. else
  247. if ((bool)e.Cell.Value)
  248. AddWes(t);
  249. else
  250. RemoveWes(t);
  251. UltraGrid.UpdateData();
  252. var HttWasteResultEntity = e.Cell.Row.ParentRow.ListObject as HttWasteResultEntityWithList;
  253. HttWasteResultEntity.DefFillNum = HttWasteResultEntity.ListPortMarts.Count(p => p.Check);
  254. }
  255. else if ((e.Cell.Column.Key == "DefFillNum") && e.Cell.Row.HasChild())
  256. {
  257. var HttWasteResultEntity = e.Cell.Row.ListObject as HttWasteResultEntityWithList;
  258. if ((HttWasteResultEntity != null) && (HttWasteResultEntity.DefFillNum != null))
  259. {
  260. var signedData = HttWasteResultEntity.ListPortMarts.Where(p => p.Check).ToList();
  261. if (signedData.Count >= HttWasteResultEntity.DefFillNum)
  262. signedData.Skip((int) HttWasteResultEntity.DefFillNum).ToList().ForEach(p =>
  263. {
  264. if (UltraGrid == ultraGridDetailDes1)
  265. RemoveSuspicious(p);
  266. else
  267. RemoveWes(p);
  268. });
  269. else
  270. HttWasteResultEntity.ListPortMarts.Where(p =>
  271. {
  272. if (UltraGrid == ultraGridDetailDes1)
  273. {
  274. if (p.MatStatus != "合格") return false;
  275. return !SignSuspiciousMatNo.Contains(p.MatNo);
  276. }
  277. else
  278. {
  279. if (p.InstoreFlag == "已入库" || p.MatStatus != "合格") return false;
  280. return !SignWasteMatNo.Contains(p.MatNo);
  281. }
  282. }
  283. )
  284. .OrderBy(
  285. p => p.IsSamplePipe
  286. ).ThenBy(p => p.MatNo)
  287. .Take((int) HttWasteResultEntity.DefFillNum - signedData.Count).ToList().ForEach(p =>
  288. {
  289. if (UltraGrid == ultraGridDetailDes1)
  290. AddSuspicious(p);
  291. else
  292. AddWes(p);
  293. });
  294. var listCheck = HttWasteResultEntity.ListPortMarts.Where(p => p.Check).ToList();
  295. int Count = listCheck.Count;
  296. if (Count < HttWasteResultEntity.DefFillNum)
  297. {
  298. MessageBox.Show("无足够的合格管标废!");
  299. HttWasteResultEntity.DefFillNum = Count;
  300. UltraGrid.PerformAction(UltraGridAction.ExitEditMode);
  301. }
  302. }
  303. }
  304. UltraGrid.UpdateData();
  305. if (e.Cell.Row.HasParent()) UltraGrid.PerformAction(UltraGridAction.ExitEditMode);
  306. UltraGrid.Refresh();
  307. }
  308. /// <summary>
  309. /// ulltragrid控件受勾影响(打钩可编辑,不打勾不能编辑)**
  310. /// </summary>
  311. /// <param name="row"></param>
  312. private void GridEdite(UltraGridRow row)
  313. {
  314. if (row.HasParent()) return;
  315. if (row.GetValue("Chk") == "True")
  316. {
  317. foreach (var cell in row.Cells)
  318. if (cell.Column.CellActivation == Activation.AllowEdit)
  319. cell.Activation = Activation.AllowEdit;
  320. }
  321. else
  322. {
  323. foreach (var cell in row.Cells)
  324. {
  325. if (cell.Column.Key.Contains("Chk")) continue;
  326. if (cell.Column.CellActivation == Activation.AllowEdit)
  327. cell.Activation = Activation.ActivateOnly;
  328. }
  329. }
  330. ultraGridDetailDes1.UpdateData();
  331. ultraGridDetailDes2.UpdateData();
  332. }
  333. private void ultraGridDetailDes_AfterRowInsert(object sender, RowEventArgs e)
  334. {
  335. var HttWasteResultEntity = e.Row.ListObject as HttWasteResultEntityWithList;
  336. if ((BatchNos != null) && (BatchNos.Count > 0))
  337. HttWasteResultEntity.BatchNo = BatchNos[BatchNos.Count - 1];
  338. if (PortHttBatch!=null)
  339. HttWasteResultEntity.ListPortMarts = PortHttBatch.Select(q => q.Clone()).ToList();
  340. GridEdite(e.Row);
  341. }
  342. private void ultraGridDetailDes1_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e)
  343. {
  344. if (ultraGridDetailDes1.ActiveRow == null)
  345. e.TemplateAddRow.Activated = true;
  346. }
  347. private void ultraGridDetailDes2_InitializeTemplateAddRow(object sender, InitializeTemplateAddRowEventArgs e)
  348. {
  349. if (ultraGridDetailDes2.ActiveRow == null)
  350. e.TemplateAddRow.Activated = true;
  351. }
  352. public void AddWes(PortHttBatchSampleResultEntityWithCheck t)
  353. {
  354. try
  355. {
  356. if (t.InstoreFlag == "已入库")
  357. {
  358. MessageBox.Show("该管号已入库!");
  359. t.Check = false;
  360. }
  361. if (t.MatStatus != "合格")
  362. {
  363. MessageBox.Show("该管号不是合格管号!");
  364. t.Check = false;
  365. return;
  366. }
  367. if (SignWasteMatNo.Contains(t.MatNo))
  368. {
  369. MessageBox.Show("该管号已被标记废品!");
  370. t.Check = false;
  371. return;
  372. }
  373. SignWasteMatNo.Add(t.MatNo);
  374. t.Check = true;
  375. }
  376. catch (Exception ex)
  377. {
  378. MessageBox.Show(ex.Message);
  379. t.Check = false;
  380. }
  381. }
  382. public void AddSuspicious(PortHttBatchSampleResultEntityWithCheck t)
  383. {
  384. try
  385. {
  386. if (t.MatStatus != "合格")
  387. {
  388. MessageBox.Show("该管号不是合格管号!");
  389. t.Check = false;
  390. return;
  391. }
  392. if (SignSuspiciousMatNo.Contains(t.MatNo))
  393. {
  394. MessageBox.Show("该管号已被标记可疑!");
  395. t.Check = false;
  396. return;
  397. }
  398. SignSuspiciousMatNo.Add(t.MatNo);
  399. t.Check = true;
  400. }
  401. catch (Exception ex)
  402. {
  403. MessageBox.Show(ex.Message);
  404. t.Check = false;
  405. }
  406. }
  407. public void RemoveWes(PortHttBatchSampleResultEntityWithCheck t)
  408. {
  409. try
  410. {
  411. t.Check = false;
  412. SignWasteMatNo.Remove(t.MatNo);
  413. }
  414. catch (Exception ex)
  415. {
  416. }
  417. }
  418. public void RemoveSuspicious(PortHttBatchSampleResultEntityWithCheck t)
  419. {
  420. try
  421. {
  422. t.Check = false;
  423. SignSuspiciousMatNo.Remove(t.MatNo);
  424. }
  425. catch (Exception ex)
  426. {
  427. }
  428. }
  429. private void ultraGridDetailDes2_InitializeRow(object sender, InitializeRowEventArgs e)
  430. {
  431. if (e.Row.HasParent())
  432. if (!e.Row.Cells["MatStatus"].Text.Equals("合格"))
  433. e.Row.Cells["MatStatus"].Appearance.ForeColor = Color.Red;
  434. }
  435. public HttWasteResultEntityWithList SetData(HttWasteResultEntity HttWasteResultEntity)
  436. {
  437. return new HttWasteResultEntityWithList()
  438. {
  439. Chk = true,
  440. DefSerialItem = HttWasteResultEntity.DefSerialItem,
  441. DefSerialNo = HttWasteResultEntity.DefSerialNo,
  442. HeatPlanNo = HttWasteResultEntity.HeatPlanNo,
  443. DefFillNo = HttWasteResultEntity.DefFillNo,
  444. DefFillCode = HttWasteResultEntity.DefFillCode,
  445. DefFillName = HttWasteResultEntity.DefFillName,
  446. DefFillNum = HttWasteResultEntity.DefFillNum,
  447. CreTime = HttWasteResultEntity.CreTime,
  448. ResultNo = HttWasteResultEntity.ResultNo,
  449. PlineCode = HttWasteResultEntity.PlineCode,
  450. PlineName = HttWasteResultEntity.PlineName,
  451. DefFillWt = HttWasteResultEntity.DefFillWt,
  452. TotalLen = HttWasteResultEntity.TotalLen,
  453. BatchNo = DefaultBatchNo != ""? DefaultBatchNo: HttWasteResultEntity.BatchNo,
  454. MatNo = HttWasteResultEntity.MatNo,
  455. };
  456. }
  457. }
  458. }