public static void SampleLotDataloader(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { string StrSN = ""; Row_R_LOT_STATUS RLotStatus; T_R_LOT_STATUS TR = new T_R_LOT_STATUS(Station.SFCDB, MESDataObject.DB_TYPE_ENUM.Oracle); LotNo LOT = new LotNo(); if (Paras.Count <= 0) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000050")); } MESStationSession SNSession = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); MESStationSession LotNoSession = Station.StationSession.Find(t => t.MESDataType == Paras[1].SESSION_TYPE && t.SessionKey == Paras[1].SESSION_KEY); if (SNSession == null) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE + Paras[0].SESSION_KEY })); } else { StrSN = SNSession.Value.ToString(); } if (LotNoSession == null) { LotNoSession = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[1].SESSION_KEY, ResetInput = Input }; Station.StationSession.Add(LotNoSession); } try { RLotStatus = TR.GetSampleLotBySN(StrSN, Station.SFCDB); if (RLotStatus != null) { LotNoSession.Value = RLotStatus.GetDataObject(); } else { //throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[1].SESSION_TYPE + Paras[1].SESSION_KEY })); throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000159", new string[] { })); } } catch (Exception ex) { string msgCode = ex.Message; throw ex; } }
private void InitializeScreen() { shtView.ActiveSkin = Common.ACTIVE_SKIN; // Mapping DataField. CtrlUtil.MappingDataFieldWithEnum(shtView, typeof(eColView)); txtItem.KeyPress += CtrlUtil.SetNextControl; txtLocation.KeyPress += CtrlUtil.SetNextControl; txtLotNo.KeyPress += CtrlUtil.SetNextControl; txtInvPeriod.KeyPress += CtrlUtil.SetNextControl; txtOnHandQty.KeyPress += CtrlUtil.SetNextControl; cboItemType.KeyPress += CtrlUtil.SetNextControl; // Set default Column Cell Type. LookupDataBIZ bizLookupData = new LookupDataBIZ(); LookupData transTypelookupData = bizLookupData.LoadLookupClassType(DataDefine.TRANS_TYPE.ToNZString()); LookupData refClassTypelookupData = bizLookupData.LoadLookupClassType(DataDefine.REF_SLIP_CLS.ToNZString()); shtView.Columns[(int)eColView.TRANS_INFO].CellType = CtrlUtil.CreateReadOnlyPairCellType(transTypelookupData); shtView.Columns[(int)eColView.REF_TYPE].CellType = CtrlUtil.CreateReadOnlyPairCellType(refClassTypelookupData); shtView.Columns[(int)eColView.TRANS_DATE].CellType = CtrlUtil.CreateDateTimeCellType(Common.CurrentUserInfomation.DateFormatString); cboItemType.Format += Common.ComboBox_Format; LookupData itemTypelookupData = bizLookupData.LoadLookupClassType(DataDefine.ITEM_CLS.ToNZString()); cboItemType.LoadLookupData(itemTypelookupData); // Enable/Disable Controls CtrlUtil.EnabledControl(false, txtItem, txtLocation, txtLotNo, txtInvPeriod, txtOnHandQty, txtUnitMeasure, txtPackNo); CtrlUtil.EnabledControl(true, fpView); // Load data. txtItem.Text = ItemCode.NVL(string.Empty); txtLocation.Text = WareHouseCode.NVL(string.Empty); txtLotNo.Text = LotNo.NVL(string.Empty); txtInvPeriod.Text = String.Format("{0} - {1}", CtrlUtil.ConvertDateTimeToCurrentFormat(PeriodBeginDate), CtrlUtil.ConvertDateTimeToCurrentFormat(PeriodEndDate)); CtrlUtil.EnabledControl(false, cboItemType); LoadData(); }
/// <summary> /// 根據當前工站生產新的LOTNO /// </summary> /// <param name="Station"></param> /// <param name="Input"></param> /// <param name="Paras"></param> public static void GetLotDataloaderNew(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { if (Paras.Count <= 0) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000050")); } MESStationSession sessionSN = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); MESStationSession sessionLotNo = Station.StationSession.Find(t => t.MESDataType == Paras[1].SESSION_TYPE && t.SessionKey == Paras[1].SESSION_KEY); MESStationSession sessionLotNewFlag = Station.StationSession.Find(t => t.MESDataType == Paras[2].SESSION_TYPE && t.SessionKey == Paras[2].SESSION_KEY); LotNo lot = new LotNo(); string lotno = ""; if (sessionSN == null) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE })); } if (sessionLotNewFlag == null) { sessionLotNewFlag = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, SessionKey = Paras[2].SESSION_KEY, ResetInput = Input }; Station.StationSession.Add(sessionLotNewFlag); } try { if (sessionLotNo == null) { T_R_LOT_STATUS tLotStatus = new T_R_LOT_STATUS(Station.SFCDB, DB_TYPE_ENUM.Oracle); Row_R_LOT_STATUS rowLotStatus = tLotStatus.GetLotBySNNotCloesd(sessionSN.Value.ToString(), Station.SFCDB); if (rowLotStatus != null) { sessionLotNewFlag.Value = "0"; lot.Init(rowLotStatus.LOT_NO, "", Station.SFCDB); sessionLotNo = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[1].SESSION_KEY, ResetInput = Input }; sessionLotNo.Value = lot; Station.StationSession.Add(sessionLotNo); } else { //新建lot號 sessionLotNo = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[1].SESSION_KEY, ResetInput = Input }; sessionLotNo.Value = lot.GetNewLotNo("HWD_FQCLOT", Station.SFCDB); sessionLotNewFlag.Value = "1"; Station.StationSession.Add(sessionLotNo); } } else { if (sessionLotNo.Value is string && sessionLotNo.Value.ToString() != "") { lotno = sessionLotNo.Value.ToString(); } else if (sessionLotNo.Value is LotNo) { lotno = ((LotNo)sessionLotNo.Value).LOT_NO.ToString(); } else { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[1].SESSION_TYPE + Paras[1].SESSION_KEY })); } try { lot.Init(lotno, "", Station.SFCDB); } catch { lot = null; } if (lot != null) { if (lot.CLOSED_FLAG.ToString() == "1") { sessionLotNo.Value = lot.GetNewLotNo("HWD_FQCLOT", Station.SFCDB); sessionLotNewFlag.Value = "1"; Station.StationSession.Add(sessionLotNo); } else { sessionLotNewFlag.Value = "0"; lot.Init(((LotNo)lot).LOT_NO, "", Station.SFCDB); sessionLotNo.Value = lot; } } } } catch (Exception ex) { throw ex; } }
/// <summary> /// 通過SKU對象,獲取對應批次對象,如果批次對象為空,新增批次對象 /// </summary> /// <param name="Station"></param> /// <param name="Input"></param> /// <param name="Paras">2個參數,SKU,LOTNO保存的位置</param> public static void GetLotDataloader(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <MESDataObject.Module.R_Station_Action_Para> Paras) { string ColoumName = "skuno"; Row_R_LOT_STATUS RLotSku; T_R_LOT_STATUS TR = new T_R_LOT_STATUS(Station.SFCDB, MESDataObject.DB_TYPE_ENUM.Oracle); LotNo LOT = new LotNo(); if (Paras.Count <= 0) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000050")); } MESStationSession Ssku = Station.StationSession.Find(t => t.MESDataType == Paras[0].SESSION_TYPE && t.SessionKey == Paras[0].SESSION_KEY); MESStationSession Slot = Station.StationSession.Find(t => t.MESDataType == Paras[1].SESSION_TYPE && t.SessionKey == Paras[1].SESSION_KEY); MESStationSession SLotNewFlag = Station.StationSession.Find(t => t.MESDataType == Paras[2].SESSION_TYPE && t.SessionKey == Paras[2].SESSION_KEY); if (Ssku == null) { //throw new Exception("请输入SKU!"); throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000052", new string[] { Paras[0].SESSION_TYPE })); } else { SKU ObjSku = (SKU)Ssku.Value; //Marked by LLF 20018-02-22 //RLotSku = TR.GetByInput(ObjSku.SkuNo, ColoumName, Station.SFCDB); //RLotSku = TR.GetLotBySku(ObjSku.SkuNo, ColoumName, Station.SFCDB); //modify by fgg get lot by sku and station name 2018.8.16 RLotSku = TR.GetLotBySkuAnd(ObjSku.SkuNo, Station.StationName, Station.SFCDB); } if (Slot == null) { Slot = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[1].SESSION_KEY, ResetInput = Input }; Station.StationSession.Add(Slot); } if (SLotNewFlag == null) { SLotNewFlag = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, SessionKey = Paras[2].SESSION_KEY, ResetInput = Input }; Station.StationSession.Add(SLotNewFlag); } try { //Modify by LLF 2018-02-07 SLotNewFlag 為新生成Lot的標誌位 //if (LOT == null)//LOT 為空需產生新的LOTNO if (RLotSku == null) { SLotNewFlag.Value = "1"; Slot.Value = LOT.GetNewLotNo("HWD_FQCLOT", Station.SFCDB); } else { SLotNewFlag.Value = "0"; LOT.Init(RLotSku.LOT_NO, "", Station.SFCDB); Slot.Value = LOT; Station.AddMessage("MES00000029", new string[] { "LotNo", LOT.ToString() }, MESPubLab.MESStation.MESReturnView.Station.StationMessageState.Message); } } catch (Exception ex) { string msgCode = ex.Message; throw ex; } }
/// <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 }
/// <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 }