Browse Source

添加在线返修功能

章政 7 years ago
parent
commit
71bfc139f7

+ 44 - 0
UAS-MES/CustomControl/TextBoxWithIcon/SNCodeEnterTextBox.Designer.cs

@@ -0,0 +1,44 @@
+namespace UAS_MES.CustomControl.TextBoxWithIcon
+{
+    partial class SNCodeEnterTextBox
+    {
+        /// <summary> 
+        /// 必需的设计器变量。
+        /// </summary>
+        private System.ComponentModel.IContainer components = null;
+
+        /// <summary> 
+        /// 清理所有正在使用的资源。
+        /// </summary>
+        /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
+        protected override void Dispose(bool disposing)
+        {
+            if (disposing && (components != null))
+            {
+                components.Dispose();
+            }
+            base.Dispose(disposing);
+        }
+
+        #region 组件设计器生成的代码
+
+        /// <summary> 
+        /// 设计器支持所需的方法 - 不要修改
+        /// 使用代码编辑器修改此方法的内容。
+        /// </summary>
+        private void InitializeComponent()
+        {
+            this.SuspendLayout();
+            // 
+            // SNCodeEnterTextBox
+            // 
+            this.Enter += new System.EventHandler(this.SNCodeEnterTextBox_Enter);
+            this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SNCodeEnterTextBox_KeyDown);
+            this.Leave += new System.EventHandler(this.SNCodeEnterTextBox_Leave);
+            this.ResumeLayout(false);
+
+        }
+
+        #endregion
+    }
+}

+ 106 - 0
UAS-MES/CustomControl/TextBoxWithIcon/SNCodeEnterTextBox.cs

@@ -0,0 +1,106 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using System.Runtime.InteropServices;
+
+namespace UAS_MES.CustomControl.TextBoxWithIcon
+{
+    public partial class SNCodeEnterTextBox : TextBox
+    {
+
+        [DllImport("user32.dll", EntryPoint = "GetKeyboardState")]
+        public static extern int GetKeyboardState(byte[] pbKeyState);
+
+
+        public static bool CapsLockStatus
+        {
+            get
+            {
+                byte[] bs = new byte[256];
+                GetKeyboardState(bs);
+                return (bs[0x14] == 1);
+            }
+        }
+
+        private string ID1;
+        private string Power1;
+        private string str;
+        private string str1;
+        private string str2;
+        /// <summary>
+        /// 设置锁定字段
+        /// </summary>
+        string AllPower1;
+
+        public string AllPower
+        {
+            get { return AllPower1; }
+            set { AllPower1 = value; }
+        }
+
+        public string ID
+        {
+            get { return ID1; }
+            set { ID1 = value; }
+        }
+
+        public string Str
+        {
+            get { return str; }
+            set { str = value; }
+        }
+
+        public string Str1
+        {
+            get { return str1; }
+            set { str1 = value; }
+        }
+
+        public string Str2
+        {
+            get { return str2; }
+            set { str2 = value; }
+        }
+
+        public string Power
+        {
+            get { return Power1; }
+            set { Power1 = value; }
+        }
+
+        public SNCodeEnterTextBox()
+        {
+            InitializeComponent();
+        }
+
+        private void SNCodeEnterTextBox_Leave(object sender, EventArgs e)
+        {
+            this.BackColor = Color.White;
+        }
+
+        private void SNCodeEnterTextBox_Enter(object sender, EventArgs e)
+        {
+            this.BackColor = Color.GreenYellow;
+        }
+
+        private void SNCodeEnterTextBox_KeyDown(object sender, KeyEventArgs e)
+        {
+            if (e.Modifiers.CompareTo(Keys.Control) == 0 && e.KeyCode == Keys.A)
+                this.SelectAll();
+
+            if (CapsLockStatus)
+            {
+                Console.WriteLine("大写");
+            }
+            else
+            {
+                Console.WriteLine("小写");
+            }
+        }
+    }
+}

+ 46 - 10
UAS-MES/FunctionCode/Make/Make_Repair.cs

@@ -85,17 +85,51 @@ namespace UAS_MES.Make
                     BadCodeTree.Nodes.Clear();
                     return;
                 }
-                string ms_status = dh.getFieldDataByCondition("Makeserial", "ms_status", "ms_sncode='" + GetSNCode.Text + "'").ToString();
-                if (ms_status == "4")
+                dt = dh.getFieldsDataByCondition("makeserial", new string[] { "ms_status", "nvl(ms_ifrework,0)ms_ifrework", "ms_reworkstatus" }, "ms_sncode='" + GetSNCode.Text + "'");
+                if (dt.Rows.Count > 0)
                 {
-                    OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "已处于报废状态\n", Color.Red);
-                    BaseUtil.CleanForm(this);
-                    BadCodeTree.Nodes.Clear();
-                    return;
+                    string ms_status = dt.Rows[0]["ms_status"].ToString();
+                    string ifrework = dt.Rows[0]["ms_ifrework"].ToString();
+                    string reworkstatus = dt.Rows[0]["ms_reworkstatus"].ToString();
+                    //如果不是返修序列号执行原来的步骤
+                    if (ifrework == "0")
+                    {
+                        if (ms_status == "4")
+                        {
+                            OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "已处于报废状态\n", Color.Red);
+                            BaseUtil.CleanForm(this);
+                            BadCodeTree.Nodes.Clear();
+                            return;
+                        }
+                        if (ms_status != "3")
+                        {
+                            OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "不处于维修状态\n", Color.Red);
+                            BaseUtil.CleanForm(this);
+                            BadCodeTree.Nodes.Clear();
+                            return;
+                        }
+                    }
+                    else
+                    {
+                        if (reworkstatus == "4")
+                        {
+                            OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "已处于报废状态\n", Color.Red);
+                            BaseUtil.CleanForm(this);
+                            BadCodeTree.Nodes.Clear();
+                            return;
+                        }
+                        if (reworkstatus != "3")
+                        {
+                            OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "不处于维修状态\n", Color.Red);
+                            BaseUtil.CleanForm(this);
+                            BadCodeTree.Nodes.Clear();
+                            return;
+                        }
+                    }
                 }
-                if (ms_status != "3")
+                else
                 {
-                    OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "不处于维修状态\n", Color.Red);
+                    OperatResult.AppendText(">>序列号:" + GetSNCode.Text + "不存在\n", Color.Red);
                     BaseUtil.CleanForm(this);
                     BadCodeTree.Nodes.Clear();
                     return;
@@ -325,6 +359,8 @@ namespace UAS_MES.Make
                         else
                         {
                             dh.UpdateByCondition("makeserial", "ms_paststep = ms_paststep ||'," + User.CurrentStepCode + "',ms_reworkstatus= 4,ms_nextstepcode='',ms_stepcode='" + User.CurrentStepCode + "'", "ms_sncode='" + ms_sncode.Text + "' and ms_makecode='" + macode + "'");
+                            dh.UpdateByCondition("oqcbatch", "ob_nowcheckqty=ob_nowcheckqty-1", "ob_checkno='" + ms_checkno.Text + "'");
+                            dh.ExecuteSql("delete from oqcbatchedetail where obd_sncode='" + ms_sncode.Text + "'", "delete");
                         }
                         dh.UpdateByCondition("make", "MA_NGMADEQTY=nvl(MA_NGMADEQTY,0)+1", "ma_code='" + macode + "'");
                         LogicHandler.InsertMakeProcess(ms_sncode.Text, ms_makecode.Text, User.UserSourceCode, "报废", "序列号报废", User.UserCode);
@@ -457,7 +493,7 @@ namespace UAS_MES.Make
                         sql.Clear();
                         sql.Append("insert into makebadrsloc(mbl_id,mbl_mbrid,mbl_loc,mbl_badcode,mbl_brcode,");
                         sql.Append("mbl_sncode,mbl_makecode,mbl_indate ,mbl_inman) select makebadrsloc_seq.nextval," + mbr_id);
-                        sql.Append(",'"+mbl_loc.Text+"','" + bc_code.Text + "','" + nr_code.Text + "','" + GetSNCode.Text + "','" + macode + "',");
+                        sql.Append(",'" + mbl_loc.Text + "','" + bc_code.Text + "','" + nr_code.Text + "','" + GetSNCode.Text + "','" + macode + "',");
                         sql.Append("sysdate,'" + User.UserCode + "' from dual");
                         dh.ExecuteSql(sql.GetString(), "insert");
                         dt = (DataTable)dh.ExecuteSql("select mbl_id,mbl_loc from makebadrsloc where mbl_mbrid=" + mbr_id, "select");
@@ -502,7 +538,7 @@ namespace UAS_MES.Make
                         sql.Clear();
                         sql.Append("insert into makebadrspart(mbp_id,mbp_mbrid,mbp_part,mbp_badcode,");
                         sql.Append("mbp_brcode,mbp_sncode,mbp_makecode,mbp_indate,mbp_inman)");
-                        sql.Append("select makebadrspart_seq.nextval," + mbr_id + ",'"+prodcode.Text+"',");
+                        sql.Append("select makebadrspart_seq.nextval," + mbr_id + ",'" + prodcode.Text + "',");
                         sql.Append("'" + bc_code.Text + "','" + nr_code.Text + "','" + GetSNCode.Text + "','" + macode + "',");
                         sql.Append("sysdate,'" + User.UserCode + "' from dual");
                         dh.ExecuteSql(sql.GetString(), "insert");

+ 74 - 33
UAS-MES/FunctionCode/Make/Make_TestCollection.cs

@@ -168,14 +168,27 @@ namespace UAS_MES.Make
                         }
                         if (GoodProduct.Checked)
                         {
-                            dt = (DataTable)dh.ExecuteSql("select ms_nextstepcode,ms_stepcode,ms_status,nvl(st_ifrepair,0) st_ifrepair from makeserial left join step on ms_stepcode=st_code where ms_id='" + oMSID + "'", "select");
+                            dt = (DataTable)dh.ExecuteSql("select ms_nextstepcode,ms_reworkstatus,nvl(ms_ifrework,0)ms_ifrework,ms_stepcode,ms_status,nvl(st_ifrepair,0) st_ifrepair from makeserial left join step on ms_stepcode=st_code where ms_id='" + oMSID + "'", "select");
                             string status = dt.Rows[0]["ms_status"].ToString();
+                            string reworkstatus = dt.Rows[0]["ms_reworkstatus"].ToString();
                             string stepcode = dt.Rows[0]["ms_stepcode"].ToString();
                             string ifrepair = dt.Rows[0]["st_ifrepair"].ToString();
-                            if (stepcode == User.CurrentStepCode && (status == "1" || status == "2") && ifrepair == "0")
+                            string ifrework = dt.Rows[0]["ms_ifrework"].ToString();
+                            if (ifrework != "0")
                             {
-                                OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过" + User.CurrentStepCode + "工序,采集结果为良品\n", Color.Red, ms_sncode);
-                                return;
+                                if (stepcode == User.CurrentStepCode && (reworkstatus == "1" || reworkstatus == "2") && ifrepair == "0")
+                                {
+                                    OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过" + User.CurrentStepCode + "工序,采集结果为良品\n", Color.Red, ms_sncode);
+                                    return;
+                                }
+                            }
+                            else
+                            {
+                                if (stepcode == User.CurrentStepCode && (status == "1" || status == "2") && ifrepair == "0")
+                                {
+                                    OperateResult.AppendText(">>" + ms_sncode.Text + " 序列号已执行过" + User.CurrentStepCode + "工序,采集结果为良品\n", Color.Red, ms_sncode);
+                                    return;
+                                }
                             }
                         }
                         SetCollectResult();
@@ -283,7 +296,62 @@ namespace UAS_MES.Make
             }
             else if (GoodProduct.Checked)
             {
-                SetTestPass();
+                DataTable dt = dh.getFieldsDataByCondition("makeserial", new string[] { "ms_reworkstatus", "nvl(ms_ifrework,0) ms_ifrework", "ms_paststep" }, "ms_sncode='" + ms_sncode.Text + "' and ms_makecode='" + ma_code.Text + "'");
+                string ifrework = "";
+                string ms_paststep = "";
+                string reworkstatus = "";
+                if (dt.Rows.Count > 0)
+                {
+                    ifrework = dt.Rows[0]["ms_ifrework"].ToString();
+                    ms_paststep = dt.Rows[0]["ms_paststep"].ToString();
+                    reworkstatus = dt.Rows[0]["ms_reworkstatus"].ToString();
+                }
+                //如果不是返修的
+                if (ifrework == "0")
+                {
+                    dt = (DataTable)dh.ExecuteSql("select mb_id,bc_name,mbr_mbid from makebad left join makebadreason on mbr_mbid=mb_id left join badcode on mb_badcode=bc_code where mb_sncode='" + ms_sncode.Text + "' and mb_status<>0", "select");
+                    for (int i = 0; i < dt.Rows.Count; i++)
+                    {
+                        if (dt.Rows[i]["mb_id"].ToString() != dt.Rows[i]["mbr_mbid"].ToString())
+                            ErrorMessage += "【" + dt.Rows[i]["bc_name"].ToString() + "】";
+                    }
+                    //存在不良记录
+                    if (ErrorMessage != "")
+                    {
+                        OperateResult.AppendText(">>序列号:" + ms_sncode.Text + " 已经判为不良品,不允许修改!\n", Color.Red);
+                        return;
+                    }
+                    else
+                    {
+                        //良品信息采集
+                        if (LogicHandler.UpdateMakeMessage(ms_sncode.Text, ma_code.Text, "良品采集", User.UserSourceCode, User.UserCode, "检测合格", out ErrorMessage))
+                        {
+                            LastSncode = ms_sncode.Text;
+                            OperateResult.AppendText(">>" + ms_sncode.Text + "已采集为良品\n", Color.Green, ms_sncode);
+                            //记录操作日志
+                            LogicHandler.DoCommandLog(User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
+                        }
+                        else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
+                    }
+                }
+                else
+                {
+                    if (reworkstatus != "3")
+                    {
+                        if (LogicHandler.UpdateMakeMessage(ms_sncode.Text, ma_code.Text, "良品采集", User.UserSourceCode, User.UserCode, "检测合格", out ErrorMessage))
+                        {
+                            LastSncode = ms_sncode.Text;
+                            OperateResult.AppendText(">>" + ms_sncode.Text + "已采集为良品\n", Color.Green, ms_sncode);
+                            //记录操作日志
+                            LogicHandler.DoCommandLog(User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
+                        }
+                        else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
+                    }
+                    else
+                    {
+                        OperateResult.AppendText(">>返修的不良序列号必须先进行维修\n", Color.Red);
+                    }
+                }
             }
             //加载页面信息
             LoadCollectedNum();
@@ -301,33 +369,6 @@ namespace UAS_MES.Make
             BaseUtil.SetFormValue(Controls, dt);
         }
 
-        private void SetTestPass()
-        {
-            DataTable dt = (DataTable)dh.ExecuteSql("select mb_id,bc_name,mbr_mbid from makebad left join makebadreason on mbr_mbid=mb_id left join badcode on mb_badcode=bc_code where mb_sncode='" + ms_sncode.Text + "'", "select");
-            string ErrorMessage = "";
-            for (int i = 0; i < dt.Rows.Count; i++)
-            {
-                if (dt.Rows[i]["mb_id"].ToString() != dt.Rows[i]["mbr_mbid"].ToString())
-                    ErrorMessage += "【" + dt.Rows[i]["bc_name"].ToString() + "】";
-            }
-            //存在不良记录
-            if (ErrorMessage != "")
-                OperateResult.AppendText(">>序列号:" + ms_sncode.Text + " 已经判为不良品,不允许修改!\n", Color.Red);
-            else
-            {
-                //良品信息采集
-                if (LogicHandler.UpdateMakeMessage(ms_sncode.Text, ma_code.Text, "良品采集", User.UserSourceCode, User.UserCode, "检测合格", out ErrorMessage))
-                {
-                    LastSncode = ms_sncode.Text;
-                    OperateResult.AppendText(">>" + ms_sncode.Text + "已采集为良品\n", Color.Green, ms_sncode);
-                    //记录操作日志
-                    LogicHandler.DoCommandLog(User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "采集良品", "采集良品成功", LastSncode, ob_checkno.Text);
-                }
-                else
-                    OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red, ms_sncode);
-            }
-        }
-
         private void Save_Click(object sender, EventArgs e)
         {
             if (ms_sncode.Text == "")
@@ -549,7 +590,7 @@ namespace UAS_MES.Make
             ms_sncode.Focus();
             LogicHandler.InsertMakeProcess(LastSncode, ma_code.Text, User.UserSourceCode, "手动送检", "手动送检成功", User.UserCode);
             //记录操作日志
-            LogicHandler.DoCommandLog(User.UserCode,ma_code.Text,User.UserLineCode,User.UserSourceCode,"手动送检","手动送检成功","",ob_checkno.Text);
+            LogicHandler.DoCommandLog(User.UserCode, ma_code.Text, User.UserLineCode, User.UserSourceCode, "手动送检", "手动送检成功", "", ob_checkno.Text);
         }
 
         private void ob_checkno_TextChanged(object sender, EventArgs e)

+ 8 - 0
UAS-MES/FunctionCode/OQC/OQC_BatchResultJudge.cs

@@ -37,6 +37,14 @@ namespace UAS_MES.OQC
         {
             if (CheckStep())
             {
+                DataTable temp = dh.getFieldsDataByCondition("makeserial", new string[] { "nvl(ms_ifrework,0)ms_ifrework", "ms_reworkcheckno" }, "ms_sncode='" + ms_sncode.Text + "'");
+                if (temp.Rows.Count > 0)
+                {
+                    if (temp.Rows[0]["ms_ifrework"].ToString() != "0")
+                    {
+                        ob_checkno.Text = temp.Rows[0]["ms_reworkcheckno"].ToString();
+                    }
+                }
                 PassCheckStep = true;
                 string ErrorMessage = "";
                 DataTable[] dt = LogicHandler.GetOQCBatch(ms_sncode.Text, obd_outboxcode.Text, ob_checkno.Text, "OQCResultDetermine", out ErrorMessage);

+ 8 - 0
UAS-MES/FunctionCode/OQC/OQC_PlanMaintain.cs

@@ -56,6 +56,14 @@ namespace UAS_MES.OQC
         {
             if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
             {
+                DataTable temp = dh.getFieldsDataByCondition("makeserial", new string[] { "nvl(ms_ifrework,0)ms_ifrework", "ms_reworkcheckno" }, "ms_sncode='" + ms_sncode.Text + "'");
+                if (temp.Rows.Count > 0)
+                {
+                    if (temp.Rows[0]["ms_ifrework"].ToString() != "0")
+                    {
+                        ob_checkno.Text = temp.Rows[0]["ms_reworkcheckno"].ToString();
+                    }
+                }  
                 DataTable[] dt = LogicHandler.GetOQCBatch(ms_sncode.Text, obd_outboxcode.Text, ob_checkno.Text, "OQCPlanMaintain", out ErrorMessage);
                 if (dt != null)
                 {

+ 10 - 15
UAS-MES/FunctionCode/OQC/OQC_SamplingDataCollection.cs

@@ -47,6 +47,14 @@ namespace UAS_MES.OQC
         {
             if (LogicHandler.CheckStepAttribute(Tag.ToString(), User.UserSourceCode, out ErrorMessage))
             {
+                DataTable temp = dh.getFieldsDataByCondition("makeserial", new string[] { "nvl(ms_ifrework,0)ms_ifrework", "ms_reworkcheckno" }, "ms_sncode='" + sncode.Text + "'");
+                if (temp.Rows.Count > 0)
+                {
+                    if (temp.Rows[0]["ms_ifrework"].ToString() != "0")
+                    {
+                        ob_checkno.Text = temp.Rows[0]["ms_reworkcheckno"].ToString();
+                    }
+                }
                 DataTable[] dt = LogicHandler.GetOQCBatch(ms_sncode.Text == "" ? sncode.Text : ms_sncode.Text, obd_outboxcode.Text, ob_checkno.Text, "OQCDataCollection", out ErrorMessage);
                 if (ErrorMessage == "")
                 {
@@ -346,7 +354,7 @@ namespace UAS_MES.OQC
 
         private bool CheckBefore()
         {
-            if (ob_maxngacceptqty.Text == "" || ob_maxngacceptqty.Text == "0")
+            if (ob_maxngacceptqty.Text == "")
             {
                 if (ob_aqlcode.Text == "")
                     OperateResult.AppendText(">>最大不合格允许通过数为空的时候必须填写维护AQL标准\n", Color.Red);
@@ -371,20 +379,7 @@ namespace UAS_MES.OQC
             }
             else
             {
-                sql.Clear();
-                sql.Append("select wm_concat(oi_itemcode) codes from OQCitems where ");
-                sql.Append("nvl(oi_checkqty,0)<oi_sampleqty  and oi_sampleqty>0 and rownum<30 and oi_checkno='" + ob_checkno.Text + "'");
-                dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-                if (dt.Rows.Count > 0)
-                {
-                    if (dt.Rows[0]["codes"].ToString() != "")
-                    {
-                        OperateResult.AppendText(">>项目编号抽检数未达到样本数,项目编号[" + dt.Rows[0]["codes"].ToString() + "]\n", Color.Red);
-                        return false;
-                    }
-                    else
-                        return true;
-                }
+                return true;
             }
             return false;
         }