BufferDataManager.cs 4.2 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public class BufferDataManager
    {
        private static InOutPosInfo trayInRobotInfo = null;
        private static InOutPosInfo trayInOutletInfo = null;
        private static InOutPosInfo trayInInletInfo = null;
        private static List<InOutPosInfo> traysInNGBoxInfo = null;
        /// <summary>
        ///机器人夹爪上的料盘信息,null时无料
        /// </summary>
        public static InOutPosInfo TrayInRobotInfo
        {
            get { return trayInRobotInfo; }
            set
            {
                trayInRobotInfo = value;
                SaveData(Setting_Init.TrayInRobotInfo, value);
            }
        }
        public static InOutPosInfo TrayInOutletInfo
        {
            get { return trayInOutletInfo; }
            set
            {
                trayInOutletInfo = value;
                SaveData(Setting_Init.TrayInOutletInfo, value);
            }
        }
        public static InOutPosInfo TrayInInletInfo
        {
            get { return trayInInletInfo; }
            set
            {
                trayInInletInfo = value;
                SaveData(Setting_Init.TrayInInletInfo, value);
            }
        }
        /// <summary>
        /// NG箱里的料盘信息
        /// </summary>
        public static List<InOutPosInfo> TraysInNGBoxInfo
        {
            get { return traysInNGBoxInfo; }
            private set { traysInNGBoxInfo = value;}
        }
        public static void AddTrayInNGBox(InOutPosInfo inOutPosInfo)
        {
            traysInNGBoxInfo.Add(inOutPosInfo);
            SaveData(Setting_Init.TraysInNGBoxInfo, traysInNGBoxInfo);
        }
        public static void ClearTraysInNGBox()
        {
            if (traysInNGBoxInfo == null)
                return;
            traysInNGBoxInfo.Clear();
            SaveData(Setting_Init.TraysInNGBoxInfo, traysInNGBoxInfo);
        }
        public static void InitData()
        {
            TrayInRobotInfo = LoadInoutPosInfo(Setting_Init.TrayInRobotInfo);
            TraysInNGBoxInfo = LoadNGBoxPosInfos(Setting_Init.TraysInNGBoxInfo);
            TrayInOutletInfo = LoadInoutPosInfo(Setting_Init.TrayInOutletInfo);
            TrayInInletInfo = LoadInoutPosInfo(Setting_Init.TrayInInletInfo);
        }
        private static InOutPosInfo LoadInoutPosInfo(string configStr)
        {
            string saveData = ConfigAppSettings.GetValue(configStr);
            if (!String.IsNullOrEmpty(saveData))
            {
                InOutPosInfo ainPos = JsonHelper.DeserializeJsonToObject<InOutPosInfo>(saveData);
                if (ainPos != null && (!ainPos.barcode.Equals("")) && (!ainPos.PosId.Equals("")))
                {
                    return ainPos;
                }
            }
            return null;
        }
        private static List<InOutPosInfo> LoadNGBoxPosInfos(string configStr)
        {
            string saveData = ConfigAppSettings.GetValue(configStr);
            if (!String.IsNullOrEmpty(saveData))
            {
                List<InOutPosInfo> ainPos = JsonHelper.DeserializeJsonToList<InOutPosInfo>(saveData);
                if (ainPos != null)
                {
                    return ainPos;
                }
            }
            return new List<InOutPosInfo>();
        }
        public static T LoadData<T>(string configStr) where T : class
        {
            string saveData = ConfigAppSettings.GetValue(configStr);
            if (!String.IsNullOrEmpty(saveData))
            {
                T data = JsonHelper.DeserializeJsonToObject<T>(saveData);
                return data;
            }
            return null;
        }

        public static void SaveData<T>(string configStr, T value) where T : class
        {
            string jsonData = "";
            if (!(value == null))
            {
                jsonData = JsonHelper.SerializeObject(value);
            }
            ConfigAppSettings.SaveValue(configStr, jsonData);
            LogUtil.info($"保存配置:[{ configStr}]=[{jsonData }]");
        }
    }
}