Esempio n. 1
0
        /// <summary>
        /// LableUpQ -> CatchAQ or CatchBQ
        /// </summary>
        /// <param name="isrun"></param>
        /// <returns></returns>
        public LableCode GetLableUpQ()
        {
            LableCode code = null;

            if (LableUpQ.Count > 0)
            {
                code = LableUpQ.Peek();
            }

            if (code != null)
            {
                code.RealLocation = "";

                lock (TaskQueues.LOCK_LOCHELPER) {
                    code.RealLocation = lochelper.Convert(code.ToLocation, code.PanelNo);
                }

                if (string.IsNullOrEmpty(code.RealLocation))
                {
                    var msg = $"!来源: {nameof(GetLableUpQ)},{code.LCode} 获取真实交地失败: {code.ToLocation}";
                    onlog?.Invoke(msg, LogType.ROLL_QUEUE);

                    onlog?.Invoke("请查看交地状态。", LogType.ROLL_QUEUE);
                    return(null);
                }

                var ok = LableCode.UpdateRealLocation(code);
                if (!ok)
                {
                    throw new Exception($"保存标签的实际交地失败");
                }

                code = LableUpQ.Dequeue();
                if (int.Parse(LableCode.ParseRealLocationNo(code.RealLocation)) < 6)
                {
                    CatchAQ.Enqueue(code);
                }
                else
                {
                    CatchBQ.Enqueue(code);
                }
            }
            return(code);
        }