/// <summary> /// 更新Delivery_Pallet的Status /// </summary> /// <param name="executionContext"></param> /// <returns></returns> protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext) { Pallet CurrentPallet = (Pallet)CurrentSession.GetValue(Session.SessionKeys.Pallet); DeliveryPallet MyDeliveryPalet = new DeliveryPallet(); //ship to pallet/pallet print/unpack pallet if (Station == "87" || (Station == "87U")) { IPalletRepository pltRepository = RepositoryFactory.GetInstance().GetRepository<IPalletRepository, Pallet>(); IList<DeliveryPallet> dnpltlist= pltRepository.GetDeliveryPallet(CurrentPallet.PalletNo); IList<Delivery> deliveryList = new List<Delivery>(); foreach (DeliveryPallet temp in dnpltlist) { IDeliveryRepository DeliveryRepository = RepositoryFactory.GetInstance().GetRepository<IDeliveryRepository, Delivery>(); Delivery thisDelivery = DeliveryRepository.Find(temp.DeliveryID); MyDeliveryPalet = temp; MyDeliveryPalet.Status = Status; MyDeliveryPalet.Editor = this.Editor; thisDelivery.UpdateDeliveryPalletStatus(MyDeliveryPalet); deliveryList.Add(thisDelivery);//for session DeliveryRepository.Update(thisDelivery, CurrentSession.UnitOfWork); } CurrentSession.AddValue(Session.SessionKeys.DeliveryList, deliveryList); } else { Delivery CurrentDelivery = (Delivery)CurrentSession.GetValue(Session.SessionKeys.Delivery); foreach (DeliveryPallet temp in CurrentDelivery.DnPalletList) { if (temp.PalletID.Equals(CurrentPallet.PalletNo)) { MyDeliveryPalet = temp; break; } } MyDeliveryPalet.Status = Status; MyDeliveryPalet.Editor = this.Editor; CurrentDelivery.UpdateDeliveryPalletStatus(MyDeliveryPalet); IDeliveryRepository DeliveryRepository = RepositoryFactory.GetInstance().GetRepository<IDeliveryRepository, Delivery>(); DeliveryRepository.Update(CurrentDelivery, CurrentSession.UnitOfWork); } return base.DoExecute(executionContext); }
/// <summary> /// 更新DeliveryPalletStatus /// </summary> public void UpdateDeliveryPalletStatus(DeliveryPallet myDeliveryPalet) { if (myDeliveryPalet == null) return; lock (_syncObj_dnplts) { object naught = this.DnPalletList; if (this._dnplts == null) return; int idx = 0; bool find = false; foreach (DeliveryPallet dp in this._dnplts) { if (dp.Key.Equals(myDeliveryPalet.Key)) { myDeliveryPalet.ID = dp.ID; dp.Editor = myDeliveryPalet.Editor; dp.Status = myDeliveryPalet.Status; find = true; break; } idx++; } if (find) { this._dnplts[idx] = myDeliveryPalet; this._tracker.MarkAsModified(this._dnplts[idx]); } //this._tracker.MarkAsModified(this); } }