BufferDataManager.cs 5.8 KB
using OnlineStore.Common;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;

namespace OnlineStore.DeviceLibrary
{
    public class BufferDataManager
    {
        /// <summary>
        /// A面有出库任务
        /// </summary>
        public static bool SideAHasOutTask = false;
        /// <summary>
        /// B面有出库任务
        /// </summary>
        public static bool SideBHasOutTask = false;
        private static InOutPosInfo aInStoreInfo = null;
        private static InOutPosInfo aOutStoreInfo = null;
        private static InOutPosInfo bInStoreInfo = null;
        private static InOutPosInfo bOutStoreInfo = null;
        private static InOutPosInfo aLineStoreInfo = null;
        private static InOutPosInfo bLineStoreInfo = null;
        private static InOutPosInfo labelInfo = null;
        public static bool ReelInBuffData(string posId)
        {
            if (posId.Equals(aOutStoreInfo?.PosId))
                return true;
            if (posId.Equals(bOutStoreInfo?.PosId))
                return true;
            if (posId.Equals(aLineStoreInfo?.PosId))
                return true;
            if (posId.Equals(bLineStoreInfo?.PosId))
                return true;
            return false;
        }
        /// <summary>
        /// 存储机构有出库任务
        /// </summary>
        /// <returns></returns>
        public static bool BoxHasOutTask()
        {
            return SideAHasOutTask || SideBHasOutTask;
        }
        /// <summary>
        /// A进料上暂存区料盘信息,null时无料
        /// </summary>
        public static InOutPosInfo AInStoreInfo
        {
            get { return aInStoreInfo; }
            set
            {
                aInStoreInfo = value;
                SaveData(Setting_Init.AInStoreInfo, value);
            }
        }
        /// <summary>
        /// A出料下暂存区料盘信息,null时无料
        /// </summary>
        public static InOutPosInfo AOutStoreInfo
        {
            get { return aOutStoreInfo; }
            set
            {
                aOutStoreInfo = value;
                SaveData(Setting_Init.AOutStoreInfo, value);
            }
        }

        /// <summary>
        /// B进料上暂存区料盘信息,null时无料
        /// </summary>
        public static InOutPosInfo BInStoreInfo
        {
            get { return bInStoreInfo; }
            set
            {
                bInStoreInfo = value;
                SaveData(Setting_Init.BInStoreInfo, value);
            }
        }
        /// <summary>
        /// B出料下暂存区料盘信息,null时无料
        /// </summary>
        public static InOutPosInfo BOutStoreInfo
        {
            get { return bOutStoreInfo; }
            set
            {
                bOutStoreInfo = value;
                SaveData(Setting_Init.BOutStoreInfo, value);
            }
        }
        /// <summary>
        /// A侧皮带线上料盘信息
        /// </summary>
        public static InOutPosInfo ALineStoreInfo
        {
            get { return aLineStoreInfo; }
            set
            {
                aLineStoreInfo = value;
                SaveData(Setting_Init.ALineStoreInfo, value);
            }
        }
        /// <summary>
        /// B侧皮带线上料盘信息
        /// </summary>
        public static InOutPosInfo BLineStoreInfo
        {
            get { return bLineStoreInfo; }
            set
            {
                bLineStoreInfo = value;
                SaveData(Setting_Init.BLineStoreInfo, value);
            }
        }
        /// <summary>
        ///  打印机出标对应的料盘信息
        /// </summary>
        public static InOutPosInfo LabelInfo
        {
            get { return labelInfo; }
            set
            {
                labelInfo = value;
                SaveData(Setting_Init.LabelInfo, value);
            }
        }
        public static void InitData()
        {
            AInStoreInfo = LoadInoutPosInfo(Setting_Init.AInStoreInfo);
            AOutStoreInfo = LoadInoutPosInfo(Setting_Init.AOutStoreInfo);
            BInStoreInfo = LoadInoutPosInfo(Setting_Init.BInStoreInfo);
            BOutStoreInfo = LoadInoutPosInfo(Setting_Init.BOutStoreInfo);
            ALineStoreInfo = LoadInoutPosInfo(Setting_Init.ALineStoreInfo);
            BLineStoreInfo = LoadInoutPosInfo(Setting_Init.BLineStoreInfo);
            LabelInfo = LoadInoutPosInfo(Setting_Init.LabelInfo);
        }
        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;
        }
        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}]");
        }

    }
}