UnlockedShelf.cs 4.0 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)
        {
            this.NodeName = nodeName;
            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("yyyy/MM/dd/HH:mm:ss,fff"));
                 Common.WriteIni(NodeName, SettingString.EmptyShelfCnt, EmptyCnt.ToString());
                //using (System.IO.StreamWriter file = new System.IO.StreamWriter(Common.CONFIG_PATH + "UnlockInfo.txt"))
                //{
                //    foreach (var item in Rfids.Keys)
                //    {
                //        file.WriteLine(string.Format("{0},{1}", Rfids[item], item));
                //    }

                //}
                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))
                {
                    int tmp = EmptyCnt;
                    System.Threading.Interlocked.Decrement(ref tmp);
                    EmptyCnt = tmp;
                    if (EmptyCnt.Equals(0) && Rfids.Count >0)
                    {
                        Rfids.Clear();
                    }
                    //Rfids.Remove(rfid);
                    Common.WriteIni(NodeName, SettingString.EmptyShelfCnt, EmptyCnt.ToString());
                    //using (System.IO.StreamWriter file = new System.IO.StreamWriter(Common.CONFIG_PATH + "UnlockInfo.txt"))
                    //{
                    //    foreach (var item in Rfids.Keys)
                    //    {
                    //        file.WriteLine(string.Format("{0},{1}", Rfids[item], item));
                    //    }

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