Exemplo n.º 1
0
        /// <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);
           
        }
Exemplo n.º 2
0
        /// <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);
            }
        }