|
@@ -157,11 +157,16 @@ namespace UAS_AutoPass
|
|
|
}
|
|
|
}
|
|
|
//存在工单必须是已下放状态
|
|
|
- if (!dh.CheckExist("make", "ma_statuscode='STARTED' and ma_code='" + ma_code.Text + "'") && ma_code.Text != "")
|
|
|
+ if (!dh.CheckExist("make", "ma_statuscode='STARTED' and ma_code='" + ma_code.Text + "'") && ma_code.Text != ""&&Device.Text=="AOI设备")
|
|
|
{
|
|
|
OperateResult.AppendText("工单不存在或者未下放\n");
|
|
|
return;
|
|
|
}
|
|
|
+ if (!dh.CheckExist("make", "ma_code='" + ma_code.Text + "'") && ma_code.Text != "" && Device.Text == "选焊设备")
|
|
|
+ {
|
|
|
+ OperateResult.AppendText("工单不存\n");
|
|
|
+ return;
|
|
|
+ }
|
|
|
XmlWatcher.Path = FolderPath.Text;
|
|
|
XmlWatcher.Filter = "*.txt";
|
|
|
XmlWatcher.EnableRaisingEvents = true;
|
|
@@ -229,198 +234,231 @@ namespace UAS_AutoPass
|
|
|
{
|
|
|
data1 = nextLine.Split(';');
|
|
|
}
|
|
|
- string SoftVersion = data1[0];
|
|
|
- List<string[]> dic = new List<string[]>();
|
|
|
- List<string> sndata = new List<string>();
|
|
|
- for (int i = 0; i < data1.Length; i++)
|
|
|
+ if (Device.Text == "AOI设备")
|
|
|
{
|
|
|
- //如果软件版本相同的时候,则表示一个新的SN
|
|
|
- if ((SoftVersion == data1[i] && i != 0) || i == data1.Length - 1)
|
|
|
+ string SoftVersion = data1[0];
|
|
|
+ List<string[]> dic = new List<string[]>();
|
|
|
+ List<string> sndata = new List<string>();
|
|
|
+ for (int i = 0; i < data1.Length; i++)
|
|
|
{
|
|
|
- dic.Add(sndata.ToArray());
|
|
|
- sndata.Clear();
|
|
|
- }
|
|
|
- sndata.Add(data1[i]);
|
|
|
- }
|
|
|
- foreach (string[] content in dic)
|
|
|
- {
|
|
|
- string SN = "";
|
|
|
- string Machine = "";
|
|
|
- string EmName = "";
|
|
|
- string Day = "";
|
|
|
- string Time = "";
|
|
|
- string Result = "";
|
|
|
- string TotalPart = "";
|
|
|
- string NGPart = "";
|
|
|
- int MissTest = 0;
|
|
|
- string[] data = content;
|
|
|
- for (int i = 0; i < data.Length; i++)
|
|
|
- {
|
|
|
- switch (i.ToString())
|
|
|
+ //如果软件版本相同的时候,则表示一个新的SN
|
|
|
+ if ((SoftVersion == data1[i] && i != 0) || i == data1.Length - 1)
|
|
|
{
|
|
|
- case "0":
|
|
|
- SoftVersion = data[i];
|
|
|
- break;
|
|
|
- case "1":
|
|
|
- SN = data[i];
|
|
|
- break;
|
|
|
- case "2":
|
|
|
- Machine = data[i];
|
|
|
- break;
|
|
|
- case "4":
|
|
|
- EmName = data[i];
|
|
|
- break;
|
|
|
- case "6":
|
|
|
- Day = data[i];
|
|
|
- break;
|
|
|
- case "7":
|
|
|
- Time = data[i];
|
|
|
- break;
|
|
|
- case "8":
|
|
|
- Result += data[i];
|
|
|
- break;
|
|
|
- case "9":
|
|
|
- Result += data[i];
|
|
|
- break;
|
|
|
- case "10":
|
|
|
- Result += data[i];
|
|
|
- break;
|
|
|
- case "11":
|
|
|
- Result += data[i];
|
|
|
- break;
|
|
|
- case "13":
|
|
|
- TotalPart = data[i];
|
|
|
- break;
|
|
|
- case "14":
|
|
|
- NGPart = data[i];
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ dic.Add(sndata.ToArray());
|
|
|
+ sndata.Clear();
|
|
|
}
|
|
|
+ sndata.Add(data1[i]);
|
|
|
}
|
|
|
- if (SN == "")
|
|
|
- {
|
|
|
- tipform.startthread("序列号不能为空", "NG");
|
|
|
- continue;
|
|
|
- }
|
|
|
- if (data.Length > 15)
|
|
|
+ foreach (string[] content in dic)
|
|
|
{
|
|
|
- for (int i = 15; i < data.Length; i++)
|
|
|
+ string SN = "";
|
|
|
+ string Machine = "";
|
|
|
+ string EmName = "";
|
|
|
+ string Day = "";
|
|
|
+ string Time = "";
|
|
|
+ string Result = "";
|
|
|
+ string TotalPart = "";
|
|
|
+ string NGPart = "";
|
|
|
+ int MissTest = 0;
|
|
|
+ string[] data = content;
|
|
|
+ for (int i = 0; i < data.Length; i++)
|
|
|
{
|
|
|
- switch ((i - 15) % 6)
|
|
|
+ switch (i.ToString())
|
|
|
{
|
|
|
- case 0:
|
|
|
- badlocation.Add(data[i]);
|
|
|
+ case "0":
|
|
|
+ SoftVersion = data[i];
|
|
|
+ break;
|
|
|
+ case "1":
|
|
|
+ SN = data[i];
|
|
|
+ break;
|
|
|
+ case "2":
|
|
|
+ Machine = data[i];
|
|
|
+ break;
|
|
|
+ case "4":
|
|
|
+ EmName = data[i];
|
|
|
+ break;
|
|
|
+ case "6":
|
|
|
+ Day = data[i];
|
|
|
+ break;
|
|
|
+ case "7":
|
|
|
+ Time = data[i];
|
|
|
break;
|
|
|
- case 1:
|
|
|
- badprod.Add(data[i]);
|
|
|
+ case "8":
|
|
|
+ Result += data[i];
|
|
|
break;
|
|
|
- case 2:
|
|
|
- badcode.Add(data[i].ToUpper());
|
|
|
+ case "9":
|
|
|
+ Result += data[i];
|
|
|
+ break;
|
|
|
+ case "10":
|
|
|
+ Result += data[i];
|
|
|
+ break;
|
|
|
+ case "11":
|
|
|
+ Result += data[i];
|
|
|
+ break;
|
|
|
+ case "13":
|
|
|
+ TotalPart = data[i];
|
|
|
+ break;
|
|
|
+ case "14":
|
|
|
+ NGPart = data[i];
|
|
|
break;
|
|
|
default:
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
- sR.Close();
|
|
|
- //如果没有不良位号等数据则是15个数据
|
|
|
- if (Result == "0001")
|
|
|
- {
|
|
|
- if (data.Length > 16)
|
|
|
+ if (SN == "")
|
|
|
{
|
|
|
- MissTest = -1;
|
|
|
- Result = "NG";
|
|
|
+ tipform.startthread("序列号不能为空", "NG");
|
|
|
+ continue;
|
|
|
}
|
|
|
- else
|
|
|
+ if (data.Length > 15)
|
|
|
{
|
|
|
- Result = "OK";
|
|
|
+ for (int i = 15; i < data.Length; i++)
|
|
|
+ {
|
|
|
+ switch ((i - 15) % 6)
|
|
|
+ {
|
|
|
+ case 0:
|
|
|
+ if (badlocation.Count >= 1)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ badlocation.Add(data[i]);
|
|
|
+ break;
|
|
|
+ case 1:
|
|
|
+ if (badprod.Count >= 1)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ badprod.Add(data[i]);
|
|
|
+ break;
|
|
|
+ case 2:
|
|
|
+ if (badcode.Count >= 1)
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ badcode.Add(data[i].ToUpper());
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- Result = "OK";
|
|
|
- }
|
|
|
- string makecode = "";
|
|
|
- string stepcode = "";
|
|
|
- string oErrMessage = "";
|
|
|
- string oMSID = "";
|
|
|
- if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, isource, SN, iusercode, out makecode, out oMSID, out oErrMessage))
|
|
|
- {
|
|
|
- //获取序列号ID最大的工单
|
|
|
- dt = (DataTable)dh.ExecuteSql("select ms_makecode,ms_id,ms_stepcode from makeserial where ms_sncode='" + SN + "' order by ms_id desc", "select");
|
|
|
- if (dt.Rows.Count > 0)
|
|
|
+ sR.Close();
|
|
|
+ //如果没有不良位号等数据则是15个数据
|
|
|
+ if (Result == "0001")
|
|
|
{
|
|
|
- ma_code.Text = dt.Rows[0]["ms_makecode"].ToString();
|
|
|
- makecode = dt.Rows[0]["ms_makecode"].ToString();
|
|
|
- stepcode = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
- if (stepcode == istepcode)
|
|
|
+ if (data.Length > 16)
|
|
|
{
|
|
|
- tipform.startthread("序列号 " + SN + "已执行过" + istepcode, "NG");
|
|
|
- OperateResult.AppendText("序列号 " + SN + "已执行过" + istepcode + "\n");
|
|
|
- continue;
|
|
|
+ MissTest = -1;
|
|
|
+ Result = "NG";
|
|
|
}
|
|
|
- switch (Result)
|
|
|
+ else
|
|
|
{
|
|
|
- case "OK":
|
|
|
- if (!LogicHandler.SetStepResult(makecode, isource, SN, "自动过站采集", Result, iusercode, out oErrMessage))
|
|
|
- {
|
|
|
- OperateResult.AppendText(oErrMessage + "\n");
|
|
|
- tipform.startthread(oErrMessage, Result);
|
|
|
- continue;
|
|
|
- }
|
|
|
- tipform.startthread("序列号 " + SN + "通过检测", Result);
|
|
|
- break;
|
|
|
- case "NG":
|
|
|
- RecordBadInfo(SN, makecode, FileName, "", badcode.ToArray(), badlocation.ToArray(), badprod.ToArray());
|
|
|
- //所有的序列号均采集为良品
|
|
|
- if (!LogicHandler.SetTestNGDetail(SN, makecode, iusercode, isource, Result, out oErrMessage))
|
|
|
- {
|
|
|
- OperateResult.AppendText(oErrMessage + "\n");
|
|
|
- tipform.startthread(oErrMessage, Result);
|
|
|
- continue;
|
|
|
- }
|
|
|
- tipform.startthread("序列号 " + SN + "未通过检测", Result);
|
|
|
- break;
|
|
|
- default:
|
|
|
- break;
|
|
|
+ Result = "OK";
|
|
|
}
|
|
|
- LogicHandler.AutoPassLog(SN, isource, makecode, Day + Time, istepcode, ilinecode, SoftVersion, Result == "NG" ? "-1" : "0", "0", MissTest, TotalPart, NGPart);
|
|
|
- FileName = FileName.Substring(FileName.LastIndexOf(@"\") + 1);
|
|
|
- FileInfo file = new FileInfo(FolderPath.Text + @"\" + FileName);
|
|
|
- //if (file.Exists)
|
|
|
- //{
|
|
|
- // try
|
|
|
- // {
|
|
|
- // for (int i = 1; i <= 20; i++)
|
|
|
- // {
|
|
|
- // if (!File.Exists(BackUpFolderPath.Text + @"\" + FileName))
|
|
|
- // {
|
|
|
- // file.MoveTo(BackUpFolderPath.Text + @"\" + FileName);
|
|
|
- // OperateResult.AppendText("成功解析文件" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + " " + FileName + "\n");
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // else if (!File.Exists(BackUpFolderPath.Text + @"\" + FileName.Split('.')[0] + "(" + i + ")" + "." + FileName.Split('.')[1]))
|
|
|
- // {
|
|
|
- // file.MoveTo(BackUpFolderPath.Text + @"\" + FileName.Split('.')[0] + "(" + i + ")" + "." + FileName.Split('.')[1]);
|
|
|
- // OperateResult.AppendText("成功解析文件" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + " " + FileName + "\n");
|
|
|
- // break;
|
|
|
- // }
|
|
|
- // }
|
|
|
- // }
|
|
|
- // catch (Exception ex)
|
|
|
- // {
|
|
|
- // OperateResult.AppendText(FileName + ex.Message + "\n");
|
|
|
- // }
|
|
|
- //}
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ Result = "OK";
|
|
|
+ }
|
|
|
+ string makecode = "";
|
|
|
+ string stepcode = "";
|
|
|
+ string oErrMessage = "";
|
|
|
+ string oMSID = "";
|
|
|
+ if (LogicHandler.CheckStepSNAndMacode(ma_code.Text, isource, SN, iusercode, out makecode, out oMSID, out oErrMessage))
|
|
|
+ {
|
|
|
+ //获取序列号ID最大的工单
|
|
|
+ dt = (DataTable)dh.ExecuteSql("select ms_makecode,ms_id,ms_stepcode from makeserial where ms_sncode='" + SN + "' order by ms_id desc", "select");
|
|
|
+ if (dt.Rows.Count > 0)
|
|
|
+ {
|
|
|
+ ma_code.Text = dt.Rows[0]["ms_makecode"].ToString();
|
|
|
+ makecode = dt.Rows[0]["ms_makecode"].ToString();
|
|
|
+ stepcode = dt.Rows[0]["ms_stepcode"].ToString();
|
|
|
+ if (stepcode == istepcode)
|
|
|
+ {
|
|
|
+ tipform.startthread("序列号 " + SN + "已执行过" + istepcode, "NG");
|
|
|
+ OperateResult.AppendText("序列号 " + SN + "已执行过" + istepcode + "\n");
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ switch (Result)
|
|
|
+ {
|
|
|
+ case "OK":
|
|
|
+ if (!LogicHandler.SetStepResult(makecode, isource, SN, "自动过站采集", Result, iusercode, out oErrMessage))
|
|
|
+ {
|
|
|
+ OperateResult.AppendText(oErrMessage + "\n");
|
|
|
+ tipform.startthread(oErrMessage, Result);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ tipform.startthread("序列号 " + SN + "通过检测", Result);
|
|
|
+ break;
|
|
|
+ case "NG":
|
|
|
+ RecordBadInfo(SN, makecode, FileName, "", badcode.ToArray(), badlocation.ToArray(), badprod.ToArray());
|
|
|
+ //所有的序列号均采集为良品
|
|
|
+ if (!LogicHandler.SetTestNGDetail(SN, makecode, iusercode, isource, Result, out oErrMessage))
|
|
|
+ {
|
|
|
+ OperateResult.AppendText(oErrMessage + "\n");
|
|
|
+ tipform.startthread(oErrMessage, Result);
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ tipform.startthread("序列号 " + SN + "未通过检测", Result);
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ LogicHandler.AutoPassLog(SN, isource, makecode, Day + Time, istepcode, ilinecode, SoftVersion, Result == "NG" ? "-1" : "0", "0", MissTest, TotalPart, NGPart);
|
|
|
+ FileName = FileName.Substring(FileName.LastIndexOf(@"\") + 1);
|
|
|
+ FileInfo file = new FileInfo(FolderPath.Text + @"\" + FileName);
|
|
|
+ //if (file.Exists)
|
|
|
+ //{
|
|
|
+ // try
|
|
|
+ // {
|
|
|
+ // for (int i = 1; i <= 20; i++)
|
|
|
+ // {
|
|
|
+ // if (!File.Exists(BackUpFolderPath.Text + @"\" + FileName))
|
|
|
+ // {
|
|
|
+ // file.MoveTo(BackUpFolderPath.Text + @"\" + FileName);
|
|
|
+ // OperateResult.AppendText("成功解析文件" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + " " + FileName + "\n");
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // else if (!File.Exists(BackUpFolderPath.Text + @"\" + FileName.Split('.')[0] + "(" + i + ")" + "." + FileName.Split('.')[1]))
|
|
|
+ // {
|
|
|
+ // file.MoveTo(BackUpFolderPath.Text + @"\" + FileName.Split('.')[0] + "(" + i + ")" + "." + FileName.Split('.')[1]);
|
|
|
+ // OperateResult.AppendText("成功解析文件" + DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss") + " " + FileName + "\n");
|
|
|
+ // break;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+ // catch (Exception ex)
|
|
|
+ // {
|
|
|
+ // OperateResult.AppendText(FileName + ex.Message + "\n");
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ OperateResult.AppendText(oErrMessage + "\n");
|
|
|
+ tipform.startthread(oErrMessage, Result);
|
|
|
+ continue;
|
|
|
}
|
|
|
}
|
|
|
- else
|
|
|
+ }
|
|
|
+ else if (Device.Text == "选焊设备")
|
|
|
+ {
|
|
|
+ Dictionary<string, string> dic = new Dictionary<string, string>();
|
|
|
+ BaseUtil.GetWriteInfo(FileName, out dic);
|
|
|
+ string sql = "insert into AOITESTDETAIL(atd_id,atd_makecode,atd_indate,";
|
|
|
+ string sql1 = " values(AOITESTDETAIL_seq.nextval,'" + ma_code.Text + "',sysdate,";
|
|
|
+ foreach (var item in dic)
|
|
|
{
|
|
|
- OperateResult.AppendText(oErrMessage + "\n");
|
|
|
- tipform.startthread(oErrMessage, Result);
|
|
|
- continue;
|
|
|
+ sql += item.Key + ",";
|
|
|
+ if (item.Key.Contains("starttime") || item.Key.Contains("endtime"))
|
|
|
+ sql1 += "to_date('" + item.Value + "','yyyy/mm/dd hh24:mi:ss'),";
|
|
|
+ else
|
|
|
+ sql1 += "'" + item.Value + "',";
|
|
|
}
|
|
|
+
|
|
|
+ sql = sql.Substring(0, sql.Length - 1) + ")" + sql1.Substring(0, sql1.Length - 1) + ")";
|
|
|
+ dh.ExecuteSql(sql, "insert");
|
|
|
}
|
|
|
}
|
|
|
/// <summary>
|