using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using UAS_MES_NEW.DataOperate; using UAS_MES_NEW.Entity; using UAS_MES_NEW.PublicMethod; namespace UAS_MES_NEW.Make { public partial class Make_BakingManage : Form { public Make_BakingManage() { InitializeComponent(); } StringBuilder SQL = new StringBuilder(); DataHelper dh = SystemInf.dh; DataTable dt; DataTable Dbfind; private void Make_InBaking_Load(object sender, EventArgs e) { LoadBaking(); Timer ReLoad = new Timer(); ReLoad.Interval = 10000; ReLoad.Tick += ReLoadData; ReLoad.Start(); //设置锁定工单 LockMakeCode.GetMakeCodeCtl(ma_code); ma_code.SetLockCheckBox(LockMakeCode); //工单号放大镜配置 ma_code.TableName = "make left join product on ma_prodcode=pr_code"; ma_code.SelectField = "ma_code # 工单号,pr_code # 产品编号,pr_detail # 产品名称"; ma_code.FormName = Name; ma_code.SetValueField = new string[] { "ma_code", "pr_code", "pr_detail" }; ma_code.Condition = "ma_statuscode='STARTED'"; ma_code.DbChange += Ma_code_DbChange; } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); //获取工单的其他信息 SQL.Clear(); SQL.Append("select ma_code,nvl(mcd_okqty,0) mcd_okqty,ma_prodcode as pr_code ,pr_detail,"); SQL.Append("pr_spec,ma_qty - nvl(mcd_inqty, 0) mcd_remainqty,ma_qty from make left join makecraftdetail on "); SQL.Append("mcd_maid=ma_id left join product on pr_code=ma_prodcode where ma_code='" + ma_code.Text + "'"); dt = (DataTable)dh.ExecuteSql(SQL.ToString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.SetFormValue(this.Controls, dt); } EstimateVal.Focus(); EstimateVal.SelectAll(); } private void ReLoadData(object sender, EventArgs e) { LoadBaking(); } private void ReelNoVal_Leave(object sender, EventArgs e) { if (!string.IsNullOrEmpty(ReelNoVal.Text)) { UpdateMaterial("L", ReelNoVal.Text); dt = (DataTable)dh.ExecuteSql($"select * from barcode where bar_code = '{ReelNoVal.Text}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show($"条码:{ReelNoVal.Text} 不是MES系统中库存条码"); ReelNoVal.Text = ""; return; } } } private void ReelNoVal_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; ReelNoVal.Text = ReelNoVal.Text.Trim(); if (!string.IsNullOrEmpty(ReelNoVal.Text)) { UpdateMaterial("L", ReelNoVal.Text); dt = (DataTable)dh.ExecuteSql($"select * from barcode where bar_code = '{ReelNoVal.Text}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show($"条码:{ReelNoVal.Text} 不是MES系统中库存条码"); ReelNoVal.Text = ""; return; } } } private void ReelNoVal1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; ReelNoVal1.Text = ReelNoVal1.Text.Trim(); if (!string.IsNullOrEmpty(ReelNoVal1.Text)) { UpdateMaterial("L", ReelNoVal1.Text); dt = (DataTable)dh.ExecuteSql($"select * from barcode where bar_code = '{ReelNoVal1.Text}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show($"条码:{ReelNoVal1.Text} 不是MES系统中库存条码"); ReelNoVal1.Text = ""; return; } } } private void ReelNoVal1_Leave(object sender, EventArgs e) { if (!string.IsNullOrEmpty(ReelNoVal1.Text)) { UpdateMaterial("L", ReelNoVal1.Text); dt = (DataTable)dh.ExecuteSql($"select * from barcode where bar_code = '{ReelNoVal1.Text}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show($"条码:{ReelNoVal1.Text} 不是MES系统中库存条码"); ReelNoVal1.Text = ""; return; } } } private void LoadBaking() { SQL.Clear(); SQL.Append($@"SELECT work_order,box_no,reel_no,in_date,in_name,estimate_time,trunc((sysdate - in_date) * 24) || ':' || lpad(trunc(MOD((sysdate - in_date) * 24 * 60, 60)), 2, '0') || ':' || lpad(trunc(MOD((sysdate - in_date) * 24 * 60 * 60, 60)),2,'0') baking_time FROM baking_log WHERE status = '烘烤中' ORDER BY in_date DESC"); dt = (DataTable)dh.ExecuteSql(SQL.ToString(), "select"); DataBox.DataSource = dt; } private void UpdateMaterial(string type, string reelNo = "") { if (type == "C") { serialNumber.Text = ""; workOrder.Text = ""; productCode.Text = ""; productName.Text = ""; } else if (type == "L") { dt = (DataTable)dh.ExecuteSql($@"SELECT bar_code,bar_prodcode,pr_detail,pr_spec,bar_batchqty FROM barcode LEFT JOIN product ON pr_code = bar_prodcode WHERE bar_code = '{reelNo}'", "select"); if (dt.Rows.Count > 0) { serialNumber.Text = dt.Rows[0]["bar_code"].ToString(); workOrder.Text = dt.Rows[0]["pr_detail"].ToString(); productCode.Text = dt.Rows[0]["bar_prodcode"].ToString(); productName.Text = dt.Rows[0]["pr_spec"].ToString(); } else { UpdateMaterial("C"); } } } private void BackingVal_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; //BackingVal.Text = BackingVal.Text.Trim(); EstimateVal.Focus(); EstimateVal.SelectAll(); } private void EstimateVal_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; EstimateVal.Text = EstimateVal.Text.Trim(); ReelNoVal.Focus(); ReelNoVal.SelectAll(); } private void EmployeeVal_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; if (string.IsNullOrEmpty(EmployeeVal.Text)) return; /*dt = (DataTable)dh.ExecuteSql($"select * from employee where em_name = '{EmployeeVal.Text.Trim()}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show("请输入正确人员姓名"); EmployeeVal.Text = ""; EmployeeVal.Focus(); EmployeeVal.SelectAll(); return; }*/ } private void EmployeeVal_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(EmployeeVal.Text)) return; /*dt = (DataTable)dh.ExecuteSql($"select * from employee where em_name = '{EmployeeVal.Text.Trim()}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show("请输入正确人员姓名"); EmployeeVal.Text = ""; EmployeeVal.Focus(); EmployeeVal.SelectAll(); return; }*/ } private void EmployeeVal1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode != Keys.Enter) return; if (string.IsNullOrEmpty(EmployeeVal1.Text)) return; /*dt = (DataTable)dh.ExecuteSql($"select * from employee where em_name = '{EmployeeVal1.Text.Trim()}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show("请输入正确人员姓名"); EmployeeVal1.Text = ""; EmployeeVal1.Focus(); EmployeeVal1.SelectAll(); return; }*/ } private void EmployeeVal1_Leave(object sender, EventArgs e) { if (string.IsNullOrEmpty(EmployeeVal1.Text)) return; /*dt = (DataTable)dh.ExecuteSql($"select * from employee where em_name = '{EmployeeVal1.Text.Trim()}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show("请输入正确人员姓名"); EmployeeVal1.Text = ""; EmployeeVal1.Focus(); EmployeeVal1.SelectAll(); return; }*/ } private void Choose_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(ma_code.Text)) { MessageBox.Show("请选择归属工单"); return; } if (string.IsNullOrEmpty(EmployeeVal.Text)) { MessageBox.Show("请输入烘烤操作员姓名"); return; } //if (string.IsNullOrEmpty(BackingVal.Text)) //{ // MessageBox.Show("请扫描烘烤箱号"); // return; //} if (string.IsNullOrEmpty(EstimateVal.Text)) { MessageBox.Show("请填写扫描时长"); return; } if (string.IsNullOrEmpty(ReelNoVal.Text)) { MessageBox.Show("请扫描入烘烤物料条码"); return; } dt = (DataTable)dh.ExecuteSql($@"SELECT * FROM baking_log WHERE status = '烘烤中' AND reel_no = '{ReelNoVal.Text}'", "select"); if (dt.Rows.Count > 0) { MessageBox.Show($"条码号:{ReelNoVal.Text} 已在烘烤箱中"); return; } dh.ExecuteSql($@"INSERT INTO baking_log (baking_id,box_no,reel_no,status,in_date,in_name,estimate_time,work_order) SELECT baking_log_seq.NEXTVAL,'', '{ReelNoVal.Text}', '烘烤中',sysdate,'{EmployeeVal.Text.Trim()}','{EstimateVal.Text}','{ma_code.Text}' FROM dual", "insert"); //EmployeeVal.Text = ""; //BackingVal.Text = ""; //EstimateVal.Text = ""; ReelNoVal.Text = ""; //UpdateMaterial("C"); LoadBaking(); MessageBox.Show($"条码号:{ReelNoVal.Text} 入烘烤箱成功"); } private void Choose1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(EmployeeVal1.Text)) { MessageBox.Show("请输入烘烤操作员姓名"); return; } if (string.IsNullOrEmpty(ReelNoVal1.Text)) { MessageBox.Show("请扫描入烘烤物料条码"); return; } dt = (DataTable)dh.ExecuteSql($@"SELECT * FROM baking_log WHERE status = '烘烤中' AND reel_no = '{ReelNoVal1.Text.Trim()}'", "select"); if (dt.Rows.Count == 0) { MessageBox.Show($"条码号:{ReelNoVal1.Text} 不在烘烤箱中,请重试"); ReelNoVal1.Focus(); ReelNoVal1.SelectAll(); return; } dh.ExecuteSql($@"UPDATE baking_log SET status = '已烘烤',out_date = sysdate,baking_time = trunc((sysdate - in_date) * 24) || ':' || lpad(trunc(MOD((sysdate - in_date) * 24 * 60, 60)),2,'0') || ':' || lpad(trunc(MOD((sysdate - in_date) * 24 * 60 * 60, 60)),2,'0'),out_name = '{EmployeeVal1.Text.Trim()}' WHERE status = '烘烤中' and reel_no = '{ReelNoVal1.Text.Trim()}'", "insert"); //EmployeeVal1.Text = ""; ReelNoVal1.Text = ""; //UpdateMaterial("C"); LoadBaking(); MessageBox.Show($"条码号:{ReelNoVal1.Text} 出烘烤箱成功"); } } }