using System; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using UAS_MES.DataOperate; using UAS_MES.Entity; using UAS_MES.PublicMethod; namespace UAS_MES.Make { public partial class Make_PositionStock : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataHelper dh; DataTable dt; LogStringBuilder sql = new LogStringBuilder(); DataTable Dbfind; string ma_id; string craftcode_condition = ""; public Make_PositionStock() { InitializeComponent(); } private void 岗位备料_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); ma_code.TableName = "make left join product on ma_prodcode=pr_code "; ma_code.SelectField = "ma_code # 工单号,ma_prodcode # 产品编号,ma_craftcode # 工艺路线,pr_detail # 产品名称"; ma_code.FormName = Name; ma_code.DBTitle = "工单查询"; ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "pr_detail", "ma_craftcode" }; ma_code.Condition = "ma_statuscode='STARTED'"; ma_code.DbChange += Ma_code_DbChange; sc_stepcode.Text = User.CurrentStepCode; ma_code.SetLockCheckBox(Lock); Lock.GetMakeCodeCtl(ma_code); dh = new DataHelper(); } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); FillDataGridView(); } private void 岗位备料_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void Clean_Click(object sender, EventArgs e) { OperateResult.Clear(); } //物料批号Enter事件 private void pr_batchnum_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (pr_batchnum.Text != "") { if (ma_code.Text != "") { string ErrMessage = ""; if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrMessage)) { sql.Clear(); sql.Append("select cr_code from craft left join craftdetail on cd_crid=cr_id where cr_code in (" + craftcode_condition + ") "); sql.Append("and cr_prodcode='" + ma_prodcode.Text + "' and cr_statuscode='AUDITED' and cd_stepcode='" + User.CurrentStepCode + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { dt = (DataTable)dh.ExecuteSql("select bar_remain,bar_prodcode from barcode inner join product on pr_code=bar_prodcode where bar_code ='" + pr_batchnum.Text + "' and bar_status = 1 ", "select"); if (dt.Rows.Count > 0) { string bar_remain = dt.Rows[0]["bar_remain"].ToString(); string bar_prodcode = dt.Rows[0]["bar_prodcode"].ToString(); sql.Clear(); sql.Append("select * from stepproduct inner join product on pr_code=sp_soncode left join makematerial on mm_prodcode=sp_soncode where "); sql.Append("sp_craftcode='" + ma_craftcode.Text + "' and sp_stepcode='" + User.CurrentStepCode + "' and sp_soncode='" + bar_prodcode + "' and pr_tracekind=2 "); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { string mm_oneuseqty = dt.Rows[0]["mm_oneuseqty"].ToString(); string mm_prodcode = dt.Rows[0]["mm_prodcode"].ToString(); if (dh.getRowCount("makesourcestock", "mss_makecode='" + ma_code.Text + "' and mss_prodcode='" + mm_prodcode + "' and mss_barcode='" + pr_batchnum.Text + "'") == 0) { sql.Clear(); sql.Append("insert into makesourcestock (mss_id,mss_makecode,mss_linecode ,mss_craftcode,"); sql.Append("mss_stepcode,mss_barcode,mss_fprodcode,mss_indate,mss_inman,mss_qty,"); sql.Append("mss_remain,mss_baseqty,mss_prodcode,mss_maid) values(makesourcestock_seq.nextval,'" + ma_code.Text + "','" + User.UserLineCode + "',"); sql.Append("'" + ma_craftcode.Text + "','" + sc_stepcode.Text + "','" + pr_batchnum.Text + "','" + mm_prodcode + "',"); sql.Append("sysdate,'" + User.UserCode + "','" + bar_remain + "','" + bar_remain + "','" + mm_oneuseqty + "','" + bar_prodcode + "','" + ma_id + "')"); dh.ExecuteSql(sql.GetString(), "insert"); dh.UpdateByCondition("barcode", "bar_place='" + ma_code.Text + "'", "bar_code='" + pr_batchnum.Text + "'"); //数据插入成功后加载Grid的数据 FillDataGridView(); OperateResult.AppendText(">>条码号" + pr_batchnum.Text + "备料成功\n", Color.Green, pr_batchnum); } else OperateResult.AppendText(">>条码号" + pr_batchnum.Text + "的物料已分配\n", Color.Red, pr_batchnum); } else OperateResult.AppendText(">>条码号" + pr_batchnum.Text + "对应的物料不是当前工单当前工序需要备的物料\n", Color.Red, pr_batchnum); } else OperateResult.AppendText(">>条码号:" + pr_batchnum.Text + "不存在,或者状态无效\n", Color.Red, pr_batchnum); } else OperateResult.AppendText(">>当前岗位资源工序不在工单对应的途程中\n", Color.Red); } else OperateResult.AppendText(">>" + ErrMessage + "\n", Color.Red); } else OperateResult.AppendText(">>工单号不能为空\n", Color.Red, pr_batchnum); } else OperateResult.AppendText(">>物料批号不允许为空\n", Color.Red); } } //加载Grid数据 private void FillDataGridView() { sql.Clear(); sql.Append("select nvl(mss_id,0) mss_id,sp_soncode,mss_prodcode,sp_oneuseqty,mss_barcode,nvl(mss_qty,0) mss_qty ,mss_remain,"); sql.Append("pr_detail,nvl(mss_useqty,0) mss_useqty from stepbom left join stepproduct on sp_sbid=sb_id left join product on "); sql.Append("pr_code=sp_mothercode left join makesourcestock on mss_makecode='" + ma_code.Text + "' and mss_craftcode=sb_craftcode "); sql.Append("and mss_stepcode=sp_stepcode and sp_soncode=mss_prodcode where sb_prodcode='" + ma_prodcode.Text + "' and sb_craftcode='" + ma_craftcode.Text + "' "); sql.Append("and sp_stepcode='" + User.CurrentStepCode + "' and sp_tracekind=2"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); BaseUtil.FillDgvWithDataTable(BatchProductDGV, dt); } private void Confirm_Click(object sender, EventArgs e) { pr_batchnum_KeyDown(sender, new KeyEventArgs(Keys.Enter)); } private void Screen_Click(object sender, EventArgs e) { FillDataGridView(); } private void ma_prodcode_TextChanged(object sender, EventArgs e) { if (ma_code.Text != "") { dt = (DataTable)dh.ExecuteSql("select ma_id,ma_craftcode,ma_statuscode,ma_code,ma_prodcode,pr_spec,pr_detail from make left join product on ma_prodcode=pr_code where ma_code='" + ma_code.Text + "'", "select"); if (dt.Rows.Count > 0) { ma_id = dt.Rows[0]["ma_id"].ToString(); string craftcode = dt.Rows[0]["ma_craftcode"].ToString(); BaseUtil.SetFormValue(this.Controls, dt); } else OperateResult.AppendText(">>工单号不存在\n", Color.Red); } else OperateResult.AppendText(">>工单号不允许为空\n", Color.Red); } private void BatchProduct_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (BatchProductDGV.Columns[e.ColumnIndex].Name == "DeleteRow") { if (e.RowIndex >= 0) { string id = BatchProductDGV.Rows[e.RowIndex].Cells["mss_id"].Value.ToString(); if (id != "0") { BatchProductDGV.Rows.RemoveAt(e.RowIndex); dh.ExecuteSql("delete from makesourcestock where mss_id='" + id + "'", "delete"); } } } } private void ma_code_UserControlTextChanged(object sender, EventArgs e) { if (ma_code.Text.Length > 4) { craftcode_condition = ""; DataTable dt = (DataTable)dh.ExecuteSql("select ma_craftcode from make where ma_code='" + ma_code.Text + "'", "select"); string craftcode = ""; if (dt.Rows.Count > 0) { craftcode = dt.Rows[0]["ma_craftcode"].ToString(); } sql.Clear(); sql.Append("select distinct ms_craftcode ma_craftcode from makeserial left join craft on cr_code=ms_craftcode "); sql.Append("where ms_makecode='" + ma_code.Text + "' and ms_craftcode<>'" + craftcode + "'"); dt.Merge((DataTable)dh.ExecuteSql(sql.GetString(), "select")); ma_craftcode.DisplayMember = "ma_craftcode"; ma_craftcode.ValueMember = "ma_craftcode"; ma_craftcode.DataSource = dt; for (int i = 0; i < dt.Rows.Count; i++) { if (dt.Rows.Count - 1 == i) craftcode_condition += "'" + dt.Rows[i]["ma_craftcode"].ToString() + "'"; else craftcode_condition += "'" + dt.Rows[i]["ma_craftcode"].ToString() + "',"; } } } private void BatchProductDGV_CellEndEdit(object sender, DataGridViewCellEventArgs e) { string id = BatchProductDGV.Rows[e.RowIndex].Cells["mss_id"].Value.ToString(); string qty = "0"; if (id != "0") { try { if (int.Parse(BatchProductDGV.Rows[e.RowIndex].Cells["mss_qty"].Value.ToString()) > 0) { qty = BatchProductDGV.Rows[e.RowIndex].Cells["mss_qty"].Value.ToString(); } else { OperateResult.AppendText(">>数量必须大于0\n", Color.Red); return; } } catch (Exception) { OperateResult.AppendText(">>数量必须大于0\n", Color.Red); return; } dh.UpdateByCondition("makesourcestock", "mss_qty='" + qty + "'", "mss_id='" + id + "'"); } } } }