Example #1
0
        /// <summary>
        /// 获取DCode
        /// </summary>
        /// <param name="executionContext"></param>
        /// <returns></returns>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            string line = this.Line;
            string lineAs = "";
            if (line != null && line.Length > 0)
            {
                lineAs = line.Substring(0, 1);
            }
            else
            {
                lineAs = " ";
            }
            DateTime dt = DateTime.Now;
            string year = string.Empty;
            string month = string.Empty;
            year = dt.Year.ToString().Substring(dt.Year.ToString().Length - 1, 1);
            switch (dt.Month.ToString())
            {
                case "10":
                    month = "A";
                    break;
                case "11":
                    month = "B";
                    break;
                case "12":
                    month = "C";
                    break;
                default:
                    month = dt.Month.ToString().Substring(dt.Month.ToString().Length - 1, 1);
                    break;
            }          
            string preSeqStr =  year + lineAs + month;
            string likecont = preSeqStr + "{0}";
            NumControl numCtrl = null;
            INumControlRepository numCtrlRepository = RepositoryFactory.GetInstance().GetRepository<INumControlRepository, NumControl>();

            string type = "PizzaID";
            try
            {
                SqlTransactionManager.Begin();
                lock (_syncRoot_GetSeq)
                {
                    bool insOrUpd = true;
                    //string maxMo = numCtrlRepository.GetMaxNumber(type, likecont);
                    string seq = string.Empty;
                    string maxSeqStr = string.Empty;
                    string maxNumStr = string.Empty;
                    bool ChongQingIs = false;
                    //流水码的取得
                    //numCtrl = numCtrlRepository.GetMaxNumberObj(type, likecont);
                    numCtrl = numCtrlRepository.GetMaxValue(type, preSeqStr);
                    //檢查有沒有lock index, 沒有lock index, 改變查詢條件
                    if (numCtrl == null)
                    {
                        //lock NoType='PizzaID'
                        //string maxData = numCtrlRepository.GetMaxNumber(type, "{0}");
                        //numCtrl = numCtrlRepository.GetMaxNumberObj(type, likecont);
                        NumControl data = numCtrlRepository.GetMaxValue(type, "Lock");
                        numCtrl = numCtrlRepository.GetMaxValue(type, preSeqStr);
                    }
                    //if (string.IsNullOrEmpty(maxMo))
                    if (numCtrl == null)
                    {
                        seq = "200000";
                        insOrUpd = true;

                        IPartRepository partRepository = RepositoryFactory.GetInstance().GetRepository<IPartRepository, IPart>();
                        ArrayList retList = new ArrayList();
                        IList<string> valueList = new List<string>();
                        valueList = partRepository.GetValueFromSysSettingByName("Site");
                        if (valueList.Count == 0)
                        {
                        }
                        else
                        {
                            if (valueList[0] == "ICC")
                            {
                                ChongQingIs = true;
                            }
                        }
                        if (ChongQingIs == true)
                        {
                            seq = "500000";
                        }
                    }
                    else
                    {
                        string maxMo = numCtrl.Value;
                        seq = maxMo.Substring(maxMo.Length - 6, 6);
                        insOrUpd = false;
                       // if (seq.ToUpper() == "499999")
                       // {
                            /*List<string> errpara = new List<string>();
                            throw new FisException("CHK162", errpara);*/
                       // }
                        //IList<NumControl> numCtrlLst = numCtrlRepository.GetNumControlByNoTypeAndValue(type, maxMo);
                        //int numCtrlId = numCtrlLst[0].ID;
                        //numCtrl = numCtrlRepository.Find(numCtrlId);
                    }
                    if (insOrUpd)
                    {
                        maxNumStr = seq;
                    }
                    else
                    {
                        if (seq.ToUpper() == "499999")
                        {
                            maxNumStr = "200000";
                        }
                        else if (seq.ToUpper() == "999999")
                        {
                            maxNumStr = "500000";
                        }
                        else
                        {
                            int num = Convert.ToInt32(seq);
                            num += 1;
                            maxNumStr = num.ToString();
                            int len = maxNumStr.Length;
                            for (var i = 0; i < 6 - len; i++)
                            {
                                maxNumStr = "0" + maxNumStr;
                            }
                        }
                    }
                    maxSeqStr = preSeqStr + maxNumStr;
                    CurrentSession.AddValue(Session.SessionKeys.PizzaID, maxSeqStr);

                    if (insOrUpd)
                    {
                        //numCtrlRepository.Add(new NumControl(0, type, string.Empty, maxSeqStr, this.Customer), CurrentSession.UnitOfWork);
                        //numCtrlRepository.InsertNumControl(new NumControl(0, type, string.Empty, maxSeqStr, this.Customer));
                        numCtrlRepository.InsertNumControl(new NumControl(0, type, preSeqStr, maxSeqStr, this.Customer));
                    }
                    else
                    {
                        numCtrl.Value = maxSeqStr;
                        //numCtrl.NOType = "PizzaID";
                        //numCtrl.NOName = "";
                        //numCtrl.Customer = this.Customer;
                        numCtrlRepository.SaveMaxNumber(numCtrl, false);
                        //numCtrlRepository.SaveMaxNumber(numCtrl, false, preSeqStr + "{0}");
                        //numCtrlRepository.Update(numCtrl, CurrentSession.UnitOfWork);
                    }
                    //CurrentSession.AddValue(Session.SessionKeys.PrintLogName, Station);
                    //CurrentSession.AddValue(Session.SessionKeys.PrintLogBegNo, maxSeqStr);
                    //CurrentSession.AddValue(Session.SessionKeys.PrintLogEndNo, maxSeqStr);
                    //CurrentSession.AddValue(Session.SessionKeys.PrintLogDescr, "");
                }




                string pizzaIDList = (string)CurrentSession.GetValue(Session.SessionKeys.PizzaID);
                Pizza NewPizza = new Pizza();
                NewPizza.PizzaID = pizzaIDList;
                NewPizza.MMIID = "";
                string model =(string) CurrentSession.GetValue(Session.SessionKeys.ModelName);
                if (!string.IsNullOrEmpty(model))
                {
                    NewPizza.Model=model;
                }
                
                IProduct currentProduct = (IProduct)CurrentSession.GetValue(Session.SessionKeys.Product);
                if (currentProduct != null)
                {
                    currentProduct.PizzaID = pizzaIDList;
                    CurrentSession.AddValue(Session.SessionKeys.Product, currentProduct);
                }
              
                CurrentSession.AddValue(Session.SessionKeys.Pizza, NewPizza);

                Pizza CurrentPizza = (Pizza)CurrentSession.GetValue(Session.SessionKeys.Pizza);
                PizzaStatus currentPizzaStatus = new PizzaStatus();
                currentPizzaStatus.Editor = this.Editor;
                if (null == this.Line)
                {
                    currentPizzaStatus.LineID = "";
                }
                else
                {
                    currentPizzaStatus.LineID = this.Line;
                }
                PizzaLog pizzaLog=new PizzaLog();
                pizzaLog.Cdt = DateTime.Now;
                pizzaLog.Station = this.Station;
                pizzaLog.Line = this.Line;
                pizzaLog.Editor = this.Editor;
                pizzaLog.Model = model;
                pizzaLog.PizzaID = CurrentPizza.PizzaID;

                CurrentPizza.AddPizzaLog(pizzaLog);
                currentPizzaStatus.PizzaID = CurrentPizza.PizzaID;
                pizzaLog.Descr = "";
                //currentPizzaStatus.StationID = "00";
                currentPizzaStatus.StationID = this.Station;

                CurrentPizza.MMIID = "";
                CurrentPizza.Status = currentPizzaStatus;
                IPizzaRepository currentPizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository, Pizza>();
                currentPizzaRepository.Add(CurrentPizza, CurrentSession.UnitOfWork);
                SqlTransactionManager.Commit();
            }
            catch (Exception e)
            {
                SqlTransactionManager.Rollback();
                throw e;
            }
            finally
            {
                SqlTransactionManager.Dispose();
                SqlTransactionManager.End();
            }
            return base.DoExecute(executionContext);
        }
Example #2
0
        public void AddPizzaLog(PizzaLog log)
        {
            if (log == null)
                return;

            lock (_syncObj_parts)
            {
                object naught = this.PizzaLogs;

                log.Tracker = _tracker.Merge(log.Tracker);
                this._logs.Add(log);
                this._tracker.MarkAsAdded(log);
                this._tracker.MarkAsModified(this);
            }
        }
Example #3
0
        private void UpdatePizza(ref IList<string> updatePizzas, string station, string changeCartonSN)
        {
            IPizzaRepository pizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository, Pizza>();

            foreach (string PizzaID in updatePizzas)
            {
                Pizza pizza = pizzaRepository.Find(PizzaID);
                if (pizza == null)
                {
                    throw new NullReferenceException("Pizza in session is null");
                    //continue;
                }

                if (null != changeCartonSN)
                    pizza.CartonSN = changeCartonSN;

                if (null != pizza.Status)
                    pizza.Status.StationID = station;

                string line = string.IsNullOrEmpty(this.Line) ? pizza.Status.LineID : this.Line;
                var PizzaLog = new PizzaLog
                {
                    Model = pizza.Model,
                    Editor = Editor,
                    Line = line,
                    Station = Station,
                    Descr = "",
                    PizzaID = pizza.PizzaID,
                    Cdt = DateTime.Now
                };

                pizza.AddPizzaLog(PizzaLog);
                pizzaRepository.Update(pizza, CurrentSession.UnitOfWork);

            }
        }
Example #4
0
        /// <summary>
        /// Unpack Offline Pizza
        /// </summary>
        /// <param name="executionContext"></param>
        /// <returns></returns>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            List<string> errpara = new List<string>();

            IProductRepository prodRep = RepositoryFactory.GetInstance().GetRepository<IProductRepository, IProduct>();
            IPizzaRepository pizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository, Pizza>();

            string pizzaId = this.Key;
            Pizza p = pizzaRepository.Find(pizzaId);

            if (null == p)
            {
                var ex = new FisException("CHK100", new string[] { pizzaId });
                throw ex;
            }

            if ((null == p.Status) || !("PKJOK".Equals(p.Status.StationID) || "PKJROK".Equals(p.Status.StationID)))
            {
                var ex = new FisException("CHK1046", new string[] { });
                throw ex;
            }

            IProduct prod = prodRep.GetProductByPizzaID(pizzaId);
            if ((null != prod) || (!string.IsNullOrEmpty(p.CartonSN)))
            {
                var ex = new FisException("CHK1047", new string[] { });
                throw ex;
            }

            pizzaRepository.BackUpPizzaStatusDefered(CurrentSession.UnitOfWork, pizzaId, CurrentSession.Editor);
            pizzaRepository.BackUpPizzaPartDefered(CurrentSession.UnitOfWork, pizzaId, CurrentSession.Editor);

            PizzaPart delpizza = new PizzaPart();
            delpizza.PizzaID = pizzaId;

            pizzaRepository.DeletePizzaPartDefered(CurrentSession.UnitOfWork, delpizza);


            p.Status.StationID = this.Station;

            string line = string.IsNullOrEmpty(this.Line) ? p.Status.LineID : this.Line;
            var PizzaLog = new PizzaLog
            {
                Model = p.Model,
                Editor = Editor,
                Line = line,
                Station = Station,
                Descr = "",
                PizzaID = p.PizzaID,
                Cdt = DateTime.Now
            };

            p.AddPizzaLog(PizzaLog);
            pizzaRepository.Update(p, CurrentSession.UnitOfWork);
Example #5
0
        private void UpdatePizza(Pizza pizza, string station, string changeCartonSN)
        {
            IPizzaRepository pizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository, Pizza>();

            if (null != changeCartonSN)
                pizza.CartonSN = changeCartonSN;

            if (null != pizza.Status)
                pizza.Status.StationID = station;

            string line = string.IsNullOrEmpty(this.Line) ? pizza.Status.LineID : this.Line;
            var PizzaLog = new PizzaLog
            {
                Model = pizza.Model,
                Editor = Editor,
                Line = line,
                Station = Station,
                Descr = "",
                PizzaID = pizza.PizzaID,
                Cdt = DateTime.Now
            };

            pizza.AddPizzaLog(PizzaLog);
            pizzaRepository.Update(pizza, CurrentSession.UnitOfWork);
        }
Example #6
0
        /// <summary>
        /// Wrint Pizza Log
        /// </summary>
        /// <param name="executionContext"></param>
        /// <returns></returns>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            if (Editor.Trim() == "")
                logger.Error("Editor from activity is empty!");
           
            string line = default(string);
            var PizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository,Pizza>();
            if (IsSingle)
            {
                Pizza pizza = CurrentSession.GetValue(Session.SessionKeys.Pizza) as Pizza;
                if (pizza == null)
                {
                    throw new NullReferenceException("Pizza in session is null");
                }
                line = string.IsNullOrEmpty(this.Line) ? pizza.Status.LineID : this.Line;
                var PizzaLog = new PizzaLog
                {
                    Model = pizza.Model,
                    Editor = Editor,
                    Line = line,
                    Station = Station,
                    Descr="",
                    PizzaID=pizza.PizzaID,
                    Cdt = DateTime.Now
                };

                pizza.AddPizzaLog(PizzaLog);
                PizzaRepository.Update(pizza, CurrentSession.UnitOfWork);
            }
            else
            {
                var pizzaNoList = CurrentSession.GetValue(Session.SessionKeys.PizzaNoList) as List<string>;
                if (pizzaNoList == null)
                {
                    throw new NullReferenceException("PizzaNoList in session is null");
                }
                foreach (var pizzaNo in pizzaNoList)
                {
                    Pizza pizzaObj=PizzaRepository.Find(pizzaNo);

                    line = string.IsNullOrEmpty(this.Line) ? pizzaObj.Status.LineID : this.Line;
                    var PizzaLog = new PizzaLog
                    {
                        Model = pizzaObj.Model,
                        Editor = Editor,
                        Line = line,
                        Station = Station,
                        Descr = "",
                        PizzaID = pizzaObj.PizzaID,
                        Cdt = DateTime.Now
                    };

                    pizzaObj.AddPizzaLog(PizzaLog);
                    PizzaRepository.Update(pizzaObj, CurrentSession.UnitOfWork);
                }
            }

            return base.DoExecute(executionContext);
        }
        /// <summary>
        /// Update Pizza Status and Log
        /// </summary>
        /// <param name="executionContext"></param>
        /// <returns></returns>
        protected internal override ActivityExecutionStatus DoExecute(ActivityExecutionContext executionContext)
        {
            var PizzaRepository = RepositoryFactory.GetInstance().GetRepository<IPizzaRepository, Pizza>();

            var pizzaNoList = CurrentSession.GetValue(Session.SessionKeys.PizzaNoList) as List<string>;
            if (pizzaNoList == null)
            {
                throw new NullReferenceException("PizzaNoList in session is null");
            }
            foreach (var pizzaNo in pizzaNoList)
            {
                Pizza pizzaObj = PizzaRepository.Find(pizzaNo);

                if (!string.IsNullOrEmpty(CartonSNName))
                {
                    string cartonSN = CurrentSession.GetValue(CartonSNName) as string;
                    if (!string.IsNullOrEmpty(cartonSN))
                    {
                        pizzaObj.CartonSN = cartonSN;
                    }
                }
                
                pizzaObj.Status.StationID = Station;
                pizzaObj.Status.Editor = Editor;
                pizzaObj.Status.Udt = DateTime.Now;

                var PizzaLog = new PizzaLog
                {
                    Model = pizzaObj.Model,
                    Editor = Editor,
                    Line = Line,
                    Station = Station,
                    Descr = "",
                    PizzaID = pizzaObj.PizzaID,
                    Cdt = DateTime.Now
                };

                pizzaObj.AddPizzaLog(PizzaLog);
                PizzaRepository.Update(pizzaObj, CurrentSession.UnitOfWork);
            }

            return base.DoExecute(executionContext);
        }