From 53d582ad41d8450b21045b2d862a532ecc57a9ba Mon Sep 17 00:00:00 2001
From: kazelee <1847801760@qq.com>
Date: 星期一, 26 五月 2025 17:29:57 +0800
Subject: [PATCH] 抽检移库基本测完,添加TCP模拟测试输送线产品下线的逻辑

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

diff --git a/core/WCSCore.cs b/core/WCSCore.cs
index 95eff3f..e5a61f9 100644
--- a/core/WCSCore.cs
+++ b/core/WCSCore.cs
@@ -5,7 +5,6 @@
 using System.Threading.Tasks;
 
 using HH.WCS.Mobox3.DSZSH.device;
-
 using HH.WCS.Mobox3.DSZSH.models;
 using HH.WCS.Mobox3.DSZSH.process;
 using HH.WCS.Mobox3.DSZSH.util;
@@ -14,7 +13,6 @@
 using Newtonsoft.Json;
 
 using static HH.WCS.Mobox3.DSZSH.api.ApiModel;
-
 
 namespace HH.WCS.Mobox3.DSZSH.core {
     public class WCSCore {
@@ -102,11 +100,11 @@
                 case 2: // 瀹屾垚
                     WCSHelper.End(TN_Task); // 浠诲姟鐘舵�鏀规垚缁撴潫
 
-                    if (TN_Task.S_TYPE == TaskName.鎶芥_鍑哄簱) {
-                        var checkCompleteTask = Task.Run(() => {
-                            UpdateCheckTaskState(3);
-                        });
-                    }
+                    //if (TN_Task.S_TYPE == TaskName.鎶芥_鍑哄簱) {
+                    //    var checkCompleteTask = Task.Run(() => {
+                    //        UpdateCheckTaskState(3);
+                    //    });
+                    //}
 
                     break;
                 case 7: // 寮傚父
@@ -123,45 +121,100 @@
         }
 
         public static ReturnResult SafetyInteraction(SafetyInteractionInfo model) {
-            var gzResult = new ReturnResult();
             var db = new SqlHelper<object>().GetInstance();
-            ModbusHelper.Relink();
+            var info = "";
 
             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 prodLineInfo = Settings.ProductionLines[0];
-                var prodLineDevice = new ProductionLineDevice(prodLineInfo.PlcIp, prodLineInfo.PlcPort);
+                if (!Settings.AgvSite_ProdLineCodeMap.TryGetValue(model.station_name, out int prodIndex)) {
+                    info = $"AGV 绔欑偣{model.station_name}涓嶆槸鍚堟硶鐨勪骇绾挎帴椹充綅绔欑偣";
+                    LogHelper.Info(info);
+                    return NewReturnResult(1, info);
+                }
+
+                var prodLineInfo = Settings.ProductionLines[prodIndex];
+
+                var prodLineDevice = new ProductionLineDevice(prodLineInfo);
                 if (!prodLineDevice.LoadDeviceStateOk()) {
-                    LogHelper.Info("鍔犺浇璁惧淇℃伅澶辫触");
+                    info = "涓庝骇绾胯澶囬�璁け璐�;
+                    LogHelper.Info(info);
+                    return NewReturnResult(2, info);
                 }
 
-                var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no);
-                if (tn_task == null) {
-                    LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�);
+                //var tn_task = db.Queryable<TN_Task>().First(a => a.S_CODE == model.task_no);
+                //if (tn_task == null) {
+                //    LogHelper.Info($"浠诲姟鍙�'{model.task_no}' 涓嶅瓨鍦�);
+                //}
+                //if (prodLineDevice.SystemState == 1) {
+                //    if (prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱) {
+                //        prodLineDevice.AgvPicking = 1;
+                //    }
+                //    if (prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_绌烘墭涓婄嚎) {
+                //        prodLineDevice.AgvPlacingPallet = 1;
+                //    }
+                //}
+
+                if (prodLineDevice.SystemState != 1) {
+                    info = $"褰撳墠浜х嚎鏃犳硶涓嶢GV鑱斿姩锛氱姸鎬亄prodLineDevice.SystemState}";
+                    LogHelper.Info(info);
+                    return NewReturnResult(3, info);
                 }
 
-                // 寰呬慨鏀癸細琛ュ厖涓嶅悓鍒嗘敮AGV鍒ゆ柇
-                if (prodLineDevice.SystemState == 1) {
-                    if (prodLineDevice.FullOffline == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_婊℃墭涓嬬嚎鍏ュ簱) {
-                        prodLineDevice.AgvPicking = 1;
+                if (model.apply_code == "5") { // 璇锋眰鍙栬揣
+                    if (prodLineDevice.FullOffline != 1) {
+                        info = $"褰撳墠杈撻�绾挎弧鏂欎笅绾夸俊鍙蜂笉涓�锛屾棤娉曞彇璐�;
+                        LogHelper.Info(info);
+                        return NewReturnResult(4, info);
                     }
-                    if (prodLineDevice.AllowAgvPlacePallet == 1 && tn_task.S_TYPE == TaskName.鎵樼洏_绌烘墭涓婄嚎) {
-                        prodLineDevice.AgvPlacingPallet = 1;
+                    
+                    if (!prodLineDevice.SetAgvPicking(1)) {
+                        info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿澶辫触";
+                        LogHelper.Info(info);
+                        return NewReturnResult(5, info);
                     }
+                    
+                    info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鍙栬揣淇″彿鎴愬姛";
+                    LogHelper.Info(info);
+                    return NewReturnResult(0, info);
+
+                }
+                else if (model.apply_code == "1") { // 璇锋眰鍗歌揣
+                    if (prodLineDevice.AllowAgvPlacePallet != 1) {
+                        info = $"褰撳墠杈撻�绾垮厑璁告斁鎵樼洏淇″彿涓嶄负1锛屾棤娉曟斁璐�;
+                        LogHelper.Info(info);
+                        return NewReturnResult(6, info);
+                    }
+
+                    if (!prodLineDevice.SetAgvPlacingPallet(1)) {
+                        info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿澶辫触";
+                        LogHelper.Info(info);
+                        return NewReturnResult(7, info);
+                    }
+
+                    info = $"鍚戣緭閫佺嚎鍐欏叆鍏佽鏀捐揣淇″彿鎴愬姛";
+                    LogHelper.Info(info);
+                    return NewReturnResult(0, info);
+                }
+                else {
+                    info = $"褰撳墠AGV璇锋眰鐮佷笉涓�5鍙栬揣 鎴�1鍗歌揣";
+                    LogHelper.Info(info);
+                    return NewReturnResult(8, info);
                 }
 
-                LogHelper.Info(JsonConvert.SerializeObject(prodLineDevice, Formatting.Indented));
-                return gzResult;
             }
             catch (Exception ex) {
-                LogHelper.Info($"鍙戠敓浜嗗紓甯革細{ex.Message}");
-                return gzResult;
+                info = $"鍙戠敓浜嗗紓甯革細{ex.Message}";
+                LogHelper.InfoEx(ex);
+                return NewReturnResult(1, info);
             }
         }
 
         public static void UpdateOutboundTaskState(int spotStateCode) {
-
             var db = new SqlHelper<object>().GetInstance();
 
             var detail = db.Queryable<TN_Outbound_Detail>()
@@ -280,5 +333,26 @@
                 tran.CommitTran();
             }
         }
+
+        /// <summary>
+        /// 浠诲姟鍒嗗彂锛屾牴鎹皟搴︾被鍨嬪彂缁欎笉鍚岀殑璋冨害绯荤粺
+        /// </summary>
+        internal static void Dispatch() {
+            //鏌ヨ浠诲姟
+            //鑾峰彇鎵�湁绛夊緟鐨勪换鍔�+            var list = WCSHelper.GetWaitingTaskList();
+            LogHelper.Info("绛夊緟浠诲姟淇℃伅" + JsonConvert.SerializeObject(list), "API");
+            if (list.Count > 0) {
+                list.ForEach(task => {
+                    //浣跨敤鑷畾涔変换鍔℃帹閫�+                    TaskProcess.SendTask(task);//璋冨害NDC鎴栨澀濂ユ垨鍥借嚜璁惧
+                    //TaskProcess.SendGZTask(task);///璋冨害鍥借嚜璁惧
+
+                });
+            }
+            else {
+                LogHelper.Info("鏆傛棤浠诲姟");
+            }
+        }
     }
 }

--
Gitblit v1.9.1