Exemplo n.º 1
0
        /// <summary>
        /// 更新LCMRepair状态
        /// </summary>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            IDefectRepository defectRepository = RepositoryFactory.GetInstance().GetRepository<IDefectRepository>();
            IPartRepository partRepository = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>();

            KeyPartRepairInfo cond1 = new KeyPartRepairInfo();
            cond1.productID = this.Key;
            cond1.status = 0;

            KeyPartRepairInfo item1 = new KeyPartRepairInfo();
            item1.productID = this.Key;
            item1.status = 1;
            item1.station = "RLR";
            //item1.line = this.Line;
            item1.editor = this.Editor;
            item1.udt = DateTime.Now;

            partRepository.UpdateKPRepairDefered(CurrentSession.UnitOfWork, item1, cond1);
            /*
            IqcCause1Info cond2 = new IqcCause1Info();
            cond2.ctLabel = this.Key;
            //cond2.status = "0";

            IqcCause1Info item2 = new IqcCause1Info();
            item2.ctLabel = this.Key;
            item2.status = "1";
            item2.udt = DateTime.Now;

            defectRepository.UpdateUDTofIqcCause(item2, cond2);
            */
            return base.DoExecute(executionContext);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 用于LCMRepair时新增/更新Defect信息。
        /// </summary>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            try
            {
                bool bAdd = (bool)CurrentSession.GetValue("isAdd");

                IPartRepository partRepository = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>();

                RepairDefect defect = (RepairDefect)CurrentSession.GetValue(Session.SessionKeys.CurrentRepairdefect);
                if (bAdd)
                {
                    KeyPartRepairInfo cond = new KeyPartRepairInfo();
                    cond.productID = this.Key;
                    cond.status = 0;
                    IList<KeyPartRepairInfo> repList = partRepository.GetKPRepairList(cond);
                    if (repList.Count > 0)
                    {
                        defect.RepairID = repList[0].id;
                    }
                    defect.Type = "LCM";
                    defect.MTAID = "";
                    defect.ReturnStation = "";
                    partRepository.AddKPRepairDefect(defect);
                }
                else
                {
                    RepairDefect cond = new RepairDefect();
                    cond.ID = defect.ID;
                    defect.ID = int.MinValue;
                    partRepository.UpdateKPRepairDefect(defect, cond);
                }

                KeyPartRepairInfo cond1 = new KeyPartRepairInfo();
                cond1.productID = this.Key;
                cond1.status = 1;
                CurrentSession.AddValue(Session.SessionKeys.RepairTimes, partRepository.GetCountOfKpRepairCount(cond1));

                return base.DoExecute(executionContext);
            }
            catch (Exception e)
            {
                FisException ee = new FisException(e.Message);
                ee.stopWF = false;
                throw ee;
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// Generate repair list of KP.
        /// </summary>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            IDefectRepository defectRepository = RepositoryFactory.GetInstance().GetRepository<IDefectRepository>();
            IPartRepository partRepository = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>();
            IList<IqcCause1Info> iqcList = new List<IqcCause1Info>();
            IqcCause1Info cond1 = new IqcCause1Info();
            cond1.ctLabel = Key;
            IqcCause1Info cond_neq = new IqcCause1Info();
            cond_neq.status = "1";
            iqcList = defectRepository.GetIqcCause1InfoList(cond1, cond_neq);
            if (iqcList.Count <= 0)
            {
                FisException ex;
                List<string> erpara = new List<string>();
                erpara.Add(Key);
                ex = new FisException("CHK233", erpara);    //CT:XXX没有不良记录.
                throw ex;
            }

            KeyPartRepairInfo cond2 = new KeyPartRepairInfo();
            cond2.productID = Key;
            cond2.status = 0;
            if (partRepository.GetCountOfKpRepairCount(cond2) <= 0)
            {
                KeyPartRepairInfo kprInfo = new KeyPartRepairInfo();
                kprInfo.productID = this.Key;
                kprInfo.model = "";
                kprInfo.type = "KP";
                kprInfo.line = "";
                kprInfo.station = "";
                kprInfo.status = 0;
                kprInfo.testLogID = 0;
                kprInfo.logID = 0;
                kprInfo.editor = Editor;
                kprInfo.cdt = DateTime.Now;
                kprInfo.udt = DateTime.Now;
                partRepository.AddKPRepair(kprInfo);

                foreach (IqcCause1Info tmp in iqcList)
                {
                    RepairDefect defect = new RepairDefect();
                    defect.RepairID = kprInfo.id;
                    defect.Type = "KP";
                    defect.DefectCodeID = tmp.mpDefect;
                    defect.Mark = "0";
                    defect.IsManual = false;
                    defect.Editor = Editor;
                    defect.Cdt = DateTime.Now;
                    defect.Udt = DateTime.Now;
                    defect.Cause = "";
                    defect.Obligation = "";
                    defect.Component = "";
                    defect.Site = "";
                    defect.Location = "";
                    defect.MajorPart = "";
                    defect.Remark = "";
                    defect.VendorCT = "";
                    defect.PartType = "";
                    defect.OldPart = "";
                    defect.OldPartSno = "";
                    defect.NewPart = "";
                    defect.NewPartSno = "";
                    defect.Manufacture = "";
                    defect.VersionA = "";
                    defect.VersionB = "";
                    defect.SubDefect = "";
                    defect.PIAStation = "";
                    defect.Distribution = "";
                    defect._4M = "";
                    defect.Responsibility = "";
                    defect.Action = "";
                    defect.Cover = "";
                    defect.Uncover = "";
                    defect.TrackingStatus = "";
                    defect.MTAID = "";
                    defect.ReturnStation = "";
                    defect.ReturnSign = "";
                    partRepository.AddKPRepairDefect(defect);
                }
            }

            return base.DoExecute(executionContext);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Generate repair list of LCM.
        /// </summary>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            IPartRepository partRepository = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>();
            
            //StepA: 若KeyPartRepair存在未维修完成(Count>0; Condition KeyPartRepair.ProductID=[ProductID] and KeyPartRepair.Status=‘0’)的记录,则不执行Step B
            //StepB: 检查是否存在需要提取的Log,若存在,则基于Test Log生成 Repair  Record
            KeyPartRepairInfo cond = new KeyPartRepairInfo();
            cond.productID = Key;
            cond.status = 0;
            if (partRepository.GetCountOfKpRepairCount(cond) <= 0)
            {
                bool bHasDefect = false;
                IProduct curProduct = CurrentSession.GetValue(Session.SessionKeys.Product) as IProduct;

                IList<TestLog> tLogs = curProduct.TestLog;
                foreach (TestLog ele in tLogs)
                {
                    if (ele.Station == curProduct.Status.StationId && ele.Type == "PRD" && ele.Status == TestLog.TestLogStatus.Fail)   //0
                    {
                        bHasDefect = true;

                        KeyPartRepairInfo kprInfo = new KeyPartRepairInfo();
                        kprInfo.productID = this.Key;
                        kprInfo.model = curProduct.Model;
                        kprInfo.type = "LCM";
                        kprInfo.line = ele.Line;
                        kprInfo.station = ele.Station;
                        kprInfo.status = 0;
                        kprInfo.testLogID = ele.ID;
                        ProductLog latestLog = null;
                        foreach (ProductLog tmp in curProduct.ProductLogs)
                        {
                            if (tmp.Status == IMES.FisObject.Common.Station.StationStatus.Fail) //0
                            {
                                if (latestLog == null || tmp.Cdt > latestLog.Cdt)
                                {
                                    latestLog = tmp;
                                }
                            }
                        }
                        kprInfo.logID = (latestLog == null ? 0 : latestLog.Id);
                        kprInfo.editor = Editor;
                        kprInfo.cdt = DateTime.Now;
                        kprInfo.udt = DateTime.Now;
                        partRepository.AddKPRepair(kprInfo);

                        foreach (TestLogDefect tmp in ele.Defects)
                        {
                            RepairDefect defect = new RepairDefect();
                            defect.RepairID = kprInfo.id;
                            defect.Type = "LCM";
                            defect.DefectCodeID = tmp.DefectCode;
                            defect.Mark = "0";
                            defect.IsManual = false;
                            defect.Editor = Editor;
                            defect.Cdt = DateTime.Now;
                            defect.Udt = DateTime.Now;
                            defect.Cause = "";
                            defect.Obligation = "";
                            defect.Component = "";
                            defect.Site = "";
                            defect.Location = "";
                            defect.MajorPart = "";
                            defect.Remark = "";
                            defect.VendorCT = "";
                            defect.PartType = "";
                            defect.OldPart = "";
                            defect.OldPartSno = "";
                            defect.NewPart = "";
                            defect.NewPartSno = "";
                            defect.Manufacture = "";
                            defect.VersionA = "";
                            defect.VersionB = "";
                            defect.SubDefect = "";
                            defect.PIAStation = "";
                            defect.Distribution = "";
                            defect._4M = "";
                            defect.Responsibility = "";
                            defect.Action = "";
                            defect.Cover = "";
                            defect.Uncover = "";
                            defect.TrackingStatus = "";
                            defect.MTAID = "";
                            defect.ReturnStation = "";
                            defect.ReturnSign = "";
                            partRepository.AddKPRepairDefect(defect);
                        }
                        break;
                    }
                }
                if (!bHasDefect)
                {
                    string ctno = CurrentSession.GetValue("CTNO") as string;

                    throw new FisException("CHK233", new string[] { ctno });    //CT:XXX没有不良记录.
                }
            }

            return base.DoExecute(executionContext);
        }