kazelee
2025-05-30 6b43055b5aa32dbea0dacee5a0235b0d5a76c293
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
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<Config.Area> Areas { get; set; } = new List<Config.Area>();
        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>>();
 
        public static Dictionary<string, int> AgvSite_ProdLineCodeMap { get; set; } = new Dictionary<string, int>();
 
        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<Config.Root>(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<object>().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<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 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<string> OnLoc { get; set; }
            public List<string> 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<Area> Areas { get; set; }
 
            public List<ProductionLine> ProductionLines { get; set; }
            public List<ProdAgvSite> 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尾箱回库 = "尾箱回库";
    }
 
}