Пример #1
0
        private void InitReworkLotNo()
        {
            string status = this.rdoNotConfirmed.Checked ? ReworkFacade.ReworkLot_Status_NEW : ReworkFacade.ReworkLot_Status_DEAL;

            ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);

            object[] tempReworkLotNo = reworkFacade.GetTempReworkLotNo(status);

            if (tempReworkLotNo == null)
            {
                return;
            }

            foreach (TempRework tempRework in tempReworkLotNo)
            {
                if (status == ReworkFacade.ReworkLot_Status_DEAL)
                {
                    dtReworkLot.Rows.Add(new object[] { tempRework.LotNO, tempRework.TotalCount.ToString() + "/" + tempRework.TotalCount.ToString(),
                                                        tempRework.ItemCode, tempRework.MaterialDescription,
                                                        tempRework.MaintainUser, tempRework.MaintainDate, tempRework.MaintainTime });
                }
                else
                {
                    dtReworkLot.Rows.Add(new object[] { tempRework.LotNO, tempRework.UnConfirmedCount.ToString() + "/" + tempRework.TotalCount.ToString(),
                                                        tempRework.ItemCode, tempRework.MaterialDescription,
                                                        tempRework.MaintainUser, tempRework.MaintainDate, tempRework.MaintainTime });
                }
            }

            this.dtReworkLot.AcceptChanges();
        }
Пример #2
0
        private void AddRes2ReworkSheet(string resCode, string reworkCodeListString)
        {
            ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);

            if (_facade == null)
            {
                _facade = new BaseModelFacadeFactory(base.DataProvider).Create();
            }

            if (reworkCodeListString.Trim().Length > 0)
            {
                string[] reworkCodeList = reworkCodeListString.Trim().ToUpper().Split(',');
                if (reworkCodeList == null)
                {
                    reworkCodeList = new string[0];
                }

                foreach (string reworkCode in reworkCodeList)
                {
                    ReworkSheet reworkSheet = (ReworkSheet)reworkFacade.GetReworkSheet(reworkCode);
                    if (reworkSheet != null)
                    {
                        Resource2ReworkSheet res2ReworkSheet = _facade.CreateNewResource2ReworkSheet();
                        res2ReworkSheet.ResourceCode = resCode;
                        res2ReworkSheet.ItemCode     = reworkSheet.ItemCode;
                        res2ReworkSheet.LotNo        = reworkSheet.LotList;
                        res2ReworkSheet.ReworkCode   = reworkSheet.ReworkCode;
                        res2ReworkSheet.MaintainUser = this.GetUserCode();
                        _facade.AddResource2ReworkSheet(res2ReworkSheet);
                    }
                }
            }
        }
Пример #3
0
 protected override int GetRowCount()
 {
     if (facade == null)
     {
         facade = new ReworkFacade(base.DataProvider);
     }
     return(this.facade.GetReworkRangeQueryCount(
                FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtReworkSheetCode.Text))));
 }
Пример #4
0
        protected override object[] LoadDataSource(int inclusive, int exclusive)
        {
            if (facade == null)
            {
                facade = new ReworkFacade(base.DataProvider);
            }

            return(this.facade.GetReworkRangeQuery(
                       FormatHelper.PKCapitalFormat(FormatHelper.CleanString(this.txtReworkSheetCode.Text)),
                       inclusive, exclusive));
        }
Пример #5
0
        private string GetRouteCodeFromReworkCodeList(string reworkCodeListString)
        {
            ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);

            string returnValue = string.Empty;

            //此处需要保证各个ReworkCode抓取出的NewRouteCode都相同,否则返回空字符串
            if (reworkCodeListString.Trim().Length > 0)
            {
                string[] reworkCodeList = reworkCodeListString.Trim().ToUpper().Split(',');
                if (reworkCodeList == null)
                {
                    reworkCodeList = new string[0];
                }

                foreach (string reworkCode in reworkCodeList)
                {
                    ReworkSheet reworkSheet = (ReworkSheet)reworkFacade.GetReworkSheet(reworkCode);
                    if (reworkSheet == null || reworkSheet.NewRouteCode == null || reworkSheet.NewRouteCode.Trim().Length <= 0)
                    {
                        returnValue = string.Empty;
                        break;
                    }
                    else if (returnValue.Trim().Length > 0 && string.Compare(returnValue.Trim(), reworkSheet.NewRouteCode.Trim(), true) != 0)
                    {
                        returnValue = string.Empty;
                        break;
                    }
                    else
                    {
                        returnValue = reworkSheet.NewRouteCode.Trim().ToUpper();
                    }
                }
            }

            return(returnValue);
        }
Пример #6
0
        private void InitReworkRcard()
        {
            dtReworkRcard.Rows.Clear();
            this.txtTotalNumber.Value      = "0";
            this.txtNotSelectnNumber.Value = "0";
            this.txtInput.Value            = "";

            int    totalCount     = 0;
            int    unconfirmCount = 0;
            string status         = "";

            ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);

            object[] tempReworkRcard = reworkFacade.QueryReworkRcard(clickLotNo);
            if (tempReworkRcard != null && tempReworkRcard.Length > 0)
            {
                foreach (ReworkRcard reworkRcard in tempReworkRcard)
                {
                    if (string.Compare(reworkRcard.Status, ReworkFacade.ReworkLot_Status_NEW, true) == 0)
                    {
                        unconfirmCount++;
                        status = "待确认";
                    }
                    else
                    {
                        status = "已确认";
                    }
                    dtReworkRcard.Rows.Add(new object[] { reworkRcard.PalletCode, reworkRcard.RCard, status });
                    totalCount++;
                }
            }

            this.dtReworkRcard.AcceptChanges();

            this.txtNotSelectnNumber.Value = unconfirmCount.ToString();
            this.txtTotalNumber.Value      = totalCount.ToString();
        }
Пример #7
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="actionEventArgs"> </param> params (0,lotno)
        /// <returns></returns>
        public Messages Execute(ActionEventArgs actionEventArgs)
        {
            Messages         messages         = new Messages();
            DataCollectDebug dataCollectDebug = new DataCollectDebug(this.GetType().ToString() + "Collect");

            dataCollectDebug.WhenFunctionIn(messages);
            OQCRejectEventArgs oqcRejectEventArgs = actionEventArgs as OQCRejectEventArgs;

            try
            {
                ActionOnLineHelper dataCollect  = new ActionOnLineHelper(this.DataProvider);
                ActionOQCHelper    oqcHelper    = new ActionOQCHelper(this.DataProvider);
                OQCFacade          oqcFacade    = new OQCFacade(this.DataProvider);
                ReworkFacade       reworkFacade = new ReworkFacade(this.DataProvider);
                TSFacade           tsFacade     = new TSFacade(this.DataProvider);

                //check oqcStatus
                #region CheckOQCLotStatus
                //				object objOQClot = oqcFacade.GetOQCLot(oqcRejectEventArgs.OQCLotNO,OQCFacade.Lot_Sequence_Default);
                //				if(objOQClot == null)
                //				{
                //					throw new Exception("$Error_OQCLotNotExisted");
                //				}
                //				if( ((OQCLot)objOQClot).LOTStatus == OQCLotStatus.OQCLotStatus_Initial)
                //				{
                //					throw new Exception("$Error_OQCLotNO_Cannot_Initial");
                //				}
                //				if( ((OQCLot)objOQClot).LOTStatus == OQCLotStatus.OQCLotStatus_NoExame)
                //				{
                //					throw new Exception("$Error_OQCLotNO_Cannot_NoExame");
                //				}
                //				if( (((OQCLot)objOQClot).LOTStatus == OQCLotStatus.OQCLotStatus_Reject)||((((OQCLot)objOQClot).LOTStatus == OQCLotStatus.OQCLotStatus_Pass)  ))
                //				{
                //					throw new Exception("$Error_OQCLotNO_HasComplete");
                //				}
                #endregion

                if (!oqcRejectEventArgs.IsForceReject)
                {
                    //必须要有NG而且在送修状态的板子
                    if (tsFacade.HaveNewStatusCardInOQCLot(oqcRejectEventArgs.OQCLotNO, String.Empty))
                    {
                        throw new Exception("$Error_OQCLotNo_HasNoTS");
                    }
                }

                object objLot = null;
                if (oqcRejectEventArgs.Lot == null)
                {
                    objLot = oqcFacade.GetExamingOQCLot(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default);
                }
                else
                {
                    objLot = oqcRejectEventArgs.Lot;
                }

                //update each running card reject
                #region 取得每个板子进行批退,填充reject,Reject2ErrorCode信息
                //reject
                object[] RCards = null;

                if (oqcRejectEventArgs.CardOfLot != null)
                {
                    RCards = oqcRejectEventArgs.CardOfLot;
                }
                else
                {
                    RCards = oqcHelper.QueryCardOfLot(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default);
                }

                if (!oqcRejectEventArgs.IsForceReject)
                {
                    int iNGCount = 0;
                    for (int j = 0; j < RCards.Length; j++)
                    {
                        if (((Simulation)RCards[j]).ProductStatus == ProductStatus.NG)
                        {
                            iNGCount = 1;
                            break;
                        }
                    }
                    int funcNGCount = 0;
                    funcNGCount = oqcFacade.QueryFuncTesCount(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default.ToString(), ProductStatus.NG);
                    if (iNGCount == 0 && funcNGCount == 0)
                    {
                        throw new Exception("$CS_LOT_NOT_EXIST_NG");
                    }
                }

                #region reject errorCodes
                object[]         objs             = oqcFacade.ExtraQueryOQCLotCard2ErrorCode(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default.ToString());
                Reject2ErrorCode reject2ErrorCode = reworkFacade.CreateNewReject2ErrorCode();
                //Reject2ErrorCode
                if (objs != null)
                {
                    for (int i = 0; i < objs.Length; i++)
                    {
                        bool needInsert = false;
                        foreach (Simulation sim in RCards)
                        {
                            if (sim.RunningCard == ((OQCLotCard2ErrorCode)objs[i]).RunningCard &&
                                sim.RunningCardSequence == ((OQCLotCard2ErrorCode)objs[i]).RunningCardSequence)
                            {
                                needInsert = true;
                            }
                        }
                        if (needInsert)
                        {
                            reject2ErrorCode.ErrorCode           = ((OQCLotCard2ErrorCode)objs[i]).ErrorCode;
                            reject2ErrorCode.ErrorCodeGroup      = ((OQCLotCard2ErrorCode)objs[i]).ErrorCodeGroup;
                            reject2ErrorCode.MaintainUser        = actionEventArgs.UserCode;
                            reject2ErrorCode.RunningCard         = ((OQCLotCard2ErrorCode)objs[i]).RunningCard;
                            reject2ErrorCode.RunningCardSequence = ((OQCLotCard2ErrorCode)objs[i]).RunningCardSequence + 1;
                            reject2ErrorCode.MOCode = ((OQCLotCard2ErrorCode)objs[i]).MOCode;
                            reject2ErrorCode.LotNo  = ((OQCRejectEventArgs)actionEventArgs).OQCLotNO;
                            reject2ErrorCode.MOSeq  = ((OQCLotCard2ErrorCode)objs[i]).MOSeq;        // Added by Icyer 2007/07/03

                            if (reworkFacade.GetReject2ErrorCode(reject2ErrorCode.ErrorCode, reject2ErrorCode.RunningCard, reject2ErrorCode.RunningCardSequence, reject2ErrorCode.ErrorCodeGroup) == null)
                            {
                                reworkFacade.AddReject2ErrorCode(reject2ErrorCode);
                            }
                        }
                    }
                }
                #endregion

                #endregion

                #region OQCLotCheckList
                object objLotCheckList = oqcFacade.GetOQCLOTCheckList(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default);
                if (objLotCheckList != null)
                {
                    OQCLOTCheckList oqcLotCheckList = objLotCheckList as OQCLOTCheckList;
                    oqcLotCheckList.Result = OQCLotStatus.OQCLotStatus_Reject;
                    oqcFacade.UpdateOQCLOTCheckList(oqcLotCheckList);
                }
                #endregion

                //把整个lot中的ID全变成reject
                #region 整个lot中的ID全变成reject
                object[] objsInTS = oqcFacade.GetOQCLot2CardInTS(string.Empty, string.Empty, string.Empty, string.Empty, oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default.ToString());
                if (objsInTS == null)
                {
                    oqcFacade.UpdateOQCLot2CardByOQCResult(oqcRejectEventArgs.OQCLotNO, OQCFacade.Lot_Sequence_Default.ToString(), string.Empty, string.Empty, ProductStatus.Reject, true);
                }
                else
                {
                    string tmpString = string.Empty;
                    for (int i = 0; i < objsInTS.Length; i++)
                    {
                        tmpString += ": " + ((OQCLot2Card)objsInTS[i]).RunningCard;
                    }
                    throw new Exception(String.Format("$Error_RunningCardInTS: {0}", tmpString));
                }
                #endregion

                messages.AddMessages(SetReworkInformation(messages, RCards, oqcRejectEventArgs, dataCollect, reworkFacade));

                #region updateOQCLot

                DBDateTime dbDateTime;

                dbDateTime = FormatHelper.GetNowDBDateTime(DataProvider);

                OQCLot oqcLot = objLot as OQCLot;
                oqcLot.LOTStatus = OQCLotStatus.OQCLotStatus_Reject;
                oqcLot.DealDate  = dbDateTime.DBDate;
                oqcLot.DealTime  = dbDateTime.DBTime;
                oqcLot.DealUser  = actionEventArgs.UserCode;
                oqcLot.Memo      = oqcRejectEventArgs.Memo;
                oqcFacade.UpdateOQCLotStatus(oqcLot);
                #endregion

                if (oqcRejectEventArgs.IsAutoGenerateReworkSheet)
                {
                    //ReworkSheet reworkSheet = reworkFacade.GetMaxReworkSheet(dbDateTime.DBDate);
                    //reworkSheet.ReworkCode = reworkSheet.ReworkCode.Substring(0, 9) + Convert.ToString(int.Parse(reworkSheet.ReworkCode.Substring(9, 3)) + 1).PadLeft(3, '0');
                    ReworkSheet reworkSheet = new ReworkSheet();
                    reworkSheet.ReworkCode       = oqcLot.LOTNO;
                    reworkSheet.CreateDate       = dbDateTime.DBDate;
                    reworkSheet.CreateTime       = dbDateTime.DBTime;
                    reworkSheet.CreateUser       = actionEventArgs.UserCode;
                    reworkSheet.Department       = "";
                    reworkSheet.EAttribute1      = "";
                    reworkSheet.ItemCode         = (RCards[0] as Simulation).ItemCode;
                    reworkSheet.LotList          = oqcRejectEventArgs.OQCLotNO;
                    reworkSheet.MaintainDate     = dbDateTime.DBDate;
                    reworkSheet.MaintainTime     = dbDateTime.DBTime;
                    reworkSheet.MaintainUser     = actionEventArgs.UserCode;
                    reworkSheet.MOCode           = "";
                    reworkSheet.NeedCheck        = "N";
                    reworkSheet.NewMOCode        = "";
                    reworkSheet.NewOPBOMCode     = "";
                    reworkSheet.NewOPBOMVersion  = "";
                    reworkSheet.NewOPCode        = "";
                    reworkSheet.NewRouteCode     = "";
                    reworkSheet.ReasonAnalyse    = "";
                    reworkSheet.ReworkContent    = "";
                    reworkSheet.ReworkDate       = 0;
                    reworkSheet.ReworkHC         = 0;
                    reworkSheet.ReworkMaxQty     = 0;
                    reworkSheet.ReworkQty        = RCards.Length;
                    reworkSheet.ReworkRealQty    = 0;
                    reworkSheet.ReworkReason     = oqcRejectEventArgs.Memo;
                    reworkSheet.ReworkSourceCode = " ";
                    reworkSheet.ReworkTime       = 0;
                    reworkSheet.ReworkType       = ReworkType.REWORKTYPE_ONLINE;
                    reworkSheet.Soluation        = "";
                    reworkSheet.Status           = ReworkStatus.REWORKSTATUS_RELEASE;
                    reworkSheet.AutoLot          = oqcRejectEventArgs.IsCreateNewLot ? "Y" : "";

                    reworkFacade.AddReworkSheetWithOutTrans(reworkSheet);
                }

                //add by roger.xue 2008/10/27
                if (oqcRejectEventArgs.IsUnFrozen)
                {
                    oqcFacade.UpdateUnFrozenOnLot(oqcRejectEventArgs.OQCLotNO, oqcRejectEventArgs.UnFrozenReason,
                                                  dbDateTime.DBDate, dbDateTime.DBTime, oqcRejectEventArgs.UserCode, OQCFacade.Lot_Sequence_Default);

                    oqcFacade.UnFreezeFrozen(oqcRejectEventArgs.OQCLotNO, oqcRejectEventArgs.UnFrozenReason,
                                             dbDateTime.DBDate, dbDateTime.DBTime, oqcRejectEventArgs.UserCode, OQCFacade.Lot_Sequence_Default);
                }
                //end add

                AlertFacade alertFacade = new AlertFacade(this.DataProvider);
                alertFacade.AlertOQCReject(oqcLot.ItemCode, oqcLot.SSCode, oqcLot.LOTNO, oqcLot.Memo);
            }
            catch (Exception e)
            {
                messages.Add(new Message(e));
            }
            dataCollectDebug.WhenFunctionOut(messages);
            return(messages);
        }
Пример #8
0
        private Messages SetReworkInformation(Messages messages, object[] Simulations, OQCRejectEventArgs actionEventArgs, ActionOnLineHelper dataCollect, ReworkFacade reworkFacade)
        {
            Messages newMessages = new Messages();

            BenQGuru.eMES.TS.TSFacade tsFacade = new BenQGuru.eMES.TS.TSFacade(this.DataProvider);
            DataCollectFacade         dcf      = new DataCollectFacade(this._domainDataProvider);
            //ProductInfo preProduct =null;
            int i = 0;

            ActionCheckStatus actionCheckStatus = new ActionCheckStatus();

            if (Resource == null)
            {
                BenQGuru.eMES.BaseSetting.BaseModelFacade dataModel = new BenQGuru.eMES.BaseSetting.BaseModelFacade(this.DataProvider);
                Resource = (Domain.BaseSetting.Resource)dataModel.GetResource(actionEventArgs.ResourceCode);
            }

            while (i < Simulations.Length)
            {
                try
                {
                    #region 保存WIP
                    ProductInfo productionInf = dataCollect.GetIDInfoBySimulation((Simulation)Simulations[i]);

                    if (actionEventArgs.listActionCheckStatus.ContainsKey(productionInf.LastSimulation.MOCode))
                    {
                        actionCheckStatus = (ActionCheckStatus)actionEventArgs.listActionCheckStatus[productionInf.LastSimulation.MOCode];

                        actionCheckStatus.ProductInfo = productionInf;

                        actionCheckStatus.ProductInfo.Resource = Resource;

                        //					lastSimulation =  productionInf.LastSimulation;
                        actionCheckStatus.ActionList = new ArrayList();
                    }
                    else
                    {
                        //actionCheckStatus.NeedUpdateSimulation = false;
                        //actionCheckStatus.NeedFillReport = true;
                        actionEventArgs.listActionCheckStatus.Add(productionInf.LastSimulation.MOCode, actionCheckStatus);
                    }

                    OQCRejectEventArgs oqcRejectEventArgs = new OQCRejectEventArgs(
                        ActionType.DataCollectAction_OQCReject, ((Simulation)Simulations[i]).RunningCard,
                        actionEventArgs.UserCode, actionEventArgs.ResourceCode, actionEventArgs.OQCLotNO, productionInf);

                    newMessages.AddMessages(dataCollect.CheckID(oqcRejectEventArgs, actionCheckStatus));
                    //					if (preProduct != null)
                    //					{
                    //						if (dataCollect.CompareSimulationCheck(preProduct.LastSimulation,oqcRejectEventArgs.ProductInfo.LastSimulation))
                    //						{
                    //							dataCollect.CopyProduct(preProduct,oqcRejectEventArgs.ProductInfo);
                    //							dcf.WriteSimulationCheckOnlineOP(oqcRejectEventArgs.RunningCard,oqcRejectEventArgs.ActionType,oqcRejectEventArgs.ResourceCode,
                    //								oqcRejectEventArgs.UserCode,oqcRejectEventArgs.ProductInfo);
                    //							needCheck=false;
                    //						}
                    //					}
                    //					if (needCheck)
                    //						newMessages.AddMessages(dataCollect.CheckID(oqcRejectEventArgs));
                    if (!newMessages.IsSuccess())
                    {
                        return(newMessages);
                    }
                    #region TS
                    //Laws Lu,需要修改	曾经走过TS处理,没有考虑多次TS的情况,MOCode和Sequence也应该作为关键参数,
                    BenQGuru.eMES.Domain.TS.TS ts = (BenQGuru.eMES.Domain.TS.TS)tsFacade.GetCardLastTSRecord(oqcRejectEventArgs.RunningCard);
                    if (ActionType.DataCollectAction_OQCReject == oqcRejectEventArgs.ActionType &&
                        ts != null &&
                        ts.FromInputType == TS.TSFacade.TSSource_OnWIP
                        )
                    {
                        //Laws Lu,2006/07/07 修复在OQC前工序NG回流后,SN后仍然留在PK站
                        dcf.AdjustRouteOPOnline(oqcRejectEventArgs.RunningCard
                                                , ActionType.DataCollectAction_OQCReject
                                                , oqcRejectEventArgs.ResourceCode
                                                , oqcRejectEventArgs.UserCode
                                                , oqcRejectEventArgs.ProductInfo);


                        //oqcRejectEventArgs.ProductInfo.NowSimulation.OPCode = op.OPCode;

                        dcf.WriteSimulation(
                            oqcRejectEventArgs.RunningCard
                            , ActionType.DataCollectAction_OQCReject
                            , oqcRejectEventArgs.ResourceCode
                            , oqcRejectEventArgs.UserCode
                            , oqcRejectEventArgs.ProductInfo);
                    }
                    #endregion
                    //Laws Lu,2006/07/07 fix op
                    if (oqcRejectEventArgs.ProductInfo.CurrentItemRoute2OP != null)
                    {
                        oqcRejectEventArgs.ProductInfo.NowSimulation.OPCode = oqcRejectEventArgs.ProductInfo.CurrentItemRoute2OP.OPCode;
                    }
                    else
                    {
                        object objNextOP = (new BaseModelFacade(DataProvider)).GetNextOperationOfRoute(oqcRejectEventArgs.ProductInfo.LastSimulation.RouteCode, oqcRejectEventArgs.ProductInfo.LastSimulation.OPCode);
                        if (objNextOP != null)
                        {
                            oqcRejectEventArgs.ProductInfo.NowSimulation.OPCode = (objNextOP as Operation).OPCode;
                        }
                    }

                    oqcRejectEventArgs.ProductInfo.NowSimulation.ProductStatus = ProductStatus.Reject;
                    if (actionCheckStatus.NeedUpdateSimulation == true)
                    {
                        //把资源暂时替换成onwip需要正确资源
                        string resCode = oqcRejectEventArgs.ResourceCode;
                        oqcRejectEventArgs.ResourceCode = actionEventArgs.rightResource;
                        newMessages.AddMessages(dataCollect.Execute(oqcRejectEventArgs));
                        //转换回原来的资源
                        oqcRejectEventArgs.ResourceCode = resCode;
                    }
                    #endregion
                    if (newMessages.IsSuccess())
                    {
                        if (oqcRejectEventArgs.ProductInfo.NowSimulation == null)
                        {
                            throw new Exception("$System_Error");
                        }


                        #region reject
                        Reject reject = reworkFacade.CreateNewReject();
                        reject.ItemCode              = oqcRejectEventArgs.ProductInfo.NowSimulation.ItemCode;
                        reject.LOTNO                 = oqcRejectEventArgs.OQCLotNO;
                        reject.MaintainUser          = oqcRejectEventArgs.UserCode;
                        reject.MOCode                = oqcRejectEventArgs.ProductInfo.NowSimulation.MOCode;
                        reject.ModelCode             = oqcRejectEventArgs.ProductInfo.NowSimulation.ModelCode;
                        reject.OPCode                = oqcRejectEventArgs.ProductInfo.NowSimulation.OPCode;
                        reject.RejectDate            = oqcRejectEventArgs.ProductInfo.NowSimulation.MaintainDate;
                        reject.RejectStatus          = RejectStatus.Reject;
                        reject.RejectTime            = oqcRejectEventArgs.ProductInfo.NowSimulation.MaintainTime;
                        reject.RejectUser            = oqcRejectEventArgs.UserCode;
                        reject.ResourceCode          = oqcRejectEventArgs.ResourceCode;
                        reject.RouteCode             = oqcRejectEventArgs.ProductInfo.NowSimulation.RouteCode;
                        reject.RunningCard           = oqcRejectEventArgs.RunningCard;
                        reject.RunningCardSequence   = oqcRejectEventArgs.ProductInfo.NowSimulation.RunningCardSequence;
                        reject.SegmentCode           = oqcRejectEventArgs.ProductInfo.NowSimulationReport.SegmentCode;
                        reject.SourceCard            = oqcRejectEventArgs.ProductInfo.NowSimulation.SourceCard;
                        reject.SourceCardSequence    = oqcRejectEventArgs.ProductInfo.NowSimulation.SourceCardSequence;
                        reject.StepSequenceCode      = oqcRejectEventArgs.ProductInfo.NowSimulationReport.StepSequenceCode;
                        reject.TranslateCard         = oqcRejectEventArgs.ProductInfo.NowSimulation.TranslateCard;
                        reject.TranslateCardSequence = oqcRejectEventArgs.ProductInfo.NowSimulation.TranslateCardSequence;
                        reject.MOSeq                 = oqcRejectEventArgs.ProductInfo.NowSimulation.MOSeq; // Added by Icyer 2007/07/02
                        reworkFacade.AddReject(reject);
                        #endregion
                    }

                    //Laws Lu,2005/08/25,新增
                    //样本如果有若干个已经经过“送修确认”转为“待修”状态(或者在维修中),那么批退不可以继续
                    //TSFacade tsFacade = new TSFacade(this._domainDataProvider);
                    //Laws Lu,2005/08/25,新增	删除TS中的记录
                    //Laws Lu,2005/08/31,修改	只有FQC工序送修才能够被删除
                    if (oqcRejectEventArgs.ActionType == ActionType.DataCollectAction_OQCReject &&
                        ts != null &&
                        ts.FromInputType == TS.TSFacade.TSSource_OnWIP &&
                        ts.TSStatus == BenQGuru.eMES.Web.Helper.TSStatus.TSStatus_New)
                    {
                        if (ts.FromRouteCode == oqcRejectEventArgs.ProductInfo.LastSimulation.RouteCode &&
                            ts.FromOPCode == oqcRejectEventArgs.ProductInfo.LastSimulation.OPCode &&
                            ts.MOCode == oqcRejectEventArgs.ProductInfo.LastSimulation.MOCode &&
                            ts.RunningCardSequence == oqcRejectEventArgs.ProductInfo.LastSimulation.RunningCardSequence &&
                            ts.RunningCard == oqcRejectEventArgs.ProductInfo.LastSimulation.RunningCard)
                        {
                            tsFacade.DeleteCardInTS(
                                oqcRejectEventArgs.ProductInfo.LastSimulation.MOCode
                                , oqcRejectEventArgs.ProductInfo.LastSimulation.RunningCard
                                , oqcRejectEventArgs.ProductInfo.LastSimulation.RunningCardSequence.ToString());
                        }
                    }
                }
                catch (Exception ex)
                {
                    newMessages.Add(new Message(ex));
                }

                //preProduct=oqcRejectEventArgs.ProductInfo;
                i = i + 1;
            }

            //Laws Lu,2006/03/20 填写资源报表
            //Laws Lu,2006/03/21 支持混单
            Hashtable htOutput = new Hashtable();

            foreach (Simulation sim in Simulations)
            {
                Simulation tmpSim = null;
                foreach (Simulation x in htOutput.Keys)
                {
                    if (sim.MOCode == x.MOCode)
                    {
                        tmpSim = x;
                        break;
                    }
                }
                if (tmpSim != null)
                {
                    htOutput[tmpSim] = Convert.ToInt32(htOutput[tmpSim]) + 1;
                }
                else
                {
                    htOutput.Add(sim, 1);
                }
            }


            foreach (Simulation sim in htOutput.Keys)
            {
                ProductInfo product = null;

                Messages msgs = dataCollect.GetIDInfo(sim.RunningCard);
                if (msgs.IsSuccess())
                {
                    product = msgs.GetData().Values[0] as ProductInfo;
                }
                DBDateTime dbDateTime;

                dbDateTime = FormatHelper.GetNowDBDateTime(DataProvider);

                //				dcf.AdjustRouteOPOnline(
                //					product.LastSimulation.RunningCard,
                //					actionEventArgs.ActionType,
                //					actionEventArgs.ResourceCode,
                //					actionEventArgs.UserCode,
                //					product);

                product.NowSimulation.MaintainUser  = actionEventArgs.UserCode;
                product.NowSimulation.MaintainDate  = dbDateTime.DBDate;
                product.NowSimulation.MaintainTime  = dbDateTime.DBTime;
                product.NowSimulation.LastAction    = actionEventArgs.ActionType;
                product.NowSimulation.ProductStatus = ProductStatus.GOOD;
                product.NowSimulation.ResourceCode  = Resource.ResourceCode;

                (new DataCollectFacade(DataProvider)).WriteSimulation(
                    product.LastSimulation.RunningCard
                    , ActionType.DataCollectAction_OQCPass
                    , actionEventArgs.ResourceCode
                    , actionEventArgs.UserCode
                    , product);


                product.NowSimulation.RouteCode = product.LastSimulation.RouteCode;
                product.NowSimulation.OPCode    = product.LastSimulation.OPCode;;

                product.NowSimulationReport = dataCollect.FillSimulationReport(product);
                //dataCollect.FillOnWip(pro);

                //newMessages.AddMessages((new ReportHelper(DataProvider)).SetReportResQuanMaster(
                //    DataProvider
                //    , actionEventArgs.ActionType
                //    , product
                //    , 0
                //    , Convert.ToInt32(htOutput[sim])
                //    , Convert.ToInt32(htOutput[sim])));
            }

            return(newMessages);
        }
Пример #9
0
        protected override bool ValidateInput()
        {
            ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);

            PageCheckManager manager = new PageCheckManager();

            manager.Add(new LengthCheck(this.lblResourceCodeEdit, this.txtResourceCodeEdit, 40, true));
            manager.Add(new LengthCheck(this.lblResourceDescriptionEdit, this.txtResourceDescriptionEdit, 100, false));
            manager.Add(new LengthCheck(this.lblOrgIDEdit, this.DropDownListOrg, 8, true));

            if (!manager.Check())
            {
                WebInfoPublish.Publish(this, manager.CheckMessage, this.languageComponent1);
                return(false);
            }

            if (this.txtReworkRoute.Text.Trim().Length != 0)
            {
                object route = (new BaseModelFacade(this.DataProvider)).GetRoute(this.txtReworkRoute.Text.Trim().ToUpper());
                if (route == null)
                {
                    WebInfoPublish.Publish(this, "$Error_RouteNotExist", this.languageComponent1);
                    return(false);
                }

                object route2OP = (new BaseModelFacade(this.DataProvider)).GetOperationByRouteCode(this.txtReworkRoute.Text.Trim().ToUpper());
                if (route2OP == null)
                {
                    WebInfoPublish.Publish(this, "$Error_RouteHasNoOperations", this.languageComponent1);
                    return(false);
                }
            }

            if (this.txtReworkMo.Text.Trim().Length > 0)
            {
                string[] reworkCodeList = this.txtReworkMo.Text.Trim().ToUpper().Split(',');
                if (reworkCodeList == null)
                {
                    reworkCodeList = new string[0];
                }

                //返工需求单必须都存在
                string errorMessage = string.Empty;
                foreach (string reworkCode in reworkCodeList)
                {
                    ReworkSheet reworkSheet = (ReworkSheet)reworkFacade.GetReworkSheet(reworkCode);
                    if (reworkSheet == null)
                    {
                        errorMessage += "$Error_ReworkSheet_NotExist" + " : " + reworkCode + "\n";
                    }
                }

                if (errorMessage.Trim().Length > 0)
                {
                    WebInfoPublish.Publish(this, errorMessage, this.languageComponent1);
                    return(false);
                }

                //保证相同产品的多张返工需求单,只能有一张没有判退批(及LotNo不能重复)
                List <string> itemCodeAndLotNoList = new List <string>();
                foreach (string reworkCode in reworkCodeList)
                {
                    ReworkSheet reworkSheet      = (ReworkSheet)reworkFacade.GetReworkSheet(reworkCode);
                    string      itemCodeAndLotNo = reworkSheet.ItemCode + "\t" + (reworkSheet.LotList == null ? string.Empty : reworkSheet.LotList);
                    if (itemCodeAndLotNoList.Contains(itemCodeAndLotNo))
                    {
                        WebInfoPublish.Publish(this, "$Error_Res2ReworkSheetPK", this.languageComponent1);
                        return(false);
                    }
                    else
                    {
                        itemCodeAndLotNoList.Add(itemCodeAndLotNo);
                    }
                }

                //保证所选择的ReworkSheet的Route一致,并且存在
                string routeCode = GetRouteCodeFromReworkCodeList(this.txtReworkMo.Text.Trim().ToUpper());
                if (routeCode.Trim().Length <= 0)
                {
                    //返工需求单的返工途程不存在或者不一致
                    WebInfoPublish.Publish(this, "$Error_ReworkSheetsNewRouteNotSame", this.languageComponent1);
                    return(false);
                }
                else
                {
                    object route = (new BaseModelFacade(this.DataProvider)).GetRoute(routeCode);
                    if (route == null)
                    {
                        WebInfoPublish.Publish(this, "$Error_RouteNotExist", this.languageComponent1);
                        return(false);
                    }

                    object route2OP = (new BaseModelFacade(this.DataProvider)).GetOperationByRouteCode(routeCode);
                    if (route2OP == null)
                    {
                        WebInfoPublish.Publish(this, "$Error_RouteHasNoOperations", this.languageComponent1);
                        return(false);
                    }
                }
            }

            return(true);
        }
Пример #10
0
 public Status(ReworkFacade reworkFacade, ReworkSheet reworkSheet)
 {
     this._reworkFacade = reworkFacade;
     this._reworkSheet  = reworkSheet;
 }
Пример #11
0
 public void SetUp()
 {
     persistBroker = new OLEDBPersistBroker("Provider=OraOLEDB.Oracle.1;Password=emes;Persist Security Info=True;User ID=emes;Data Source=sqcdemo");
     reworkFacade  = new ReworkFacade();
     itemFacade    = new ItemFacade();
 }
Пример #12
0
        private void txtInput_TxtboxKeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == '\r')
            {
                if (this.clickLotNo == string.Empty)
                {
                    return;
                }
                string inputValue = FormatHelper.CleanString(FormatHelper.PKCapitalFormat(this.txtInput.Value));

                if (inputValue == string.Empty)
                {
                    return;
                }

                string rcardList = "";

                if (rdoBoxNo.Checked)
                {
                    DataCollectFacade dcf  = new DataCollectFacade(this.DataProvider);
                    object[]          sims = dcf.GetSimulationFromCarton(FormatHelper.PKCapitalFormat(FormatHelper.CleanString(inputValue)));
                    if (sims == null || sims.Length == 0)
                    {
                        ApplicationRun.GetInfoForm().Add(new UserControl.Message(MessageType.Error, "$Error_CartonNotUsed"));
                        this.txtInput.TextFocus(false, true);
                        return;
                    }

                    foreach (Simulation sim in sims)
                    {
                        rcardList += sim.RunningCard + ",";
                    }
                    if (rcardList.Length > 0)
                    {
                        rcardList = rcardList.Substring(0, rcardList.Length - 1);
                    }
                }
                else
                {
                    //获取产品的最原始的序列号
                    DataCollectFacade dataCollectFacade = new DataCollectFacade(this.DataProvider);
                    string            sourceRCard       = dataCollectFacade.GetSourceCard(inputValue.Trim().ToUpper(), string.Empty);

                    rcardList = sourceRCard;
                }

                ((SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = false;
                ((SQLDomainDataProvider)DataProvider).PersistBroker.OpenConnection();
                DataProvider.BeginTransaction();
                try
                {
                    ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);
                    ReworkRcard  reworkRcard;
                    object       obj;
                    for (int i = 0; i < rcardList.Split(',').Length; i++)
                    {
                        obj = reworkFacade.GetReworkRcard(clickLotNo, rcardList.Split(',')[i]);
                        if (obj == null)
                        {
                            // Not exist
                            throw new Exception("$CS_SN_NOT_EXIST_LOT");
                        }

                        reworkRcard = obj as ReworkRcard;

                        if (string.Compare(reworkRcard.Status, ReworkFacade.ReworkLot_Status_DEAL, true) == 0)
                        {
                            // Duplicate
                            throw new Exception("$CS_RcardHasBeenConfirmed");
                        }

                        reworkRcard.Status = ReworkFacade.ReworkLot_Status_DEAL;
                        reworkFacade.UpdateReworkRcard(reworkRcard);
                    }

                    bool needReloadLot    = false;
                    int  needConfirmCount = reworkFacade.QueryReworkRcardNotConfirmCount(clickLotNo);
                    if (needConfirmCount == 0)
                    {
                        object      objReworkLotNo = reworkFacade.GetReworkLotNo(clickLotNo);
                        ReworkLotNo reworkLotNo    = objReworkLotNo as ReworkLotNo;
                        reworkLotNo.Status = ReworkFacade.ReworkLot_Status_DEAL;
                        reworkFacade.UpdateReworkLotNo(reworkLotNo);

                        needReloadLot = true;
                    }

                    DataProvider.CommitTransaction();

                    if (needReloadLot)
                    {
                        this.InitUIControl();
                        InitReworkLotNo();

                        this.SelectDefaultRow();
                    }
                    else
                    {
                        this.InitReworkRcard();
                        // Update Qty
                        foreach (DataRow row in this.dtReworkLot.Rows)
                        {
                            if (string.Compare(row["LotNo"].ToString(), clickLotNo, true) == 0)
                            {
                                row["ConfirmedOrNot"] = needConfirmCount.ToString() + "/" + row["ConfirmedOrNot"].ToString().Split('/')[1];
                                break;
                            }
                        }
                        this.dtReworkLot.AcceptChanges();
                        this.txtInput.TextFocus(false, true);
                    }
                }
                catch (Exception ex)
                {
                    DataProvider.RollbackTransaction();
                    ApplicationRun.GetInfoForm().Add(ex.Message);
                    this.txtInput.TextFocus(false, true);
                }
                finally
                {
                    ((SQLDomainDataProvider)DataProvider).PersistBroker.CloseConnection();
                    ((SQLDomainDataProvider)DataProvider).PersistBroker.AutoCloseConnection = true;
                }
            }
        }
Пример #13
0
        /// <summary>
        /// 不良品采集
        /// </summary>
        /// <param name="domainDataProvider"></param>
        /// <param name="iD"></param>
        /// <param name="actionType"></param>
        /// <param name="resourceCode"></param>
        /// <param name="userCode"></param>
        /// <param name="product"></param>
        /// <param name="datas1"></param>
        /// <param name="datas2"></param>
        /// <returns></returns>
        public Messages Execute(ActionEventArgs actionEventArgs)
        {
            Messages         messages         = new Messages();
            DataCollectDebug dataCollectDebug = new DataCollectDebug(this.GetType().ToString() + "Collect");

            dataCollectDebug.WhenFunctionIn(messages);
            try
            {
                if (((TSActionEventArgs)actionEventArgs).OPCode == string.Empty)
                {
                    throw new Exception("$CS_Sys_OutLine_LostOPParam");
                }

                string opCode = ((TSActionEventArgs)actionEventArgs).OPCode;



                messages.AddMessages(this.CheckIDIn(actionEventArgs));
                if (messages.IsSuccess())
                {
                    ActionOnLineHelper dataCollect = new ActionOnLineHelper(this.DataProvider);
                    //补充SIMULATION 不良信息
                    if (actionEventArgs.ActionType == ActionType.DataCollectAction_OutLineReject)
                    {
                        actionEventArgs.ProductInfo.NowSimulation.ProductStatus = ProductStatus.Reject;
                        actionEventArgs.ProductInfo.NowSimulation.NGTimes       = actionEventArgs.ProductInfo.NowSimulation.NGTimes + 1;

                        //2006/01/10,新增	OQCNG后将产品脱离批
                        actionEventArgs.ProductInfo.NowSimulation.LOTNO = String.Empty;
                    }

                    messages.AddMessages(dataCollect.Execute(actionEventArgs));
                    if (messages.IsSuccess())
                    {
                        //填写Reject报表 TODO
                        ReworkFacade rework = new ReworkFacade(this.DataProvider);
                        Reject       reject = rework.CreateNewReject();
                        reject.ItemCode              = actionEventArgs.ProductInfo.NowSimulationReport.ItemCode;
                        reject.MaintainDate          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainDate;
                        reject.MaintainTime          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainTime;
                        reject.MaintainUser          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainUser;
                        reject.MOCode                = actionEventArgs.ProductInfo.NowSimulationReport.MOCode;
                        reject.ModelCode             = actionEventArgs.ProductInfo.NowSimulationReport.ModelCode;
                        reject.OPCode                = actionEventArgs.ProductInfo.NowSimulationReport.OPCode;
                        reject.RejectDate            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainDate;
                        reject.RejectStatus          = RejectStatus.Reject;
                        reject.RejectTime            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainTime;
                        reject.RejectUser            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainUser;
                        reject.ResourceCode          = actionEventArgs.ProductInfo.NowSimulationReport.ResourceCode;
                        reject.RouteCode             = ((ExtendSimulation)actionEventArgs.ProductInfo.LastSimulation).NextRouteCode;
                        reject.RunningCard           = actionEventArgs.ProductInfo.NowSimulationReport.RunningCard;
                        reject.RunningCardSequence   = actionEventArgs.ProductInfo.NowSimulationReport.RunningCardSequence;
                        reject.SegmentCode           = actionEventArgs.ProductInfo.NowSimulationReport.SegmentCode;
                        reject.SourceCard            = actionEventArgs.ProductInfo.NowSimulationReport.SourceCard;
                        reject.SourceCardSequence    = actionEventArgs.ProductInfo.NowSimulationReport.SourceCardSequence;
                        reject.StepSequenceCode      = actionEventArgs.ProductInfo.NowSimulationReport.StepSequenceCode;
                        reject.TranslateCard         = actionEventArgs.ProductInfo.NowSimulationReport.TranslateCard;
                        reject.TranslateCardSequence = actionEventArgs.ProductInfo.NowSimulationReport.TranslateCardSequence;
                        //reject.LOTNO  ="~";
                        reject.OPId        = "~";
                        reject.EAttribute1 = ((TSActionEventArgs)actionEventArgs).Memo;
                        reject.MOSeq       = actionEventArgs.ProductInfo.NowSimulation.MOSeq; // Added by Icyer 2007/07/02
                        rework.AddReject(reject);


                        //reject errorcode TODO
                        //填写测试报表 TODO
                        object[] obj = ((TSActionEventArgs)actionEventArgs).ErrorCodes;
                        if (obj != null)
                        {
                            Reject2ErrorCode reject2ErrorCode = rework.CreateNewReject2ErrorCode();
                            for (int i = 0; i < obj.Length; i++)
                            {
                                reject2ErrorCode.ErrorCode           = ((ErrorCodeGroup2ErrorCode)obj[i]).ErrorCode;
                                reject2ErrorCode.ErrorCodeGroup      = ((ErrorCodeGroup2ErrorCode)obj[i]).ErrorCodeGroup;
                                reject2ErrorCode.MaintainDate        = reject.MaintainDate;
                                reject2ErrorCode.MaintainTime        = reject.MaintainTime;
                                reject2ErrorCode.MaintainUser        = reject.MaintainUser;
                                reject2ErrorCode.MOCode              = reject.MOCode;
                                reject2ErrorCode.RunningCard         = reject.RunningCard;
                                reject2ErrorCode.RunningCardSequence = reject.RunningCardSequence;
                                reject2ErrorCode.LotNo = reject.LOTNO;
                                //reject2ErrorCode.LotSeq = reject.l
                                reject2ErrorCode.MOSeq = reject.MOSeq;  // Added by Icyer 2007/07/03
                                rework.AddReject2ErrorCode(reject2ErrorCode);
                            }
                        }


                        //ReportHelper reportCollect= new ReportHelper(this.DataProvider);
                        //messages.AddMessages(reportCollect.ReportLineQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                        ////messages.AddMessages(reportCollect.ReportResQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                        //messages.AddMessages(reportCollect.ReportLineECOQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo,((TSActionEventArgs)actionEventArgs).ErrorCodes));

                        //				}
                        //					if (messages.IsSuccess())
                        //					{
                        //						actionEventArgs.ProductInfo.ECG2ErrCodes =  ActionTS.ParseECG2Errs(((OutLineActionEventArgs)actionEventArgs).ErrorCodes,actionEventArgs.ActionType);
                        //						//							//填写测试报表 TODO
                        //						ReportHelper reportCollect= new ReportHelper(this.DataProvider);
                        //						messages.AddMessages(reportCollect.ReportLineQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                        //						messages.AddMessages(reportCollect.ReportResQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                        //
                        //						if (actionEventArgs.ActionType == ActionType.DataCollectAction_OutLineReject)
                        //						{
                        //							messages.AddMessages( dataCollect.CollectErrorInformation(this.DataProvider, actionEventArgs.ActionType,
                        //								actionEventArgs.ProductInfo,
                        //								((OutLineActionEventArgs)actionEventArgs).ErrorCodes, null,
                        //								((OutLineActionEventArgs)actionEventArgs).Memo));
                        //							messages.AddMessages(reportCollect.ReportLineECOQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo,((OutLineActionEventArgs)actionEventArgs).ErrorCodes));
                        //						}
                        //
                        //					}
                        //
                    }
                }
            }
            catch (Exception e)
            {
                messages.Add(new Message(e));
            }
            dataCollectDebug.WhenFunctionOut(messages);
            return(messages);
        }
Пример #14
0
 public WaitingStatus(ReworkFacade reworkFacade, ReworkSheet reworkSheet) : base(reworkFacade, reworkSheet)
 {
     this._status = BenQGuru.eMES.Web.Helper.ReworkStatus.REWORKSTATUS_WAITING;
 }
Пример #15
0
 public NewStatus(ReworkFacade reworkFacade, ReworkSheet reworkSheet) : base(reworkFacade, reworkSheet)
 {
     this._status = BenQGuru.eMES.Web.Helper.ReworkStatus.REWORKSTATUS_NEW;
 }
Пример #16
0
        /// <summary>
        /// 不良品采集
        /// </summary>
        /// <param name="domainDataProvider"></param>
        /// <param name="iD"></param>
        /// <param name="actionType"></param>
        /// <param name="resourceCode"></param>
        /// <param name="userCode"></param>
        /// <param name="product"></param>
        /// <param name="datas1"></param>
        /// <param name="datas2"></param>
        /// <returns></returns>
        public Messages Execute(ActionEventArgs actionEventArgs)
        {
            Messages         messages         = new Messages();
            DataCollectDebug dataCollectDebug = new DataCollectDebug(this.GetType().ToString() + "Collect");

            dataCollectDebug.WhenFunctionIn(messages);
            try
            {
                //检查ErrorCode,ErrorGroup是否正确 TODO
                //如果CS能确保ErrorCode,ErrorGroup是正确的,此处逻辑可以去掉


                ActionOnLineHelper dataCollect = new ActionOnLineHelper(this.DataProvider);
                //填写SIMULATION 检查工单、ID、途程、操作
                messages.AddMessages(this.CheckIDIn(actionEventArgs));
                if (messages.IsSuccess())
                {
                    messages.AddMessages(dataCollect.Execute(actionEventArgs));
                    if (messages.IsSuccess())
                    {
                        //填写Reject报表 TODO
                        ReworkFacade rework = new ReworkFacade(this.DataProvider);
                        Reject       reject = rework.CreateNewReject();
                        reject.ItemCode              = actionEventArgs.ProductInfo.NowSimulationReport.ItemCode;
                        reject.MaintainDate          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainDate;
                        reject.MaintainTime          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainTime;
                        reject.MaintainUser          = actionEventArgs.ProductInfo.NowSimulationReport.MaintainUser;
                        reject.MOCode                = actionEventArgs.ProductInfo.NowSimulationReport.MOCode;
                        reject.ModelCode             = actionEventArgs.ProductInfo.NowSimulationReport.ModelCode;
                        reject.OPCode                = actionEventArgs.ProductInfo.NowSimulationReport.OPCode;
                        reject.RejectDate            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainDate;
                        reject.RejectStatus          = RejectStatus.Reject;
                        reject.RejectTime            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainTime;
                        reject.RejectUser            = actionEventArgs.ProductInfo.NowSimulationReport.MaintainUser;
                        reject.ResourceCode          = actionEventArgs.ProductInfo.NowSimulationReport.ResourceCode;
                        reject.RouteCode             = actionEventArgs.ProductInfo.NowSimulationReport.RouteCode;
                        reject.RunningCard           = actionEventArgs.ProductInfo.NowSimulationReport.RunningCard;
                        reject.RunningCardSequence   = actionEventArgs.ProductInfo.NowSimulationReport.RunningCardSequence;
                        reject.SegmentCode           = actionEventArgs.ProductInfo.NowSimulationReport.SegmentCode;
                        reject.SourceCard            = actionEventArgs.ProductInfo.NowSimulationReport.SourceCard;
                        reject.SourceCardSequence    = actionEventArgs.ProductInfo.NowSimulationReport.SourceCardSequence;
                        reject.StepSequenceCode      = actionEventArgs.ProductInfo.NowSimulationReport.StepSequenceCode;
                        reject.TranslateCard         = actionEventArgs.ProductInfo.NowSimulationReport.TranslateCard;
                        reject.TranslateCardSequence = actionEventArgs.ProductInfo.NowSimulationReport.TranslateCardSequence;
                        //reject.LOTNO  ="~";
                        reject.OPId        = "~";
                        reject.EAttribute1 = ((TSActionEventArgs)actionEventArgs).Memo;
                        reject.MOSeq       = actionEventArgs.ProductInfo.NowSimulationReport.MOSeq; // Added by Icyer 2007/07/02
                        rework.AddReject(reject);


                        //reject errorcode TODO
                        //填写测试报表 TODO
                        object[] obj = ((TSActionEventArgs)actionEventArgs).ErrorCodes;
                        if (obj != null)
                        {
                            Reject2ErrorCode reject2ErrorCode = rework.CreateNewReject2ErrorCode();
                            for (int i = 0; i < obj.Length; i++)
                            {
                                reject2ErrorCode.ErrorCode           = ((ErrorCodeGroup2ErrorCode)obj[i]).ErrorCode;
                                reject2ErrorCode.ErrorCodeGroup      = ((ErrorCodeGroup2ErrorCode)obj[i]).ErrorCodeGroup;
                                reject2ErrorCode.MaintainDate        = reject.MaintainDate;
                                reject2ErrorCode.MaintainTime        = reject.MaintainTime;
                                reject2ErrorCode.MaintainUser        = reject.MaintainUser;
                                reject2ErrorCode.MOCode              = reject.MOCode;
                                reject2ErrorCode.RunningCard         = reject.RunningCard;
                                reject2ErrorCode.RunningCardSequence = reject.RunningCardSequence;
                                reject2ErrorCode.MOSeq = reject.MOSeq;  // Added by Icyer 2007/07/03
                                rework.AddReject2ErrorCode(reject2ErrorCode);
                            }
                        }
                    }

                    //ReportHelper reportCollect= new ReportHelper(this.DataProvider);
                    //messages.AddMessages(reportCollect.ReportLineQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                    ////messages.AddMessages(reportCollect.ReportResQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo));
                    //messages.AddMessages(reportCollect.ReportLineECOQuanMaster(this.DataProvider,actionEventArgs.ActionType,actionEventArgs.ProductInfo,((TSActionEventArgs)actionEventArgs).ErrorCodes));
                }
            }
            catch (Exception e)
            {
                messages.Add(new Message(e));
            }
            dataCollectDebug.WhenFunctionOut(messages);
            return(messages);
        }
Пример #17
0
        public Messages GenerateLot(ActionEventArgs actionEventArgs)
        {
            Messages         messages         = new Messages();
            DataCollectDebug dataCollectDebug = new DataCollectDebug(this.GetType().ToString() + "Collect");

            dataCollectDebug.WhenFunctionIn(messages);

            try
            {
                string itemCode = actionEventArgs.ProductInfo.NowSimulation.ItemCode;
                string rCard    = actionEventArgs.ProductInfo.NowSimulation.RunningCard;
                string moCode   = actionEventArgs.ProductInfo.NowSimulation.MOCode;

                ItemFacade      itemFacade      = new ItemFacade(this.DataProvider);
                BaseModelFacade baseModelFacade = new BaseModelFacade(this.DataProvider);
                OQCFacade       oqcFacade       = new OQCFacade(this.DataProvider);

                object item = itemFacade.GetItem(itemCode, GlobalVariables.CurrentOrganizations.First().OrganizationID);
                if (item == null)
                {
                    messages.Add(new Message(MessageType.Error, "$Error_ItemCode_NotExist $Domain_ItemCode=" + itemCode));
                    return(messages);
                }
                //if (((Item)item).CheckItemOP == null || ((Item)item).CheckItemOP.Trim().Length == 0)
                //{
                //    messages.Add(new Message(MessageType.Error, "$Error_NoItemGenerateLotOPCode $Domain_ItemCode=" + itemCode));
                //    return messages;
                //}

                DBDateTime currentDBDateTime = FormatHelper.GetNowDBDateTime(this.DataProvider);
                OQCLot     lot;

                // Resource auto generate lotno for ReworkSheet
                Resource res = actionEventArgs.ProductInfo.Resource;
                if (res == null)
                {
                    res = (Resource)baseModelFacade.GetResource(actionEventArgs.ResourceCode);
                    actionEventArgs.ProductInfo.Resource = res;
                }

                ReworkFacade reworkFacade = new ReworkFacade(this.DataProvider);
                ReworkRange  reworkRange  = null;
                OQCLot       currentLot   = (OQCLot)oqcFacade.GetLatestOQCLot(actionEventArgs.RunningCard);
                if (currentLot != null && currentLot.LOTStatus == OQCLotStatus.OQCLotStatus_Reject)
                {
                    reworkRange = (ReworkRange)reworkFacade.GetLatestReworkRange(actionEventArgs.RunningCard);
                }

                //产生新批的情况有两种
                //情况一:返工Res(Res.ReworkRouteCode不为空),RCard有当前的返工需求单,且此返工需求单要求自动产生新批(ReworkSheet.AutoLot等于Y)
                //情况二:其他情况,当前工序为Item的产生批工序(当前工序等于Item.CheckItemOP)
                //
                if (res != null && res.ReworkRouteCode != null && res.ReworkRouteCode.Trim().Length > 0 &&
                    reworkRange != null && reworkRange.ReworkCode != null && reworkRange.ReworkCode.Trim().Length > 0)
                {
                    object      reworkSheet = reworkFacade.GetReworkSheet(reworkRange.ReworkCode);
                    ReworkSheet rs          = reworkSheet as ReworkSheet;

                    if (rs.AutoLot != null && string.Compare(rs.AutoLot, "Y", true) == 0 &&
                        rs.LotList != null && rs.LotList.Trim().Length > 0)
                    {
                        //Get rework lot by oldlotno (reworkcode=oldlotno=lotlist)
                        object rLot = oqcFacade.GetOQCLotByOldLotNo(rs.LotList);
                        if (rLot == null)
                        {
                            lot = this.CreateNewLot(actionEventArgs, (Item)item, currentDBDateTime, true, rs.LotList);
                        }
                        else
                        {
                            lot = rLot as OQCLot;
                        }
                    }
                    else
                    {
                        return(messages);
                    }
                }
                else
                {
                    if (string.Compare(((Item)item).CheckItemOP, actionEventArgs.ProductInfo.NowSimulation.OPCode, true) != 0)
                    {
                        return(messages);
                    }

                    // GetLot2Card By RCard+LotStatus
                    if (oqcFacade.IsCardUsedByAnyLot(rCard, moCode, itemCode))
                    {
                        return(messages);
                    }
                    else
                    {
                        lot = this.CreateNewLot(actionEventArgs, (Item)item, currentDBDateTime, false, "");
                    }
                }

                object oldLot2Card = oqcFacade.GetOQCLot2Card(actionEventArgs.ProductInfo.NowSimulation.RunningCard,
                                                              actionEventArgs.ProductInfo.NowSimulation.MOCode, lot.LOTNO, lot.LotSequence);
                if (oldLot2Card != null)
                {
                    //messages.Add(new Message(MessageType.Error, "$Error_IDHasExistedInOtherOQCLotNO $CS_LotNo=" + lot.LOTNO));
                    return(messages);
                }

                actionEventArgs.ProductInfo.NowSimulation.LOTNO       = lot.LOTNO;
                actionEventArgs.ProductInfo.NowSimulationReport.LOTNO = lot.LOTNO;
                DataCollectFacade dataCollect = new DataCollectFacade(this.DataProvider);
                dataCollect.UpdateSimulation(actionEventArgs.ProductInfo.NowSimulation);
                dataCollect.UpdateSimulationReport(actionEventArgs.ProductInfo.NowSimulationReport);

                OQCLot2Card oqcLot2Card = oqcFacade.CreateNewOQCLot2Card();
                oqcLot2Card.ItemCode            = actionEventArgs.ProductInfo.NowSimulation.ItemCode;
                oqcLot2Card.CollectType         = "pcs";
                oqcLot2Card.LOTNO               = lot.LOTNO;
                oqcLot2Card.LotSequence         = OQCFacade.Lot_Sequence_Default;
                oqcLot2Card.MaintainUser        = actionEventArgs.UserCode;
                oqcLot2Card.MaintainDate        = currentDBDateTime.DBDate;
                oqcLot2Card.MaintainTime        = currentDBDateTime.DBTime;
                oqcLot2Card.MOCode              = actionEventArgs.ProductInfo.NowSimulation.MOCode;
                oqcLot2Card.ModelCode           = actionEventArgs.ProductInfo.NowSimulation.ModelCode;
                oqcLot2Card.OPCode              = actionEventArgs.ProductInfo.NowSimulation.OPCode;
                oqcLot2Card.ResourceCode        = actionEventArgs.ProductInfo.NowSimulation.ResourceCode;
                oqcLot2Card.RouteCode           = actionEventArgs.ProductInfo.NowSimulation.RouteCode;
                oqcLot2Card.RunningCard         = actionEventArgs.ProductInfo.NowSimulation.RunningCard;
                oqcLot2Card.RunningCardSequence = actionEventArgs.ProductInfo.NowSimulation.RunningCardSequence;
                oqcLot2Card.SegmnetCode         = actionEventArgs.ProductInfo.NowSimulationReport.SegmentCode;
                oqcLot2Card.ShiftCode           = actionEventArgs.ProductInfo.NowSimulationReport.ShiftCode;
                oqcLot2Card.ShiftTypeCode       = actionEventArgs.ProductInfo.NowSimulationReport.ShiftTypeCode;
                oqcLot2Card.Status              = actionEventArgs.ProductInfo.NowSimulationReport.Status;
                oqcLot2Card.StepSequenceCode    = actionEventArgs.ProductInfo.NowSimulationReport.StepSequenceCode;
                oqcLot2Card.TimePeriodCode      = actionEventArgs.ProductInfo.NowSimulationReport.TimePeriodCode;
                //oqcLot2Card.EAttribute1 = actionEventArgs.ProductInfo.NowSimulation.CartonCode;
                oqcLot2Card.EAttribute1 = ""; //现在这里只能是空,后面Carton包装时候会更新为CartonCode
                oqcLot2Card.MOSeq       = actionEventArgs.ProductInfo.NowSimulation.MOSeq;

                oqcFacade.AddOQCLot2Card(oqcLot2Card);

                // Added By Hi1/Venus.Feng on 20081027 for Hisense Version : Add Frozen by lot logic
                if (lot.FrozenStatus == FrozenStatus.STATUS_FRONZEN)
                {
                    Frozen frozen = new Frozen();
                    frozen.RCard        = actionEventArgs.ProductInfo.NowSimulation.RunningCard;
                    frozen.EAttribute1  = "";
                    frozen.FrozenBy     = lot.FrozenBy;
                    frozen.FrozenDate   = lot.FrozenDate;
                    frozen.FrozenReason = lot.FrozenReason;

                    int      seq            = 0;
                    object[] oldFrozenRCard = oqcFacade.QueryFrozen(frozen.RCard, frozen.RCard,
                                                                    string.Empty, string.Empty, string.Empty, string.Empty,
                                                                    -1, -1, -1, -1, int.MinValue, int.MaxValue);

                    if (oldFrozenRCard != null)
                    {
                        foreach (Frozen f in oldFrozenRCard)
                        {
                            seq = Math.Max(seq, f.FrozenSequence);
                        }
                    }

                    frozen.FrozenSequence = seq + 1;
                    frozen.FrozenStatus   = FrozenStatus.STATUS_FRONZEN;
                    frozen.FrozenTime     = lot.FrozenTime;
                    frozen.ItemCode       = actionEventArgs.ProductInfo.NowSimulation.ItemCode;
                    frozen.LotNo          = lot.LOTNO;
                    frozen.LotSequence    = Convert.ToInt32(lot.LotSequence);
                    frozen.MaintainDate   = currentDBDateTime.DBDate;
                    frozen.MaintainTime   = currentDBDateTime.DBTime;
                    frozen.MaintainUser   = actionEventArgs.UserCode;
                    frozen.MOCode         = actionEventArgs.ProductInfo.NowSimulation.MOCode;
                    frozen.ModelCode      = actionEventArgs.ProductInfo.NowSimulation.ModelCode;
                    frozen.UnfrozenBy     = "";
                    frozen.UnfrozenDate   = 0;
                    frozen.UnfrozenReason = "";
                    frozen.UnfrozenTime   = 0;

                    oqcFacade.AddFrozen(frozen);
                }
                // End Added

                //Update tbloqclot.lotsize++
                lot.LotSize = 1;
                oqcFacade.UpdateOQCLotSize(lot);
            }
            catch (Exception ex)
            {
                messages.Add(new Message(ex));
            }
            dataCollectDebug.WhenFunctionOut(messages);
            return(messages);
        }
Пример #18
0
 public ReleaseStatus(ReworkFacade reworkFacade, ReworkSheet reworkSheet) : base(reworkFacade, reworkSheet)
 {
     this._status = BenQGuru.eMES.Web.Helper.ReworkStatus.REWORKSTATUS_RELEASE;
 }