|
|
@@ -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)
|