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;
}
}
}