浏览代码

修改OQC抽样数据采集的折叠DGV,测试采集的BUG

章政 8 年之前
父节点
当前提交
41c6561ca7

+ 29 - 24
UAS-MES/FunctionCode/Make/Make_TestCollection.cs

@@ -207,7 +207,7 @@ namespace UAS_MES.Make
 
         private void bc_groupcode_SelectedIndexChanged(object sender, EventArgs e)
         {
-            LoadBadCodeListView();
+            LoadBadCodeListView(false);
         }
 
         /// <summary>
@@ -231,29 +231,8 @@ namespace UAS_MES.Make
         /// <summary>
         /// 加载不良代码的ListView的信息
         /// </summary>
-        private void LoadBadCodeListView()
+        private void LoadBadCodeListView(bool Clear)
         {
-            sql.Clear();
-            sql.Append("select nvl(bg_code,mb_bgcode)||':'||nvl(bg_name,mb_badcode) bg_code,nvl(mb_badcode,bc_code) bc_code,mb_badremark from makebad  ");
-            sql.Append("left join badgroup on mb_bgcode=bg_code left join badcode on mb_badcode=bc_code ");
-            sql.Append(" where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "'");
-            dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
-            ChoosedRejectList.Items.Clear();
-            ChoosedRejectList.BeginUpdate();
-            for (int i = 0; i < dt.Rows.Count; i++)
-            {
-                if (!WaitList.Contains(dt.Rows[i]["bc_code"].ToString()))
-                {
-                    ListViewItem lvi = new ListViewItem();
-                    //第一列是勾选列,设置列头文本为空
-                    lvi.Text = "";
-                    ChoosedList.Add(dt.Rows[i]["bc_code"].ToString());
-                    for (int j = 0; j < dt.Columns.Count; j++)
-                        lvi.SubItems.Add(dt.Rows[i][j].ToString());
-                    ChoosedRejectList.Items.Add(lvi);
-                }
-            }
-            ChoosedRejectList.EndUpdate();
             object bg_code = bc_groupcode.SelectedValue;
             sql.Clear();
             sql.Append("select bg_code||':'||bg_name bg_code,bc_code,bc_note ");
@@ -279,6 +258,31 @@ namespace UAS_MES.Make
             WaitRejectList.EndUpdate();
         }
 
+        /// <summary>
+        /// 加载已选不良的ListView
+        /// </summary>
+        private void LoadChoosedBadListView()
+        {
+            sql.Clear();
+            sql.Append("select nvl(bg_code,mb_bgcode)||':'||nvl(bg_name,mb_badcode) bg_code,nvl(mb_badcode,bc_code) bc_code,mb_badremark from makebad  ");
+            sql.Append("left join badgroup on mb_bgcode=bg_code left join badcode on mb_badcode=bc_code ");
+            sql.Append(" where mb_sncode='" + ms_sncode.Text + "' and mb_makecode='" + ma_code.Text + "'");
+            dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
+            ChoosedRejectList.Items.Clear();
+            ChoosedRejectList.BeginUpdate();
+            for (int i = 0; i < dt.Rows.Count; i++)
+            {
+                ListViewItem lvi = new ListViewItem();
+                //第一列是勾选列,设置列头文本为空
+                lvi.Text = "";
+                ChoosedList.Add(dt.Rows[i]["bc_code"].ToString());
+                for (int j = 0; j < dt.Columns.Count; j++)
+                    lvi.SubItems.Add(dt.Rows[i][j].ToString());
+                ChoosedRejectList.Items.Add(lvi);
+            }
+            ChoosedRejectList.EndUpdate();
+        }
+
         /// <summary>
         /// 设置良品或者不良品的采集结果
         /// </summary>
@@ -288,7 +292,8 @@ namespace UAS_MES.Make
             //如果勾选的是不良品
             if (Reject.Checked)
             {
-                LoadBadCodeListView();
+                LoadBadCodeListView(true);
+                LoadChoosedBadListView();
                 OperateResult.AppendText(">>请采集不良代码\n", Color.Green);
                 bc_code.Focus();
                 //勾选了自动产生代码

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

@@ -130,6 +130,7 @@ namespace UAS_MES.OQC
                     sql.Clear();
                 }
                 OperateResult.AppendText(">>保存配置成功\n", Color.Green);
+                RefreshConfiguration.PerformClick();
             }
             else
                 OperateResult.AppendText(">>送检批次必须为待检验状态\n", Color.Red);

+ 98 - 84
UAS-MES/FunctionCode/OQC/OQC_SamplingDataCollection.Designer.cs

@@ -47,6 +47,7 @@
             this.ob_aqlcode_label = new System.Windows.Forms.Label();
             this.ob_maxngacceptqty_label = new System.Windows.Forms.Label();
             this.ChooseAll = new System.Windows.Forms.CheckBox();
+            this.ob_projectcode_label = new System.Windows.Forms.Label();
             this.ob_maxngacceptqty = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
             this.ob_aqlcode = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
             this.ob_projectcode = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
@@ -58,9 +59,19 @@
             this.bg_code1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.bg_name1 = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.WaitChooseDGV = new UAS_MES.CustomControl.DataGrid_View.DataGridViewExpand();
+            this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+            this.bg_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.bg_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.ob_remark = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
             this.sncode = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
             this.CheckTypeDGV = new UAS_MES.CustomControl.DataGrid_View.DataGridViewExpand();
+            this.choose = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+            this.oi_itemcode = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.oi_ng = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.oi_leveldefect = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ois_remark = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ois_status = new System.Windows.Forms.DataGridViewTextBoxColumn();
+            this.ois_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.ChooseedReject = new UAS_MES.CustomControl.ButtonUtil.ArrowRightButton();
             this.WaitReject = new UAS_MES.CustomControl.ButtonUtil.ArrowLeftButton();
             this.oi_checkqty = new UAS_MES.CustomControl.TextBoxWithIcon.EnterTextBox();
@@ -81,16 +92,6 @@
             this.obd_outboxcode_dgv = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.ob_makecode_dgv = new System.Windows.Forms.DataGridViewTextBoxColumn();
             this.obd_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.choose = new System.Windows.Forms.DataGridViewCheckBoxColumn();
-            this.oi_itemcode = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.oi_ng = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.oi_leveldefect = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.ois_remark = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.ois_status = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.ois_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.Column3 = new System.Windows.Forms.DataGridViewCheckBoxColumn();
-            this.bg_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
-            this.bg_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
             ((System.ComponentModel.ISupportInitialize)(this.ChoosedDGV)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.WaitChooseDGV)).BeginInit();
             ((System.ComponentModel.ISupportInitialize)(this.CheckTypeDGV)).BeginInit();
@@ -292,6 +293,18 @@
             this.ChooseAll.Text = "全选";
             this.ChooseAll.UseVisualStyleBackColor = true;
             // 
+            // ob_projectcode_label
+            // 
+            this.ob_projectcode_label.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+            this.ob_projectcode_label.AutoSize = true;
+            this.ob_projectcode_label.Font = new System.Drawing.Font("微软雅黑", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+            this.ob_projectcode_label.Location = new System.Drawing.Point(641, 72);
+            this.ob_projectcode_label.Name = "ob_projectcode_label";
+            this.ob_projectcode_label.Size = new System.Drawing.Size(74, 21);
+            this.ob_projectcode_label.TabIndex = 218;
+            this.ob_projectcode_label.Text = "检验方案";
+            // 
             // ob_maxngacceptqty
             // 
             this.ob_maxngacceptqty.AllPower = null;
@@ -330,16 +343,15 @@
             this.ob_projectcode.BackColor = System.Drawing.Color.White;
             this.ob_projectcode.Enabled = false;
             this.ob_projectcode.ID = null;
-            this.ob_projectcode.Location = new System.Drawing.Point(95, 2);
+            this.ob_projectcode.Location = new System.Drawing.Point(645, 106);
             this.ob_projectcode.Name = "ob_projectcode";
             this.ob_projectcode.Power = null;
-            this.ob_projectcode.Size = new System.Drawing.Size(116, 21);
+            this.ob_projectcode.Size = new System.Drawing.Size(146, 21);
             this.ob_projectcode.Str = null;
             this.ob_projectcode.Str1 = null;
             this.ob_projectcode.Str2 = null;
             this.ob_projectcode.TabIndex = 213;
             this.ob_projectcode.Tag = "NoAuto";
-            this.ob_projectcode.Visible = false;
             // 
             // Clean
             // 
@@ -448,6 +460,28 @@
             this.WaitChooseDGV.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.WaitChooseDGV_DataError);
             this.WaitChooseDGV.RowHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.WaitChooseDGV_RowHeaderMouseClick);
             // 
+            // Column3
+            // 
+            this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
+            this.Column3.HeaderText = "勾选";
+            this.Column3.Name = "Column3";
+            this.Column3.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+            this.Column3.Width = 60;
+            // 
+            // bg_code
+            // 
+            this.bg_code.DataPropertyName = "bg_code";
+            this.bg_code.HeaderText = "不良分组";
+            this.bg_code.Name = "bg_code";
+            this.bg_code.Width = 93;
+            // 
+            // bg_name
+            // 
+            this.bg_name.DataPropertyName = "bg_name";
+            this.bg_name.HeaderText = "分组名称";
+            this.bg_name.Name = "bg_name";
+            this.bg_name.Width = 93;
+            // 
             // ob_remark
             // 
             this.ob_remark.AllPower = null;
@@ -502,6 +536,55 @@
             this.CheckTypeDGV.DataError += new System.Windows.Forms.DataGridViewDataErrorEventHandler(this.CheckTypeDGV_DataError);
             this.CheckTypeDGV.RowHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.CheckTypeDGV_RowHeaderMouseClick);
             // 
+            // choose
+            // 
+            this.choose.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
+            this.choose.DataPropertyName = "choose";
+            this.choose.HeaderText = "勾选";
+            this.choose.Name = "choose";
+            this.choose.Resizable = System.Windows.Forms.DataGridViewTriState.False;
+            this.choose.Width = 60;
+            // 
+            // oi_itemcode
+            // 
+            this.oi_itemcode.DataPropertyName = "oi_checkkind";
+            this.oi_itemcode.HeaderText = "检验类型";
+            this.oi_itemcode.Name = "oi_itemcode";
+            this.oi_itemcode.Width = 78;
+            // 
+            // oi_ng
+            // 
+            this.oi_ng.DataPropertyName = "oi_count";
+            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
+            this.oi_ng.DefaultCellStyle = dataGridViewCellStyle1;
+            this.oi_ng.HeaderText = "样本数量";
+            this.oi_ng.Name = "oi_ng";
+            this.oi_ng.Width = 78;
+            // 
+            // oi_leveldefect
+            // 
+            this.oi_leveldefect.DataPropertyName = "oi_checkedcount";
+            this.oi_leveldefect.HeaderText = "已检数量";
+            this.oi_leveldefect.Name = "oi_leveldefect";
+            this.oi_leveldefect.Width = 78;
+            // 
+            // ois_remark
+            // 
+            this.ois_remark.HeaderText = "";
+            this.ois_remark.Name = "ois_remark";
+            // 
+            // ois_status
+            // 
+            this.ois_status.HeaderText = "";
+            this.ois_status.Name = "ois_status";
+            // 
+            // ois_id
+            // 
+            this.ois_id.DataPropertyName = "ois_id";
+            this.ois_id.HeaderText = "";
+            this.ois_id.Name = "ois_id";
+            this.ois_id.Visible = false;
+            // 
             // ChooseedReject
             // 
             this.ChooseedReject.Image = ((System.Drawing.Image)(resources.GetObject("ChooseedReject.Image")));
@@ -784,82 +867,12 @@
             this.obd_id.Name = "obd_id";
             this.obd_id.Visible = false;
             // 
-            // choose
-            // 
-            this.choose.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
-            this.choose.DataPropertyName = "choose";
-            this.choose.HeaderText = "勾选";
-            this.choose.Name = "choose";
-            this.choose.Resizable = System.Windows.Forms.DataGridViewTriState.False;
-            this.choose.Width = 60;
-            // 
-            // oi_itemcode
-            // 
-            this.oi_itemcode.DataPropertyName = "oi_checkkind";
-            this.oi_itemcode.HeaderText = "检验类型";
-            this.oi_itemcode.Name = "oi_itemcode";
-            this.oi_itemcode.Width = 78;
-            // 
-            // oi_ng
-            // 
-            this.oi_ng.DataPropertyName = "oi_count";
-            dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
-            this.oi_ng.DefaultCellStyle = dataGridViewCellStyle1;
-            this.oi_ng.HeaderText = "样本数量";
-            this.oi_ng.Name = "oi_ng";
-            this.oi_ng.Width = 78;
-            // 
-            // oi_leveldefect
-            // 
-            this.oi_leveldefect.DataPropertyName = "oi_checkedcount";
-            this.oi_leveldefect.HeaderText = "已检数量";
-            this.oi_leveldefect.Name = "oi_leveldefect";
-            this.oi_leveldefect.Width = 78;
-            // 
-            // ois_remark
-            // 
-            this.ois_remark.HeaderText = "";
-            this.ois_remark.Name = "ois_remark";
-            // 
-            // ois_status
-            // 
-            this.ois_status.HeaderText = "";
-            this.ois_status.Name = "ois_status";
-            // 
-            // ois_id
-            // 
-            this.ois_id.DataPropertyName = "ois_id";
-            this.ois_id.HeaderText = "";
-            this.ois_id.Name = "ois_id";
-            this.ois_id.Visible = false;
-            // 
-            // Column3
-            // 
-            this.Column3.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.None;
-            this.Column3.HeaderText = "勾选";
-            this.Column3.Name = "Column3";
-            this.Column3.Resizable = System.Windows.Forms.DataGridViewTriState.False;
-            this.Column3.Width = 60;
-            // 
-            // bg_code
-            // 
-            this.bg_code.DataPropertyName = "bg_code";
-            this.bg_code.HeaderText = "不良分组";
-            this.bg_code.Name = "bg_code";
-            this.bg_code.Width = 93;
-            // 
-            // bg_name
-            // 
-            this.bg_name.DataPropertyName = "bg_name";
-            this.bg_name.HeaderText = "分组名称";
-            this.bg_name.Name = "bg_name";
-            this.bg_name.Width = 93;
-            // 
             // OQC_SamplingDataCollection
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
             this.ClientSize = new System.Drawing.Size(1065, 610);
+            this.Controls.Add(this.ob_projectcode_label);
             this.Controls.Add(this.ob_maxngacceptqty);
             this.Controls.Add(this.ob_maxngacceptqty_label);
             this.Controls.Add(this.ob_aqlcode);
@@ -981,5 +994,6 @@
         private System.Windows.Forms.DataGridViewTextBoxColumn ois_remark;
         private System.Windows.Forms.DataGridViewTextBoxColumn ois_status;
         private System.Windows.Forms.DataGridViewTextBoxColumn ois_id;
+        private System.Windows.Forms.Label ob_projectcode_label;
     }
 }

+ 98 - 57
UAS-MES/FunctionCode/OQC/OQC_SamplingDataCollection.cs

@@ -22,6 +22,8 @@ namespace UAS_MES.OQC
         LogStringBuilder sql = new LogStringBuilder();
         string[] LevelDefect = new string[] { "A#A", "B#B", "C#C", "D#D" };
 
+        DataTable TempForCheckType = new DataTable();
+
         public OQC_SamplingDataCollection()
         {
             InitializeComponent();
@@ -47,12 +49,10 @@ namespace UAS_MES.OQC
             if (ErrorMessage == "")
             {
                 BaseUtil.SetFormValue(Controls, dt[0]);
-                BaseUtil.FillExpandDgvWithDataTable(CheckTypeDGV, dt[1], true);
+                GetBatchTypeGridData();
+                dgvr.Clear();
             }
-            else
-            {
-                BaseUtil.CleanForm(this);
-                OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red); }
+            else OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
         }
 
         private void Clean_Click(object sender, EventArgs e)
@@ -64,44 +64,56 @@ namespace UAS_MES.OQC
         {
             if (e.KeyCode == Keys.Enter)
             {
-                //输入的序列号不能为空
-                if (sncode.Text != "")
+                if (CheckSnCode())
+                {
+                    GetBatchTypeGridData();
+                }
+            }
+        }
+
+        private bool CheckSnCode()
+        {
+            //输入的序列号不能为空
+            if (sncode.Text != "")
+            {
+                //判断当前的检验状态
+                if (ob_status.Text == "待检验" || ob_status.Text == "检验中")
                 {
-                    //判断当前的检验状态
-                    if (ob_status.Text == "待检验" || ob_status.Text == "检验中")
+                    dt = (DataTable)dh.ExecuteSql("select obd_sncode,ob_source,ob_makecode from OQCBatchDetail left join OQCBatch  on ob_id=obd_obid where obd_sncode='" + sncode.Text + "'", "select");
+                    if (dt.Rows.Count > 0)
                     {
-                        dt = (DataTable)dh.ExecuteSql("select obd_sncode,ob_source,ob_makecode from OQCBatchDetail left join OQCBatch on ob_id=obd_obid where obd_sncode='" + sncode.Text + "'", "select");
-                        if (dt.Rows.Count > 0)
+                        if (dt.Rows[0]["ob_source"].ToString() != "工序")
                         {
-                            if (dt.Rows[0]["ob_source"].ToString() != "工序")
-                                GetBatchTypeGridData();
-                            else
-                            {
-                                string ErrorMessage = "";
-                                string oMakeCode = "";
-                                string oMsID = "";
-                                bool ifFirst;
-                                if (LogicHandler.CheckStepSNAndMacode(dt.Rows[0]["ob_makecode"].ToString(), User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsID, out ErrorMessage))
-                                    GetBatchTypeGridData();
-                                else
-                                    OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
-                            }
+                            return true;
                         }
                         else
                         {
-                            BaseUtil.CleanForm(this);
-                            OperateResult.AppendText(">>序列号不属于当前抽检批次\n", Color.Red);
+                            string ErrorMessage = "";
+                            string oMakeCode = "";
+                            string oMsID = "";
+                            if (LogicHandler.CheckStepSNAndMacode(dt.Rows[0]["ob_makecode"].ToString(), User.UserSourceCode, sncode.Text, User.UserCode, out oMakeCode, out oMsID, out ErrorMessage))
+                            {
+                                return true;
+                            }
+                            else {
+                                OperateResult.AppendText(">>" + ErrorMessage + "\n", Color.Red);
+                                return false;
+                            }
                         }
                     }
-                    else
-                    {
-                        BaseUtil.CleanForm(this);
-                        OperateResult.AppendText(">>送检批次必须是待检验或者检验中\n", Color.Red);
+                    else {
+                        OperateResult.AppendText(">>序列号"+sncode.Text+"不属于当前抽检批次\n", Color.Red);
+                        return false;
                     }
                 }
                 else {
-                    BaseUtil.CleanForm(this);
-                    OperateResult.AppendText(">>输入的内容不能为空\n", Color.Red); }
+                    OperateResult.AppendText(">>送检批次必须是待检验或者检验中\n", Color.Red);
+                    return false;
+                }
+            }
+            else {
+                OperateResult.AppendText(">>序列号不能为空\n", Color.Red);
+                return false;
             }
         }
 
@@ -122,9 +134,17 @@ namespace UAS_MES.OQC
             //只能操作检验中或者待检验的批次
             if (ob_status.Text == "待检验" || ob_status.Text == "检验中")
             {
+                if (!CheckSnCode())
+                    return;
                 //判断检验项是否勾选,如勾选取出明细数据
-                DataTable UpdateData = BaseUtil.DGVIfChecked(CheckTypeDGV);
-                if (UpdateData != null)
+                for (int i = TempForCheckType.Rows.Count - 1; i >= 0; i--)
+                {
+                    if (TempForCheckType.Rows[i][0].ToString() == "False")
+                    {
+                        TempForCheckType.Rows.RemoveAt(i);
+                    }
+                }
+                if (TempForCheckType != null && TempForCheckType.Rows.Count>0)
                 {
                     //用于存放更新的数据
                     List<string> ois_ifng_update = new List<string>();
@@ -136,22 +156,23 @@ namespace UAS_MES.OQC
                     List<string> ois_defectlevel_insert = new List<string>();
                     List<string> ois_remark_insert = new List<string>();
                     List<string> oi_itemcode_insert = new List<string>();
-                    for (int i = 0; i < UpdateData.Rows.Count; i++)
+                    for (int i = 0; i < TempForCheckType.Rows.Count; i++)
                     {
                         //将布尔值转换为0,-1
-                        if (UpdateData.Rows[i]["ois_id"].ToString() != "" && UpdateData.Rows[i]["ois_id"].ToString() != "0")
+                        Console.WriteLine(TempForCheckType.Rows[i]["ois_id"].ToString());
+                        if (TempForCheckType.Rows[i]["ois_id"].ToString() != "" && TempForCheckType.Rows[i]["ois_id"].ToString() != "0")
                         {
-                            ois_ifng_update.Add(UpdateData.Rows[i]["oi_ng"].ToString() == "True" ? "-1" : "0");
-                            ois_defectlevel_update.Add(UpdateData.Rows[i]["oi_leveldefect"].ToString());
-                            ois_remark_update.Add(UpdateData.Rows[i]["ois_remark"].ToString());
-                            ois_id_update.Add(UpdateData.Rows[i]["ois_id"].ToString());
+                            ois_ifng_update.Add(TempForCheckType.Rows[i]["oi_ng"].ToString() == "True" ? "-1" : "0");
+                            ois_defectlevel_update.Add(TempForCheckType.Rows[i]["oi_leveldefect"].ToString());
+                            ois_remark_update.Add(TempForCheckType.Rows[i]["ois_remark"].ToString());
+                            ois_id_update.Add(TempForCheckType.Rows[i]["ois_id"].ToString());
                         }
                         else
                         {
-                            oi_itemcode_insert.Add(UpdateData.Rows[i]["oi_itemcode"].ToString());
-                            ois_ifng_insert.Add(UpdateData.Rows[i]["oi_ng"].ToString() == "True" ? "-1" : "0");
-                            ois_defectlevel_insert.Add(UpdateData.Rows[i]["oi_leveldefect"].ToString());
-                            ois_remark_insert.Add(UpdateData.Rows[i]["ois_remark"].ToString());
+                            oi_itemcode_insert.Add(TempForCheckType.Rows[i]["oi_itemcode"].ToString());
+                            ois_ifng_insert.Add(TempForCheckType.Rows[i]["oi_ng"].ToString() == "True" ? "-1" : "0");
+                            ois_defectlevel_insert.Add(TempForCheckType.Rows[i]["oi_leveldefect"].ToString());
+                            ois_remark_insert.Add(TempForCheckType.Rows[i]["ois_remark"].ToString());
                         }
                     }
                     //判断是否含不通过的内容
@@ -161,6 +182,11 @@ namespace UAS_MES.OQC
                         if (ois_ifng_insert[i] == "-1")
                             AllPass = false;
                     }
+                    for (int i = 0; i < ois_ifng_update.Count; i++)
+                    {
+                        if (ois_ifng_update[i] == "-1")
+                            AllPass = false;
+                    }
                     if (ChoosedDGV.RowCount > 0 || AllPass)
                     {
                         //执行批量更新的SQL
@@ -169,13 +195,13 @@ namespace UAS_MES.OQC
                             dh.BatchInsert("update OQCItemSamples set ois_ifng=:ois_ifng,ois_defectlevel=:ois_defectlevel,ois_remark=:ois_remark where ois_id=:ois_id",
                          new string[] { "ois_ifng", "ois_defectlevel", "ois_remark", "ois_id" }, ois_ifng_update.ToArray(), ois_defectlevel_update.ToArray(), ois_remark_update.ToArray(), ois_id_update.ToArray());
                         }
-                        //如果主键为空,并且存在需要插入的数据则执行插入操作
+                        //如果主键为空,并且存在需要插入的数据则执行插入操作 
                         if (oi_itemcode_insert.Count > 0)
                         {
                             sql.Clear();
                             sql.Append("insert into OQCItemSamples (ois_id,ois_checkno,ois_makecode, ois_sncode,ois_projectcode,ois_itemcode,");
                             sql.Append("ois_ifng,ois_defectlevel,ois_remark)values(OQCItemSamples_SEQ.nextval,'" + ob_checkno.Text + "',");
-                            sql.Append("'" + ob_makecode.Text + "','" + sncode.Text + "','',:ois_itemcode,:ois_ifng,:ois_defectlevel,:ois_remark)");
+                            sql.Append("'" + ob_makecode.Text + "','" + sncode.Text + "','" + ob_projectcode.Text + "',:ois_itemcode,:ois_ifng,:ois_defectlevel,:ois_remark)");
                             dh.BatchInsert(sql.GetString(), new string[] { "ois_itemcode", "ois_ifng", "ois_defectlevel", "ois_remark" },
                                 oi_itemcode_insert.ToArray(), ois_ifng_insert.ToArray(), ois_defectlevel_insert.ToArray(), ois_remark_insert.ToArray());
                         }
@@ -200,10 +226,12 @@ namespace UAS_MES.OQC
                         //更新检验状态,如果是待检验的更新为检验中
                         dh.ExecuteSql("update OQCBatch set ob_status='CHECKING' where ob_checkno='" + ob_checkno.Text + "' and ob_status='UNCHECK'", "update");
                         //更新批次中的合格数不合格数:用抽检批检验项目表获取最大的抽检数和不合格数
-                        dh.ExecuteSql("update OQCBATCH set (ob_ngqty,ob_okqty)=(select nvl(max(oi_ngqty), 0), max(oi_checkqty) - nvl(max(oi_ngqty), 0) from OQCItems where oi_checkno ='" + ob_checkno.Text + "') where ob_checkno ='" + ob_checkno.Text + "'", "update");
+                        dh.ExecuteSql("update OQCBATCH set (ob_ngqty,ob_okqty)=(select nvl(max(oi_ngqty),0),max(oi_checkqty)-nvl(max(oi_ngqty),0) from OQCItems where oi_checkno ='" + ob_checkno.Text + "') where ob_checkno ='" + ob_checkno.Text + "'", "update");
                         OperateResult.AppendText(">>操作成功\n", Color.Green);
+                        GetBatchTypeGridData();
+                        TempForCheckType.Clear();
                     }
-                    else OperateResult.AppendText(">>请勾选不良明细\n", Color.Red);
+                    else OperateResult.AppendText(">>含有未通过项请勾选不良明细\n", Color.Red);
                 }
                 else OperateResult.AppendText(">>请勾选送检明细\n", Color.Red);
             }
@@ -230,7 +258,7 @@ namespace UAS_MES.OQC
                     string ErrorMessage;
                     LogicHandler.UpdateMakeMessage(ms_sncode.Text, ob_makecode.Text, "OQC批判过", User.UserSourceCode, User.UserName, "批次通过", out ErrorMessage);
                     //记录操作日志
-                    LogicHandler.InsertMakeProcess(ms_sncode.Text, ob_makecode.Text,User.UserSourceCode, "批结果判定", "批次通过", User.UserName);
+                    LogicHandler.InsertMakeProcess(ms_sncode.Text, ob_makecode.Text, User.UserSourceCode, "批结果判定", "批次通过", User.UserName);
                     GetBatch.PerformClick();
                     OperateResult.AppendText(">>通过批成功\n", Color.Green);
                 }
@@ -290,11 +318,13 @@ namespace UAS_MES.OQC
         {
             if (!dgvr.Contains(CheckTypeDGV.Rows[e.RowIndex]))
             {
+                string checkkind = CheckTypeDGV.Rows[e.RowIndex].Cells["oi_itemcode"].Value.ToString();
                 sql.Clear();
-                sql.Append("select ois_sncode,nvl(ois_id,0) ois_id ,oi_itemcode ,nvl(ois_ifng,1) oi_ng,nvl(ois_defectlevel,'-1')");
+                sql.Append("select oi_checkkind,ois_sncode,nvl(ois_id,0) ois_id ,oi_itemcode ,nvl(ois_ifng,0) oi_ng,nvl(ois_defectlevel,'-1')");
                 sql.Append("oi_leveldefect,ois_remark,case ois_id when 0 then '未检验' else '已检验' end ois_status from OQCItems ");
                 sql.Append("left join OQCItemSamples on  ois_sncode='" + sncode.Text + "' and ois_checkno=oi_checkno and ");
-                sql.Append("ois_itemcode=oi_itemcode and ois_projectcode = oi_projectcode where oi_checkno ='" + ob_checkno.Text + "'");
+                sql.Append("ois_itemcode=oi_itemcode and ois_projectcode = oi_projectcode where oi_checkno ='" + ob_checkno.Text + "' ");
+                sql.Append("and oi_checkkind='" + checkkind + "'");
                 DataTable dt = (DataTable)dh.ExecuteSql(sql.GetString(), "select");
                 DataGridViewRow headerRow = new DataGridViewRow();
 
@@ -331,6 +361,7 @@ namespace UAS_MES.OQC
                     //标记展开的子行
                     dataRow.Tag = "SonRow";
                     DataGridViewCheckBoxCell checkcell = new DataGridViewCheckBoxCell();
+                    checkcell.Tag = "SonRow";
                     dataRow.Cells.Add(checkcell);
 
                     textcell = new DataGridViewTextBoxCell();
@@ -418,8 +449,22 @@ namespace UAS_MES.OQC
         //如果当前行的Cell有修改过就将CheckBox勾选上
         private void CheckTypeDGV_CellValueChanged(object sender, DataGridViewCellEventArgs e)
         {
-            if (e.RowIndex > 0)
+            if (e.RowIndex > 0 && e.ColumnIndex > 0)
                 CheckTypeDGV.Rows[e.RowIndex].Cells[0].Value = true;
+            try
+            {
+                if (e.ColumnIndex == 0)
+                {
+                    if (CheckTypeDGV.Rows[e.RowIndex].Cells[0].Tag != null)
+                    {
+                        if (CheckTypeDGV.Rows[e.RowIndex].Cells[0].Tag.ToString() == "SonRow")
+                            BaseUtil.GetExpandDGVCheckedRow(CheckTypeDGV, TempForCheckType, e.RowIndex, 1);
+                    }
+                }
+            }
+            catch (Exception)
+            {
+            }
         }
 
         private void WaitChooseDGV_DataError(object sender, DataGridViewDataErrorEventArgs e) { }
@@ -432,6 +477,7 @@ namespace UAS_MES.OQC
         private void CheckTypeDGV_CellContentClick(object sender, DataGridViewCellEventArgs e)
         {
             BaseUtil.ExpandDGVCheck(CheckTypeDGV, e);
+
         }
 
         private void bccode_KeyDown(object sender, KeyEventArgs e)
@@ -468,11 +514,6 @@ namespace UAS_MES.OQC
             }
         }
 
-        private void ChooseAll_CheckedChanged(object sender, EventArgs e)
-        {
-
-        }
-
         private void obd_outboxcode_KeyDown(object sender, KeyEventArgs e)
         {
             if (e.KeyCode == Keys.Enter)

+ 28 - 4
UAS-MES/PublicMethod/BaseUtil.cs

@@ -150,7 +150,6 @@ namespace UAS_MES.PublicMethod
                                 {
                                     if (controlName.ToUpper() == dt.Columns[k].Caption.ToUpper())
                                     {
-                                        Console.WriteLine(controlName);
                                         collection[i].Controls[j].Text = dt.Rows[0][k].ToString();
                                     }
                                 }
@@ -786,10 +785,8 @@ namespace UAS_MES.PublicMethod
                         if (dgv.Rows[i].Tag.ToString() == "SonRow")
                         {
                             DataRow dr = dt.NewRow();
-
                             for (int j = 1; j < dgv.ColumnCount; j++)
                             {
-                                Console.WriteLine(dgv.Rows[i].Cells[j].FormattedValue);
                                 dr[dgv.Columns[j].Name] = dgv.Rows[i].Cells[j].FormattedValue;
                             }
                             dt.Rows.Add(dr);
@@ -804,6 +801,34 @@ namespace UAS_MES.PublicMethod
             return dt;
         }
 
+        public static void GetExpandDGVCheckedRow(DataGridView dgv, DataTable dt, int RowIndex, int DistinctColumnIndex)
+        {
+            //第一列是勾选框,排除在循环之外
+            if (dt.Columns.Count == 0)
+            {
+                for (int i = 0; i < dgv.Columns.Count; i++)
+                {
+                    dt.Columns.Add(dgv.Columns[i].Name);
+                }
+            }
+            //是展开的子行的数据
+            if (dgv.Rows[RowIndex].Tag != null && dgv.Rows[RowIndex].Tag.ToString() == "SonRow")
+            {
+                DataRow dr = dt.NewRow();
+                DataRow[] datarow = (dt.Select(dgv.Columns[DistinctColumnIndex].Name + " ='" + dgv.Rows[RowIndex].Cells[DistinctColumnIndex].FormattedValue + "'"));
+                //判断值是否存在,存在移除重新添加
+                if (datarow.Length > 0)
+                {
+                    dt.Rows.Remove(datarow[0]);
+                }
+                for (int j = 0; j < dgv.ColumnCount; j++)
+                {
+                    dr[dgv.Columns[j].Name] = dgv.Rows[RowIndex].Cells[j].FormattedValue;
+                }
+                dt.Rows.Add(dr);
+            }
+        }
+
         /// <summary>
         /// 设置只允许输入数字
         /// </summary>
@@ -837,7 +862,6 @@ namespace UAS_MES.PublicMethod
         {
             //获取筛选条件中的列名,值
             DataRow[] dataRows = dt.Select(condition);
-            Console.WriteLine(dataRows.Length + "");
             DataTable ndt = dt.Clone();
             for (int i = 0; i < dataRows.Length; i++)
             {

+ 9 - 8
UAS-MES/PublicMethod/LogicHandler.cs

@@ -897,7 +897,7 @@ namespace UAS_MES.PublicMethod
                     dh.ExecuteSql(sql.ToString(), "update");
                     //查询Form数据
                     sql.Clear();
-                    sql.Append("select ob_id,ob_makecode,ob_status,ob_prodcode,(select  max(oi_checkqty) oi_checkqty from OQCItems where oi_checkno='" + iCheckNo + "'),");
+                    sql.Append("select ob_id,ob_makecode,ob_status,ob_prodcode,(select max(oi_checkqty)from OQCItems where oi_checkno='" + iCheckNo + "') oi_checkqty,");
                     sql.Append("ob_batchqty,nvl(ob_okqty,0) ob_okqty,nvl(ob_ngqty,0) ob_ngqty,ob_maxngacceptqty,ob_source,ob_checkno,ob_result from OQCBatch where ob_checkno='" + iCheckNo + "'");
                     Form = (DataTable)dh.ExecuteSql(sql.ToString(), "select");
                     if (Form.Rows.Count == 0)
@@ -921,15 +921,17 @@ namespace UAS_MES.PublicMethod
         /// <param name="iUserName"></param>
         public static void InsertMakeProcess(string iSnCode, string iMakeCode,string iSourceCode, string iMPKind, string result, string iUserName)
         {
-            string CurrentStep = GetStepCodeBySource(iSourceCode);
+            string CurrentStep = "";
+            string LineCode = "";
+            string CurrentStepName = "";
+            GetStepCodeAndNameAndLineBySource(iSourceCode,ref CurrentStep,ref CurrentStepName ,ref LineCode);
             sql.Clear();
             sql.Append("insert into MakeProcess(mp_id,mp_makecode,mp_maid, mp_mscode,mp_sncode,mp_stepcode,mp_stepname,");
-            sql.Append("mp_craftcode,mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode) ");
+            sql.Append("mp_craftcode,mp_craftname,mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode,mp_snstatus,mp_sncheckno,mp_snoutboxcode)");
             sql.Append("select MakeProcess_seq.nextval, ma_code,ma_id,ms_code,ms_sncode,mcd_stepcode,mcd_stepname,");
-            sql.Append("ma_craftcode,ma_craftname,'" + iMPKind + "','" + result + "',sysdate,'" + iUserName + "',ma_wccode,ma_linecode,'"+ iSourceCode + "'");
-            sql.Append("from make left join makecraftdetail on mcd_macode=ma_code left join makeserial on ms_makecode=ma_code ");
+            sql.Append("ma_craftcode,ma_craftname,'" + iMPKind + "','" + result + "',sysdate,'" + iUserName + "',ma_wccode,'"+ LineCode + "','"+ iSourceCode + "',");
+            sql.Append("ms_status,ms_checkno,ms_outboxcode from make left join makecraftdetail on mcd_macode=ma_code left join makeserial on ms_makecode=ma_code ");
             sql.Append("where ms_sncode='" + iSnCode + "' and ma_code='" + iMakeCode + "' and mcd_stepcode='"+ CurrentStep + "'");
-            //插入makeprocess 
             dh.ExecuteSql(sql.ToString(), "insert");
             sql.Clear();
         }
@@ -1097,10 +1099,9 @@ namespace UAS_MES.PublicMethod
             sql.Append("sp_mothercode=ma_prodcode and sp_stepcode=ms_nextstepcode where ms_sncode='" + iSnCode + "'");
             dh.BatchInsert(sql.ToString(), new string[] { "bc_code", "bg_code", "bc_remark" }, iBadCode, iBadGroupCode, iBadRemark);
             //更新序列号已经采集的工序 ms_paststep 已采集数据,更新下一工序
-            dh.UpdateByCondition("makeserial", "ms_paststep = ms_paststep ||'," + StepCode + "'", "ms_sncode='" + iSnCode + "'");
+            dh.UpdateByCondition("makeserial", "ms_paststep = ms_paststep ||'," + StepCode + "',ms_status=3", "ms_sncode='" + iSnCode + "'");
             //判断当前采集点是否为扣料工序cd_ifreduce =-1 则为扣料工序
             //之前保存的不良就不再调用
-            Console.WriteLine("ms_status"+ ms_status);
             if (ms_status != "3")
                 SetStepFinish(iMakeCode, iSourceCode, iSnCode, "不良采集", iResult, iUserCode, out oErrorMessage);
             return true;

+ 1 - 1
UAS-MES/UAS-MES.csproj

@@ -41,7 +41,7 @@
     <MinimumRequiredVersion>1.0.0.201</MinimumRequiredVersion>
     <CreateWebPageOnPublish>true</CreateWebPageOnPublish>
     <WebPage>publish.htm</WebPage>
-    <ApplicationRevision>231</ApplicationRevision>
+    <ApplicationRevision>237</ApplicationRevision>
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
     <UseApplicationTrust>true</UseApplicationTrust>
     <CreateDesktopShortcut>true</CreateDesktopShortcut>