Example #1
0
        private Messages CollectKeyPartTS(ProductInfo Product)
        {
            Messages msg = new Messages();

            // 根据联美兰达的需求,不良品如果到TS,则自动将KeyPart采到TS
            BenQGuru.eMES.TS.TSFacade  tsFacade = new BenQGuru.eMES.TS.TSFacade(this.DataProvider);
            BenQGuru.eMES.Domain.TS.TS ts       = (BenQGuru.eMES.Domain.TS.TS)tsFacade.GetCardLastTSRecord(Product.LastSimulation.RunningCard);
            if (ts != null && (ts.TSStatus == TSStatus.TSStatus_New || ts.TSStatus == TSStatus.TSStatus_Confirm || ts.TSStatus == TSStatus.TSStatus_TS))
            {
            }
            else
            {
                return(msg);
            }
            if (this.LastRCardOnWIPItem == null || this.LastRCardOnWIPItem.Length == 0)
            {
                return(msg);
            }

            Domain.TS.TSErrorCode2Location[] errorInfo = null;
            MaterialFacade mfacade = new MaterialFacade(this.DataProvider);


            ActionDropMaterial actionDrop = new ActionDropMaterial(this.DataProvider);

            for (int i = 0; i < this.LastRCardOnWIPItem.Length; i++)
            {
                msg.AddMessages(actionDrop.CollectKeyPartNG(this.LastRCardOnWIPItem[i].MCARD, errorInfo, _usercode, _rescode));
                if (msg.IsSuccess() == true)
                {
                    msg.Add(new UserControl.Message(MessageType.Success, "$KeyPart_NG_Collect_Success"));
                }
                msg.Add(new UserControl.Message(MessageType.Normal, "$PageControl_Keyparts: " + this.LastRCardOnWIPItem[i].MCARD));
            }
            return(msg);
        }
Example #2
0
        /// <summary>
        /// 采集KeyPart不良
        /// </summary>
        public Messages CollectKeyPartNG(string keyPartNo, TSErrorCode2Location[] errorInfo, string userCode, string resourceCode)
        {
            Messages msg = new Messages();

            string strSql = "SELECT * FROM tblOnWIPItem WHERE MCard='" + keyPartNo + "' ORDER BY MDate DESC,MTime DESC ";

            object[] objs = this._domainDataProvider.CustomQuery(typeof(BenQGuru.eMES.Domain.DataCollect.OnWIPItem), new SQLCondition(strSql));
            if (objs == null || objs.Length == 0)
            {
                msg.Add(new Message(MessageType.Error, "$KeyPart_NG_ErrorKeyPart"));
                return(msg);
            }
            BenQGuru.eMES.Domain.DataCollect.OnWIPItem item = (BenQGuru.eMES.Domain.DataCollect.OnWIPItem)objs[0];

            TS.TSFacade tsFacade = new BenQGuru.eMES.TS.TSFacade(this.DataProvider);
            BenQGuru.eMES.Domain.TS.TS itemTs = new BenQGuru.eMES.Domain.TS.TS();

            object objTs = tsFacade.GetCardLastTSRecord(keyPartNo);

            if (objTs != null)
            {
                Domain.TS.TS ts = (Domain.TS.TS)objTs;
                if (ts.TSStatus == TSStatus.TSStatus_New ||
                    ts.TSStatus == TSStatus.TSStatus_Confirm ||
                    ts.TSStatus == TSStatus.TSStatus_TS)
                {
                    msg.Add(new Message(MessageType.Error, "$KeyPart_NG_In_TS"));
                    return(msg);
                }
            }

            #region ItemTS
            DBDateTime dbDateTime = FormatHelper.GetNowDBDateTime(DataProvider);
            itemTs.MOCode              = item.MOCode;
            itemTs.RunningCard         = keyPartNo;
            itemTs.RunningCardSequence = tsFacade.GetUniqueTSRunningCardSequence(keyPartNo);
            itemTs.TSId                  = FormatHelper.GetUniqueID(item.MOCode, itemTs.RunningCard, itemTs.RunningCardSequence.ToString());
            itemTs.TranslateCard         = item.RunningCard;
            itemTs.TranslateCardSequence = item.RunningCardSequence;
            itemTs.CardType              = CardType.CardType_Part;
            itemTs.TSStatus              = TSStatus.TSStatus_New;
            itemTs.MaintainUser          = userCode;
            itemTs.MaintainDate          = dbDateTime.DBDate;
            itemTs.MaintainTime          = dbDateTime.DBTime;
            itemTs.TSDate                = itemTs.ConfirmDate;
            itemTs.TSTime                = itemTs.ConfirmTime;
            itemTs.FromInputType         = BenQGuru.eMES.TS.TSFacade.TSSource_TS;
            itemTs.FromUser              = userCode;
            itemTs.FromDate              = itemTs.MaintainDate;
            itemTs.FormTime              = itemTs.MaintainTime;
            itemTs.FromOPCode            = "TS";
            itemTs.FromResourceCode      = resourceCode;
            itemTs.FromRouteCode         = item.RouteCode;
            itemTs.FromSegmentCode       = item.SegmentCode;
            itemTs.FromShiftCode         = item.ShiftCode;
            itemTs.FromShiftDay          = item.MaintainDate;
            itemTs.FromShiftTypeCode     = item.ShiftTypeCode;
            itemTs.FromStepSequenceCode  = item.StepSequenceCode;
            itemTs.FromTimePeriodCode    = item.TimePeriodCode;
            itemTs.ItemCode              = item.MItemCode;
            itemTs.ModelCode             = item.ModelCode;
            itemTs.TransactionStatus     = TransactionStatus.TransactionStatus_NO;
            itemTs.TSDate                = 0;
            itemTs.TSTime                = 0;
            itemTs.MOSeq                 = item.MOSeq;
            itemTs.TSTimes               = 1;
            tsFacade.AddTS(itemTs);
            #endregion

            #region Error Info
            for (int i = 0; errorInfo != null && i < errorInfo.Length; i++)
            {
                TSErrorCode          tsErrorCode          = new TSErrorCode();
                TSErrorCode2Location tsErrorCode2Location = new TSErrorCode2Location();
                int j = tsFacade.QueryTSErrorCodeCount(((TSErrorCode2Location)errorInfo[i]).ErrorCodeGroup,
                                                       ((TSErrorCode2Location)errorInfo[i]).ErrorCode, itemTs.TSId);
                if (j == 0)
                {
                    tsErrorCode.ErrorCode           = ((TSErrorCode2Location)errorInfo[i]).ErrorCode;
                    tsErrorCode.ErrorCodeGroup      = ((TSErrorCode2Location)errorInfo[i]).ErrorCodeGroup;
                    tsErrorCode.ItemCode            = itemTs.ItemCode;
                    tsErrorCode.MaintainDate        = itemTs.MaintainDate;
                    tsErrorCode.MaintainTime        = itemTs.MaintainTime;
                    tsErrorCode.MaintainUser        = itemTs.MaintainUser;
                    tsErrorCode.MOCode              = itemTs.MOCode;
                    tsErrorCode.ModelCode           = itemTs.ModelCode;
                    tsErrorCode.RunningCard         = itemTs.RunningCard;
                    tsErrorCode.RunningCardSequence = itemTs.RunningCardSequence;
                    tsErrorCode.TSId  = itemTs.TSId;
                    tsErrorCode.MOSeq = itemTs.MOSeq;
                    tsFacade.AddTSErrorCode(tsErrorCode);
                }
                if (((TSErrorCode2Location)errorInfo[i]).ErrorLocation.Trim() != string.Empty)
                {
                    tsErrorCode2Location.AB                  = ((TSErrorCode2Location)errorInfo[i]).AB;
                    tsErrorCode2Location.ErrorLocation       = ((TSErrorCode2Location)errorInfo[i]).ErrorLocation;
                    tsErrorCode2Location.ErrorCode           = ((TSErrorCode2Location)errorInfo[i]).ErrorCode;
                    tsErrorCode2Location.ErrorCodeGroup      = ((TSErrorCode2Location)errorInfo[i]).ErrorCodeGroup;
                    tsErrorCode2Location.ItemCode            = tsErrorCode.ItemCode;
                    tsErrorCode2Location.MaintainDate        = tsErrorCode.MaintainDate;
                    tsErrorCode2Location.MaintainTime        = tsErrorCode.MaintainTime;
                    tsErrorCode2Location.MaintainUser        = tsErrorCode.MaintainUser;
                    tsErrorCode2Location.MEMO                = "";
                    tsErrorCode2Location.MOCode              = tsErrorCode.MOCode;
                    tsErrorCode2Location.ModelCode           = tsErrorCode.ModelCode;
                    tsErrorCode2Location.RunningCard         = tsErrorCode.RunningCard;
                    tsErrorCode2Location.RunningCardSequence = tsErrorCode.RunningCardSequence;
                    if (tsErrorCode2Location.ErrorLocation.IndexOf(".") < 0)
                    {
                        tsErrorCode2Location.SubErrorLocation = tsErrorCode2Location.ErrorLocation;
                    }
                    else
                    {
                        tsErrorCode2Location.SubErrorLocation = tsErrorCode2Location.ErrorLocation.Substring(
                            0, tsErrorCode2Location.ErrorLocation.IndexOf("."));
                    }
                    tsErrorCode2Location.TSId = tsErrorCode.TSId;

                    tsErrorCode2Location.ShiftDay = tsErrorCode2Location.MaintainDate;
                    tsErrorCode2Location.MOSeq    = tsErrorCode.MOSeq;
                    tsFacade.AddTSErrorCode2Location(tsErrorCode2Location);
                }
            }
            #endregion

            return(msg);
        }
Example #3
0
        public Messages Execute(ActionEventArgs actionEventArgs)
        {
            Messages         messages         = new Messages();
            DataCollectDebug dataCollectDebug = new DataCollectDebug(this.GetType().ToString() + "Collect");

            dataCollectDebug.WhenFunctionIn(messages);
            try
            {
                ActionOnLineHelper dataCollect = new ActionOnLineHelper(this.DataProvider);
                //填写SIMULATION 检查工单、ID、途程、操作
                messages.AddMessages(dataCollect.CheckID(actionEventArgs));

                //检查是否完工
                if (actionEventArgs.ProductInfo.LastSimulation.IsComplete == "1")
                {
                    messages.Add(new UserControl.Message(MessageType.Error, "$CS_PRODUCT_ALREADY_COMPLETE $CS_Param_OPCode  =" + actionEventArgs.ProductInfo.LastSimulation.OPCode));
                }
                if (messages.IsSuccess())
                {
                    //Laws Lu,2005/08/15,新增	完工逻辑,在其他Check都通过的情况下,所有的RunningCard应该是GOOD状态
                    //暂时不考虑线外工序
                    actionEventArgs.ProductInfo.NowSimulation.IsComplete    = "1";
                    actionEventArgs.ProductInfo.NowSimulation.EAttribute1   = ProductStatus.OffMo;
                    actionEventArgs.ProductInfo.NowSimulation.ProductStatus = ProductStatus.OffMo;


                    //End Laws Lu
                    messages.AddMessages(dataCollect.Execute(actionEventArgs));
                    if (messages.IsSuccess())
                    {
                        //更新维修记录
                        if (actionEventArgs.ProductInfo.LastTS != null)
                        {
                            //2006/02/08	修改	修改维修记录状态
                            Domain.TS.TS ts = actionEventArgs.ProductInfo.LastTS;

                            TS.TSFacade tsFAC = new BenQGuru.eMES.TS.TSFacade(DataProvider);

//							if(ts.TSStatus == TSStatus.TSStatus_New)
//							{
//								tsFAC.DeleteTS(ts);
//							}
//							else
//							{
                            tsFAC.UpdateTSStatus(ts.TSId, TSStatus.TSStatus_OffMo, actionEventArgs.UserCode);
//							}

//							ts.TSId = FormatHelper.GetUniqueID(actionEventArgs.ProductInfo.NowSimulation.MOCode
//								,ts.RunningCard,ts.RunningCardSequence.ToString());
//
//							ts.MaintainUser = actionEventArgs.UserCode;
//							ts.MaintainDate = FormatHelper.TODateInt(DateTime.Now);
//							ts.MaintainTime = FormatHelper.TOTimeInt(DateTime.Now);
//
//							ts.TSStatus = TSStatus.TSStatus_OffMo;
//
//
//							tsFAC.AddTS(ts);
                        }

                        ///下料扣库存
                        ///
                        //Laws Lu,2005/10/20,新增	使用配置文件来控制物料模块是否使用
                        if (System.Configuration.ConfigurationSettings.AppSettings["NeedMaterialModule"].Trim() == "1")
                        {
                            BenQGuru.eMES.Material.CastDownHelper castHelper = new BenQGuru.eMES.Material.CastDownHelper(DataProvider);
                            ArrayList arRcard = new ArrayList();

                            castHelper.GetAllRCardByMo(ref arRcard, actionEventArgs.ProductInfo.NowSimulation.RunningCard, actionEventArgs.ProductInfo.NowSimulation.MOCode);

                            if (arRcard.Count == 0)
                            {
                                arRcard.Add(actionEventArgs.RunningCard);
                            }

                            string runningCards = "('" + String.Join("','", (string[])arRcard.ToArray(typeof(string))) + "')";
                            //下料并归还库房
                            BenQGuru.eMES.Material.WarehouseFacade wfacade = new BenQGuru.eMES.Material.WarehouseFacade(this.DataProvider);
                            wfacade.DropMaterialStock(runningCards
                                                      , actionEventArgs.ProductInfo.NowSimulation.MOCode, actionEventArgs.ProductInfo.NowSimulation.OPCode);
                        }

                        //填写测试报表 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));

                        //填写脱离工单表
                        MOFacade moFAC = new MOFacade(DataProvider);

                        OffMoCard offCard = new OffMoCard();
                        offCard.PK     = System.Guid.NewGuid().ToString();
                        offCard.MoCode = actionEventArgs.ProductInfo.NowSimulation.MOCode;
                        offCard.RCARD  = actionEventArgs.RunningCard;
                        offCard.MoType = (actionEventArgs as OffMoEventArgs).MOType;
                        offCard.MUSER  = actionEventArgs.UserCode;
                        offCard.MDATE  = actionEventArgs.ProductInfo.NowSimulation.MaintainDate;
                        offCard.MTIME  = actionEventArgs.ProductInfo.NowSimulation.MaintainTime;


                        moFAC.AddOffMoCard(offCard);
                    }
                }
            }
            catch (Exception e)
            {
                messages.Add(new Message(e));
            }
            dataCollectDebug.WhenFunctionOut(messages);
            return(messages);
        }
Example #4
0
        /// <summary>
        /// 采集NG后,可以再次测试采集,这里做自动Undo
        /// </summary>
        public Messages UndoNG(ActionEventArgs actionEventArgs)
        {
            Messages msg = new Messages();

            // 是否配置需要Undo
            if (System.Configuration.ConfigurationSettings.AppSettings["UndoNG"] != "1")
            {
                return(msg);
            }
            bool bNeedUndo = false;

            BenQGuru.eMES.TS.TSFacade  tsFacade = null;
            BenQGuru.eMES.Domain.TS.TS ts       = null;
            object objTmp;

            if (actionEventArgs.ProductInfo != null && actionEventArgs.ProductInfo.LastSimulation != null)
            {
                // 上次采NG的才可以Undo
                if (actionEventArgs.ProductInfo.LastSimulation.ProductStatus == ProductStatus.NG)
                {
                    // 产品是否还在本OP
                    BenQGuru.eMES.BaseSetting.BaseModelFacade modelFacade = new BaseModelFacade(this.DataProvider);
                    objTmp = modelFacade.GetOperation2Resource(actionEventArgs.ProductInfo.LastSimulation.OPCode, actionEventArgs.ResourceCode);
                    if (objTmp == null)
                    {
                        return(msg);
                    }
                    // 是否已在做维修
                    tsFacade = new BenQGuru.eMES.TS.TSFacade(this.DataProvider);
                    ts       = (BenQGuru.eMES.Domain.TS.TS)tsFacade.GetCardLastTSRecord(actionEventArgs.ProductInfo.LastSimulation.RunningCard);
                    if (ts == null || ts.TSStatus != TSStatus.TSStatus_New)
                    {
                        return(msg);
                    }
                    bNeedUndo = true;
                }
            }
            if (bNeedUndo == false)
            {
                return(msg);
            }
            // 开始Undo
            // 查询OnWIP
            Simulation simulation = actionEventArgs.ProductInfo.LastSimulation;
            string     strSql     = "SELECT * FROM tblOnWIP WHERE RCard='" + simulation.RunningCard + "' AND MOCode='" + simulation.MOCode + "' ORDER BY RCardSeq ";

            object[] objsWip = this.DataProvider.CustomQuery(typeof(OnWIP), new SQLCondition(strSql));
            if (objsWip == null || objsWip.Length < 2)
            {
                return(msg);
            }
            OnWIP wip = (OnWIP)objsWip[objsWip.Length - 1];

            BenQGuru.eMES.Report.ReportFacade reportFacade = new BenQGuru.eMES.Report.ReportFacade(this.DataProvider);
            DataCollectFacade dataCollectFacade            = new DataCollectFacade(this.DataProvider);

            #region 更新TS相关

            /*	不用再清除不良信息
             * // 查询TBLTSERRORCODE
             * strSql = "SELECT * FROM TBLTSERRORCODE WHERE TSID='" + ts.TSId + "' ";
             * object[] objsErrorCode = this.DataProvider.CustomQuery(typeof(BenQGuru.eMES.Domain.TS.TSErrorCode), new SQLCondition(strSql));
             * string strErrorCodeList = string.Empty;
             * if (objsErrorCode != null)
             * {
             *      // 更新TBLRPTRESECG
             *      for (int i = 0; i < objsErrorCode.Length; i++)
             *      {
             *              BenQGuru.eMES.Domain.TS.TSErrorCode errorCode = (BenQGuru.eMES.Domain.TS.TSErrorCode)objsErrorCode[i];
             *              objTmp = reportFacade.GetReportErrorCode2Resource(wip.ModelCode, wip.ItemCode, wip.MOCode, wip.ShiftDay, wip.ShiftCode, wip.TimePeriodCode, wip.OPCode, wip.ResourceCode, wip.SegmentCode, wip.StepSequenceCode, errorCode.ErrorCodeGroup, errorCode.ErrorCode);
             *              if (objTmp != null)
             *              {
             *                      BenQGuru.eMES.Domain.Report.ReportErrorCode2Resource rptError = (BenQGuru.eMES.Domain.Report.ReportErrorCode2Resource)objTmp;
             *                      if (rptError.NGTimes == 1)
             *                      {
             *                              reportFacade.DeleteReportErrorCode2Resource(rptError);
             *                      }
             *                      else
             *                      {
             *                              rptError.NGTimes = rptError.NGTimes - 1;
             *                              reportFacade.UpdateReportErrorCode2Resource(rptError);
             *                      }
             *              }
             *              strErrorCodeList = strErrorCodeList + errorCode.ErrorCodeGroup + ":" + errorCode.ErrorCode + ";";
             *      }
             *      // 删除TBLTSERRORCODE
             *      if (objsErrorCode.Length == 1)
             *              tsFacade.DeleteTSErrorCode((BenQGuru.eMES.Domain.TS.TSErrorCode)objsErrorCode[0]);
             *      else
             *      {
             *              strSql = "DELETE FROM TBLTSERRORCODE WHERE TSID='" + ts.TSId + "' ";
             *              this.DataProvider.CustomExecute(new SQLCondition(strSql));
             *      }
             * }
             * // 删除TS
             * tsFacade.DeleteTS(ts);
             */
            // 更新TS
            ts.TSStatus        = TSStatus.TSStatus_RepeatNG;            // 不良品重复测试
            ts.ReflowMOCode    = simulation.MOCode;
            ts.ReflowOPCode    = simulation.OPCode;
            ts.ReflowRouteCode = simulation.RouteCode;
            tsFacade.UpdateTS(ts);
            #endregion

            // 更新报表
            //UndoNGReport(simulation, wip, true, strErrorCodeList, (OnWIP)objsWip[objsWip.Length - 2]);
            if (System.Configuration.ConfigurationSettings.AppSettings["UndoNGUndoReport"] == "1")
            {
                // 查询TBLTSERRORCODE
                strSql = "SELECT * FROM TBLTSERRORCODE WHERE TSID='" + ts.TSId + "' ";
                object[] objsErrorCode    = this.DataProvider.CustomQuery(typeof(BenQGuru.eMES.Domain.TS.TSErrorCode), new SQLCondition(strSql));
                string   strErrorCodeList = string.Empty;
                if (objsErrorCode != null)
                {
                    // 更新TBLRPTRESECG
                    for (int i = 0; i < objsErrorCode.Length; i++)
                    {
                        BenQGuru.eMES.Domain.TS.TSErrorCode errorCode = (BenQGuru.eMES.Domain.TS.TSErrorCode)objsErrorCode[i];
                        strErrorCodeList = strErrorCodeList + errorCode.ErrorCodeGroup + ":" + errorCode.ErrorCode + ";";
                    }
                }

                //UndoNGReport(simulation, wip, true, strErrorCodeList, (OnWIP)objsWip[objsWip.Length - 2]);
            }

            // 更新Simulation
            UndoNGSimulation(simulation, true, (OnWIP)objsWip[objsWip.Length - 2]);
            //UpdateUndoWIP((OnWIP)objsWip[objsWip.Length - 1]);		// 保留测试信息

            // 如果上次采集是GOOD->NG,这次采GOOD,那还需要Undo再上次的GOOD
            wip = (OnWIP)objsWip[objsWip.Length - 2];
            if (wip.Action == ActionType.DataCollectAction_GOOD &&
                wip.OPCode == simulation.OPCode)
            {
                if (System.Configuration.ConfigurationSettings.AppSettings["UndoNGUndoReport"] == "1")
                {
                    // 更新报表
                    //UndoNGReport(simulation, wip, false, string.Empty, (OnWIP)objsWip[objsWip.Length - 3]);
                }
                // 更新Simulation
                UndoNGSimulation(simulation, false, (OnWIP)objsWip[objsWip.Length - 3]);
                //UpdateUndoWIP((OnWIP)objsWip[objsWip.Length - 2]);		// 保留测试信息
            }

            ActionOnLineHelper onlineHelper = new ActionOnLineHelper(this.DataProvider);
            Messages           msgTmp       = onlineHelper.GetIDInfo(simulation.RunningCard);
            actionEventArgs.ProductInfo = (ProductInfo)msgTmp.GetData().Values[0];

            return(msg);
        }