/// <summary> /// 確認出站後是否有下一站的預約紀錄,如果有,則將批號進站至下一個工作站 /// </summary> /// <param name="txnLotData">機加批號</param> /// <param name="txnStamp"></param> public void CheckNextReserveCheckIn(LotInfoEx txnLotData, TransactionStamp txnStamp) { //取得預約工作站資料 var WIPNextReserveList = CSTWIPReserveCheckInInfo.GetDataByLot(txnLotData.Lot); if (WIPNextReserveList.Count > 0) { //下一個預約工作站資料 var reserveData = WIPNextReserveList[0]; //將預約的進站時間回寫到hist的Remark01 txnStamp.Remark01 = reserveData.InTime; //取得機台資料 var equipData = EquipmentInfo.GetEquipmentByName(reserveData.Equipment); if (equipData == null) { //[00885]機台{0}不存在! throw new Exception(TextMessage.Error.T00885(reserveData.Equipment)); } //取得機台狀態資料 var newStateInfo = EquipmentStateInfo.GetEquipmentStateByState("RUN"); if (equipData.CurrentState != "RUN") { //更新機台狀態 EMSTransaction.ChangeState(equipData, newStateInfo, txnStamp); } //批號上機台 EMSTxn.Default.AddLotToEquipment(txnLotData, equipData, txnStamp); //批號進站 WIPTransaction.CheckIn(txnLotData, equipData.EquipmentName, "", "", LotDefaultStatus.Run.ToString(), txnStamp); //將批號Dispatch到下一規則 WIPTransaction.DispatchLot(txnLotData, txnStamp); } }
/// <summary> /// 確定 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnOK_Click(object sender, EventArgs e) { try { /* 1. 檢查畫面上所有輸入欄位是否都已輸入。 * 2. 如為當站進站(批號狀態為Wait),則將批號進站併上機台。(EquipmentAddLot、CheckIn、Dispatch)。 * 3. 如為預約進站,則將預約資訊塞入客製表,做批號備註。(AddComment) * 4. 清空畫面,游標停在機加批號。 */ string equipmentName = ""; EquipmentInfo equipData = null; TransactionStamp txnStamp = new TransactionStamp(User.Identity.Name, ProgramRight, ProgramRight, ApplicationName); //檢查機台是否有輸入 if (ttbLot.Text.IsNullOrEmpty() || _LotData == null) { AjaxFocus(ttbLot); throw new Exception(TextMessage.Error.T00030(GetUIResource("LotCheckInLot"), "")); } //如果機台下拉式清單Enabled為TRUE,則必須檢查是否有選擇機台 if (ddlEquip.Enabled) { ddlEquip.Must(lblEquip); //取得機台資訊 equipData = EquipmentInfo.GetEquipmentByID(ddlEquip.SelectedValue); //註記機台名稱 equipmentName = equipData.EquipmentName; } using (var cts = CimesTransactionScope.Create()) { //批號狀態為Wait時,表示目前要執行進站 if (_LotData.Status == LotDefaultStatus.Wait.ToString()) { CheckBom(_LotData.OperationName, equipData, _LotData); if (equipData != null) { //批號上機台 EMSTxn.Default.AddLotToEquipment(_LotData, equipData, txnStamp); //取得機台狀態資料 var newStateInfo = EquipmentStateInfo.GetEquipmentStateByState("RUN"); if (equipData.CurrentState != "RUN") { //更新機台狀態 EMSTransaction.ChangeState(equipData, newStateInfo, txnStamp); } } //批號進站 WIPTransaction.CheckIn(_LotData, equipmentName, "", "", LotDefaultStatus.Run.ToString(), txnStamp); //將批號Dispatch到下一規則 WIPTransaction.DispatchLot(_LotData, txnStamp); } else { CheckBom(_WIPReserveCheckInData.OperationName, equipData, _LotData); //執行預約進站功能 _WIPReserveCheckInData.Equipment = equipmentName; _WIPReserveCheckInData.InTime = DBCenter.GetSystemTime(); _WIPReserveCheckInData.InsertToDB(); //做批號備註。(AddComment) var reason = ReasonCategoryInfo.GetReasonCategoryByCategoryNameAndReason("CustomizeReason", "ReserveLotCheckIn"); var massage = ""; WIPTransaction.AddLotComment(_LotData, reason, massage, txnStamp); } cts.Complete(); } ClearField(); AjaxFocus(ttbLot); _ProgramInformationBlock.ShowMessage(TextMessage.Hint.T00614("")); } catch (Exception ex) { HandleError(ex); } }