From f978872b6de4e7e20d992a2ee7cda902c11347b9 Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 30 六月 2025 15:31:56 +0800
Subject: [PATCH] 优化配置文件读取逻辑,将ERP反馈接口写入配置文件中配置

---
 core/WCSCore.cs |   45 ++++++++++++++++++++++++++-------------------
 1 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index f0d8b90..ab8fbe7 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -76,7 +76,7 @@
                     WCSHelper.UpdateStatus(TN_Task, "鍙栬揣瀹屾垚"); // 浠诲姟鐘舵�鏀规垚鍙栬揣瀹屾垚
                     TaskProcess.OperateStatus(TN_Task, 4); // 璧风偣瀹瑰櫒璐т綅瑙g粦,瑙i攣璧风偣
 
-                    if (TN_Task.S_TYPE == TaskName.C鎴愬搧鑳跺嚭搴� {
+                    if (TN_Task.S_TYPE == ETask.C鎴愬搧鑳跺嚭搴�Name()) {
                         var nextOutboundTask = Task.Run(() => {
                             UpdateOutboundTaskState(3);
                         });
@@ -128,8 +128,8 @@
                 var cgDetail = new TN_CG_Detail(); // 濡傛灉娌℃湁淇℃伅锛岄粯璁ゅ氨鏄┖鍊硷紝鍙互鐩存帴濉叆锛屼笉闇�鍒ゆ柇
                 
                 //var emptyTask = false; // 绌烘墭/绌虹浠诲姟
-                if (task.S_TYPE != TaskName.H濂借繍绠盻绌虹涓婄嚎 && task.S_TYPE != TaskName.H濂借繍绠盻绌虹鍏ュ簱 &&
-                    task.S_TYPE != TaskName.T鎵樼洏_绌烘墭涓婄嚎 && task.S_TYPE != TaskName.T鎵樼洏_绌烘墭鍏ュ簱) {
+                if (task.S_TYPE != ETask.K绌烘墭涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌烘墭鍏ュ簱.Name() &&
+                    task.S_TYPE != ETask.K绌虹涓婄嚎鍑哄簱.Name() && task.S_TYPE != ETask.K绌虹鍏ュ簱.Name()) {
                     // 闈炵┖鎵�绌虹浠诲姟锛堢┖鎵�绌虹浠诲姟鏃犳硶鍦–GDetail鏌ュ埌鐗╂枡淇℃伅锛�                     //emptyTask= true;
                     cgDetail = db.Queryable<TN_CG_Detail>()
@@ -147,8 +147,8 @@
 
                 var isInbound = false; // 鍏ュ簱绫诲瀷鐨勪换鍔★紙鍖呮嫭绉诲簱绫讳换鍔★級
                 var inboundTasks = new List<string> {
-                    TaskName.H濂借繍绠盻婊$涓嬬嚎鍏ュ簱, TaskName.H濂借繍绠盻绌虹鍏ュ簱, TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱, TaskName.T鎵樼洏_绌烘墭鍏ュ簱,
-                    TaskName.C鎶芥_鍚堟牸鍥炲簱, TaskName.C鎶芥_涓嶅悎鏍肩Щ搴� TaskName.Y绉诲簱
+                    ETask.M婊℃墭涓嬬嚎鍏ュ簱.Name(), ETask.K绌虹鍏ュ簱.Name(), ETask.M婊℃墭涓嬬嚎鍏ュ簱.Name(), ETask.K绌烘墭鍏ュ簱.Name(),
+                    ETask.C鎶芥鍚堟牸鍥炲簱.Name(), ETask.C鎶芥涓嶅悎鏍肩Щ搴�Name(), ETask.Y绉诲簱.Name()
                 };
                 if (inboundTasks.Contains(task.S_TYPE)) {
                     isInbound= true;
@@ -209,11 +209,17 @@
             try {
                 ModbusHelper.Relink();
 
-                //var loc = db.Queryable<TN_Location>()
-                //    .Where(l => l.S_AGV_SITE == model.station_name && Settings.AreaMap[AreaName.鍖呰鍖篯.Contains(l.S_AREA_CODE))
-                //    .First();
+                var BZQ = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱).StartAreas;
+                var loc = db.Queryable<TN_Location>()
+                    .Where(l => BZQ.Contains(l.S_AREA_CODE) && l.S_AGV_SITE == model.station_name).First();
 
-                if (!Settings.AgvSite_ProdLineCodeMap.TryGetValue(model.station_name, out int prodIndex)) {
+                if (loc == null) {
+                    info = $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣";
+                    LogHelper.Info(info);
+                    return NewReturnResult(1, info);
+                }
+
+                if (!Settings.LocProdIdMap.TryGetValue(loc.S_CODE, out var prodIndex)) {
                     info = $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣";
                     LogHelper.Info(info);
                     return NewReturnResult(1, info);
@@ -296,7 +302,7 @@
         }
 
         public static void UpdateOutboundTaskState(int spotStateCode) {
-            var taskName = TaskName.C鎴愬搧鑳跺嚭搴�
+            var taskName = ETask.C鎴愬搧鑳跺嚭搴�Name();
             var db = new SqlHelper<object>().GetInstance();
 
             var detail = db.Queryable<TN_Outbound_Detail>()
@@ -419,7 +425,7 @@
                 model.hwzt = "宸插嚭搴�;
 
                 var jsonInfo = JsonConvert.SerializeObject(model);
-                var result = httpH.WebPost(Settings.ErpApiUrl + "PickUpReturn", jsonInfo);
+                var result = httpH.WebPost(Settings.ErpApiUrl + Settings.ErpRoute.PickUpReturn, jsonInfo);
 
                 LogHelper.InfoApi($"鍙栬揣瀹屾垚鍙嶉ERP鎺ュ彛锛岀粨鏋�{result}锛岃皟鐢ㄥ弬鏁帮細", model);
 
@@ -458,7 +464,7 @@
         // TCP 闈炶疆璇㈡柟寮�妯℃嫙浜х嚎涓嬬嚎鐨勫皾璇� 
         public static void StartServer() {
-            var ListenPort = 6000;
+            var ListenPort = Settings.TcpServerPort;
             TcpListener listener = new TcpListener(IPAddress.Any, ListenPort);
             listener.Start();
             Console.WriteLine($"鍚庡彴鏈嶅姟宸插惎鍔紝鐩戝惉绔彛 {ListenPort}...");
@@ -524,21 +530,22 @@
             var db = new SqlHelper<object>().GetInstance();
             var info = "";
 
-            const string taskName = TaskName.T鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱;
-            const string startAreaName = AreaName.B鍖呰鍖�
-            const string endAreaName = AreaName.M婊℃墭璐ф灦鍖�
+            var taskInfo = Settings.GetTaskInfo(ETask.M婊℃墭涓嬬嚎鍏ュ簱);
+            var taskName = taskInfo.TaskName;
+            var startAreas = taskInfo.StartAreas;
+            var endAreas = taskInfo.EndAreas;
             const string cntrType = "鎵樼洏";
 
             try {
                 var startLoc = db.Queryable<TN_Location>()
                 .Where(l => l.S_CODE == startLocCode)
-                .Where(l => Settings.AreaMap[startAreaName].Contains(l.S_AREA_CODE))
+                .Where(l => startAreas.Contains(l.S_AREA_CODE))
                 .Where(l => l.N_LOCK_STATE == 0 && l.S_LOCK_STATE == "鏃� && l.C_ENABLE == "Y")
                 //.Where(l => l.N_CURRENT_NUM == 0) // 缁戝畾鍓�                 .First();
 
                 if (startLoc == null) {
-                    info = $"鍦�{startAreaName}'涓病鏈夋壘鍒拌捣鐐硅揣浣�{startLocCode}'锛屾垨涓嶆弧瓒宠姹傦細鏈笂閿併�褰撳墠瀹瑰櫒鏁伴噺=0";
+                    info = $"娌℃湁鎵惧埌璧风偣璐т綅'{startLocCode}'锛屾垨涓嶆弧瓒宠姹傦細鏈笂閿併�褰撳墠瀹瑰櫒鏁伴噺=0";
                     LogHelper.Info(info);
                     return new Result<bool>(false, info);
                 }
@@ -556,14 +563,14 @@
                 startLoc.N_CURRENT_NUM = 1; // 缁戝畾鍚� 
                 var endLoc = db.Queryable<TN_Location>()
-                    .Where(a => Settings.AreaMap[endAreaName].Contains(a.S_AREA_CODE))
+                    .Where(a => endAreas.Contains(a.S_AREA_CODE))
                     .Where(a => a.N_LOCK_STATE == 0 && a.S_LOCK_STATE == "鏃� && a.C_ENABLE == "Y") // 绛涢�锛氭湭涓婇攣
                     .Where(a => a.N_CURRENT_NUM == 0) // 绛涢�锛氱┖璐т綅
                     .OrderBy(l => l.N_LAYER)
                     .First();
 
                 if (endLoc == null) {
-                    info = $"鍦ㄧ粓鐐硅揣鍖�{endAreaName}'涓紝娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆戯紝闇�婊¤冻瑕佹眰锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
+                    info = $"娌℃湁鎵惧埌鍚堥�鐨勩�缁堢偣璐т綅銆戯紝闇�婊¤冻瑕佹眰锛氭湭涓婇攣銆佸綋鍓嶅鍣ㄦ暟閲�0";
                     LogHelper.Info(info);
                     return new Result<bool>(false, info);
                 }

--
Gitblit v1.9.1