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 int TcpServerPort { get; set; } 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 ProductionLines { get; set; } = new List(); public static List TaskInfos { get; set; } = new List { }; public static Dictionary LocProdIdMap { get; set; } = new Dictionary { }; public static void Init() { // 加载配置文件 LoadJson(); } 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; ErpRoute = root.ErpRoute; TcpServerPort= root.TcpServerPort; SqlServer = root.SqlServer; //TcpServerIp = root.TcpServerIp; //TcpServerPort = root.TcpServerPort; ProductionLines = root.ProductionLines; TaskInfos = root.TaskInfos; 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 文件未找到"); } catch (JsonException ex) { LogHelper.Info($"JSON 解析错误: {ex.Message}"); } catch (Exception ex) { LogHelper.Info($"发生错误: {ex.Message}"); } LogHelper.Info("加载配置文件信息 完成"); } private static void LoadProdLines() { //var db = new SqlHelper().GetInstance(); //for (int i = 0; i < ProductionLines.Count; i++) { // var line = ProductionLines[i]; // // 通过OnLoc OffLoc找到AGVsite然后写入字典 //} } 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(myJsonResponse); public class ErpRoute { public string CreateTaskReturn { get; set; } public string PickUpReturn { 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 int TcpServerPort { get; set; } public ErpRoute ErpRoute { get; set; } public string SqlServer { get; set; } public List TaskInfos { get; set; } public List ProductionLines { get; set; } } public class TaskInfo { public string TaskName { get; set; } public List StartAreas { get; set; } public List EndAreas { get; set; } public List EndAreas_Pallet { get; set; } public List EndAreas_Goodpack { get; set; } } } public enum ETask { M满托下线入库, M满箱下线入库, C成品胶出库, K空托上线出库, K空箱上线出库, K空托入库, K空箱入库, C抽检出库, C抽检合格回库, C抽检不合格移库, W尾料回库, Y移库, } public static class ETaskExtensions { public static string Name(this ETask eTask) { return Settings.TaskInfos[(int)eTask].TaskName; } public static Config.TaskInfo Info(this ETask eTask) { return Settings.TaskInfos[(int)eTask]; } public static List StartAreas(this ETask eTask) { return Settings.TaskInfos[(int)(eTask)].StartAreas; } public static List EndAreas(this ETask eTask) { return Settings.TaskInfos[((int)eTask)].EndAreas; } } }