Make_MakeMaterialCheck.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Drawing;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using UAS_MES_NEW.CustomControl.CustomCheckBox;
  8. using UAS_MES_NEW.CustomControl.RichText;
  9. using UAS_MES_NEW.CustomControl.TextBoxWithIcon;
  10. using UAS_MES_NEW.DataOperate;
  11. using UAS_MES_NEW.Entity;
  12. using UAS_MES_NEW.PublicMethod;
  13. namespace UAS_MES_NEW.Make
  14. {
  15. public partial class Make_MakeMaterialCheck : Form
  16. {
  17. DataHelper dh;
  18. LogStringBuilder sql = new LogStringBuilder();
  19. DataTable dt;
  20. AutoSizeFormClass asc = new AutoSizeFormClass();
  21. /// <summary>
  22. /// 已核对行标记的背景色
  23. /// </summary>
  24. readonly Color CheckColor = Color.LightGreen;
  25. public Make_MakeMaterialCheck()
  26. {
  27. InitializeComponent();
  28. }
  29. private void Make_MakeMaterialCheck_Load(object sender, EventArgs e)
  30. {
  31. asc.controllInitializeSize(this);
  32. dh = SystemInf.dh;
  33. //工单号放大镜配置
  34. ma_code.TableName = "make left join product on ma_prodcode=pr_code";
  35. ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,pr_detail # 产品名称";
  36. ma_code.FormName = Name;
  37. ma_code.DBTitle = "工单查询";
  38. ma_code.SetValueField = new string[] { "ma_code" };
  39. ma_code.DbChange += Ma_code_DBChange;
  40. ma_code.UserControlTextChanged += ma_code_UserControlTextChanged;
  41. ma_code.Focus();
  42. }
  43. private void Make_MakeMaterialCheck_SizeChanged(object sender, EventArgs e)
  44. {
  45. asc.controlAutoSize(this);
  46. }
  47. /// <summary>
  48. /// 工单号被清空时,清空列表与统计
  49. /// </summary>
  50. private void ma_code_UserControlTextChanged(object sender, EventArgs e)
  51. {
  52. if (ma_code.Text == "")
  53. {
  54. BaseUtil.CleanDGVData(MakeMaterialDGV);
  55. UpdateCounts();
  56. }
  57. }
  58. /// <summary>
  59. /// 工单选定后查询物料清单填充DGV
  60. /// </summary>
  61. private void Ma_code_DBChange(object sender, EventArgs e)
  62. {
  63. sql.Clear();
  64. sql.Append("select mm_prodcode,pr_detail,pr_spec from make");
  65. sql.Append(" left join makematerial on mm_code=ma_code");
  66. sql.Append(" left join product on pr_code=mm_prodcode");
  67. sql.Append(" where ma_code='" + ma_code.Text + "'");
  68. dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
  69. BaseUtil.FillDgvWithDataTable(MakeMaterialDGV, dt);
  70. UpdateCounts();
  71. OperateResult.AppendText(">>工单" + ma_code.Text + "物料清单加载完成,共" + dt.Rows.Count + "行\n", Color.Black);
  72. input.Focus();
  73. }
  74. /// <summary>
  75. /// 输入料号回车核对:匹配到的行标记绿色背景
  76. /// </summary>
  77. private void input_KeyDown(object sender, KeyEventArgs e)
  78. {
  79. if (e.KeyCode != Keys.Enter)
  80. return;
  81. e.SuppressKeyPress = true;
  82. if (ma_code.Text == "")
  83. {
  84. OperateResult.AppendText(">>请先选择工单\n", Color.Red, input);
  85. return;
  86. }
  87. string prodcode = input.Text.Trim().ToUpper();
  88. if (prodcode == "")
  89. {
  90. OperateResult.AppendText(">>请输入物料编号\n", Color.Red, input);
  91. return;
  92. }
  93. bool found = false;
  94. int newChecked = 0;
  95. for (int i = 0; i < MakeMaterialDGV.Rows.Count; i++)
  96. {
  97. string rowCode = MakeMaterialDGV.Rows[i].Cells["mm_prodcode"].Value == null ? "" : MakeMaterialDGV.Rows[i].Cells["mm_prodcode"].Value.ToString().Trim().ToUpper();
  98. if (rowCode == prodcode)
  99. {
  100. found = true;
  101. //已标记过的行不重复计数
  102. if (MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor != CheckColor)
  103. {
  104. MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor = CheckColor;
  105. newChecked++;
  106. }
  107. }
  108. }
  109. if (!found)
  110. {
  111. OperateResult.AppendText(">>物料" + prodcode + "不在当前工单的物料清单中\n", Color.Red, input);
  112. return;
  113. }
  114. if (newChecked == 0)
  115. OperateResult.AppendText(">>物料" + prodcode + "已核对过,不允许重复核对\n", Color.Black, input);
  116. else
  117. OperateResult.AppendText(">>物料" + prodcode + "核对成功,本次核对" + newChecked + "行\n", Color.Green, input);
  118. UpdateCounts();
  119. input.Clear();
  120. input.Focus();
  121. }
  122. /// <summary>
  123. /// 刷新底部统计:物料总数取DGV行数,已核对取绿色背景行数
  124. /// </summary>
  125. private void UpdateCounts()
  126. {
  127. int checkedCount = 0;
  128. for (int i = 0; i < MakeMaterialDGV.Rows.Count; i++)
  129. {
  130. if (MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor == CheckColor)
  131. checkedCount++;
  132. }
  133. total_label.Text = "物料总数: " + MakeMaterialDGV.Rows.Count;
  134. checked_label.Text = "已核对行数: " + checkedCount;
  135. }
  136. }
  137. }