Exemple #1
0
        /// <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);
            }
        }
Exemple #2
0
        /// <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);
            }
        }