/// <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); }
/// <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; } }
/// <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); }
/// <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); }