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.OQC { public partial class OQC_CheckNoSplit : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataHelper dh; LogStringBuilder sql = new LogStringBuilder(); DataTable dt; string ErrorMessage = ""; string CheckSn = ""; public OQC_CheckNoSplit() { InitializeComponent(); } private void OQC_CheckNoSplit_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); dh = new DataHelper(); } private void OQC_CheckNoSplit_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { GetBatch.PerformClick(); } } private void GetBatch_Click(object sender, EventArgs e) { DataTable[] dt = LogicHandler.GetOQCBatch(ms_sncode.Text, obd_outboxcode.Text, ob_checkno.Text, "OQCCHECKNOSPLIT", out ErrorMessage); BaseUtil.SetFormValue(this.Controls, dt[0]); if (dt[1] != null) { BaseUtil.FillDgvWithDataTable(OutBoxDGV, dt[1]); } int oldchecknocount = dh.getRowCount("oqcbatch", "ob_oldcheckno='" + ob_checkno.Text + "'"); new_checkno.Text = ob_checkno.Text + "-0" + (oldchecknocount + 1); choosedsn.Text = "0"; totalsn.Text = OutBoxDGV.Rows.Count.ToString(); } private void SplitCheckNo_Click(object sender, EventArgs e) { if (choosedsn.Text != "0") { if (dh.getFieldDataByCondition("oqcbatch", "ob_status", "ob_checkno='" + ob_checkno.Text + "'").ToString() == "UNCHECK") { string[] sqls = new string[5]; //插入新批次的主表 string ob_id = dh.GetSEQ("oqcbatch_seq"); sql.Clear(); sql.Append("insert into oqcbatch(ob_id,ob_checkno,ob_indate,ob_checkman,ob_oldcheckno,ob_source,"); sql.Append("ob_batchqty,ob_status,ob_prodcode, ob_sourcecode,ob_reworkcode,ob_orgcheckno,"); sql.Append("OB_CRAFTCODE,OB_STEPCODE,OB_MAKECODE,oB_WCCODE,OB_FACTORY,OB_PROJECTCODE,OB_DESCRIPTION,"); sql.Append("OB_AQLCODE,OB_REMARK) select '" + ob_id + "','" + new_checkno.Text + "',sysdate,'" + User.UserCode + "',"); sql.Append("'" + ob_checkno.Text + "',ob_source,ob_batchqty,ob_status,ob_prodcode, ob_sourcecode,"); sql.Append("ob_reworkcode,ob_orgcheckno,OB_CRAFTCODE, OB_STEPCODE,OB_MAKECODE,oB_WCCODE,OB_FACTORY,"); sql.Append("OB_PROJECTCODE,OB_DESCRIPTION,OB_AQLCODE,OB_REMARK from oqcbatch where ob_checkno='" + ob_checkno.Text + "'"); sqls[0] = sql.GetString(); //插入新批次的从表 sql.Clear(); sql.Append("insert into oqcbatchdetail(OBD_ID,OBD_OBID,OBD_CHECKNO,OBD_SNCODE,obd_outboxcode,OBD_MAKECODE"); sql.Append(",OBD_BUILDDATE,obd_prodcode) SELECT oqcbatchdetail_seq.nextval,'" + ob_id + "','" + new_checkno.Text + "',OBD_SNCODE,obd_outboxcode"); sql.Append(",OBD_MAKECODE,sysdate,obd_prodcode from oqcbatchdetail where obd_checkno='" + ob_checkno.Text + "' and obd_sncode in(" + CheckSn + ")"); sqls[1] = sql.GetString(); sqls[2] = "update OQCBatch set ob_nowcheckqty=(select count(1) from oqcbatchdetail where obd_checkno='" + new_checkno.Text + "') where ob_checkno='" + new_checkno.Text + "'"; sqls[3] = "delete from oqcbatchdetail where obd_checkno='" + ob_checkno.Text + "' and obd_sncode in (" + CheckSn + ")"; sqls[4] = "update OQCBatch set ob_nowcheckqty=(select count(1) from oqcbatchdetail where obd_checkno='" + ob_checkno.Text + "') where ob_checkno='" + ob_checkno.Text + "'"; dh.ExecuteSQLTran(sqls); GetBatch.PerformClick(); OperateResult.AppendText(">>批次" + ob_checkno.Text + "拆解成功\n ",Color.Green); } else OperateResult.AppendText(">>批次状态必须是待检验\n", Color.Red); } else OperateResult.AppendText(">>请勾选需要拆解的序列号\n", Color.Red); } private void OutBoxDGV_CellContentClick(object sender, DataGridViewCellEventArgs e) { if (e.RowIndex >= 0) { if (OutBoxDGV.Columns[e.ColumnIndex].Name == "choose") { if (OutBoxDGV.Rows[e.RowIndex].Cells["obd_outboxcode1"].Value.ToString() != "") { string Checked = OutBoxDGV.Rows[e.RowIndex].Cells[0].EditedFormattedValue.ToString(); for (int i = 0; i < OutBoxDGV.Rows.Count; i++) { if (OutBoxDGV.Rows[i].Cells["obd_outboxcode1"].Value.ToString() == OutBoxDGV.Rows[e.RowIndex].Cells["obd_outboxcode1"].Value.ToString()) { if (Checked == "True") OutBoxDGV.Rows[i].Cells[0].Value = true; else OutBoxDGV.Rows[i].Cells[0].Value = false; } } } int ChoosedNum = 0; CheckSn = ""; for (int i = 0; i < OutBoxDGV.Rows.Count; i++) { if (OutBoxDGV.Rows[i].Cells[0].EditedFormattedValue.ToString() == "True") { ChoosedNum = ChoosedNum + 1; CheckSn += "'" + OutBoxDGV.Rows[i].Cells["obd_sncode"].Value.ToString() + "',"; } } if (CheckSn != "") CheckSn = CheckSn.Substring(0, CheckSn.Length - 1); else CheckSn = "''"; choosedsn.Text = ChoosedNum.ToString(); } } } private void sncode_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { bool FindSN = false; for (int i = 0; i < OutBoxDGV.Rows.Count; i++) { if (sncode.Text == OutBoxDGV.Rows[i].Cells["obd_sncode"].Value.ToString()) { if (OutBoxDGV.Rows[i].Cells["obd_outboxcode1"].Value.ToString() != "") { string Checked = OutBoxDGV.Rows[i].Cells[0].EditedFormattedValue.ToString(); for (int j = 0; j < OutBoxDGV.Rows.Count; j++) { if (OutBoxDGV.Rows[j].Cells["obd_outboxcode1"].Value.ToString() == OutBoxDGV.Rows[i].Cells["obd_outboxcode1"].Value.ToString()) { if (Checked == "True") OutBoxDGV.Rows[j].Cells[0].Value = true; else OutBoxDGV.Rows[j].Cells[0].Value = false; } } FindSN = true; break; } } } if (!FindSN) OperateResult.AppendText(">>批次" + ob_checkno.Text + "不存在序列号" + sncode.Text + "\n", Color.Red); } } } }