975 lines
53 KiB
C#
975 lines
53 KiB
C#
using System;
|
||
using Microsoft.VisualBasic;
|
||
using static iMESCore.Base.iMESComSubroutine;
|
||
using static iMESCore.Base.iMESComXML;
|
||
using static iMESCore.Base.iMESConst;
|
||
using iMESCore.Settings;
|
||
using System.Web.Services;
|
||
using System.Data;
|
||
using Microsoft.VisualBasic.CompilerServices;
|
||
|
||
namespace wsABC
|
||
{
|
||
|
||
public class wsWIP_21701
|
||
{
|
||
|
||
private iMESCore.Settings.AppSettings objSetting = new iMESCore.Settings.AppSettings();
|
||
private System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument(); // 用以讀取Xml字串
|
||
private DateTime ArriveTime; // 送達時間
|
||
private string strIdentity; // Identity XML字串
|
||
private string strReturnValue; // ReturnValue XML字串
|
||
private string strException; // Exception XML字串
|
||
private string strResult; // Result XML字串
|
||
private string strMessage; // Message XML字串
|
||
private string strServiceName = "wsWIP_ABC"; // ServiceName
|
||
private string strResourceDir = "Resources";
|
||
private kcWIP.clsLot objLot = new kcWIP.clsLot();
|
||
private kcSYS.clsSYSUserLog objSYS = new kcSYS.clsSYSUserLog(); // 宣告Sys的物件
|
||
private MEStc_ABC.clsLot_21701 clsLot = new MEStc_ABC.clsLot_21701(); // 宣告Sys的物件
|
||
|
||
public wsWIP_21701()
|
||
{
|
||
try
|
||
{
|
||
strResourceDir = System.IO.Path.Combine("wsUpdateResource", objSetting["ResourceDir"].ToString());
|
||
}
|
||
catch (Exception)
|
||
{ }
|
||
}
|
||
|
||
public string HelloWorld(string InXml)
|
||
{
|
||
return "HelloWorld";
|
||
}
|
||
|
||
[WebMethod(Description = "Execute Check In by LotNo")]
|
||
public string Exe_CheckIn(string InXml)
|
||
{
|
||
string Exe_CheckInRet = default(string);
|
||
|
||
long LotStamp;
|
||
string LotNo = default(string), LinkName, UserNo = default(string);
|
||
|
||
DataTable dtAttrib;
|
||
DataTable dtEquipment;
|
||
DataTable dtEquipmentChamber;
|
||
DataRow drData;
|
||
|
||
DataTable dtMTLLot;
|
||
|
||
System.Xml.XmlNodeList xmlList;
|
||
string ShiftNo = "N/A";
|
||
string LotRecord = defString;
|
||
int i;
|
||
var CheckInTime = defDateTime;
|
||
string RuleNo = ""; // Added by Jialing 2011/02/18
|
||
|
||
ArriveTime = DateTime.Now;
|
||
|
||
try
|
||
{
|
||
// 讀取InXml字串
|
||
xmlDoc.LoadXml(InXml);
|
||
UserNo = GetXMLCurUserNo(xmlDoc);
|
||
|
||
// 組Identity字串
|
||
strIdentity = CombineXMLIdentity(Environment.MachineName, UserNo, Conversions.ToString(ArriveTime));
|
||
|
||
// 開始解譯InXml字串
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotstamp").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotstamp").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotStamp = Conversions.ToLong(xmlDoc.DocumentElement.GetElementsByTagName("lotstamp").Item(0).SelectNodes("value").Item(0).InnerText);
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotStamp%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotStamp%] [%Not Found%]");
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotNo = xmlDoc.DocumentElement.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotNo%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotNo%] [%Not Found%]");
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("linkname").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("linkname").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LinkName = xmlDoc.DocumentElement.GetElementsByTagName("linkname").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LinkName%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LinkName%] [%Not Found%]");
|
||
}
|
||
// Added by Jialing 2011/02/18
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("ruleno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("ruleno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
RuleNo = xmlDoc.DocumentElement.GetElementsByTagName("ruleno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("shiftno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("shiftno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
ShiftNo = xmlDoc.DocumentElement.GetElementsByTagName("shiftno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotrecord").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotrecord").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotRecord = xmlDoc.DocumentElement.GetElementsByTagName("lotrecord").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
|
||
// 加入CheckIntime By carl 2007/06/04
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("checkintime").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("checkintime").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
CheckInTime = Conversions.ToDate(xmlDoc.DocumentElement.GetElementsByTagName("checkintime").Item(0).SelectNodes("value").Item(0).InnerText);
|
||
}
|
||
}
|
||
|
||
// 1.取出CheckIn Data, Attrib --------------------------------------------------------------------------------------------
|
||
// <attrib>
|
||
// <name>..</name> <type>..</type>
|
||
// <value>
|
||
// <attribno>..</attribno>
|
||
// <attribtype>..</attribtype>
|
||
// <attribsequence>..</attribsequence>
|
||
// <attribsource>..</attribsource>
|
||
// <attribphase>..</attribphase>
|
||
// <attribvalue>..</attribvalue>
|
||
// </value>
|
||
// <desc></desc>
|
||
// </attrib>
|
||
dtAttrib = new DataTable("Attrib");
|
||
dtAttrib.Columns.Add("AttribNo", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("AttribType", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribSequence", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribSource", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribPhase", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribValue", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("SaveToLotPropertyNo", Type.GetType("System.String"));
|
||
// 2015-12-16, Joe, Add
|
||
dtAttrib.Columns.Add("TestValue", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("QCItemNo", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("Result", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("Result_INT", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("FactorSerial", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("SerialNo", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("MEMO", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("ComponentNo", Type.GetType("System.String"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("attrib").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("attrib").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("attrib").Item(0).SelectNodes("value");
|
||
var loopTo = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("attribno").Count == 0 | xmlList[i].SelectNodes("attribtype").Count == 0 | xmlList[i].SelectNodes("attribsequence").Count == 0 | xmlList[i].SelectNodes("attribsource").Count == 0 | xmlList[i].SelectNodes("attribphase").Count == 0 | xmlList[i].SelectNodes("attribvalue").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%AttribNo%], [%AttribType%], [%AttribSequence%], [%AttribSource%], [%AttribPhase%], [%AttribValue%] [%cannotbeempty%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtAttrib.NewRow();
|
||
drData["AttribNo"] = xmlList[i].SelectNodes("attribno").Item(0).InnerText;
|
||
drData["AttribType"] = xmlList[i].SelectNodes("attribtype").Item(0).InnerText;
|
||
drData["AttribSequence"] = xmlList[i].SelectNodes("attribsequence").Item(0).InnerText;
|
||
drData["AttribSource"] = xmlList[i].SelectNodes("attribsource").Item(0).InnerText;
|
||
drData["AttribPhase"] = xmlList[i].SelectNodes("attribphase").Item(0).InnerText;
|
||
drData["AttribValue"] = xmlList[i].SelectNodes("attribvalue").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("savetolotpropertyno").Count > 0)
|
||
{
|
||
drData["SaveToLotPropertyNo"] = xmlList[i].SelectNodes("savetolotpropertyno").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
drData["SaveToLotPropertyNo"] = "";
|
||
}
|
||
// 2015-12-16, Joe, Add
|
||
drData["TestValue"] = xmlList[i].SelectNodes("attribvalue").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("qcitemno").Count > 0)
|
||
{
|
||
drData["QCItemNo"] = xmlList[i].SelectNodes("qcitemno").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("result").Count > 0)
|
||
{
|
||
drData["Result"] = xmlList[i].SelectNodes("result").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("result_int").Count > 0 && !string.IsNullOrEmpty(xmlList[i].SelectNodes("result_int").Item(0).InnerText))
|
||
{
|
||
if (Information.IsNumeric(xmlList[i].SelectNodes("result_int").Item(0).InnerText))
|
||
{
|
||
drData["Result_INT"] = xmlList[i].SelectNodes("result_int").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200011", "Result_INT must be numeric");
|
||
}
|
||
}
|
||
if (xmlList[i].SelectNodes("factorserial").Count > 0)
|
||
{
|
||
drData["FactorSerial"] = xmlList[i].SelectNodes("factorserial").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("serialno").Count > 0 && !string.IsNullOrEmpty(xmlList[i].SelectNodes("serialno").Item(0).InnerText))
|
||
{
|
||
drData["SerialNo"] = xmlList[i].SelectNodes("serialno").Item(0).InnerText;
|
||
}
|
||
dtAttrib.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 2.取出CheckIn Data, Equipment --------------------------------------------------------------------------------------------
|
||
// <equipment>
|
||
// <name>..</name> <type>..</type>
|
||
// <value>
|
||
// <equipmentno>..</equipmentno>
|
||
// <loadport>..</loadport>
|
||
// </value>
|
||
// <desc></desc>
|
||
// </equipment>
|
||
dtEquipment = new DataTable("Equipment");
|
||
dtEquipment.Columns.Add("EquipmentNo", Type.GetType("System.String"));
|
||
dtEquipment.Columns.Add("LoadPort", Type.GetType("System.Int16"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("equipment").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("equipment").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("equipment").Item(0).SelectNodes("value");
|
||
var loopTo1 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo1; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%EquipmentNo%] [%cannotbeempty%]");
|
||
}
|
||
|
||
// 將資料存入暫存Table
|
||
drData = dtEquipment.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("loadport").Count > 0)
|
||
{
|
||
drData["LoadPort"] = xmlList[i].SelectNodes("loadport").Item(0).InnerText;
|
||
}
|
||
dtEquipment.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
//TsungyYu 2021/06/10取出 Chamber--------------------------------------------------------------------------------------------
|
||
|
||
dtEquipmentChamber = new DataTable("EquipmentChamber");
|
||
dtEquipmentChamber.Columns.Add("EquipmentNo", System.Type.GetType("System.String"));
|
||
dtEquipmentChamber.Columns.Add("BelongEquipmentNo", System.Type.GetType("System.String"));
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("equipmentchamber").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("equipmentchamber").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("equipmentchamber").Item(0).SelectNodes("value");
|
||
var loopTo1 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo1; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%EquipmentNo%] [%cannotbeempty%]");
|
||
}
|
||
//將資料存入暫存Table
|
||
drData = dtEquipmentChamber.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
drData["BelongEquipmentNo"] = xmlList[i].SelectNodes("belongequipmentno").Item(0).InnerText;
|
||
dtEquipmentChamber.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
// 多人加工
|
||
DataTable dtLoginState;
|
||
dtLoginState = new DataTable("tblLoginState");
|
||
dtLoginState.Columns.Add("UserNo", Type.GetType("System.String"));
|
||
dtLoginState.Columns.Add("UserName", Type.GetType("System.String"));
|
||
dtLoginState.Columns.Add("CheckInTime", Type.GetType("System.DateTime"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("loginstate").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("loginstate").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("loginstate").Item(0).SelectNodes("value");
|
||
var loopTo2 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo2; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("userno").Count == 0 || xmlList[i].SelectNodes("username").Count == 0 || xmlList[i].SelectNodes("checkintime").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%userno%], [%username%], [%checkintime%] [%not found%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtLoginState.NewRow();
|
||
drData["UserNo"] = xmlList[i].SelectNodes("userno").Item(0).InnerText;
|
||
drData["UserName"] = xmlList[i].SelectNodes("username").Item(0).InnerText;
|
||
drData["CheckInTime"] = xmlList[i].SelectNodes("checkintime").Item(0).InnerText;
|
||
dtLoginState.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 模治具
|
||
DataTable dtAccessory;
|
||
dtAccessory = new DataTable("Accessory");
|
||
dtAccessory.Columns.Add("EquipmentNo", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryNo", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryVersion", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryType", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccumulateQty", Type.GetType("System.Decimal"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("accessory").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("accessory").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("accessory").Item(0).SelectNodes("value");
|
||
var loopTo3 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo3; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0 || xmlList[i].SelectNodes("accessoryno").Count == 0 || xmlList[i].SelectNodes("accessoryversion").Count == 0 || xmlList[i].SelectNodes("accessorytype").Count == 0 || xmlList[i].SelectNodes("accumulateqty").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%equipmentno%], [%accessoryno%], [%accessoryversion%], [%accessorytype%],[%accumulateqty%] [%not found%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtAccessory.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
drData["AccessoryNo"] = xmlList[i].SelectNodes("accessoryno").Item(0).InnerText;
|
||
drData["AccessoryVersion"] = xmlList[i].SelectNodes("accessoryversion").Item(0).InnerText;
|
||
drData["AccessoryType"] = xmlList[i].SelectNodes("accessorytype").Item(0).InnerText;
|
||
drData["AccumulateQty"] = xmlList[i].SelectNodes("accumulateqty").Item(0).InnerText;
|
||
dtAccessory.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// Kevin 20140106,區分沒選模治具與沒顯示模治具,介面沒顯示模治具則設為Nothing
|
||
dtAccessory = null;
|
||
}
|
||
|
||
dtMTLLot = new DataTable("Temp_MaterialLot");
|
||
dtMTLLot.Columns.Add("MaterialNo", Type.GetType("System.String"));
|
||
dtMTLLot.Columns.Add("MaterialLotNo", Type.GetType("System.String"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("temp_materiallot").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("temp_materiallot").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("temp_materiallot").Item(0).SelectNodes("value");
|
||
var loopTo4 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo4; i++)
|
||
{
|
||
// 將資料存入暫存Table
|
||
drData = dtMTLLot.NewRow();
|
||
drData["MaterialNo"] = xmlList[i].SelectNodes("materialno").Item(0).InnerText;
|
||
drData["MaterialLotNo"] = xmlList[i].SelectNodes("materiallotno").Item(0).InnerText;
|
||
dtMTLLot.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 3.檢查投料點在機台的料是否足夠 -------------------------------------------------------------------------------------------
|
||
objLot.ChkMaterialOnEquipment(LotNo, dtEquipment);
|
||
|
||
// 4.Update CheckIn----------------------------------------------------------------------------------------------------------
|
||
string LanguageMode = GetXMLLanguageMode(xmlDoc);
|
||
objLot.BR_CheckIn(LotStamp, LotNo, LinkName, dtAttrib, dtEquipment, UserNo, ShiftNo, LotRecord, CheckInTime, RuleNo, dtLoginState, dtAccessory, dtMTLLot, LanguageMode, dtEquipmentChamber);
|
||
|
||
// 5.Return Value------------------------------------------------------------------------------------------------------------
|
||
strException = "";
|
||
strResult = "success";
|
||
|
||
objSYS.AddEventLog(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, "Exe_CheckIn", ComputerName: GetXMLCurComputer(xmlDoc));
|
||
}
|
||
|
||
catch (iMESException.MESException ex)
|
||
{
|
||
strReturnValue = "";
|
||
switch (ex.ErrorCode.ToString() ?? "")
|
||
{
|
||
case "IPQCNO":
|
||
{
|
||
strException = CombineXMLException(ex.ErrorCode.ToString(), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "IPQCNO", ex.StackTrace);
|
||
break;
|
||
}
|
||
|
||
default:
|
||
{
|
||
strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Exe_CheckIn fail!", ex.StackTrace);
|
||
break;
|
||
}
|
||
}
|
||
strResult = "fail";
|
||
objSYS.AddErrorLog_ErrorCode(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode));
|
||
}
|
||
|
||
catch (Exception ex)
|
||
{
|
||
strReturnValue = "";
|
||
strException = CombineXMLException(defWSErrCode, ex.Message, "Exe_CheckIn fail!", ex.StackTrace);
|
||
strResult = "fail";
|
||
objSYS.AddErrorLog_ErrorCode(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc));
|
||
}
|
||
|
||
finally
|
||
{
|
||
// 將各部份之XML字串組起來並傳出
|
||
Exe_CheckInRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, "");
|
||
|
||
}
|
||
return Exe_CheckInRet;
|
||
|
||
}
|
||
//读取客制表数据
|
||
[WebMethod(Description = "Load tblCustomTestData Data")]
|
||
public string LoadtblCustomTestData(string InXml)
|
||
{
|
||
string LoadTestDataBasis_21701Ret = default(string);
|
||
|
||
// 先給預設值,以判斷是否有傳入該參數
|
||
string lotno = defString;
|
||
|
||
ArriveTime = DateTime.Now;
|
||
string AdditionalXml = "";
|
||
try
|
||
{
|
||
// 讀取InXml字串
|
||
xmlDoc.LoadXml(InXml);
|
||
// 組Identity字串
|
||
strIdentity = CombineXMLIdentity(Environment.MachineName, GetXMLCurUserNo(xmlDoc), Conversions.ToString(ArriveTime));
|
||
|
||
// 判斷是否有傳入Subcontractor,若有,表示要依Subcontractor查詢
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
lotno = xmlDoc.DocumentElement.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
|
||
//// 呼叫副程式處理查詢條件與Additional格式
|
||
//AdditionalXml = CombineXMLQueryAdditional(xmlDoc);
|
||
|
||
// 呼叫Dll執行
|
||
strReturnValue = clsLot.LoadtblCustomTestData(lotno);
|
||
strException = "";
|
||
strResult = "success";
|
||
}
|
||
//查询
|
||
catch (iMESException.MESException ex)
|
||
{
|
||
strReturnValue = "";
|
||
strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Show TblCustomTestData Failed!!", ex.StackTrace);
|
||
strResult = "fail";
|
||
}
|
||
|
||
catch (Exception ex)
|
||
{
|
||
strReturnValue = "";
|
||
strException = CombineXMLException(defWSErrCode, ex.Message, "Show TblCustomTestData Failed!!", ex.StackTrace);
|
||
strResult = "fail";
|
||
}
|
||
|
||
finally
|
||
{
|
||
// 將各部份之XML字串組起來並傳出
|
||
LoadTestDataBasis_21701Ret = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, "");
|
||
|
||
}
|
||
|
||
return LoadTestDataBasis_21701Ret;
|
||
|
||
}
|
||
/// <summary>
|
||
/// 24/01/18 21701 作業用 /// </summary>
|
||
/// <param name="InXml"></param>
|
||
/// <returns></returns>
|
||
[WebMethod(Description = "Execute Check In by LotNo(Custom)")]
|
||
public string Exe_CheckIn_Custom(string InXml)
|
||
{
|
||
// 最後返回的字串(XML格式)
|
||
string Exe_CheckInRet = default(string);
|
||
|
||
// 操作相關信息
|
||
long LotStamp;
|
||
string LotNo = default(string), LinkName, UserNo = default(string);
|
||
|
||
// 存在多個<value>節點的數據需用 DataTable 保存並傳入後端
|
||
DataTable dtAttrib;
|
||
DataTable dtEquipment;
|
||
DataTable dtEquipmentChamber;
|
||
DataRow drData;
|
||
|
||
DataTable dtMTLLot;
|
||
|
||
// 自定義字段
|
||
DataTable dtCustom;
|
||
|
||
System.Xml.XmlNodeList xmlList;
|
||
string ShiftNo = "N/A";
|
||
string LotRecord = defString;
|
||
int i;
|
||
var CheckInTime = defDateTime;
|
||
string RuleNo = ""; // Added by Jialing 2011/02/18
|
||
|
||
ArriveTime = DateTime.Now;
|
||
|
||
try
|
||
{
|
||
// 讀取InXml字串
|
||
xmlDoc.LoadXml(InXml);
|
||
UserNo = GetXMLCurUserNo(xmlDoc);
|
||
|
||
// 組Identity字串
|
||
strIdentity = CombineXMLIdentity(Environment.MachineName, UserNo, Conversions.ToString(ArriveTime));
|
||
|
||
// 開始解譯InXml字串
|
||
// 必須傳入之字段
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotstamp").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotstamp").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotStamp = Conversions.ToLong(xmlDoc.DocumentElement.GetElementsByTagName("lotstamp").Item(0).SelectNodes("value").Item(0).InnerText);
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotStamp%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotStamp%] [%Not Found%]");
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotNo = xmlDoc.DocumentElement.GetElementsByTagName("lotno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotNo%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LotNo%] [%Not Found%]");
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("linkname").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("linkname").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LinkName = xmlDoc.DocumentElement.GetElementsByTagName("linkname").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LinkName%] [%Not Found%]");
|
||
}
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%LinkName%] [%Not Found%]");
|
||
}
|
||
// Added by Jialing 2011/02/18
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("ruleno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("ruleno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
RuleNo = xmlDoc.DocumentElement.GetElementsByTagName("ruleno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("shiftno").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("shiftno").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
ShiftNo = xmlDoc.DocumentElement.GetElementsByTagName("shiftno").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("lotrecord").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("lotrecord").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
LotRecord = xmlDoc.DocumentElement.GetElementsByTagName("lotrecord").Item(0).SelectNodes("value").Item(0).InnerText;
|
||
}
|
||
}
|
||
|
||
// 加入CheckIntime By carl 2007/06/04
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("checkintime").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("checkintime").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
CheckInTime = Conversions.ToDate(xmlDoc.DocumentElement.GetElementsByTagName("checkintime").Item(0).SelectNodes("value").Item(0).InnerText);
|
||
}
|
||
}
|
||
|
||
// Extra.取出CheckIn Data, CustomInf --------------------------------------------------------------------------------------------
|
||
// <custominf>
|
||
// <name>..</name> <type>..</type>
|
||
// <value>
|
||
// <customno>..</customno>
|
||
// <isselected>..</isselected>
|
||
// </value>
|
||
// <desc></desc>
|
||
// </custominf>
|
||
// 創建表中各列
|
||
dtCustom = new DataTable("TestInfo");
|
||
dtCustom.Columns.Add("CREATOR", Type.GetType("System.String"));
|
||
dtCustom.Columns.Add("ISCHECKED", Type.GetType("System.Int32"));
|
||
|
||
// 提取數據
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("testinfo").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("testinfo").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("testinfo").Item(0).SelectNodes("value");
|
||
var loopTo1 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo1; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("CREATOR").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%CREATOR%] [%cannotbeempty%]");
|
||
}
|
||
if (Convert.ToInt32(xmlList[i].SelectNodes("ISCHECKED").Item(0).InnerText) == 1)
|
||
{
|
||
throw new Exception("該客制信息已被其他生產批選擇!");
|
||
}
|
||
|
||
// 將資料存入Table
|
||
drData = dtCustom.NewRow();
|
||
drData["CREATOR"] = xmlList[i].SelectNodes("CREATOR").Item(0).InnerText;
|
||
// 其實可以不用傳 IsSelected,因爲邏輯上的狀態轉換就是 0 -> 1
|
||
drData["ISCHECKED"] = xmlList[i].SelectNodes("ISCHECKED").Item(0).InnerText;
|
||
dtCustom.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 1.取出CheckIn Data, Attrib --------------------------------------------------------------------------------------------
|
||
// <attrib>
|
||
// <name>..</name> <type>..</type>
|
||
// <value>
|
||
// <attribno>..</attribno>
|
||
// <attribtype>..</attribtype>
|
||
// <attribsequence>..</attribsequence>
|
||
// <attribsource>..</attribsource>
|
||
// <attribphase>..</attribphase>
|
||
// <attribvalue>..</attribvalue>
|
||
// </value>
|
||
// <desc></desc>
|
||
// </attrib>
|
||
dtAttrib = new DataTable("Attrib");
|
||
dtAttrib.Columns.Add("AttribNo", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("AttribType", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribSequence", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribSource", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribPhase", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("AttribValue", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("SaveToLotPropertyNo", Type.GetType("System.String"));
|
||
// 2015-12-16, Joe, Add
|
||
dtAttrib.Columns.Add("TestValue", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("QCItemNo", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("Result", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("Result_INT", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("FactorSerial", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("SerialNo", Type.GetType("System.Int32"));
|
||
dtAttrib.Columns.Add("MEMO", Type.GetType("System.String"));
|
||
dtAttrib.Columns.Add("ComponentNo", Type.GetType("System.String"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("attrib").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("attrib").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("attrib").Item(0).SelectNodes("value");
|
||
var loopTo = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("attribno").Count == 0 | xmlList[i].SelectNodes("attribtype").Count == 0 | xmlList[i].SelectNodes("attribsequence").Count == 0 | xmlList[i].SelectNodes("attribsource").Count == 0 | xmlList[i].SelectNodes("attribphase").Count == 0 | xmlList[i].SelectNodes("attribvalue").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%AttribNo%], [%AttribType%], [%AttribSequence%], [%AttribSource%], [%AttribPhase%], [%AttribValue%] [%cannotbeempty%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtAttrib.NewRow();
|
||
drData["AttribNo"] = xmlList[i].SelectNodes("attribno").Item(0).InnerText;
|
||
drData["AttribType"] = xmlList[i].SelectNodes("attribtype").Item(0).InnerText;
|
||
drData["AttribSequence"] = xmlList[i].SelectNodes("attribsequence").Item(0).InnerText;
|
||
drData["AttribSource"] = xmlList[i].SelectNodes("attribsource").Item(0).InnerText;
|
||
drData["AttribPhase"] = xmlList[i].SelectNodes("attribphase").Item(0).InnerText;
|
||
drData["AttribValue"] = xmlList[i].SelectNodes("attribvalue").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("savetolotpropertyno").Count > 0)
|
||
{
|
||
drData["SaveToLotPropertyNo"] = xmlList[i].SelectNodes("savetolotpropertyno").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
drData["SaveToLotPropertyNo"] = "";
|
||
}
|
||
// 2015-12-16, Joe, Add
|
||
drData["TestValue"] = xmlList[i].SelectNodes("attribvalue").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("qcitemno").Count > 0)
|
||
{
|
||
drData["QCItemNo"] = xmlList[i].SelectNodes("qcitemno").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("result").Count > 0)
|
||
{
|
||
drData["Result"] = xmlList[i].SelectNodes("result").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("result_int").Count > 0 && !string.IsNullOrEmpty(xmlList[i].SelectNodes("result_int").Item(0).InnerText))
|
||
{
|
||
if (Information.IsNumeric(xmlList[i].SelectNodes("result_int").Item(0).InnerText))
|
||
{
|
||
drData["Result_INT"] = xmlList[i].SelectNodes("result_int").Item(0).InnerText;
|
||
}
|
||
else
|
||
{
|
||
throw new iMESException.MESException("0000-200011", "Result_INT must be numeric");
|
||
}
|
||
}
|
||
if (xmlList[i].SelectNodes("factorserial").Count > 0)
|
||
{
|
||
drData["FactorSerial"] = xmlList[i].SelectNodes("factorserial").Item(0).InnerText;
|
||
}
|
||
if (xmlList[i].SelectNodes("serialno").Count > 0 && !string.IsNullOrEmpty(xmlList[i].SelectNodes("serialno").Item(0).InnerText))
|
||
{
|
||
drData["SerialNo"] = xmlList[i].SelectNodes("serialno").Item(0).InnerText;
|
||
}
|
||
dtAttrib.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 2.取出CheckIn Data, Equipment --------------------------------------------------------------------------------------------
|
||
// <equipment>
|
||
// <name>..</name> <type>..</type>
|
||
// <value>
|
||
// <equipmentno>..</equipmentno>
|
||
// <loadport>..</loadport>
|
||
// </value>
|
||
// <desc></desc>
|
||
// </equipment>
|
||
dtEquipment = new DataTable("Equipment");
|
||
dtEquipment.Columns.Add("EquipmentNo", Type.GetType("System.String"));
|
||
dtEquipment.Columns.Add("LoadPort", Type.GetType("System.Int16"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("equipment").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("equipment").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("equipment").Item(0).SelectNodes("value");
|
||
var loopTo1 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo1; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%EquipmentNo%] [%cannotbeempty%]");
|
||
}
|
||
|
||
// 將資料存入暫存Table
|
||
drData = dtEquipment.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
if (xmlList[i].SelectNodes("loadport").Count > 0)
|
||
{
|
||
drData["LoadPort"] = xmlList[i].SelectNodes("loadport").Item(0).InnerText;
|
||
}
|
||
dtEquipment.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
//TsungyYu 2021/06/10取出 Chamber--------------------------------------------------------------------------------------------
|
||
|
||
dtEquipmentChamber = new DataTable("EquipmentChamber");
|
||
dtEquipmentChamber.Columns.Add("EquipmentNo", System.Type.GetType("System.String"));
|
||
dtEquipmentChamber.Columns.Add("BelongEquipmentNo", System.Type.GetType("System.String"));
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("equipmentchamber").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("equipmentchamber").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("equipmentchamber").Item(0).SelectNodes("value");
|
||
var loopTo1 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo1; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%EquipmentNo%] [%cannotbeempty%]");
|
||
}
|
||
//將資料存入暫存Table
|
||
drData = dtEquipmentChamber.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
drData["BelongEquipmentNo"] = xmlList[i].SelectNodes("belongequipmentno").Item(0).InnerText;
|
||
dtEquipmentChamber.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
// 多人加工
|
||
DataTable dtLoginState;
|
||
dtLoginState = new DataTable("tblLoginState");
|
||
dtLoginState.Columns.Add("UserNo", Type.GetType("System.String"));
|
||
dtLoginState.Columns.Add("UserName", Type.GetType("System.String"));
|
||
dtLoginState.Columns.Add("CheckInTime", Type.GetType("System.DateTime"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("loginstate").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("loginstate").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("loginstate").Item(0).SelectNodes("value");
|
||
var loopTo2 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo2; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("userno").Count == 0 || xmlList[i].SelectNodes("username").Count == 0 || xmlList[i].SelectNodes("checkintime").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%userno%], [%username%], [%checkintime%] [%not found%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtLoginState.NewRow();
|
||
drData["UserNo"] = xmlList[i].SelectNodes("userno").Item(0).InnerText;
|
||
drData["UserName"] = xmlList[i].SelectNodes("username").Item(0).InnerText;
|
||
drData["CheckInTime"] = xmlList[i].SelectNodes("checkintime").Item(0).InnerText;
|
||
dtLoginState.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 模治具
|
||
DataTable dtAccessory;
|
||
dtAccessory = new DataTable("Accessory");
|
||
dtAccessory.Columns.Add("EquipmentNo", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryNo", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryVersion", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccessoryType", Type.GetType("System.String"));
|
||
dtAccessory.Columns.Add("AccumulateQty", Type.GetType("System.Decimal"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("accessory").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("accessory").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("accessory").Item(0).SelectNodes("value");
|
||
var loopTo3 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo3; i++)
|
||
{
|
||
if (xmlList[i].SelectNodes("equipmentno").Count == 0 || xmlList[i].SelectNodes("accessoryno").Count == 0 || xmlList[i].SelectNodes("accessoryversion").Count == 0 || xmlList[i].SelectNodes("accessorytype").Count == 0 || xmlList[i].SelectNodes("accumulateqty").Count == 0)
|
||
{
|
||
throw new iMESException.MESException("0000-200002", "[%equipmentno%], [%accessoryno%], [%accessoryversion%], [%accessorytype%],[%accumulateqty%] [%not found%]");
|
||
}
|
||
// 將資料存入暫存Table
|
||
drData = dtAccessory.NewRow();
|
||
drData["EquipmentNo"] = xmlList[i].SelectNodes("equipmentno").Item(0).InnerText;
|
||
drData["AccessoryNo"] = xmlList[i].SelectNodes("accessoryno").Item(0).InnerText;
|
||
drData["AccessoryVersion"] = xmlList[i].SelectNodes("accessoryversion").Item(0).InnerText;
|
||
drData["AccessoryType"] = xmlList[i].SelectNodes("accessorytype").Item(0).InnerText;
|
||
drData["AccumulateQty"] = xmlList[i].SelectNodes("accumulateqty").Item(0).InnerText;
|
||
dtAccessory.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
// Kevin 20140106,區分沒選模治具與沒顯示模治具,介面沒顯示模治具則設為Nothing
|
||
dtAccessory = null;
|
||
}
|
||
|
||
dtMTLLot = new DataTable("Temp_MaterialLot");
|
||
dtMTLLot.Columns.Add("MaterialNo", Type.GetType("System.String"));
|
||
dtMTLLot.Columns.Add("MaterialLotNo", Type.GetType("System.String"));
|
||
|
||
if (xmlDoc.DocumentElement.GetElementsByTagName("temp_materiallot").Count > 0)
|
||
{
|
||
if (xmlDoc.GetElementsByTagName("temp_materiallot").Item(0).SelectNodes("value").Count > 0)
|
||
{
|
||
xmlList = xmlDoc.GetElementsByTagName("temp_materiallot").Item(0).SelectNodes("value");
|
||
var loopTo4 = xmlList.Count - 1;
|
||
for (i = 0; i <= loopTo4; i++)
|
||
{
|
||
// 將資料存入暫存Table
|
||
drData = dtMTLLot.NewRow();
|
||
drData["MaterialNo"] = xmlList[i].SelectNodes("materialno").Item(0).InnerText;
|
||
drData["MaterialLotNo"] = xmlList[i].SelectNodes("materiallotno").Item(0).InnerText;
|
||
dtMTLLot.Rows.Add(drData);
|
||
}
|
||
}
|
||
}
|
||
|
||
// 3.檢查投料點在機台的料是否足夠 -------------------------------------------------------------------------------------------
|
||
objLot.ChkMaterialOnEquipment(LotNo, dtEquipment);
|
||
|
||
// 4.Update CheckIn----------------------------------------------------------------------------------------------------------
|
||
string LanguageMode = GetXMLLanguageMode(xmlDoc);
|
||
// objLot.BR_CheckIn(LotStamp, LotNo, LinkName, dtAttrib, dtEquipment, UserNo, ShiftNo, LotRecord, CheckInTime, RuleNo, dtLoginState, dtAccessory, dtMTLLot, LanguageMode, dtEquipmentChamber);
|
||
// 24/01/18 21701 使用客制化方法進站
|
||
clsLot.BR_CheckIn_Custom(LotStamp, LotNo, LinkName, dtAttrib, dtEquipment, UserNo, ShiftNo, LotRecord, CheckInTime, RuleNo, dtLoginState, dtAccessory, dtMTLLot, LanguageMode, dtEquipmentChamber, dtCustom);
|
||
|
||
// 5.Return Value------------------------------------------------------------------------------------------------------------
|
||
strException = "";
|
||
strResult = "success";
|
||
|
||
objSYS.AddEventLog(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, "Exe_CheckIn", ComputerName: GetXMLCurComputer(xmlDoc));
|
||
}
|
||
|
||
catch (iMESException.MESException ex)
|
||
{
|
||
strReturnValue = "";
|
||
switch (ex.ErrorCode.ToString() ?? "")
|
||
{
|
||
case "IPQCNO":
|
||
{
|
||
strException = CombineXMLException(ex.ErrorCode.ToString(), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "IPQCNO", ex.StackTrace);
|
||
break;
|
||
}
|
||
|
||
default:
|
||
{
|
||
strException = CombineXMLException(Conversions.ToString(ex.ErrorCode), TranslateMsg(ex.Message, GetXMLLanguageMode(xmlDoc), strResourceDir), "Exe_CheckIn fail!", ex.StackTrace);
|
||
break;
|
||
}
|
||
}
|
||
strResult = "fail";
|
||
objSYS.AddErrorLog_ErrorCode(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc), ErrorCode: Conversions.ToString(ex.ErrorCode));
|
||
}
|
||
|
||
catch (Exception ex)
|
||
{
|
||
strReturnValue = "";
|
||
strException = CombineXMLException(defWSErrCode, ex.Message, "Exe_CheckIn fail!", ex.StackTrace);
|
||
strResult = "fail";
|
||
objSYS.AddErrorLog_ErrorCode(strServiceName, UserNo, "LotNo", LotNo, DateTime.Now, strException, ComputerName: GetXMLCurComputer(xmlDoc));
|
||
}
|
||
|
||
finally
|
||
{
|
||
// 將各部份之XML字串組起來並傳出
|
||
Exe_CheckInRet = CombineXMLResponse(strIdentity, strReturnValue, strException, strResult, "");
|
||
|
||
}
|
||
return Exe_CheckInRet;
|
||
|
||
}
|
||
|
||
}
|
||
} |