kazelee
2025-06-30 f978872b6de4e7e20d992a2ee7cda902c11347b9
util/Settings.cs
@@ -12,34 +12,23 @@
    {
        public static string WebApiUrl { get; set; }
        public static string NdcApiUrl { get; set; }
        public static string SqlServer { get; set; }
        public static string TcpServerIp { get; set; }
        public static string ErpApiUrl { get; set; } // ERP 反馈接口URL
        public static int TcpServerPort { get; set; }
        public static List<Config.Area> Areas { get; set; } = new List<Config.Area>();
        public static List<Config.Task> Tasks { get; set; } = new List<Config.Task>();
        public static Config.ErpRoute ErpRoute { get; set; }
        public static string SqlServer { get; set; }
        //public static string TcpServerIp { get; set; }
        //public static int TcpServerPort { get; set; }
        public static List<Config.ProductionLine> ProductionLines { get; set; } = new List<Config.ProductionLine>();
        public static List<Config.ProdAgvSite> ProdAgvSites { get; set; } = new List<Config.ProdAgvSite>();
        /// <summary>
        /// 库区字典(加载后就不变)
        /// </summary>
        public static Dictionary<string, List<string>> AreaMap { get; set; } = new Dictionary<string, List<string>>();
        /// <summary>
        /// 任务字典(加载后就不变)
        /// </summary>
        public static Dictionary<string, Config.Task> TaskMap { get; set; } = new Dictionary<string, Config.Task>();
        public static List<Config.TaskInfo> TaskInfos { get; set; } = new List<Config.TaskInfo> { };
        public static Dictionary<string, int> AgvSite_ProdLineCodeMap { get; set; } = new Dictionary<string, int>();
        public static Dictionary<string, int> LocProdIdMap { get; set; } = new Dictionary<string, int> { };
        public static void Init() {
            // 加载配置文件
            LoadJson();
            // 针对 Areas 进行转换:将 Config 的 List 加载到 Dict 中
            LoadAreas();
            // 针对 Tasks 进行转换
            LoadTasks();
        }
        private static void LoadJson() {
@@ -56,18 +45,24 @@
                WebApiUrl = root.WebApiUrl;
                NdcApiUrl = root.NdcApiUrl;
                ErpApiUrl = root.ErpApiUrl;
                ErpRoute = root.ErpRoute;
                TcpServerPort= root.TcpServerPort;
                SqlServer = root.SqlServer;
                TcpServerIp = root.TcpServerIp;
                TcpServerPort = root.TcpServerPort;
                Areas = root.Areas;
                Tasks = root.Tasks;
                //TcpServerIp = root.TcpServerIp;
                //TcpServerPort = root.TcpServerPort;
                ProductionLines = root.ProductionLines;
                TaskInfos = root.TaskInfos;
                ProdAgvSites = root.ProdAgvSite;
                foreach (var item in ProdAgvSites) {
                    AgvSite_ProdLineCodeMap.Add(item.Code, item.ProdId);
                for (var i = 0; i < ProductionLines.Count; i++) {
                    if (ProductionLines[i].OnLoc == null) continue;
                    foreach (var onLoc in ProductionLines[i].OnLoc) {
                        LocProdIdMap.Add(onLoc, int.Parse(ProductionLines[i].Id));
                    }
                    foreach (var offLoc in ProductionLines[i].OffLoc) {
                        LocProdIdMap.Add(offLoc, int.Parse(ProductionLines[i].Id));
                    }
                }
            }   
            catch (FileNotFoundException) {
                LogHelper.Info("JSON 文件未找到");
@@ -81,18 +76,6 @@
            LogHelper.Info("加载配置文件信息 完成");
        }
        private static void LoadAreas() {
            foreach (var area in Areas) {
                AreaMap.Add(area.Name, area.Codes);
            }
        }
        private static void LoadTasks() {
            foreach (var task in Tasks) {
                TaskMap.Add(task.Name, task);
            }
        }
        private static void LoadProdLines() {
            //var db = new SqlHelper<object>().GetInstance();
            //for (int  i = 0;  i < ProductionLines.Count;  i++) {
@@ -101,21 +84,18 @@
            //}
        }
        public static Config.TaskInfo GetTaskInfo(ETask eTask) {
            return TaskInfos[(int)eTask];
        }
    }
    // [Convert JSON to C# Classes Online - Json2CSharp Toolkit](https://json2csharp.com/)
    public class Config {
        // Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
        public class Area {
            public string Name { get; set; }
            public List<string> Codes { get; set; }
        }
        public class ProdAgvSite {
            public string Code { get; set; }
            public int ProdId { get; set; }
        public class ErpRoute {
            public string CreateTaskReturn { get; set; }
            public string PickUpReturn { get; set; }
        }
        public class ProductionLine {
@@ -131,56 +111,41 @@
        public class Root {
            public string WebApiUrl { get; set; }
            public string NdcApiUrl { get; set; }
            public string SqlServer { get; set; }
            public string TcpServerIp { get; set; }
            public string ErpApiUrl { get; set; }
            public int TcpServerPort { get; set; }
            public List<Area> Areas { get; set; }
            public List<Task> Tasks { get; set; }
            public ErpRoute ErpRoute { get; set; }
            public string SqlServer { get; set; }
            public List<TaskInfo> TaskInfos { get; set; }
            public List<ProductionLine> ProductionLines { get; set; }
            public List<ProdAgvSite> ProdAgvSite { get; set; }
        }
        public class Task {
            public string Name { get; set; }
        public class TaskInfo {
            public string TaskName { get; set; }
            public List<string> StartAreas { get; set; }
            public List<string> EndAreas { get; set; }
            public List<string> EndAreas_Pallet { get; set; }
            public List<string> EndAreas_Goodpack { get; set; }
        }
    }
    public class AreaName {
        public const string 包装区 = "包装区";
        public const string 操作区 = "操作区";
        public const string 空托存放区 = "空托存放区";
        public const string 货架区 = "货架区";
        public const string 空箱存放区 = "空箱存放区";
        public const string 满托存放区 = "满托存放区";
        public const string 满箱存放区 = "满箱存放区";
        public const string 人工_AGV接驳区 = "人工-AGV接驳区";
        public const string 空托盘接驳区 = "空托盘接驳区";
        public const string 空箱接驳区 = "空箱接驳区";
    public enum ETask {
        M满托下线入库,
        M满箱下线入库,
        C成品胶出库,
        K空托上线出库,
        K空箱上线出库,
        K空托入库,
        K空箱入库,
        C抽检出库,
        C抽检合格回库,
        C抽检不合格移库,
        W尾料回库,
        Y移库,
    }
    public class TaskName {
        public const string 好运箱_满箱下线入库 = "好运箱-满箱下线入库";
        public const string 好运箱_空箱上线 = "好运箱-空箱上线";
        public const string 好运箱_空箱入库 = "好运箱-空箱入库";
        public const string 好运箱_空箱绑定 = "好运箱-空箱绑定";
        public const string 成品胶出库 = "成品胶出库";
        public const string 托盘_满托下线入库 = "托盘-满托下线入库";
        public const string 托盘_空托上线 = "托盘-空托上线";
        public const string 托盘_空托入库 = "托盘-空托入库";
        public const string 托盘_空托绑定 = "托盘-空托绑定";
        public const string 抽检_不合格移库 = "抽检-不合格移库";
        public const string 抽检_出库 = "抽检-出库";
        public const string 抽检_合格回库 = "抽检-合格回库";
        public const string 移库 = "移库";
        public const string 尾箱回库 = "尾箱回库";
    public static class ETaskExtensions {
        public static string Name(this ETask eTask) {
            return Settings.TaskInfos[(int)eTask].TaskName;
        }
    }
}