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.DataOperate; using UAS_MES.Entity; using UAS_MES.PublicMethod; namespace UAS_MES.Make { public partial class Make_Decompose : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataTable dt; DataTable dt1; DataTable dtbar; LogStringBuilder sql = new LogStringBuilder(); DataHelper dh; //记录当前序列号的ms_id string ms_id; //采集计数 int count; //Bom版本 string ma_bomversion; int rowindex; //记录当前输入框的值 string sncode_1; string[] bccode ; string[] bgcode; string[] id ; public Make_Decompose() { InitializeComponent(); } private void Make_Decompose_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); dh = new DataHelper(); sn_code.Focus(); OperateResult.AppendText(">>请输入序列号\n"); count = 0; deccount.Text = count + ""; } private void sn_code_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { sql.Clear(); sql.Append("select max(ms_id) from makeserial where ms_sncode ='" + sn_code.Text + "' or exists (select 1"); sql.Append(" from makesnrelation where beforesn='" + sn_code.Text + "' and ms_makecode=makecode)"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); ms_id = dt.Rows[0][0].ToString(); sncode_1 = sn_code.Text; BaseUtil.CleanForm(this); deccount.Text = count + ""; if (ms_id != "") { sql.Clear(); sql.Append("select ms_id,ms_status,ms_makecode,ms_prodcode,pr_detail ||',' || pr_spec pr_name ,ms_sncode,ms_firstsn,ms_craftcode,ms_craftname,ms_wccode from makeserial left join product on pr_code=ms_prodcode where ms_id='" + ms_id + "'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows[0][1].ToString() != "0" && dt.Rows[0][1].ToString() != "1") { BaseUtil.SetFormValue(this.Controls, dt); if (dt.Rows[0][6].ToString() == "") { LoadData(ms_makecode.Text,sender,e); } else { LoadData(dt.Rows[0][6].ToString(),sender,e); } GetItem(); } else { OperateResult.AppendText(">>序列号" + ms_sncode.Text + "必须是非在线状态才能做拆解\n", Color.Red); sn_code.Text = ""; BaseUtil.CleanForm(this); sn_code.Focus(); return; } } else { ms_id = null; OperateResult.AppendText(">>序列号"+ sncode_1 + "不存在\n",Color.Red); sn_code.Text = ""; BaseUtil.CleanForm(this); sn_code.Focus(); return; } } } private void GetItem() { dt1 = new DataTable(); sql.Clear(); sql.Append("select ma_bomversion from makeserial left join make on ma_code=ms_makecode "); sql.Append("left join product on ms_prodcode=pr_code where ms_sncode='" + ms_sncode.Text + "' order by ms_id desc"); dt1 = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt1.Rows.Count > 0) { ma_bomversion = dt1.Rows[0][0].ToString(); } } //加载此序列号上料记录 private void LoadData(string sncode,object sender,KeyEventArgs e) { sncode_1 = sncode; sql.Clear(); sql.Append("select cm_sncode,cm_maprodcode,cm_maid,cm_id,cm_soncode,cm_barcode,pr_detail,cm_materialtype from craftmaterial left join product on pr_code=cm_soncode where"); sql.Append(" cm_sncode='" + sncode_1 + "' and cm_maprodcode='" + ms_prodcode.Text + "' and nvl(cm_status,0)='0'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { BaseUtil.FillDgvWithDataTable(LabelDataGridView, dt); } else { OperateResult.AppendText(">>序列号"+ ms_sncode.Text + "无上料数据\n", Color.Red); } LoadBadcode(sender,e); } private void Make_Decompose_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void LabelDataGridView_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.ColumnIndex >= 0 && e.RowIndex >= 0) { if (LabelDataGridView.Columns[e.ColumnIndex].HeaderText == "拆解更换") { if (LabelDataGridView.Rows[e.RowIndex].Cells["Choose2"].Value != null) { if ((Boolean)LabelDataGridView.Rows[e.RowIndex].Cells["Choose2"].Value == false) { LabelDataGridView.Rows[e.RowIndex].Cells["Choose2"].Value = true; } if ((Boolean)LabelDataGridView.Rows[e.RowIndex].Cells["Choose2"].Value == true) { LabelDataGridView.Rows[e.RowIndex].Cells["Choose2"].Value = false; } } } else if (LabelDataGridView.Columns[e.ColumnIndex].HeaderText == "拆解") { if (LabelDataGridView.Rows[e.RowIndex].Cells["Choose"].Value != null) { if ((Boolean)LabelDataGridView.Rows[e.RowIndex].Cells["Choose"].Value == false) { LabelDataGridView.Rows[e.RowIndex].Cells["Choose"].Value = true; } if ((Boolean)LabelDataGridView.Rows[e.RowIndex].Cells["Choose"].Value == true) { LabelDataGridView.Rows[e.RowIndex].Cells["Choose"].Value = false; } } } else if (LabelDataGridView.Columns[e.ColumnIndex].Name == "AddBad") { if (ms_sncode.Text == "" || ms_makecode.Text == "") { OperateResult.AppendText(">>序列号和工单号不允许为空\n", Color.Red); } else { Make_NewBadCode badcode = new Make_NewBadCode(ms_sncode.Text, ms_makecode.Text); BaseUtil.SetFormCenter(badcode); badcode.FormClosed += LoadBadcode; badcode.ShowDialog(); } } } } private void LoadBadcode(object sender, EventArgs e) { sql.Clear(); sql.Append("select mb_id,mb_sncode,mb_badcode,mb_bgcode,nvl(bc_name,mb_badcode) bc_name,nvl(bg_name,mb_bgcode) bg_name,"); sql.Append("mb_badremark from makebad left join badcode on bc_code=mb_badcode left join badgroup "); sql.Append("on bg_code=mb_bgcode where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ms_makecode.Text + "' and mb_status=0"); dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); if (dt.Rows.Count > 0) { sql.Clear(); bccode = new string[dt.Rows.Count]; bgcode = new string[dt.Rows.Count]; id = new string[dt.Rows.Count]; for (int i = 0; i < dt.Rows.Count; i++) { sql.Append( dt.Rows[i]["mb_bgcode"].ToString()+" : "+dt.Rows[i]["mb_badcode"].ToString()+" "); bgcode[i] = dt.Rows[i]["mb_bgcode"].ToString(); bccode[i] = dt.Rows[i]["mb_badcode"].ToString(); } for (int i = 0; i < LabelDataGridView.Rows.Count; i++) { LabelDataGridView.Rows[i].Cells["mb_badcode"].Value = sql.GetString(); } } } private void Decompose_Click(object sender, EventArgs e) { Boolean decompose = false; for (int i = 0; i < LabelDataGridView.Rows.Count; i++) { if (LabelDataGridView.Rows[i].Cells["Choose"].Value != null) { if ((Boolean)LabelDataGridView.Rows[i].Cells["Choose"].Value == true && (LabelDataGridView.Rows[i].Cells["mb_badcode"].Value == null|| LabelDataGridView.Rows[i].Cells["New_BarCode"].Value == null)) { MessageBox.Show("第" + (i+1) + "行没有采集不良代码或新批号"); return; } } } for (int i = 0; i < LabelDataGridView.Rows.Count; i++) { if (LabelDataGridView.Rows[i].Cells["Choose2"].Value != null || LabelDataGridView.Rows[i].Cells["Choose"].Value != null) { if (LabelDataGridView.Rows[i].Cells["Choose"].Value != null) { if ((Boolean)LabelDataGridView.Rows[i].Cells["Choose"].Value == true) { dtbar = new DataTable(); sql.Clear(); sql.Append("select sp_id,sp_tracekind,sp_barcoderule,sp_prefix,sp_ifuseregex,sp_ifforsn,sp_length,sp_description,sp_soncode,pr_detail,pr_spec,"); sql.Append("sp_repcode,pr_id,sp_type,case when (sp_type='物料' and sp_soncode=pr_code) then '已采集' else '未采集' end sp_ifpick ,sp_prefix,"); sql.Append("sp_length,sp_regex,sp_ifforsn from stepproduct left join product on pr_code=sp_soncode where sp_bomversion='" + ma_bomversion + "' and "); sql.Append("sp_craftcode='" + ms_craftcode.Text + "'and sp_mothercode ='" + ms_prodcode.Text + "' and sp_soncode = '"+ LabelDataGridView.Rows[i].Cells["cm_soncode"].Value + "' "); sql.Append("and((sp_type = '物料' and( sp_tracekind <> 2 or sp_tracekind is null))or sp_type <> '物料') order by SP_DETNO asc"); dtbar = (DataTable)dh.ExecuteSql(sql.GetString(), "select"); String ErrorMessage; string sp_soncode = dtbar.Rows[0]["sp_soncode"].ToString(); string sp_prefix = dtbar.Rows[0]["sp_prefix"].ToString(); string sp_regex = dtbar.Rows[0]["sp_regex"].ToString(); string length = dtbar.Rows[0]["sp_length"].ToString(); string sp_ifforsn = dtbar.Rows[0]["sp_ifforsn"].ToString(); string sp_tracekind = dtbar.Rows[0]["sp_tracekind"].ToString(); string sp_barcoderule = dtbar.Rows[0]["sp_barcoderule"].ToString(); if (!LogicHandler.CheckSNBeforeLoad(LabelDataGridView.Rows[i].Cells["New_BarCode"].Value.ToString(), sp_soncode, sp_barcoderule, sp_prefix, length, out ErrorMessage)) { OperateResult.AppendText(">>物料" + LabelDataGridView.Rows[i].Cells["cm_barcode"].Value+" "+ErrorMessage + "\n", Color.Red); LoadData(sncode_1, sender, new KeyEventArgs(Keys.Enter)); return; } sql.Clear(); sql.Append("update craftmaterial set cm_status=-1,cm_dropman='" + User.UserName + "',"); sql.Append("cm_dropdate =sysdate,cm_dropstep='" + User.CurrentStepName + "',"); sql.Append("cm_dropsccode='" + User.CurrentStepCode + "' where cm_id='" + LabelDataGridView.Rows[i].Cells["cm_id"].Value + "'"); dh.ExecuteSql(sql.GetString(), "update"); //MakeBad表插入物料批号不良信息 sql.Clear(); sql.Append("insert into makebad (mb_id, mb_inman,mb_indate,mb_stepcode,mb_sourcecode,"); sql.Append("mb_bgcode,mb_mscode,mb_sncode, mb_badcode, mb_makecode)"); sql.Append("values (MakeBad_seq.nextval,'"+User.UserName+"',sysdate,'"+User.CurrentStepCode+"','"+User.UserSourceCode+ "',:bg_code ,'"+ LabelDataGridView.Rows[i].Cells["cm_barcode"].Value + "','"+ LabelDataGridView.Rows[i].Cells["cm_barcode"].Value + "',"); sql.Append(":bc_code,'"+ms_makecode.Text+"')"); dh.BatchInsert(sql.GetString(), new string[] { "bg_code", "bc_code" },bgcode,bccode); //将新批号绑定到序列号中 dt = (DataTable)dh.ExecuteSql("select sp_id from stepproduct where sp_mothercode='" + ms_prodcode.Text + "'", "select"); string sp_id = dt.Rows[0]["sp_id"].ToString(); sql.Clear(); sql.Append("insert into craftmaterial (cm_id, cm_makecode,cm_maid,cm_maprodcode,cm_soncode,cm_mscode,cm_sncode,cm_stepcode,cm_stepname,"); sql.Append("cm_craftcode,cm_craftname,cm_barcode,cm_inqty,cm_indate,cm_inman,cm_linecode,cm_wccode,cm_sourcecode,cm_spid, cm_materialtype,cm_status)"); sql.Append("values(Craftmaterial_seq.nextval,'"+ms_makecode.Text+"','"+ LabelDataGridView.Rows[i].Cells["cm_maid"].Value + "','"+ms_prodcode.Text+ "','" + LabelDataGridView.Rows[i].Cells["cm_soncode"].Value + "'"); sql.Append(",'"+ LabelDataGridView.Rows[i].Cells["cm_sncode"].Value + "','"+ LabelDataGridView.Rows[i].Cells["cm_sncode"].Value + "','"+User.CurrentStepCode+"','"+User.CurrentStepName+"',"); sql.Append("'"+ms_craftcode.Text+"','"+ms_craftname.Text+"','"+ LabelDataGridView.Rows[i].Cells["New_BarCode"].Value + "',1,sysdate,'"+User.UserName+"','"+User.UserLineCode+"','"+ms_wccode.Text+"',"); sql.Append("'"+User.UserSourceCode+"','"+ sp_id + "','"+ LabelDataGridView.Rows[i].Cells["cm_materialtype"].Value + "','0')"); dh.ExecuteSql(sql.GetString(), "insert"); OperateResult.AppendText("物料" + LabelDataGridView.Rows[i].Cells["cm_barcode"].Value + "拆解换料成功\n", Color.Green); decompose = true; } } else if ((Boolean)LabelDataGridView.Rows[i].Cells["Choose2"].Value == true) { //craftmaterial解除相应物料绑定 sql.Clear(); sql.Append("update craftmaterial set cm_status=-1,cm_dropman='"+User.UserName+"',"); sql.Append("cm_dropdate =sysdate,cm_dropstep='"+User.CurrentStepName+"',"); sql.Append("cm_dropsccode='" + User.CurrentStepCode + "' where cm_id='"+ LabelDataGridView.Rows[i].Cells["cm_id"].Value + "'"); dh.ExecuteSql(sql.GetString(), "update"); OperateResult.AppendText("物料"+ LabelDataGridView.Rows[i].Cells["cm_barcode"].Value + "拆解成功\n",Color.Green); decompose = true; } } } if (decompose) { count++; deccount.Text = count + ""; LoadData(sncode_1,sender, new KeyEventArgs(Keys.Enter)); } else { OperateResult.AppendText("没有选择拆解项\n", Color.Red); } } private void LabelDataGridView_Sorted(object sender, EventArgs e) { LoadBadcode(sender, e); } } }