public void startPackno(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JObject Data, MESStationReturn StationReturn) { //通过工单的数量和包规来生成箱号 OleExec Sfcdb = this.DBPools["SFCDB"].Borrow(); string packType = Data["packType"].ToString(); string wo = Data["wo"].ToString(); WorkOrder workorder = new WorkOrder(); workorder.Init(wo, Sfcdb); T_C_PACKING t_C_PACKING = new T_C_PACKING(Sfcdb, DBTYPE); C_PACKING c_PACKING = t_C_PACKING.GetPackingBySkuAndType(workorder.SkuNO, packType, Sfcdb); double? qty = c_PACKING.MAX_QTY; int packs = (int)(workorder.WORKORDER_QTY / qty); string ruleName = c_PACKING.SN_RULE; T_R_PACKING t_r_packing = new T_R_PACKING(Sfcdb, DBTYPE); int remainQty = 0; if (packs * qty < workorder.WORKORDER_QTY) { remainQty = (int)(workorder.WORKORDER_QTY - packs * qty); packs = packs + 1; } for (int i = 0; i < packs; i++) { string nextpackno = SNmaker.GetNextSN(ruleName, Sfcdb); System.Console.WriteLine(nextpackno); Row_R_PACKING row_r_packing = (Row_R_PACKING)t_r_packing.NewRow(); row_r_packing.IP = this.IP; row_r_packing.STATION = "STARTPARTNO"; row_r_packing.LINE = "LINE0"; row_r_packing.EDIT_EMP = this.LoginUser.EMP_NO; row_r_packing.EDIT_TIME = DateTime.Now; row_r_packing.CREATE_TIME = DateTime.Now; row_r_packing.CLOSED_FLAG = "0"; row_r_packing.QTY = 0; if (packs == i && remainQty > 0) { row_r_packing.MAX_QTY = remainQty; } else { row_r_packing.MAX_QTY = qty; } row_r_packing.SKUNO = workorder.SkuNO; row_r_packing.PARENT_PACK_ID = ""; row_r_packing.PACK_TYPE = packType; row_r_packing.PACK_NO = nextpackno; row_r_packing.ID = t_r_packing.GetNewID(this.BU, Sfcdb); Sfcdb.ExecSQL(row_r_packing.GetInsertString(DBTYPE)); } StationReturn.Status = StationReturnStatusValue.Pass; }
public CartionBase(Row_R_PACKING data) { DATA = data; if (data.PACK_TYPE != "CARTON") { throw new Exception("PackType is not CARTON"); } }
public PalletBase(Row_R_PACKING data) { DATA = data; if (data.PACK_TYPE != "PALLET") { throw new Exception("PackType is not PALLET"); } }
/// <summary> /// OBA工站創建LOT,返回LOT信息 /// </summary> /// <param name="user"></param> /// <param name="packNo"></param> /// <param name="DB"></param> public R_LOT_STATUS CreateLotByPackno(User user, string packNo, OleExec DB) { T_R_PACKING tRPacking = new T_R_PACKING(DB, this.DBType); Row_R_PACKING rowRPacking = tRPacking.GetRPackingByPackNo(DB, packNo); PalletBase palletBase = new PalletBase(rowRPacking); T_C_SKU tCSku = new T_C_SKU(DB, this.DBType); T_R_LOT_STATUS tRLotStatus = new T_R_LOT_STATUS(DB, this.DBType); T_C_AQLTYPE tCAqlType = new T_C_AQLTYPE(DB, this.DBType); T_R_LOT_PACK tRLotPack = new T_R_LOT_PACK(DB, this.DBType); T_C_SKU_AQL tCSkuAql = new T_C_SKU_AQL(DB, this.DBType); C_SKU_AQL cSkuAql = tCSkuAql.GetSkuAql(DB, rowRPacking.SKUNO); List <C_AQLTYPE> cAqlTypeList = tCAqlType.GetAqlTypeBySkunoAndLevel(rowRPacking.SKUNO, cSkuAql.DEFAULLEVEL, DB); if (cAqlTypeList.Count == 0) { throw new Exception(MESDataObject.MESReturnMessage.GetMESReturnMessage("MSGCODE20180625165842", new string[] { })); } Row_C_SKU rCSku = tCSku.GetSku(rowRPacking.SKUNO, DB, this.DBType); Row_R_LOT_STATUS rowRLotStatus = (Row_R_LOT_STATUS)tRLotStatus.NewRow(); rowRLotStatus.ID = tRLotStatus.GetNewID(user.BU, DB, this.DBType); rowRLotStatus.LOT_NO = SNMaker.SNmaker.GetNextSN("OBALOT", DB); rowRLotStatus.SKUNO = rowRPacking.SKUNO; rowRLotStatus.AQL_TYPE = cSkuAql.AQLTYPE; rowRLotStatus.LOT_QTY = palletBase.GetSnCount(DB); rowRLotStatus.REJECT_QTY = cAqlTypeList.Where(t => t.LOT_QTY > rowRLotStatus.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].REJECT_QTY; rowRLotStatus.SAMPLE_QTY = cAqlTypeList.Where(t => t.LOT_QTY > rowRLotStatus.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].SAMPLE_QTY; rowRLotStatus.SAMPLE_QTY = rowRLotStatus.SAMPLE_QTY > rowRLotStatus.LOT_QTY ? rowRLotStatus.LOT_QTY : rowRLotStatus.SAMPLE_QTY; rowRLotStatus.PASS_QTY = 0; rowRLotStatus.FAIL_QTY = 0; rowRLotStatus.CLOSED_FLAG = "0"; rowRLotStatus.LOT_STATUS_FLAG = "0"; rowRLotStatus.SAMPLE_STATION = "OBA"; rowRLotStatus.AQL_LEVEL = cSkuAql.DEFAULLEVEL; rowRLotStatus.LINE = ""; rowRLotStatus.EDIT_EMP = user.EMP_NO; rowRLotStatus.EDIT_TIME = tRPacking.GetDBDateTime(DB); Row_R_LOT_PACK rowRLotPack = (Row_R_LOT_PACK)tRLotPack.NewRow(); rowRLotPack.ID = tRLotPack.GetNewID(user.BU, DB, this.DBType); rowRLotPack.LOTNO = rowRLotStatus.LOT_NO; rowRLotPack.PACKNO = packNo; rowRLotPack.EDIT_EMP = user.EMP_NO; rowRLotPack.EDIT_TIME = rowRLotStatus.EDIT_TIME; DB.ThrowSqlExeception = true; DB.ExecSQL(rowRLotStatus.GetInsertString(this.DBType)); DB.ExecSQL(rowRLotPack.GetInsertString(this.DBType)); DB.ThrowSqlExeception = false; return(rowRLotStatus.GetDataObject()); }
public PalletBase(string PLNO, OleExec DB) { T_R_PACKING TRP = new T_R_PACKING(DB, DB_TYPE_ENUM.Oracle); Row_R_PACKING data = TRP.GetRPackingByPackNo(DB, PLNO); if (data.PACK_TYPE != "PALLET") { throw new Exception($@"{PLNO} in not Pallet"); } DATA = data; }
/// <summary> /// OBA工站InLot,返回LOT信息 /// </summary> /// <param name="user"></param> /// <param name="packNo"></param> /// <param name="DB"></param> public R_LOT_STATUS ObaInLotByPackno(User user, R_LOT_STATUS rLotStatus, string packNo, string AqlLevel, OleExec DB) { T_R_PACKING tRPacking = new T_R_PACKING(DB, this.DBType); Row_R_PACKING rowRPacking = tRPacking.GetRPackingByPackNo(DB, packNo); PalletBase palletBase = new PalletBase(rowRPacking); T_R_LOT_STATUS tRLotStatus = new T_R_LOT_STATUS(DB, this.DBType); T_C_AQLTYPE tCAqlType = new T_C_AQLTYPE(DB, this.DBType); T_R_LOT_PACK tRLotPack = new T_R_LOT_PACK(DB, this.DBType); List <C_AQLTYPE> cAqlTypeList = tCAqlType.GetAqlTypeBySkunoAndLevel(rowRPacking.SKUNO, AqlLevel, DB); Row_R_LOT_STATUS rowRLotStatus = (Row_R_LOT_STATUS)tRLotStatus.NewRow(); rowRLotStatus.ID = rLotStatus.ID; rowRLotStatus.LOT_NO = rLotStatus.LOT_NO; rowRLotStatus.SKUNO = rLotStatus.SKUNO; rowRLotStatus.AQL_TYPE = rLotStatus.AQL_TYPE; rowRLotStatus.LOT_QTY = rLotStatus.LOT_QTY + palletBase.GetSnCount(DB); rowRLotStatus.REJECT_QTY = cAqlTypeList.Where(t => t.LOT_QTY > rowRLotStatus.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].REJECT_QTY; rowRLotStatus.SAMPLE_QTY = cAqlTypeList.Where(t => t.LOT_QTY > rowRLotStatus.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].SAMPLE_QTY; rowRLotStatus.SAMPLE_QTY = rowRLotStatus.SAMPLE_QTY > rowRLotStatus.LOT_QTY ? rowRLotStatus.LOT_QTY : rowRLotStatus.SAMPLE_QTY; rowRLotStatus.PASS_QTY = rLotStatus.PASS_QTY; rowRLotStatus.FAIL_QTY = rLotStatus.FAIL_QTY; rowRLotStatus.CLOSED_FLAG = rLotStatus.CLOSED_FLAG; rowRLotStatus.LOT_STATUS_FLAG = rLotStatus.LOT_STATUS_FLAG; rowRLotStatus.SAMPLE_STATION = rLotStatus.SAMPLE_STATION; rowRLotStatus.LINE = rLotStatus.LINE; rowRLotStatus.AQL_LEVEL = AqlLevel; rowRLotStatus.EDIT_EMP = user.EMP_NO; rowRLotStatus.EDIT_TIME = tRPacking.GetDBDateTime(DB); Row_R_LOT_PACK rowRLotPack = (Row_R_LOT_PACK)tRLotPack.NewRow(); rowRLotPack.ID = tRLotPack.GetNewID(user.BU, DB, this.DBType); rowRLotPack.LOTNO = rowRLotStatus.LOT_NO; rowRLotPack.PACKNO = packNo; rowRLotPack.EDIT_EMP = user.EMP_NO; rowRLotPack.EDIT_TIME = rowRLotStatus.EDIT_TIME; DB.ThrowSqlExeception = true; DB.ExecSQL(rowRLotStatus.GetUpdateString(this.DBType) + ";" + rowRLotPack.GetInsertString(this.DBType)); DB.ThrowSqlExeception = false; return(rowRLotStatus.GetDataObject()); }
public static Row_R_PACKING GetNewPacking(C_PACKING config, string line, string Station, string IP, string BU, string User, OleExec DB) { T_R_PACKING TRP = new T_R_PACKING(DB, DB_TYPE_ENUM.Oracle); Row_R_PACKING RRP = (Row_R_PACKING)TRP.NewRow(); RRP.PACK_NO = SNMaker.SNmaker.GetNextSN(config.SN_RULE, DB); RRP.PACK_TYPE = config.PACK_TYPE; RRP.PARENT_PACK_ID = ""; RRP.SKUNO = config.SKUNO; RRP.MAX_QTY = config.MAX_QTY; RRP.QTY = 0; RRP.CLOSED_FLAG = "0"; RRP.LINE = line; RRP.STATION = Station; RRP.ID = TRP.GetNewID(BU, DB); RRP.IP = IP; DB.ExecSQL(RRP.GetInsertString(DB_TYPE_ENUM.Oracle)); RRP.AcceptChange(); return(RRP); }
/// <summary> /// 檢查Pack狀態是否可以入OBA /// </summary> /// <param name="Station"></param> /// <param name="Input"></param> /// <param name="Paras"></param> public static void CheckPackStatusInOba(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { DisplayOutPut Dis_LotNo = Station.DisplayOutput.Find(t => t.Name == "LOTNO"); DisplayOutPut Dis_SkuNo = Station.DisplayOutput.Find(t => t.Name == "SKUNO"); DisplayOutPut Dis_Ver = Station.DisplayOutput.Find(t => t.Name == "VER"); MESStationInput Level = Station.Inputs.Find(t => t.DisplayName == "AQLLEVEL"); MESStationSession packSession = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); #region 用於界面上顯示的批次信息 R_LOT_STATUS rLotStatus = new R_LOT_STATUS(); List <R_LOT_PACK> rLotPackList = new List <R_LOT_PACK>(); List <string> cAqlLevel = new List <string>(); #endregion T_R_PACKING t_r_packing = new T_R_PACKING(Station.SFCDB, Station.DBType); //add by fgg 2018.6.28 卡棧板是否關閉,避免棧板還沒有關閉就拿去抽檢OBA,導致抽檢總數異常,進而導致OBA抽檢數量不對 if (!t_r_packing.CheckCloseByPackno(packSession.Value.ToString(), Station.SFCDB)) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180611104338", new string[] { packSession.Value.ToString() })); } LotNo LotNo = new LotNo(Station.DBType); T_R_LOT_PACK tRLotPack = new T_R_LOT_PACK(Station.SFCDB, Station.DBType); rLotPackList = tRLotPack.GetRLotPackWithWaitClose(Station.SFCDB, packSession.Value.ToString()); List <R_LOT_STATUS> rLotStatusList = tRLotPack.GetRLotStatusWithWaitClose(Station.SFCDB, packSession.Value.ToString()); rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "1"); if (rLotStatus != null) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526181007", new string[] { packSession.Value.ToString() })); } else { rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "0"); } if (Dis_LotNo.Value.Equals("")) { #region 當前Lot為空=>檢查當前Pack無有效LOT?新建LOT:加載LOT; if (rLotPackList.Count == 0) { rLotStatus = LotNo.CreateLotByPackno(Station.LoginUser, packSession.Value.ToString(), Station.SFCDB); rLotPackList.Add( new R_LOT_PACK() { LOTNO = rLotStatus.LOT_NO, PACKNO = packSession.Value.ToString() }); } else { rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "0"); } #endregion } else { #region 當前Lot不為空=>PackNo與當前頁面LOT的機種版本是否一致?ReLoad LOT信息:Throw e; T_R_PACKING tRPacking = new T_R_PACKING(Station.SFCDB, Station.DBType); Row_R_PACKING rowRPacking = tRPacking.GetRPackingByPackNo(Station.SFCDB, packSession.Value.ToString()); if (!rowRPacking.SKUNO.Equals(Dis_SkuNo.Value.ToString())) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526185434", new string[] { packSession.Value.ToString() })); } if (rLotPackList.Count == 0) { rLotStatus = LotNo.ObaInLotByPackno(Station.User, rLotStatus, packSession.Value.ToString(), Level.Value.ToString(), Station.SFCDB); rLotPackList.Add(new R_LOT_PACK() { LOTNO = rLotStatus.LOT_NO, PACKNO = packSession.Value.ToString() }); } else { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526185618", new string[] { packSession.Value.ToString(), rLotStatus.LOT_NO })); } #endregion } #region 加載AQL等級 T_C_AQLTYPE tCAqlType = new T_C_AQLTYPE(Station.SFCDB, Station.DBType); cAqlLevel = tCAqlType.GetAqlLevelByType(rLotStatus.AQL_TYPE, Station.SFCDB); T_C_SKU_AQL tCSkuAql = new T_C_SKU_AQL(Station.SFCDB, Station.DBType); C_SKU_AQL cSkuAql = tCSkuAql.GetSkuAql(Station.SFCDB, rLotStatus.SKUNO); #endregion #region 加載界面信息 MESStationSession lotNoSession = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[2].SESSION_KEY, ResetInput = Input }; MESStationSession skuNoSession = new MESStationSession() { MESDataType = Paras[3].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[3].SESSION_KEY, ResetInput = Input }; MESStationSession aqlSession = new MESStationSession() { MESDataType = Paras[4].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[4].SESSION_KEY, ResetInput = Input }; MESStationSession lotQtySession = new MESStationSession() { MESDataType = Paras[5].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[5].SESSION_KEY, ResetInput = Input }; MESStationSession sampleQtySession = new MESStationSession() { MESDataType = Paras[6].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[6].SESSION_KEY, ResetInput = Input }; MESStationSession RejectQtySession = new MESStationSession() { MESDataType = Paras[7].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[7].SESSION_KEY, ResetInput = Input }; Station.StationSession.Clear(); Station.StationSession.Add(lotNoSession); Station.StationSession.Add(skuNoSession); Station.StationSession.Add(aqlSession); Station.StationSession.Add(lotQtySession); Station.StationSession.Add(sampleQtySession); Station.StationSession.Add(RejectQtySession); lotNoSession.Value = rLotStatus.LOT_NO; skuNoSession.Value = rLotStatus.SKUNO; aqlSession.Value = rLotStatus.AQL_TYPE; lotQtySession.Value = rLotStatus.LOT_QTY; sampleQtySession.Value = rLotStatus.SAMPLE_QTY; RejectQtySession.Value = rLotStatus.REJECT_QTY; MESStationInput s = Station.Inputs.Find(t => t.DisplayName == Paras[1].SESSION_TYPE); s.DataForUse.Clear(); foreach (var VARIABLE in rLotPackList) { s.DataForUse.Add(VARIABLE.PACKNO); } MESStationInput l = Station.Inputs.Find(t => t.DisplayName == "AQLLEVEL"); l.DataForUse.Clear(); foreach (string VARIABLE in cAqlLevel) { l.DataForUse.Add(VARIABLE); } //設置默認等級 l.Value = cSkuAql.DEFAULLEVEL; #endregion }
public static void LoadPackingBySkuStation(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { MESStationSession sessionSKU = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); if (sessionSKU == null) { throw new Exception("Can't load session SKU"); } LogicObject.SKU SKU = (LogicObject.SKU)sessionSKU.Value; MESStationSession sessionCarton = Station.StationSession.Find(t => t.MESDataType == Paras[1].SESSION_TYPE && t.SessionKey == Paras[1].SESSION_KEY); if (sessionCarton == null) { sessionCarton = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, SessionKey = Paras[1].SESSION_KEY }; Station.StationSession.Add(sessionCarton); } MESStationSession sessionPallet = Station.StationSession.Find(t => t.MESDataType == Paras[2].SESSION_TYPE && t.SessionKey == Paras[2].SESSION_KEY); if (sessionPallet == null) { sessionPallet = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, SessionKey = Paras[2].SESSION_KEY }; Station.StationSession.Add(sessionPallet); } T_C_PACKING TCP = new T_C_PACKING(Station.SFCDB, DB_TYPE_ENUM.Oracle); List <C_PACKING> PackConfigs = TCP.GetPackingBySku(SKU.SkuNo, Station.SFCDB); C_PACKING CartionConfig = PackConfigs.Find(T => T.PACK_TYPE == "CARTON"); C_PACKING PalletConfig = PackConfigs.Find(T => T.PACK_TYPE == "PALLET"); if (CartionConfig == null) { throw new Exception("Can't find CartionConfig"); } if (PalletConfig == null) { throw new Exception("Can't find PalletConfig"); } T_R_PACKING TRP = new T_R_PACKING(Station.SFCDB, DB_TYPE_ENUM.Oracle); Row_R_PACKING RowCartion = null; try { RowCartion = (Row_R_PACKING)TRP.GetObjBySelect($@"select * from R_PACKING where SKUNO='{SKU.SkuNo}' and PACK_TYPE='{CartionConfig.PACK_TYPE}' and LINE='{Station.Line}' and STATION='{Station.StationName}' and IP='{Station.IP}' and CLOSED_FLAG='0'", Station.SFCDB, DB_TYPE_ENUM.Oracle); } catch { RowCartion = Packing.PackingBase.GetNewPacking(CartionConfig, Station.Line, Station.StationName, Station.IP, Station.BU, Station.LoginUser.EMP_NO, Station.SFCDB); } Row_R_PACKING RowPallet = null; try { RowPallet = (Row_R_PACKING)TRP.GetObjBySelect($@"select * from R_PACKING where SKUNO='{SKU.SkuNo}' and PACK_TYPE='{PalletConfig.PACK_TYPE}' and LINE='{Station.Line}' and STATION='{Station.StationName}' and IP='{Station.IP}' and CLOSED_FLAG='0'", Station.SFCDB, DB_TYPE_ENUM.Oracle); } catch { RowPallet = Packing.PackingBase.GetNewPacking(PalletConfig, Station.Line, Station.StationName, Station.IP, Station.BU, Station.LoginUser.EMP_NO, Station.SFCDB); } Packing.CartionBase Cartion = new Packing.CartionBase(RowCartion); Packing.PalletBase Pallet = new Packing.PalletBase(RowPallet); if (Cartion.DATA.PARENT_PACK_ID == null || Cartion.DATA.PARENT_PACK_ID == "") { Pallet.Add(Cartion, Station.BU, Station.LoginUser.EMP_NO, Station.SFCDB); } sessionCarton.Value = Cartion; sessionPallet.Value = Pallet; }
/// <summary> /// 檢查Pack狀態是否可以入OBA /// </summary> /// <param name="Station"></param> /// <param name="Input"></param> /// <param name="Paras"></param> public static void CheckPackStatusInOba(MESStation.BaseClass.MESStationBase Station, MESStation.BaseClass.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { DisplayOutPut Dis_LotNo = Station.DisplayOutput.Find(t => t.Name == "LOTNO"); DisplayOutPut Dis_SkuNo = Station.DisplayOutput.Find(t => t.Name == "SKUNO"); DisplayOutPut Dis_Ver = Station.DisplayOutput.Find(t => t.Name == "VER"); MESStationSession packSession = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); #region 用於界面上顯示的批次信息 R_LOT_STATUS rLotStatus = new R_LOT_STATUS(); List <R_LOT_PACK> rLotPackList = new List <R_LOT_PACK>(); #endregion LotNo LotNo = new LotNo(Station.DBType); T_R_LOT_PACK tRLotPack = new T_R_LOT_PACK(Station.SFCDB, Station.DBType); rLotPackList = tRLotPack.GetRLotPackWithWaitClose(Station.SFCDB, packSession.Value.ToString()); List <R_LOT_STATUS> rLotStatusList = tRLotPack.GetRLotStatusWithWaitClose(Station.SFCDB, packSession.Value.ToString()); rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "1"); if (rLotStatus != null) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526181007", new string[] { packSession.Value.ToString() })); } else { rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "0"); } if (Dis_LotNo.Value.Equals("")) { #region 當前Lot為空=>檢查當前Pack無有效LOT?新建LOT:加載LOT; if (rLotPackList.Count == 0) { rLotStatus = LotNo.CreateLotByPackno(Station.LoginUser, packSession.Value.ToString(), Station.SFCDB); rLotPackList.Add(new R_LOT_PACK() { LOTNO = rLotStatus.LOT_NO, PACKNO = packSession.Value.ToString() }); } else { rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "0"); } #endregion } else { #region 當前Lot不為空=>PackNo與當前頁面LOT的機種版本是否一致?ReLoad LOT信息:Throw e; T_R_PACKING tRPacking = new T_R_PACKING(Station.SFCDB, Station.DBType); Row_R_PACKING rowRPacking = tRPacking.GetRPackingByPackNo(Station.SFCDB, packSession.Value.ToString()); if (!rowRPacking.SKUNO.Equals(Dis_SkuNo.Value)) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526185434", new string[] { packSession.Value.ToString() })); } if (rLotPackList.Count == 0) { rLotStatus = LotNo.ObaInLotByPackno(Station.User, rLotStatus, packSession.Value.ToString(), Station.SFCDB); rLotPackList.Add(new R_LOT_PACK() { LOTNO = rLotStatus.LOT_NO, PACKNO = packSession.Value.ToString() }); } else { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180526185618", new string[] { packSession.Value.ToString(), rLotStatus.LOT_NO })); } #endregion } #region 加載界面信息 MESStationSession lotNoSession = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[2].SESSION_KEY, ResetInput = Input }; MESStationSession skuNoSession = new MESStationSession() { MESDataType = Paras[3].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[3].SESSION_KEY, ResetInput = Input }; MESStationSession aqlSession = new MESStationSession() { MESDataType = Paras[4].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[4].SESSION_KEY, ResetInput = Input }; MESStationSession lotQtySession = new MESStationSession() { MESDataType = Paras[5].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[5].SESSION_KEY, ResetInput = Input }; MESStationSession sampleQtySession = new MESStationSession() { MESDataType = Paras[6].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[6].SESSION_KEY, ResetInput = Input }; MESStationSession RejectQtySession = new MESStationSession() { MESDataType = Paras[7].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[7].SESSION_KEY, ResetInput = Input }; Station.StationSession.Clear(); Station.StationSession.Add(lotNoSession); Station.StationSession.Add(skuNoSession); Station.StationSession.Add(aqlSession); Station.StationSession.Add(lotQtySession); Station.StationSession.Add(sampleQtySession); Station.StationSession.Add(RejectQtySession); lotNoSession.Value = rLotStatus.LOT_NO; skuNoSession.Value = rLotStatus.SKUNO; aqlSession.Value = rLotStatus.AQL_TYPE; lotQtySession.Value = rLotStatus.LOT_QTY; sampleQtySession.Value = rLotStatus.SAMPLE_QTY; RejectQtySession.Value = rLotStatus.REJECT_QTY; MESStationInput s = Station.Inputs.Find(t => t.DisplayName == Paras[1].SESSION_TYPE); s.DataForUse.Clear(); foreach (var VARIABLE in rLotPackList) { s.DataForUse.Add(VARIABLE.PACKNO); } #endregion }