/// <summary> /// </summary> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { var currentStation = default(string); currentStation = Station; IList<IProduct> prodList = new List<IProduct>(); prodList = (IList<IProduct>)CurrentSession.GetValue(Session.SessionKeys.ProdList); foreach (IProduct currentProduct in prodList) { var newStatus = new ProductStatus(); string line = default(string); if (string.IsNullOrEmpty(this.Line)) { line = currentProduct.Status.Line; } else { line = this.Line; } newStatus.Status = StationStatus.Pass; newStatus.StationId = currentStation; newStatus.Editor = Editor; newStatus.Line = line; newStatus.TestFailCount = 0; IProductRepository productRepository = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>(); if (!string.IsNullOrEmpty(currentProduct.Status.ReworkCode) && productRepository.IsLastReworkStation(currentProduct.Status.ReworkCode, Station, (int)StationStatus.Pass)) { newStatus.ReworkCode = ""; IMES.DataModel.Rework r = new IMES.DataModel.Rework(); r.ReworkCode = currentProduct.Status.ReworkCode; r.Editor = Editor; r.Status = "3"; r.Udt = DateTime.Now; productRepository.UpdateReworkConsideredProductStatusDefered(CurrentSession.UnitOfWork, r, currentProduct.ProId); } else { newStatus.ReworkCode = currentProduct.Status.ReworkCode; } newStatus.ProId = currentProduct.ProId; currentProduct.UpdateStatus(newStatus); productRepository.Update(currentProduct, CurrentSession.UnitOfWork); } return base.DoExecute(executionContext); }
/// <summary> /// Update Product Status /// </summary> /// <param name="executionContext"></param> /// <returns></returns> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { var currentStation = default(string); if (IsReturnStatoin) { currentStation = CurrentSession.GetValue(Session.SessionKeys.ReturnStation).ToString(); } else { currentStation = Station; } var currentProduct = (IProduct)CurrentSession.GetValue(Session.SessionKeys.Product); var newStatus = new ProductStatus(); string line = default(string); if (string.IsNullOrEmpty(this.Line)) { line = currentProduct.Status.Line; } else { line = this.Line; } newStatus.Status = Status; newStatus.StationId = currentStation; newStatus.Editor = Editor; newStatus.Line = line; string AllowPass = ""; if (CurrentSession.GetValue(ExtendSession.SessionKeys.AllowPass) != null) { AllowPass = (string)CurrentSession.GetValue(ExtendSession.SessionKeys.AllowPass); } if (AllowPass == "N" && Status == StationStatus.Fail) { newStatus.TestFailCount = currentProduct.Status.TestFailCount; //999; } else if (currentProduct.Status.StationId == currentStation && Status == StationStatus.Fail) //檢查相同測試站需累計測試次數 { newStatus.TestFailCount = currentProduct.Status.TestFailCount + 1; } else if (Status == StationStatus.Fail) { newStatus.TestFailCount = 1; } else { newStatus.TestFailCount = 0; } IProductRepository productRepository = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>(); if ( !string.IsNullOrEmpty(currentProduct.Status.ReworkCode) && productRepository.IsLastReworkStation(currentProduct.Status.ReworkCode,Station,(int)Status)) { newStatus.ReworkCode = ""; IMES.DataModel.Rework r = new IMES.DataModel.Rework(); r.ReworkCode = currentProduct.Status.ReworkCode; r.Editor = Editor; r.Status = "3"; r.Udt = DateTime.Now; productRepository.UpdateReworkConsideredProductStatusDefered(CurrentSession.UnitOfWork,r,currentProduct.ProId); } else { newStatus.ReworkCode = currentProduct.Status.ReworkCode; } newStatus.ProId = currentProduct.ProId; #region record previous product Status //System.Data.DataTable preStatus = CreateDataTable.CreateProductStatusTb(); //preStatus.Rows.Add(currentProduct.ProId, // currentProduct.Status.StationId, // currentProduct.Status.Status == StationStatus.Pass ? 1 : 0, // currentProduct.Status.ReworkCode, // currentProduct.Status.Line, // currentProduct.Status.TestFailCount, // currentProduct.Status.Editor, // //currentProduct.Status.Udt.ToString("yyyy-MM-dd HH:mm:ss.fff") // currentProduct.Status.Udt // ); //System.Data.DataTable curStatus = CreateDataTable.CreateProductStatusTb(); //newStatus.Udt = DateTime.Now; //curStatus.Rows.Add(currentProduct.ProId, // newStatus.StationId, // newStatus.Status == StationStatus.Pass ? 1 : 0, // currentProduct.Status.ReworkCode, // newStatus.Line, // newStatus.TestFailCount, // newStatus.Editor, // //newStatus.Udt.ToString("yyyy-MM-dd HH:mm:ss.fff") // newStatus.Udt // ); //SqlParameter para1 =new SqlParameter("PreStatus", System.Data.SqlDbType.Structured); //para1.Direction = System.Data.ParameterDirection.Input; //para1.Value = preStatus; //SqlParameter para2 =new SqlParameter("Status", System.Data.SqlDbType.Structured); //para2.Direction = System.Data.ParameterDirection.Input; //para2.Value = curStatus; //productRepository.ExecSpForNonQueryDefered(CurrentSession.UnitOfWork, // IMES.Infrastructure.Repository._Schema.SqlHelper.ConnectionString_FA, // "IMES_UpdateProductStatus", // para1, // para2); IList<IMES.DataModel.TbProductStatus> stationList = productRepository.GetProductStatus(new List<string>{currentProduct.ProId}); productRepository.UpdateProductPreStationDefered(CurrentSession.UnitOfWork, stationList); #endregion currentProduct.UpdateStatus(newStatus); //070031 2012.09.18 //Vincent disable 檢查重複BoxId功能,在分配時BoxId 已做檢查 //0001649: [Activity]修改UpdateProductStatus activity 刪除檢查重複Boxd 問題 //var ivkBdy = productRepository.CheckTheBoxIdDefered(CurrentSession.UnitOfWork, currentProduct); //070031 2012.09.18 productRepository.Update(currentProduct, CurrentSession.UnitOfWork); //070031 2012.09.18 //0001649: [Activity]修改UpdateProductStatus activity 刪除檢查重複Boxd 問題 //var ivkBdy2 = productRepository.CheckTheBoxIdDefered(CurrentSession.UnitOfWork, currentProduct); //ivkBdy2.DependencyIvkbdy = ivkBdy; //ivkBdy2.ExpectRetVal = true; //070031 2012.09.18 //Vincent Add Reset ForceNWC string isForceNWC = (string)CurrentSession.GetValue("IsForceNWC"); if (isForceNWC == "Y") { IPartRepository partRep = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>(); partRep.UpdateForceNWCByProductIDDefered(CurrentSession.UnitOfWork, "", "", currentProduct.ProId); } return base.DoExecute(executionContext); }
/// <summary> /// </summary> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { var currentStation = default(string); currentStation = Station; IProductRepository productRepository = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>(); IList<IProduct> prodList = new List<IProduct>(); prodList = (IList<IProduct>)CurrentSession.GetValue(Session.SessionKeys.ProdList); #region record multi-productId product status //System.Data.DataTable productTb = CreateDataTable.CreateStringListTb(); //foreach (IProduct currentProduct in prodList) //{ // productTb.Rows.Add(currentProduct.ProId); //} //SqlParameter para1 = new SqlParameter("ProductIDList", System.Data.SqlDbType.Structured); //para1.Direction = System.Data.ParameterDirection.Input; //para1.Value = productTb; //IProductRepository productRep = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>(); //productRep.ExecSpForNonQueryDefered(CurrentSession.UnitOfWork, // IMES.Infrastructure.Repository._Schema.SqlHelper.ConnectionString_FA, // "IMES_MultiUpdateProductStatus", // para1, // new SqlParameter("station", Station), // new SqlParameter("status", 1), // new SqlParameter("line", Line), // new SqlParameter("editor", Editor), // new SqlParameter("udt", DateTime.Now) // ); var productIDList = (from item in prodList select item.ProId).ToList(); IList<IMES.DataModel.TbProductStatus> stationList = productRepository.GetProductStatus(productIDList); productRepository.UpdateProductPreStationDefered(CurrentSession.UnitOfWork, stationList); #endregion foreach (IProduct currentProduct in prodList) { var newStatus = new ProductStatus(); string line = default(string); if (string.IsNullOrEmpty(this.Line)) { line = currentProduct.Status.Line; } else { line = this.Line; } newStatus.Status = StationStatus.Pass; newStatus.StationId = currentStation; newStatus.Editor = Editor; newStatus.Line = line; newStatus.TestFailCount = 0; if (!string.IsNullOrEmpty(currentProduct.Status.ReworkCode) && productRepository.IsLastReworkStation(currentProduct.Status.ReworkCode, Station, (int)StationStatus.Pass)) { newStatus.ReworkCode = ""; IMES.DataModel.Rework r = new IMES.DataModel.Rework(); r.ReworkCode = currentProduct.Status.ReworkCode; r.Editor = Editor; r.Status = "3"; r.Udt = DateTime.Now; productRepository.UpdateReworkConsideredProductStatusDefered(CurrentSession.UnitOfWork, r, currentProduct.ProId); } else { newStatus.ReworkCode = currentProduct.Status.ReworkCode; } newStatus.ProId = currentProduct.ProId; currentProduct.UpdateStatus(newStatus); productRepository.Update(currentProduct, CurrentSession.UnitOfWork); } return base.DoExecute(executionContext); }