| | |
| | | { |
| | | 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() { |
| | |
| | | |
| | | 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 文件未找到"); |
| | |
| | | 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++) { |
| | |
| | | //} |
| | | } |
| | | |
| | | 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 { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | |
| | | } |