UnlockedShelf.cs 2.8 KB
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AGVControl
{
    public class UnlockedShelf
    {
        /// <summary>
        /// 已解绑料架信息
        /// </summary>
        /// <param name="nodeName"></param>
        public UnlockedShelf(string nodeName)
        {
            NodeName = nodeName;
        }
        /// <summary>
        /// 空料架数量
        /// </summary>
        public int EmptyCnt
        {
            get { return emptyCnt; }

            set
            {
                EmptyCnt = emptyCnt;
            }
        }
        /// <summary>
        /// 节点名
        /// </summary>
        public string NodeName { get; private set; }
        private int emptyCnt = 0;

        /// <summary>
        /// 解绑的所有RFID
        /// </summary>
        private Dictionary<string,string> Rfids;

        /// <summary>
        ///添加解绑的空料架,如果RFID相同,不增加数量
        /// </summary>
        public bool Add(string rfid)
        {
            if (!rfid.Equals("") && !Rfids.Keys.Contains(rfid))
            {
                System.Threading.Interlocked.Increment(ref emptyCnt);
                Rfids.Add(rfid,DateTime.Now.ToString("yyyy/MM/dd/HH:mm:ss,fff"));
                Common.WriteIni(NodeName, SettingString.EmptyShelfRFIDs, string.Join(",", Rfids.Keys.ToArray()));
                Common.WriteIni(NodeName, SettingString.EmptyShelfCnt, emptyCnt.ToString());
                Common.LogInfo(string.Format("{0}解绑任务添加成功:RFID={1}", NodeName, rfid));
                return true;
            }
            Common.LogInfo(string.Format("{0}解绑任务添加失败:RFID={1}", NodeName, rfid));
            return false;
        }
        /// <summary>
        /// 删除一个解绑任务
        /// </summary>
        public bool Delete(string rfid)
        {
            if (emptyCnt > 0)
            {
                if (!rfid.Equals("") && Rfids.Keys.Contains(rfid))
                {
                    System.Threading.Interlocked.Decrement(ref emptyCnt);
                    Rfids.Remove(rfid);
                    Common.WriteIni(NodeName, SettingString.EmptyShelfCnt, emptyCnt.ToString());
                    Common.WriteIni(NodeName, SettingString.EmptyShelfRFIDs, string.Join(",", Rfids.Keys.ToArray()));
                    using ()
                    {

                    }
                        Common.LogInfo(string.Format("{0}解绑任务删除成功:RFID={1}", NodeName, rfid));
                    return true;
                }
            }
            else if (Rfids.Count > 0)
            {
                Rfids.Clear();
                return true;
            }
            Common.LogInfo(string.Format("{0}解绑任务删除失败:RFID={1}", NodeName, rfid));
            return false;
        }
    }
}