using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using UAS_MES_NEW.CustomControl.CustomCheckBox; using UAS_MES_NEW.CustomControl.RichText; using UAS_MES_NEW.CustomControl.TextBoxWithIcon; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; using UAS_MES_NEW.PublicMethod; namespace UAS_MES_NEW.Make { public partial class Make_MakeMaterialCheck : Form { DataHelper dh; LogStringBuilder sql = new LogStringBuilder(); DataTable dt; AutoSizeFormClass asc = new AutoSizeFormClass(); /// /// 已核对行标记的背景色 /// readonly Color CheckColor = Color.LightGreen; public Make_MakeMaterialCheck() { InitializeComponent(); } private void Make_MakeMaterialCheck_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); dh = SystemInf.dh; //工单号放大镜配置 ma_code.TableName = "make left join product on ma_prodcode=pr_code"; ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_qty # 工单数量,pr_detail # 产品名称"; ma_code.FormName = Name; ma_code.DBTitle = "工单查询"; ma_code.SetValueField = new string[] { "ma_code" }; ma_code.DbChange += Ma_code_DBChange; ma_code.UserControlTextChanged += ma_code_UserControlTextChanged; ma_code.Focus(); } private void Make_MakeMaterialCheck_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } /// /// 工单号被清空时,清空列表与统计 /// private void ma_code_UserControlTextChanged(object sender, EventArgs e) { if (ma_code.Text == "") { BaseUtil.CleanDGVData(MakeMaterialDGV); UpdateCounts(); } } /// /// 工单选定后查询物料清单填充DGV /// private void Ma_code_DBChange(object sender, EventArgs e) { sql.Clear(); sql.Append("select mm_prodcode,pr_detail,pr_spec from make"); sql.Append(" left join makematerial on mm_code=ma_code"); sql.Append(" left join product on pr_code=mm_prodcode"); sql.Append(" where ma_code='" + ma_code.Text + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); BaseUtil.FillDgvWithDataTable(MakeMaterialDGV, dt); UpdateCounts(); OperateResult.AppendText(">>工单" + ma_code.Text + "物料清单加载完成,共" + dt.Rows.Count + "行\n", Color.Black); input.Focus(); } /// /// 输入料号回车核对:匹配到的行标记绿色背景 /// private void input_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; e.SuppressKeyPress = true; if (ma_code.Text == "") { OperateResult.AppendText(">>请先选择工单\n", Color.Red, input); return; } string prodcode = input.Text.Trim().ToUpper(); if (prodcode == "") { OperateResult.AppendText(">>请输入物料编号\n", Color.Red, input); return; } bool found = false; int newChecked = 0; for (int i = 0; i < MakeMaterialDGV.Rows.Count; i++) { string rowCode = MakeMaterialDGV.Rows[i].Cells["mm_prodcode"].Value == null ? "" : MakeMaterialDGV.Rows[i].Cells["mm_prodcode"].Value.ToString().Trim().ToUpper(); if (rowCode == prodcode) { found = true; //已标记过的行不重复计数 if (MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor != CheckColor) { MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor = CheckColor; newChecked++; } } } if (!found) { OperateResult.AppendText(">>物料" + prodcode + "不在当前工单的物料清单中\n", Color.Red, input); return; } if (newChecked == 0) OperateResult.AppendText(">>物料" + prodcode + "已核对过,不允许重复核对\n", Color.Black, input); else OperateResult.AppendText(">>物料" + prodcode + "核对成功,本次核对" + newChecked + "行\n", Color.Green, input); UpdateCounts(); input.Clear(); input.Focus(); } /// /// 刷新底部统计:物料总数取DGV行数,已核对取绿色背景行数 /// private void UpdateCounts() { int checkedCount = 0; for (int i = 0; i < MakeMaterialDGV.Rows.Count; i++) { if (MakeMaterialDGV.Rows[i].DefaultCellStyle.BackColor == CheckColor) checkedCount++; } total_label.Text = "物料总数: " + MakeMaterialDGV.Rows.Count; checked_label.Text = "已核对行数: " + checkedCount; } } }