using System; using System.Collections.Generic; using System.IO; using HH.WCS.Mobox3.DSZSH.util; using Newtonsoft.Json; using Newtonsoft.Json.Linq; namespace HH.WCS.Mobox3.DSZSH { public class Settings { public static string WebApiUrl { get; set; } public static string NdcApiUrl { get; set; } public static string ErpApiUrl { get; set; } // ERP 反馈接口URL public static string SqlServer { get; set; } public static string TcpServerIp { get; set; } public static int TcpServerPort { get; set; } public static List Areas { get; set; } = new List(); public static List ProductionLines { get; set; } = new List(); public static List ProdAgvSites { get; set; } = new List(); /// /// 库区字典(加载后就不变) /// public static Dictionary> AreaMap { get; set; } = new Dictionary>(); public static Dictionary AgvSite_ProdLineCodeMap { get; set; } = new Dictionary(); public static void Init() { // 加载配置文件 LoadJson(); // 针对 Areas 进行转换:将 Config 的 List 加载到 Dict 中 LoadAreas(); } private static void LoadJson() { LogHelper.Info("加载配置文件信息 开始"); // JSON 文件路径 string filePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "./config/config.json"); try { // 读取 JSON 文件内容 string jsonContent = File.ReadAllText(filePath); // 反序列化为 Config 对象 var root = JsonConvert.DeserializeObject(jsonContent); WebApiUrl = root.WebApiUrl; NdcApiUrl = root.NdcApiUrl; ErpApiUrl = root.ErpApiUrl; SqlServer = root.SqlServer; TcpServerIp = root.TcpServerIp; TcpServerPort = root.TcpServerPort; Areas = root.Areas; ProductionLines = root.ProductionLines; ProdAgvSites = root.ProdAgvSite; foreach (var item in ProdAgvSites) { AgvSite_ProdLineCodeMap.Add(item.Code, item.ProdId); } } catch (FileNotFoundException) { LogHelper.Info("JSON 文件未找到"); } catch (JsonException ex) { LogHelper.Info($"JSON 解析错误: {ex.Message}"); } catch (Exception ex) { LogHelper.Info($"发生错误: {ex.Message}"); } LogHelper.Info("加载配置文件信息 完成"); } private static void LoadAreas() { foreach (var area in Areas) { AreaMap.Add(area.Name, area.Codes); } } private static void LoadProdLines() { //var db = new SqlHelper().GetInstance(); //for (int i = 0; i < ProductionLines.Count; i++) { // var line = ProductionLines[i]; // // 通过OnLoc OffLoc找到AGVsite然后写入字典 //} } } // [Convert JSON to C# Classes Online - Json2CSharp Toolkit](https://json2csharp.com/) public class Config { // Root myDeserializedClass = JsonConvert.DeserializeObject(myJsonResponse); public class Area { public string Name { get; set; } public List Codes { get; set; } } public class ProdAgvSite { public string Code { get; set; } public int ProdId { get; set; } } public class ProductionLine { public string Id { get; set; } public string Name { get; set; } public string PlcIp { get; set; } public int PlcPort { get; set; } public int SlaveId { get; set; } public List OnLoc { get; set; } public List OffLoc { get; set; } } public class Root { public string WebApiUrl { get; set; } public string NdcApiUrl { get; set; } public string ErpApiUrl { get; set; } public string SqlServer { get; set; } public string TcpServerIp { get; set; } public int TcpServerPort { get; set; } public List Areas { get; set; } public List ProductionLines { get; set; } public List ProdAgvSite { get; set; } } } public class AreaName { public const string B包装区 = "包装区"; public const string K空箱操作区 = "空箱操作区"; public const string M满箱操作区 = "满箱操作区"; public const string K空托存放区 = "空托存放区"; public const string K空箱货架区 = "空箱货架区"; public const string M满托货架区 = "满托货架区"; public const string M满箱货架区 = "满箱货架区"; public const string C抽检区 = "抽检区"; public const string C抽检异常区 = "抽检异常区"; public const string K空托入库接驳区 = "空托入库接驳区"; public const string K空箱入库接驳区 = "空箱入库接驳区"; public const string Q汽车出库区 = "汽车出库区"; public const string H火车出库区 = "火车出库区"; public const string Q汽车备货区 = "汽车备货区"; public const string H火车备货区 = "火车备货区"; } public class TaskName { public const string H好运箱_满箱下线入库 = "好运箱-满箱下线入库"; public const string H好运箱_空箱上线 = "好运箱-空箱上线"; public const string H好运箱_空箱入库 = "好运箱-空箱入库"; public const string C成品胶出库 = "成品胶出库"; public const string T托盘_满托下线入库 = "托盘-满托下线入库"; public const string T托盘_空托上线 = "托盘-空托上线"; public const string T托盘_空托入库 = "托盘-空托入库"; public const string C抽检_不合格移库 = "抽检-不合格移库"; public const string C抽检_出库 = "抽检-出库"; public const string C抽检_合格回库 = "抽检-合格回库"; public const string Y移库 = "移库"; public const string W尾箱回库 = "尾箱回库"; } }