UnlockedShelf.cs 2.8 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Common;
namespace DeviceLibrary
{
    public class UnlockedShelf
    {
        /// <summary>
        /// 已解绑料架信息
        /// </summary>
        /// <param name="nodeName"></param>
        public UnlockedShelf()
        {
            Rfids = new Dictionary<string, string>();
        }
        /// <summary>
        /// 空料架数量
        /// </summary>
        public int EmptyCnt { get; set; }
        public string NodeName;
        /// <summary>
        /// 解绑的RFID及时间
        /// </summary>
        public Dictionary<string, string> Rfids { get; set; }

        public List<string> GetRfids()
        {
            if (Rfids == null || Rfids.Count <= 0)
                return new List<string>();
            return Rfids.Keys.ToList<string>();
        }
        public Dictionary<string, string> GetRfidWithTime()
        {
            if (Rfids == null || Rfids.Count <= 0)
                return new Dictionary<string, string>();
            return Rfids;
        }
        /// <summary>
        ///添加解绑的空料架,如果RFID相同,不增加数量
        /// </summary>
        public bool Add(string rfid)
        {
            if (!rfid.Equals("") && !Rfids.Keys.Contains(rfid))
            {
                if (EmptyCnt < 0)
                {
                    EmptyCnt = 0;
                    if (Rfids.Count > 0)
                        Rfids.Clear();
                }
                int tmp = EmptyCnt;
                System.Threading.Interlocked.Increment(ref tmp);
                EmptyCnt = tmp;
                Rfids.Add(rfid, DateTime.Now.ToString("MM/dd/HH:mm:ss,fff"));
                return true;
            }
            return false;
        }
        /// <summary>
        /// 删除一个解绑任务
        /// </summary>
        public bool Delete(string rfid)
        {
            if (EmptyCnt > 0)
            {
                if (!rfid.Equals("") && Rfids.Keys.Contains(rfid))
                {
                    int tmp = EmptyCnt;
                    System.Threading.Interlocked.Decrement(ref tmp);
                    EmptyCnt = tmp;
                    if (EmptyCnt.Equals(0) && Rfids.Count > 0)
                    {
                        Rfids.Clear();
                    }
                    if (rfid.Equals(SettingString.RoomCFeederOut) || rfid.Equals(SettingString.RoomDFeederOut))
                        Rfids.Remove(rfid);
                    return true;
                }
            }
            else if (Rfids.Count > 0)
            {
                EmptyCnt = 0;
                Rfids.Clear();
                return true;
            }
            return false;
        }
    }
}