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.Special { public partial class Special_ReSNBDNoStep : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataHelper dh; string bsncode = "";//序列号录入框值 DataTable Dbfind; LogStringBuilder sql = new LogStringBuilder(); public Special_ReSNBDNoStep() { InitializeComponent(); } private void Special_BoxSplit_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 # 产品编号,pr_orispeccode # 型号,ma_inqty # 投入数,ma_craftcode # 工艺路线"; ma_code.FormName = Name; ma_code.DBTitle = "工单查询"; ma_code.SetValueField = new string[] { "ma_code", "ma_prodcode", "pr_orispeccode", "ma_craftcode" }; ma_code.Condition = "ma_statuscode='STARTED' order by ma_auditdate desc"; ma_code.DbChange += Ma_code_DbChange; ma_code.SetLockCheckBox(Lock); Lock.GetMakeCodeCtl(ma_code); sncode.Focus(); OperateResult.AppendText(">>请输入返修SN号\n", Color.Black); } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); } private void ClearSn_code_Click(object sender, EventArgs e) { bsncode = ""; if (ChangeResult.Checked) { //勾选的时候提示输入TSN OperateResult.AppendText(">>请输入待转换新SN号\n", Color.Black, show_sncode); } else { OperateResult.AppendText(">>请输入返修SN号\n", Color.Black, show_sncode); } ChangeResult.Enabled = true; } string makecode; string prodcode; string orispeccode; string othcode1; private void sncode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { if (sncode.Text != "") { if (bsncode == "") { if (!ChangeResult.Checked) { if (!dh.CheckExist("makeserial", "ms_sncode = '" + sncode.Text + "'")) { if (!dh.CheckExist("AFSALES", "as_sn = '" + sncode.Text + "'")) { OperateResult.AppendText(">>SN" + sncode.Text + "未查询到生产记录以及售后判定记录,无法采集\n", Color.Red, sncode); return; } else { makecode = ""; prodcode = ""; orispeccode = ""; } } else { DataTable dt = (DataTable)dh.ExecuteSql("select * from makeserial left join product on ms_prodcode = pr_code where ms_sncode = '" + sncode.Text + "' order by ms_id desc", "select"); makecode = dt.Rows[0]["ms_makecode"].ToString(); prodcode = dt.Rows[0]["ms_prodcode"].ToString(); orispeccode = dt.Rows[0]["pr_orispeccode"].ToString(); othcode1 = dt.Rows[0]["ms_othcode1"].ToString(); } if (dh.CheckExist("returnsnbd", "rsb_oldsn = '" + sncode.Text + "'")) { string newsn = dh.getFieldDataByCondition("returnsnbd", "rsb_newsn", "rsb_oldsn = '" + sncode.Text + "'").ToString(); OperateResult.AppendText(">>返修SN" + sncode.Text + "已关联SN" + newsn + ",无法直接采集,需转换\n", Color.Red, sncode); return; } bsncode = sncode.Text; show_sncode.Text = bsncode; sncode.Text = ""; ChangeResult.Enabled = false; OperateResult.AppendText(">>返修SN" + bsncode + "采集\n", Color.Green, sncode); return; } else { if (!dh.CheckExist("returnsnbd", "rsb_newsn = '" + sncode.Text + "'")) { OperateResult.AppendText(">>待转换新SN" + sncode.Text + "无采集记录,不可转换\n", Color.Red, sncode); return; } bsncode = sncode.Text; show_sncode.Text = bsncode; sncode.Text = ""; ChangeResult.Enabled = false; OperateResult.AppendText(">>待转换新SN" + bsncode + "采集\n", Color.Green, sncode); return; } } else { if (sncode.Text == bsncode) { OperateResult.AppendText(">>不允许自己转自己\n", Color.Red, sncode); return; } Boolean CheckPass = true; DataTable dt = (DataTable)dh.ExecuteSql(" select max(psr_prefix)psr_prefix,max(PSR_LENGTH)PSR_LENGTH from productsnrule where psr_prodcode='"+ma_prodcode.Text+"' and psr_type='after'", "select"); string Err = ""; if (dt.Rows.Count > 0) { string psr_prefix = dt.Rows[0]["psr_prefix"].ToString(); string PSR_LENGTH = dt.Rows[0]["PSR_LENGTH"].ToString(); //psr_prefix支持多个前缀,以|分隔,满足其中任意一个即可 string[] psr_prefix_Arr = psr_prefix.Split('|'); bool PrefixPass = false; foreach (string prefixItem in psr_prefix_Arr) { string prefixValue = prefixItem.Trim(); if (prefixValue != "" && sncode.Text.StartsWith(prefixValue)) { PrefixPass = true; break; } } if (!PrefixPass) { Err = "序列号:" + sncode.Text + " 前缀错误,不满足产品防呆规则"; } if (int.Parse(PSR_LENGTH) > 0&&sncode.Text.Length != int.Parse(PSR_LENGTH)) { Err = "序列号:" + sncode.Text + " 长度错误,不满足产品防呆规则\n"; } if (Err != "") CheckPass = false; } if (!CheckPass) { if (!sncode.Text.Contains(ma_code.Text.Replace("-1", ""))) { OperateResult.AppendText(">>未包含工单号\n", Color.Red, sncode); return; } if (sncode.Text.Substring(sncode.Text.Length - 1) != "Z" && sncode.Text.Substring(sncode.Text.Length - 1) != "W") { OperateResult.AppendText(">>结尾非Z和W,不允许采集!\n", Color.Red, sncode); return; } } //else { // OperateResult.AppendText(Err, Color.Red, sncode); // return; //} if (!ChangeResult.Checked) { if (dh.CheckExist("returnsnbd", "rsb_newsn = '" + sncode.Text + "'")) { string oldsn = dh.getFieldDataByCondition("returnsnbd", "rsb_oldsn", "rsb_newsn = '" + sncode.Text + "'").ToString(); OperateResult.AppendText(">>采集新SN:" + sncode.Text + "已关联返修SN:" + oldsn + ",无法采集\n", Color.Red, sncode); return; } dh.ExecuteSql("insert into returnsnbd (rsb_id,rsb_newsn,rsb_oldsn,RSB_MAKECODE,RSB_PRODCODE,RSB_ORISPECCODE) values (returnsnbd_seq.nextval,'" + sncode.Text + "','" + show_sncode.Text + "','" + makecode + "','" + prodcode + "','" + orispeccode + "') ", "insert"); dh.ExecuteSql("update makeserial set ms_othcode1='" + othcode1 + "' where ms_sncode='" + sncode.Text + "'", "update"); OperateResult.AppendText(">>待转换新SN:" + show_sncode.Text + "更换至新SN:" + sncode.Text + "成功\n", Color.LawnGreen, sncode, show_sncode); bsncode = ""; ChangeResult.Enabled = true; return; } else { if (dh.CheckExist("returnsnbd", "rsb_newsn = '" + sncode.Text + "'")) { string oldsn = dh.getFieldDataByCondition("returnsnbd", "rsb_oldsn", "rsb_newsn = '" + sncode.Text + "'").ToString(); OperateResult.AppendText(">>采集新SN:" + sncode.Text + "已关联返修SN:" + oldsn + ",无法采集\n", Color.Red, sncode); return; } dh.ExecuteSql(" update returnsnbd set rsb_newsn = '" + sncode.Text + "' where rsb_newsn = '" + show_sncode.Text + "' ", "update"); bsncode = ""; ChangeResult.Enabled = true; OperateResult.AppendText(">>待转换新SN:" + show_sncode.Text + "更换至新SN:" + sncode.Text + "成功\n", Color.LawnGreen, sncode, show_sncode); return; } } } else { OperateResult.AppendText("<<序列号不能为空\n", Color.Red); } } } private void ChangeResult_CheckedChanged(object sender, EventArgs e) { if (ChangeResult.Checked) { //勾选的时候提示输入TSN OperateResult.AppendText(">>请输入待转换新SN号\n", Color.Black); } else { OperateResult.AppendText(">>请输入返修SN号\n", Color.Black); } } private void Special_ReSNBD_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } } }