public static void CloseLot(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"); T_R_LOT_STATUS tRLotStatus = new T_R_LOT_STATUS(Station.SFCDB, Station.DBType); Row_R_LOT_STATUS r = tRLotStatus.GetByLotNo(Dis_LotNo.Value.ToString(), Station.SFCDB); if (r == null || !r.CLOSED_FLAG.Equals("0")) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180528103627", new string[] { Dis_LotNo.Value.ToString() })); } try { r.CLOSED_FLAG = "1"; r.EDIT_EMP = Station.LoginUser.EMP_NO; Station.SFCDB.ThrowSqlExeception = true; r.EDIT_TIME = tRLotStatus.GetDBDateTime(Station.SFCDB); Station.SFCDB.ExecSQL(r.GetUpdateString(Station.DBType)); } catch (Exception e) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180528105826", new string[] { Dis_LotNo.Value.ToString(), e.Message })); } finally { Station.SFCDB.ThrowSqlExeception = false; } #region 清空界面信息 Station.StationSession.Clear(); Station.Inputs.Find(t => t.DisplayName == Paras[0].SESSION_TYPE).DataForUse.Clear(); #endregion }
/// <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()); }
/*Modify by LLF 2018-02-22 * public void Init(string StrLotNo, MESDBHelper.OleExec SFCDB, MESDataObject.DB_TYPE_ENUM _DBType) * { * string ColoumName = "lot_no"; * DBType = _DBType; * T_R_LOT_STATUS TRWB = new T_R_LOT_STATUS(SFCDB, DBType); * T_R_LOT_DETAIL TWC = new T_R_LOT_DETAIL(SFCDB, DBType); * RLotNo = TRWB.GetByInput(StrLotNo, ColoumName, SFCDB); * SLot = RLotNo.GetDataObject(); * Rlotdetail = TWC.GetByLotID(SLot.ID, SFCDB); * Slotdetail = Rlotdetail.GetDataObject(); * } * * public void Init(string StrLotNo, MESDBHelper.OleExec SFCDB) * { * Init(StrLotNo, SFCDB, DBType); * }*/ public void Init(string StrLotNo, string StrSN, MESDBHelper.OleExec SFCDB, MESDataObject.DB_TYPE_ENUM _DBType) { string ColoumName = "lot_no"; DBType = _DBType; T_R_LOT_STATUS TRWB = new T_R_LOT_STATUS(SFCDB, DBType); T_R_LOT_DETAIL TWC = new T_R_LOT_DETAIL(SFCDB, DBType); RLotNo = TRWB.GetByInput(StrLotNo, ColoumName, SFCDB); SLot = RLotNo.GetDataObject(); Rlotdetail = TWC.GetByLotID(SLot.ID, StrSN, SFCDB); Slotdetail = Rlotdetail.GetDataObject(); }
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; } }
public static void LOTNOINPUT(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <R_Station_Action_Para> Paras) { OleExec DB = Station.SFCDB; string LOTNO = Input.Value.ToString().ToUpper(); T_R_LOT_STATUS TRLS = new T_R_LOT_STATUS(Station.SFCDB, DB_TYPE_ENUM.Oracle); var LOT_COUNT_session = Station.StationSession.Find(t => t.MESDataType == "LOT_COUNT" && t.SessionKey == "1"); if (LOT_COUNT_session == null) { LOT_COUNT_session = new MESStationSession() { MESDataType = "LOT_COUNT", SessionKey = "1", Value = 0 }; Station.StationSession.Add(LOT_COUNT_session); } var Lot = TRLS.GetByLotNo(LOTNO, DB); if (Lot.ID == null || Lot.ID == "") { throw new Exception($@"LotNo '{LOTNO}' is not exten"); } if (Lot.CLOSED_FLAG == "1") { throw new Exception($@"LotNo '{LOTNO}' is closed"); } if (Lot.SAMPLE_STATION != Station.DisplayName) { throw new Exception($@"LotNo '{LOTNO}' is use to '{Lot.SAMPLE_STATION}'"); } var LOT_session = Station.StationSession.Find(t => t.MESDataType == "LOTNO" && t.SessionKey == "1"); if (LOT_session == null) { LOT_session = new MESStationSession() { MESDataType = "LOTNO", SessionKey = "1" }; Station.StationSession.Add(LOT_session); } LOT_session.Value = LOTNO; int count = DB.ORM.Queryable <R_LOT_DETAIL>().Where(t => t.LOT_ID == Lot.ID).Count(); LOT_COUNT_session.Value = count; Station.NextInput = Station.Inputs[1]; }
/// <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 void LotClose(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <R_Station_Action_Para> Paras) { OleExec DB = Station.SFCDB; string strSql = ""; var LOT_session = Station.StationSession.Find(t => t.MESDataType == "LOTNO" && t.SessionKey == "1"); if (LOT_session == null) { LOT_session = new MESStationSession() { MESDataType = "LOTNO", SessionKey = "1" }; Station.StationSession.Add(LOT_session); } T_R_LOT_STATUS TRLS = new T_R_LOT_STATUS(DB, DB_TYPE_ENUM.Oracle); Row_R_LOT_STATUS RRLS = (Row_R_LOT_STATUS)TRLS.NewRow(); string lotno = ""; if (LOT_session.Value == null) { return; } else { lotno = LOT_session.Value.ToString(); strSql = $@"select * from R_LOT_STATUS where lot_no = '{lotno}'"; var d = DB.RunSelect(strSql); RRLS.loadData(d.Tables[0].Rows[0]); } RRLS.CLOSED_FLAG = "1"; RRLS.EDIT_EMP = Station.LoginUser.EMP_NO; RRLS.EDIT_TIME = DateTime.Now; RRLS.LOT_QTY = DB.ORM.Queryable <R_LOT_DETAIL>().Where(t => t.LOT_ID == lotno).Count(); DB.ExecSQL(RRLS.GetUpdateString(DB_TYPE_ENUM.Oracle)); Station.StationSession.Clear(); Station.NextInput = Station.Inputs[0]; }
public static void CloseLot(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"); MESStationInput Level = Station.Inputs.Find(t => t.DisplayName == "AQLLEVEL"); T_R_LOT_STATUS tRLotStatus = new T_R_LOT_STATUS(Station.SFCDB, Station.DBType); Row_R_LOT_STATUS r = tRLotStatus.GetByLotNo(Dis_LotNo.Value.ToString(), Station.SFCDB); if (r.LOT_NO == null || !r.CLOSED_FLAG.Equals("0")) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180528103627", new string[] { Dis_LotNo.Value.ToString() })); } try { //根據關閉時的AQL更新LotStatus T_C_AQLTYPE tCAqlType = new T_C_AQLTYPE(Station.SFCDB, Station.DBType); List <C_AQLTYPE> cAqlTypeList = tCAqlType.GetAqlTypeBySkunoAndLevel(r.SKUNO, Level.Value.ToString(), Station.SFCDB); r.REJECT_QTY = cAqlTypeList.Where(t => t.LOT_QTY > r.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].REJECT_QTY; r.SAMPLE_QTY = cAqlTypeList.Where(t => t.LOT_QTY > r.LOT_QTY).OrderBy(t => t.LOT_QTY).Take(1).ToList <C_AQLTYPE>()[0].SAMPLE_QTY; r.SAMPLE_QTY = r.SAMPLE_QTY > r.LOT_QTY ? r.LOT_QTY : r.SAMPLE_QTY; r.CLOSED_FLAG = "1"; r.AQL_LEVEL = Level.Value.ToString(); r.EDIT_EMP = Station.LoginUser.EMP_NO; Station.SFCDB.ThrowSqlExeception = true; r.EDIT_TIME = tRLotStatus.GetDBDateTime(Station.SFCDB); Station.SFCDB.ExecSQL(r.GetUpdateString(Station.DBType)); } catch (Exception e) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MSGCODE20180528105826", new string[] { Dis_LotNo.Value.ToString(), e.Message })); } finally { Station.SFCDB.ThrowSqlExeception = false; } #region 清空界面信息 Station.StationSession.Clear(); Station.Inputs.Find(t => t.DisplayName == Paras[0].SESSION_TYPE).DataForUse.Clear(); Station.Inputs.Find(t => t.DisplayName == "AQLLEVEL").DataForUse.Clear(); #endregion }
/// <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; } }
public static void LoadSampleLotByPackNo(MESStationBase Station, MESStationInput Input, List <R_Station_Action_Para> Paras) { if (Paras.Count == 0) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000050")); } string packNo = Input.Value.ToString(); #region 用於界面上顯示的批次信息 R_LOT_STATUS rLotStatus = new R_LOT_STATUS(); List <R_LOT_PACK> rLotPackList = new List <R_LOT_PACK>(); #endregion T_R_LOT_STATUS tRLotStatus = new T_R_LOT_STATUS(Station.SFCDB, Station.DBType); T_R_LOT_PACK rRLotPack = new T_R_LOT_PACK(Station.SFCDB, Station.DBType); List <R_LOT_STATUS> rLotStatusList = tRLotStatus.getSampleLotByPackNo(packNo, Station.SFCDB); if (rLotStatusList.FindAll(t => t.CLOSED_FLAG == "1").Count > 1) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MSGCODE20180529105040", new string[] { packNo })); } else if (rLotStatusList.FindAll(t => t.CLOSED_FLAG == "0").Count > 0) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MSGCODE20180529111019", new string[] { packNo, rLotStatusList.Find(t => t.CLOSED_FLAG == "0").LOT_NO })); } else if (rLotStatusList.FindAll(t => t.CLOSED_FLAG != "2").Count == 0) { throw new MESReturnMessage(MESReturnMessage.GetMESReturnMessage("MSGCODE20180529111245", new string[] { packNo })); } rLotStatus = rLotStatusList.Find(t => t.CLOSED_FLAG == "1"); rLotPackList = rRLotPack.GetRLotPackByLotNo(Station.SFCDB, rLotStatus.LOT_NO); #region 加載界面信息 MESStationSession lotNoSession = new MESStationSession() { MESDataType = Paras[0].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[0].SESSION_KEY, ResetInput = Input }; MESStationSession skuNoSession = new MESStationSession() { MESDataType = Paras[1].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[1].SESSION_KEY, ResetInput = Input }; MESStationSession aqlSession = new MESStationSession() { MESDataType = Paras[2].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[2].SESSION_KEY, ResetInput = Input }; MESStationSession lotQtySession = new MESStationSession() { MESDataType = Paras[3].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[3].SESSION_KEY, ResetInput = Input }; MESStationSession sampleQtySession = new MESStationSession() { MESDataType = Paras[4].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[4].SESSION_KEY, ResetInput = Input }; MESStationSession rejectQtySession = new MESStationSession() { MESDataType = Paras[5].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[5].SESSION_KEY, ResetInput = Input }; MESStationSession sampleQtyWithAQLSession = new MESStationSession() { MESDataType = Paras[6].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[6].SESSION_KEY, ResetInput = Input }; MESStationSession passQtySession = new MESStationSession() { MESDataType = Paras[7].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[7].SESSION_KEY, ResetInput = Input }; MESStationSession failQtySession = new MESStationSession() { MESDataType = Paras[8].SESSION_TYPE, InputValue = Input.Value.ToString(), SessionKey = Paras[8].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); Station.StationSession.Add(sampleQtyWithAQLSession); Station.StationSession.Add(passQtySession); Station.StationSession.Add(failQtySession); 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; sampleQtyWithAQLSession.Value = rLotStatus.PASS_QTY + rLotStatus.FAIL_QTY; passQtySession.Value = rLotStatus.PASS_QTY; failQtySession.Value = rLotStatus.FAIL_QTY; MESStationInput s = Station.Inputs.Find(t => t.DisplayName == Paras[9].SESSION_TYPE); s.DataForUse.Clear(); foreach (var VARIABLE in rLotPackList) { s.DataForUse.Add(VARIABLE.PACKNO); } MESStationInput snInput = Station.Inputs.Find(t => t.DisplayName == "SN"); MESStationInput packInput = Station.Inputs.Find(t => t.DisplayName == "PACKNO"); MESStationInput scanTypeInput = Station.Inputs.Find(t => t.DisplayName == "ScanType"); packInput.Visable = false; snInput.Visable = true; scanTypeInput.Visable = true; #endregion }
public static void SNInputToLot(MESPubLab.MESStation.MESStationBase Station, MESPubLab.MESStation.MESStationInput Input, List <R_Station_Action_Para> Paras) { OleExec DB = Station.SFCDB; string strSql = ""; var LOT_session = Station.StationSession.Find(t => t.MESDataType == "LOTNO" && t.SessionKey == "1"); if (LOT_session == null) { LOT_session = new MESStationSession() { MESDataType = "LOTNO", SessionKey = "1" }; Station.StationSession.Add(LOT_session); } var LOT_COUNT_session = Station.StationSession.Find(t => t.MESDataType == "LOT_COUNT" && t.SessionKey == "1"); if (LOT_COUNT_session == null) { LOT_COUNT_session = new MESStationSession() { MESDataType = "LOT_COUNT", SessionKey = "1", Value = 0 }; Station.StationSession.Add(LOT_COUNT_session); } var SN_Session = Station.StationSession.Find(t => t.MESDataType == "SN" && t.SessionKey == "1"); SN sn = (SN)SN_Session.Value; if (sn.CompletedFlag != "1") { throw new Exception($@"'{sn.SerialNo}' is not Completed"); } string lotno = "";//LOT_session.Value.ToString(); T_R_LOT_STATUS TRLS = new T_R_LOT_STATUS(DB, DB_TYPE_ENUM.Oracle); Row_R_LOT_STATUS RRLS = (Row_R_LOT_STATUS)TRLS.NewRow(); if (LOT_session.Value == null) { RRLS.ID = TRLS.GetNewID(Station.BU, DB); RRLS.SKUNO = sn.SkuNo; RRLS.LOT_QTY = 0; RRLS.LOT_STATUS_FLAG = "0"; RRLS.SAMPLE_STATION = Station.DisplayName; RRLS.CLOSED_FLAG = "0"; RRLS.LOT_NO = SNMaker.SNmaker.GetNextSN("HWDLOT", DB); RRLS.EDIT_TIME = DateTime.Now; RRLS.EDIT_EMP = Station.LoginUser.EMP_NO; DB.ExecSQL(RRLS.GetInsertString(DB_TYPE_ENUM.Oracle)); RRLS.AcceptChange(); lotno = RRLS.LOT_NO; } else { lotno = LOT_session.Value.ToString(); strSql = $@"select * from R_LOT_STATUS where lot_no = '{lotno}'"; var d = DB.RunSelect(strSql); RRLS.loadData(d.Tables[0].Rows[0]); } LOT_session.Value = lotno; if (RRLS.CLOSED_FLAG == "1") { throw new Exception($@"LotNo '{RRLS.LOT_NO}' is closed"); } strSql = $@"select l.lot_no from r_lot_status l inner join r_lot_detail d on l.lot_no = d.lot_id where sn = '{sn.SerialNo}' and l.lot_no like 'LOT-%' and d.status = '0'"; var data = DB.RunSelect(strSql); if (data.Tables[0].Rows.Count > 0) { throw new Exception($@"'{sn.SerialNo}' is in lot'{data.Tables[0].Rows[0]["lot_no"].ToString()}'"); } if (sn.SkuNo != RRLS.SKUNO) { throw new Exception($@"'{sn.SerialNo}': '{sn.SkuNo}' but lot is '{RRLS.SKUNO}'"); } T_R_LOT_DETAIL TRLD = new T_R_LOT_DETAIL(DB, DB_TYPE_ENUM.Oracle); R_LOT_DETAIL R = new R_LOT_DETAIL(); R.ID = TRLD.GetNewID(Station.BU, DB); R.LOT_ID = RRLS.LOT_NO; R.SN = sn.SerialNo; R.STATUS = "0"; R.EDIT_EMP = Station.LoginUser.EMP_NO; R.EDIT_TIME = DateTime.Now; DB.ORM.Insertable <R_LOT_DETAIL>(R).ExecuteCommand(); T_R_SN TRS = new T_R_SN(DB, DB_TYPE_ENUM.Oracle); TRS.RecordPassStationDetail(sn.SerialNo, Station.Line, Station.StationName, Station.DisplayName, Station.BU, DB); int count = DB.ORM.Queryable <R_LOT_DETAIL>().Where(t => t.LOT_ID == R.LOT_ID).Count(); RRLS.LOT_QTY = count; RRLS.EDIT_TIME = DateTime.Now; RRLS.EDIT_EMP = Station.LoginUser.EMP_NO; DB.ExecSQL(RRLS.GetUpdateString(DB_TYPE_ENUM.Oracle)); RRLS.AcceptChange(); LOT_COUNT_session.Value = count; Station.NextInput = Station.Inputs[1]; }
public void GetLockStation(Newtonsoft.Json.Linq.JObject requestValue, Newtonsoft.Json.Linq.JToken Data, MESStationReturn StationReturn) { string lockType = Data["LockType"].ToString().Trim(); string lockData = Data["LockData"].ToString().Trim(); DataTable routeTable = new DataTable(); List <string> stationList = new List <string>(); OleExec sfcdb = null; try { sfcdb = this.DBPools["SFCDB"].Borrow(); T_C_ROUTE_DETAIL t_c_route_detail = new T_C_ROUTE_DETAIL(sfcdb, DBTYPE); if (lockType == "LockByWo") { T_R_WO_BASE t_r_wo_base = new T_R_WO_BASE(sfcdb, DBTYPE); R_WO_BASE r_wo_base = t_r_wo_base.GetWo(lockData, sfcdb).GetDataObject(); stationList = t_c_route_detail.GetByRouteIdOrderBySEQASC(r_wo_base.ROUTE_ID, sfcdb).Select(route => route.STATION_NAME).ToList(); } else if (lockType == "LockByLot") { T_R_LOT_STATUS t_r_lot_status = new T_R_LOT_STATUS(sfcdb, DBTYPE); Row_R_LOT_STATUS rowLotStatus = t_r_lot_status.GetByLotNo(lockData, sfcdb); if (rowLotStatus.ID == null) { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000161", new string[] { })); } R_LOT_STATUS r_lot_status = rowLotStatus.GetDataObject(); T_C_SKU t_c_sku = new T_C_SKU(sfcdb, DBTYPE); C_SKU c_sku = t_c_sku.GetSku(r_lot_status.SKUNO, sfcdb, DBTYPE).GetDataObject(); T_R_SKU_ROUTE t_r_sku_route = new T_R_SKU_ROUTE(sfcdb, DBTYPE); List <R_SKU_ROUTE> r_sku_route_list = t_r_sku_route.GetMappingBySkuId(c_sku.ID, sfcdb); if (r_sku_route_list.Count > 0) { //t_c_route_detail.GetByRouteIdOrderBySEQASC(r_sku_route_list[0].ROUTE_ID, sfcdb); stationList = t_c_route_detail.GetByRouteIdOrderBySEQASC(r_sku_route_list[0].ROUTE_ID, sfcdb).Select(route => route.STATION_NAME).ToList(); } else { throw new Exception(MESReturnMessage.GetMESReturnMessage("MES00000179", new string[] { })); } } else { routeTable = t_c_route_detail.GetALLStation(sfcdb); foreach (DataRow row in routeTable.Rows) { stationList.Add(row["station_name"].ToString()); } stationList.Sort(); } this.DBPools["SFCDB"].Return(sfcdb); StationReturn.Data = stationList; StationReturn.Status = StationReturnStatusValue.Pass; StationReturn.MessageCode = "MES00000001"; } catch (Exception exception) { StationReturn.Status = StationReturnStatusValue.Fail; StationReturn.MessageCode = "MES00000037"; StationReturn.MessagePara.Add(exception.Message); StationReturn.Data = exception.Message; if (sfcdb != null) { this.DBPools["SFCDB"].Return(sfcdb); } } }