From aa6544e70edfa130c7d226791347ab14580af1d1 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期五, 20 六月 2025 13:58:19 +0800
Subject: [PATCH] 1

---
 2025年6月12日/AuxAllWCS/Build/Project/代码/界面事件.cs              | 1056 ---------------------------
 2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs | 1162 +++++++++++++++++++++++++++++++
 2 files changed, 1,181 insertions(+), 1,037 deletions(-)

diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
index 4c1e896..4176027 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/VS\350\207\252\345\256\232\344\271\211\347\261\273/AutoThread.cs"
@@ -7,6 +7,11 @@
 using System.Reflection;
 using System.Text;
 using System.Threading.Tasks;
+using GZ.Modular.Redis;
+using GZ.DB.Entity.OIDATABASE;
+using GZ.DB.IRepository.OIDATABASE;
+using GZ.DB.Repository.OIDATABASE;
+using static System.Windows.Forms.VisualStyles.VisualStyleElement;
 
 namespace GZ.Projects.AuxAllWCS
 {
@@ -79,21 +84,1174 @@
             }
         }
 
+        /// <summary>
+        /// 閰嶇疆鍒濆鍖栥�
+        /// </summary>
+        /// <param name="tag"></param>
+        /// <param name="action"></param>
         public void ThreadSettingInit(Tag tag, Action action)
         {
             Console.WriteLine("鍒濆鍖栭厤缃�绾跨▼ run " + tag.Global.SettingsOver);
             if (tag.Global.SettingsOver == 0)
             {
-                action?.Invoke(); 
+                action?.Invoke();
                 tag.Global.SettingsOver = 1;
             }
             else if (Settings.deviceInfos.Count == 0)
             {
                 tag.Global.SettingsOver = 0;
             }
-            
         }
 
+        /// <summary>
+        /// 鎹烽『1 淇″彿澶勭悊
+        /// </summary>
+        /// <param name="tag"></param>
+        public void ThreadJS1(Tag tag)
+        {
+            Console.WriteLine($"ThreadJS1 鎹烽『1 淇″彿澶勭悊 =================> ");
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『1");
+
+            if (VERX != null)
+            {
+                if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)
+                {
+                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                    {
+                        requestType = 4,
+                        endBit = VERX.location[0]
+                    }));
+                    LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
+                    if (str.Contains("true"))
+                    {
+                        //tag.Js1.D1212_LAST = 1;
+                        RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg);
+                    }
+                }
+                if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)
+                {
+                    //tag.Js1.D1212_LAST = 0; 
+                    RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg);
+                }
+                if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)
+                {
+                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                    {
+                        requestType = 4,
+                        endBit = VERX.location[1]
+                    }));
+                    LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
+                    if (str.Contains("true"))
+                    {
+                        //tag.Js1.D1213_LAST = 1;
+                        RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg);
+                    }
+                }
+                if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)
+                {
+                    //tag.Js1.D1213_LAST = 0;
+                    RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg);
+                }
+            }
+        }
+        /// <summary>
+        /// 鎹烽『2 淇″彿澶勭悊
+        /// </summary>
+        /// <param name="tag"></param>
+        public void ThreadJS2(Tag tag)
+        {
+            Console.WriteLine($"ThreadJS2 鎹烽『2 淇″彿澶勭悊 =================> ");
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『2");
+
+            if (VERX != null)
+            {
+                if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)
+                {
+                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                    {
+                        requestType = 4,
+                        endBit = VERX.location[0]
+                    }));
+                    LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
+                    if (str.Contains("true"))
+                    {
+                        //tag.Js2.D1212_LAST = 1;
+
+                        RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg);
+                    }
+                }
+                if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)
+                {
+                    //tag.Js2.D1212_LAST = 0;
+
+                    RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg);
+                }
+                if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)
+                {
+                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                    {
+                        requestType = 4,
+                        endBit = VERX.location[1]
+                    }));
+                    LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
+                    if (str.Contains("true"))
+                    {
+                        //tag.Js2.D1213_LAST = 1;
+
+                        RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg);
+                    }
+                }
+                if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)
+                {
+                    //tag.Js2.D1213_LAST = 0;
+
+                    RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg);
+                }
+            }
+        }
+        /// <summary>
+        /// 缁村笇灏� 宸�+        /// </summary>
+        /// <param name="tag"></param>
+        public void Threadwxr1L(Tag tag)
+        {
+            Console.WriteLine($"Threadwxr1L 缁村笇灏� 宸�=================> ");
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1"));
+
+            if (VERX != null)
+            {
+                if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)
+                {
+                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
+                    {
+                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                        {
+                            requestType = 1,
+                            cntrCode = traycode,
+                            startBit = VERX.location[0],
+                            endBit = ""
+                        }));
+                        LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
+                        if (str.Contains("true"))
+                        {
+                            tag.wxr1.R44_LAST = true;
+                        }
+                    }
+                    else
+                    {
+                        TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
+                    }
+                }
+                else
+                {
+                    //TaskRepository ts = new TaskRepository();
+                    if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
+                    {
+                        if (tag.wxr1.R10)
+                        {
+                            tag.wxr1.R10_LAST = false;
+                        }
+                        else
+                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
+                        {
+                            //涓婃姤鏍¢獙銆�+                            ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
+                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
+                            {
+                                sceneType = 1,
+                                cntrCode = traycode,
+                            }));
+                            if (str.Contains("true"))
+                            {
+                                //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
+                                tag.wxr1.R10 = true;
+                                tag.wxr1.R44_LAST = false;
+                            }
+                            else
+                            {
+                                //鎶ヨ銆�+                            }
+                        }
+                        else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 缁村笇灏� 鍙�+        /// </summary>
+        /// <param name="tag"></param>
+        public void Threadwxr1R(Tag tag)
+        {
+            Console.WriteLine($"Threadwxr1R 缁村笇灏� 鍙�=================> ");
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1"));
+
+            if (VERX != null)
+            {
+                if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)
+                {
+                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
+                    {
+                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                        {
+                            requestType = 1,
+                            cntrCode = traycode,
+                            startBit = VERX.location[1],
+                            endBit = ""
+                        }));
+                        LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
+                        if (str.Contains("true"))
+                        {
+                            tag.wxr1.R46_LAST = true;
+                        }
+                    }
+                    else
+                    {
+                        TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
+                    }
+                }
+                else
+                {
+                    if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
+                    {
+                        if (tag.wxr1.R11)
+                        {
+                            tag.wxr1.R11_LAST = false;
+                        }
+                        else
+                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
+                        {
+                            //涓婃姤鏍¢獙銆�+                            ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
+                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
+                            {
+                                sceneType = 1,
+                                cntrCode = traycode,
+                            }));
+                            if (str.Contains("true"))
+                            {
+                                //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
+                                tag.wxr1.R11 = true;
+                                tag.wxr1.R46_LAST = false;
+                            }
+                            else
+                            {
+                                //鎶ヨ銆�+                            }
+                        }
+                        else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 缁村笇灏� 宸�+        /// </summary>
+        /// <param name="tag"></param>
+        public void Threadwxr2L(Tag tag)
+        {
+            Console.WriteLine($"Threadwxr2L 缁村笇灏� 宸�=================> ");
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2"));
+
+            if (VERX != null)
+            {
+                if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)
+                {
+                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
+                    {
+                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                        {
+                            requestType = 1,
+                            cntrCode = traycode,
+                            startBit = VERX.location[0],
+                            endBit = ""
+                        }));
+                        LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
+                        if (str.Contains("true"))
+                        {
+                            tag.wxr2.R44_LAST = true;
+                        }
+                    }
+                    else
+                    {
+                        TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
+                    }
+                }
+                else
+                {
+                    if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
+                    {
+                        if (tag.wxr2.R10)
+                        {
+                            tag.wxr2.R10_LAST = false;
+                        }
+                        else
+                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
+                        {
+                            //涓婃姤鏍¢獙銆�+                            ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
+                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
+                            {
+                                sceneType = 1,
+                                cntrCode = traycode,
+                            }));
+                            if (str.Contains("true"))
+                            {
+                                //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
+                                tag.wxr2.R10 = true;
+                                tag.wxr2.R44_LAST = false;
+                            }
+                            else
+                            {
+                                //鎶ヨ銆�+                            }
+                        }
+                        else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
+                    }
+                }
+            }
+        }
+
+        /// <summary>
+        /// 缁村笇灏� 鍙�+        /// </summary>
+        /// <param name="tag"></param>
+        public void Threadwxr2R(Tag tag)
+        {
+            Console.WriteLine($"Threadwxr2R 缁村笇灏� 鍙�=================> ");
+
+            var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2"));
+
+            if (VERX != null)
+            {
+                if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)
+                {
+                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
+                    {
+                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                        {
+                            requestType = 1,
+                            cntrCode = traycode,
+                            startBit = VERX.location[1],
+                            endBit = ""
+                        }));
+                        LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
+                        if (str.Contains("true"))
+                        {
+                            tag.wxr2.R46_LAST = true;
+                        }
+                    }
+                    else
+                    {
+                        TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
+                    }
+                }
+                else
+                {
+                    if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
+                    {
+                        if (tag.wxr2.R11)
+                        {
+                            tag.wxr2.R11_LAST = false;
+                        }
+                        else
+                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
+                        {
+                            //涓婃姤鏍¢獙銆�+                            ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
+                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
+                            {
+                                sceneType = 1,
+                                cntrCode = traycode,
+                            }));
+                            if (str.Contains("true"))
+                            {
+                                //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
+                                tag.wxr2.R11 = true;
+                                tag.wxr2.R46_LAST = false;
+                            }
+                            else
+                            {
+                                //鎶ヨ銆�+                            }
+                        }
+                        else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
+                    }
+                }
+            }
+        }
+
+
+        public void ThreadTaskRun(Tag tag, Func<TaskEntity, bool> action)
+        {
+            Console.WriteLine($"ThreadTaskRun 浠诲姟涓嬪彂 =================> ");
+            LogHelper.Info("ThreadTaskRun 浠诲姟涓嬪彂");
+
+            ITaskRepository taskservice = new TaskRepository();
+            try
+            {
+                LogHelper.Info("浠诲姟涓嬪彂  ARG 浠诲姟 杩涘叆");
+                #region AGV浠诲姟涓嬪彂銆�+
+                var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "AGV");
+                if (tklist.Any())
+                    foreach (var tk in tklist.GroupBy(item =>
+                    {
+                        var ticks = item.T_CREATE.Ticks;
+                        return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
+                    }).OrderBy(x => x.Key))
+                    {
+                        var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();
+                        foreach (var t in ts)
+                        {
+                            var b = false;
+                            b = action?.Invoke(t) ?? false; //new ViewModel().RunTask(t);
+
+                            if (b)
+                            {
+                                t.S_B_STATE = "宸叉帹閫�;
+                                taskservice.Update(t);
+                            }
+                        }
+                        break;
+                    }
+                //foreach (var tk in tklist.GroupBy(item =>
+                //{
+                //    var ticks = item.T_CREATE.Ticks;
+                //    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
+                //}).OrderBy(x => x.Key))
+                //if (tklist.Any())
+                //{
+
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info(ex.Message + ex.StackTrace);
+            }
+            try
+            {
+                LogHelper.Info("浠诲姟涓嬪彂  Rgv 浠诲姟 杩涘叆");
+                #region Rgv
+
+                LogHelper.Info($"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆�);
+                var task1Isrun = false;
+                if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)
+                {
+                    task1Isrun = true;
+                    //if (tag.RGV.bit1taskOver_LAST == 1)
+                    //    RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
+                }
+                var task2Isrun = false;
+                if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)
+                {
+                    task2Isrun = true;
+                    //if (tag.RGV.bit2taskOver_LAST == 1)
+                    //    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
+                }
+                if (task1Isrun || task2Isrun)
+                {
+                    string mes = "";
+                    if (task1Isrun)
+                        mes += tag.RGV.ReadTask1No + "鎵ц涓�..";
+                    if (task2Isrun)
+                        mes += tag.RGV.ReadTask2No + "鎵ц涓�..";
+                    LogHelper.Info($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�");
+                    throw new Exception($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�");
+                }
+                var thisOver = 0;
+                TaskEntity task1 = null;
+                TaskEntity task2 = null;
+
+                LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆�);
+                if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)
+                {
+                    var taskno = tag.RGV.ReadTask1No;
+                    LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}");
+                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
+                    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
+
+                    LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}");
+                    if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)
+                    {
+                        if (task1.S_B_STATE != "瀹屾垚")
+                        {
+                            thisOver = 1;
+                            if (task1.S_B_STATE == "鍙栬揣瀹屾垚")
+                            {
+                                task1.S_B_STATE = "瀹屾垚";
+                            }
+                            else
+                            {
+                                task1.S_B_STATE = "鍙栬揣瀹屾垚";
+                            }
+                            LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}");
+                            //tag.RGV.bit1taskOver_LAST = 1;
+                            RedisHelper.Add($"RGV.bit1taskOver_LAST", "1", out string msg);
+                            LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鍐欏鐞�);
+                            taskservice.Update(task1);
+                            LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鏇存柊銆�);
+                        }
+                        else
+                        {
+                            LogHelper.Info("RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�);
+                        }
+                    }
+                }
+                else if (tag.RGV.ReadTask1No == 0)
+                {
+                    LogHelper.Info($"RGV 1宸ヤ綅娌℃湁浠诲姟銆�);
+                }
+
+                LogHelper.Info($"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆�);
+                if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)
+                {
+                    var taskno = tag.RGV.ReadTask2No;
+                    LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}");
+                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
+                    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
+
+                    LogHelper.Info($"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}");
+                    if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)
+                    {
+                        if (task2.S_B_STATE != "瀹屾垚")
+                        {
+                            thisOver = 2;
+                            if (task2.S_B_STATE == "鍙栬揣瀹屾垚")
+                            {
+                                task2.S_B_STATE = "瀹屾垚";
+                            }
+                            else
+                            {
+                                task2.S_B_STATE = "鍙栬揣瀹屾垚";
+                            }
+                            LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}");
+                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "1", out string msg);
+                            LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鍐欏鐞�);
+                            taskservice.Update(task2);
+                            LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鏇存柊銆�);
+                        }
+                        else
+                        {
+                            LogHelper.Info("RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�);
+                        }
+                    }
+                }
+                else if (tag.RGV.ReadTask2No == 0)
+                {
+                    LogHelper.Info($"RGV 2宸ヤ綅娌℃湁浠诲姟銆�);
+                }
+
+                //if (thisOver > 0)
+                {
+                    var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev);
+                    if (v2 != null)
+                    {
+                        LogHelper.Info($"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)}  \n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�");
+                        var b = RedisHelper.Remove("RGVQueue", out rev);
+                    }
+                }
+
+                ///1 鏈夎揣  灏� 鍙栥�  1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗�+                var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
+                if (task1 != null && task1.S_B_STATE != "瀹屾垚") //1鏈変换鍔�+                {
+                    if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 鏈変换鍔� 2 鏈変换鍔°� 
+                    {
+                        LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆�);
+                        tag.RGV.workMod = 1;
+                        tag.RGV.taskmod = 2;
+                        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
+                        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
+                        System.Threading.Thread.Sleep(750);
+                        //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
+                        //tag.RGV.taskend = 125;
+                        //Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue");
+
+                        LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0");
+                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
+                        LogHelper.Info($"{task1.S_TASK_NO}> end 鍐�125");
+                        Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+                    }
+                    else //1鏈変换鍔� 2 娌′换鍔°�
+                    {
+                        LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�");
+                        //1 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈�+                        var leftSide = new List<string> { "1023", "1020" };
+                        var RightSide = new List<string> { "1002", "1008", "1010", "1016" };
+                        bool creT2 = false;
+                        if (leftSide.Contains(task1.S_START_LOC))
+                        {
+                            leftSide.Remove(task1.S_START_LOC);
+                            var lsde = leftSide.FirstOrDefault();
+                            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017");
+                            if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+                            {
+                                LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�);
+                                tag.RGV.workMod = 2;
+                                tag.RGV.taskmod = 1;
+                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
+                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
+                                t2.S_B_STATE = "宸叉帹閫�;
+                                taskservice.Update(t2);
+                                creT2 = true;
+                                System.Threading.Thread.Sleep(750);
+                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0");
+                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
+                                LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125");
+                                Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+                            }
+                        }
+                        else if (RightSide.Contains(task1.S_START_LOC))
+                        {
+                            RightSide.Remove(task1.S_START_LOC);
+                            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017");
+                            if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�+                            {
+                                LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�);
+                                tag.RGV.workMod = 2;
+                                tag.RGV.taskmod = 1;
+                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
+                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
+                                t2.S_B_STATE = "宸叉帹閫�;
+                                taskservice.Update(t2);
+                                creT2 = true;
+                                System.Threading.Thread.Sleep(750);
+                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125");
+                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
+                                LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125");
+                                Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+                            }
+                        }
+                        //else //1 鐩存帴鍗歌揣銆�
+                        if (!creT2)
+                        {
+                            LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆�);
+                            tag.RGV.workMod = 1;
+                            tag.RGV.taskmod = 2;
+                            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
+                            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
+                            System.Threading.Thread.Sleep(750);
+                            LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0");
+                            RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
+                            LogHelper.Info($"{task1.S_TASK_NO}> taskend 鍐�0");
+                            Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+                        }
+                    }
+                }
+                else
+                {
+                    if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 娌′换鍔� 2 鏈変换鍔°� 
+                    {
+                        LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�");
+                        //2 鍗歌揣銆�+                        tag.RGV.workMod = 2;
+                        tag.RGV.taskmod = 2;
+                        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));
+                        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);
+                        System.Threading.Thread.Sleep(750);
+                        LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0");
+                        RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
+                        //tag.RGV.taskend = 125;
+                        LogHelper.Info($"{task2.S_TASK_NO}> taskend 鍐�25");
+                        Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+                    }
+                    else //1mei 浠诲姟  2 娌′换鍔°�
+                    {
+                        LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�");
+                        //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�
+                        var lss = tklist.Take(2).ToList();
+                        var e1017first = lss.Find(x => x.S_END_LOC == "1017");
+                        if (e1017first == null)
+                        {
+                            e1017first = lss.FirstOrDefault();
+                        }
+                        if (e1017first != null)
+                        {
+                            LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔e1017first.S_TASK_NO}> 缁堢偣{e1017first.S_END_LOC}銆�);
+                            tag.RGV.workMod = 1;
+                            tag.RGV.taskmod = 1;
+                            uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));
+                            LogHelper.Info($"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆�);
+                            tag.RGV.taskno1 = tno;
+                            LogHelper.Info($"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆�);
+                            tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);
+                            LogHelper.Info($"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆�);
+                            e1017first.S_B_STATE = "宸叉帹閫�;
+                            taskservice.Update(e1017first);
+                            System.Threading.Thread.Sleep(750);
+                            LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�");
+                            RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
+                            LogHelper.Info($"{e1017first.S_TASK_NO}> taskend 鍐�25");
+                            //tag.RGV.taskend=125
+                            Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
+
+                        }
+                    }
+                }
+                LogHelper.Info($"rgv 澶勭悊瀹屾垚銆倀askend 125");
+                #endregion
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Info(ex.Message + ex.StackTrace);
+            }
+        }
+
+
+        public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask)
+        {
+            Console.WriteLine($"ThreadGrats 鍏夋爡澶勭悊 =================> ");
+            var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
+            TaskActRepository taskActRepository = new TaskActRepository();
+            TaskRepository taskRepository = new TaskRepository();
+            var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);
+            foreach (var item in requires)
+            {
+                var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);
+                if (tin == -1)
+                {
+                    item.N_CREATEMETHOD = -1;
+                    taskActRepository.Update(item);
+                    continue;
+                }
+                //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
+                string loc = "";
+                if (tin < 2)
+                {
+                    loc = item.S_START_LOC;
+                }
+                else
+                {
+                    loc = item.S_END_LOC;
+                }
+                if (loc == null) continue; else loc = loc.Trim();
+                bool goin = tin % 2 == 0;
+                bool continuuuuu = false;
+                var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));
+                if (dev != null)
+                {
+                    var V = dev.location.ToList().FindIndex(x => x == loc) == 0;
+                    //杞﹁蛋浜� 寮�厜鏍�+                    if (!goin)
+                    {
+                        if (dev.deviceType == 1)
+                        {
+                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"));
+                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue");
+
+                        }
+                        else if (dev.deviceType == 2)
+                        {
+                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"));
+                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
+                        }
+
+                        item.N_CREATEMETHOD = 1;
+                        taskActRepository.Update(item);
+                    }
+                    //杞﹁杩涘叆浜や簰銆�+                    else
+                    {
+                        if (dev.deviceType == 1)
+                        {
+                            var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�+                            if (tf?.ToLower() == "true")
+                            {
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
+                                continuuuuu = true;
+                            }
+                            else
+                            {
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue"));
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue");
+                            }
+
+                        }
+                        else if (dev.deviceType == 2)
+                        {
+                            var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
+                            int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
+                            if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1)
+                            {
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
+                                continuuuuu = true;
+                            }
+                            else
+                            {
+                                LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1220" : "D1221"), dev.deviceName + "Queue"));
+                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue");
+                            }
+                        }
+
+                    }
+
+                }
+                if (continuuuuu)
+                {
+                    LogHelper.Info($"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛�);
+                    continueTask?.Invoke(new HaiKangOrderInfo
+                    {
+                        reqCode = item.S_ID.Replace("-", ""),
+                        taskCode = item.S_TASK_NO
+                    });
+                    item.N_CREATEMETHOD = 1;
+                    taskActRepository.Update(item);
+                }
+            }
+            System.Threading.Thread.Sleep(3000);
+            //閲嶇疆淇″彿
+            foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))
+            {
+                var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
+                int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
+                if (TcpServer.GetBitdata(numm, 0) == 0)
+                {
+                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue");
+                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue");
+                }
+                else if (TcpServer.GetBitdata(numm, 1) == 0)
+                {
+                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue");
+                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue");
+                }
+            }
+
+        }
+
+        /// <summary>
+        /// 1020  1023绌烘涓嬬嚎
+        /// </summary>
+        /// <param name="tag"></param>
+        public void ThreadEdown(Tag tag)
+        {
+            Console.WriteLine($"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> ");
+            foreach (var Bssx in new string[] { "1020", "1023" })
+            {
+                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
+                var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
+                var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
+                Console.WriteLine($"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
+                if (RtaskState == 3 && RtaskState_LAST == 0)
+                {
+                    try
+                    {
+                        var listtep = new List<string>();
+                        if (Bssx == "1020")
+                        {
+                            if (tag.SF涓嬫枡浣�RArrive1003 == 1)
+                            {
+                                listtep = new List<string> { "1012", "1004" };
+                            }
+                            else
+                            {
+                                listtep = new List<string> { "1004", "1012" };
+                            }
+                        }
+                        else
+                        {
+                            if (tag.SF涓嬫枡浣�RArrive1005 == 1)
+                            {
+                                listtep = new List<string> { "1014", "1006" };
+                            }
+                            else
+                            {
+                                listtep = new List<string> { "1006", "1014" };
+                            }
+                        }
+
+                        foreach (var item in listtep)//(Bssx == "1020" ? new string[] { "1004", "1012" } : new string[] { "1006", "1014" }))
+                        {
+                            var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
+                            var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
+                            if (R5 == 5 && R5绌洪棽_LAST == 0)
+                            {
+                                var b = TaskProcess.CreateTask("", Bssx, item, "绌轰笂RGV", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                                if (b)
+                                {
+                                    LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛");
+                                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
+                                    //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
+                                    RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
+                                    //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
+                                    break;
+                                }
+                            }
+                            else if (R5 != 5 && R5绌洪棽_LAST == 1)
+                            {
+                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg);
+                                //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
+                            }
+                        }
+                        System.Threading.Thread.Sleep(1000);
+                    }
+                    catch (Exception ex)
+                    {
+                        LogHelper.Error(ex.Message, ex);
+                        Console.WriteLine(ex.Message + ex.StackTrace);
+                    }
+                }
+                else if (RtaskState != 3 && RtaskState_LAST == 1)
+                {
+                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
+                    //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue");
+                }
+                System.Threading.Thread.Sleep(2000);
+            }
+
+            foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" })
+            {
+                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
+                var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
+                if (R5 != 5 && R5绌洪棽_LAST == 1)
+                {
+                    RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg);
+                    //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
+                }
+            }
+        }
+
+        public void ThreadDdown(Tag tag)
+        {
+            Console.WriteLine($"ThreadDdown 08 10 ==================> 1026");
+            foreach (var Bssx in new string[] { "1008", "1016" })
+            {
+                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
+                var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
+                var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
+                Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
+                if (RtaskState == 3 && RtaskState_LAST == 0)
+                {
+                    var item = "1026";
+                    var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
+                    var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
+                    if (R5 == 5 && R5绌洪棽_LAST == 0)
+                    {
+                        var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                        if (b)
+                        {
+                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
+                            RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2);
+                            //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
+                            //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
+                            break;
+                        }
+                    }
+                    else if (R5 != 5 && R5绌洪棽_LAST == 1)
+                    {
+                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg2);
+                    }
+                }
+                else if (RtaskState != 3 && RtaskState_LAST == 1)
+                {
+                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
+                    //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue");
+                }
+                System.Threading.Thread.Sleep(2000);
+            }
+        }
+
+        public void Thread0210Down(Tag tag)
+        {
+            Console.WriteLine($"Thread0210Down ==================>");
+            foreach (var Bssx in new string[] { "1002", "1010" })
+            {
+                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
+                var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
+                var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
+                Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
+                if (RtaskState == 3 && RtaskState_LAST == 0)
+                {
+                    var item = "1017";
+                    var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
+                    var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
+                    if (R5 == 5 && R5绌洪棽_LAST == 0)
+                    {
+                        var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                        if (b)
+                        {
+                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
+                            RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
+                            //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
+                            //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
+                            break;
+                        }
+                    }
+                    else if (R5 != 5 && R5绌洪棽_LAST == 1)
+                    {
+                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg1);
+                    }
+                }
+                else if (RtaskState != 3 && RtaskState_LAST == 1)
+                {
+                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
+                }
+                System.Threading.Thread.Sleep(2000);
+            }
+        }
+
+
+        public void Thread涓嬫枡浣嶆娴�Tag tag)
+        {
+            Console.WriteLine($"Thread涓嬫枡浣嶆娴�浠诲姟鐘舵�锛歿tag.FNK1.D2217}- 绌洪棽{tag.FNK1.D2212}");
+            foreach (var ssx in new string[] { "1003", "1005", "1011", "1013" })
+            {
+                var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16));
+                var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16));
+                if (RArrive == 1 && RArriveLast == 0)
+                {
+                    if (ssx == "1005")
+                    {
+                        tag.FNK1.D2215 = 1;
+                        //tag.SF涓嬫枡浣�RArrive1005_LAST = 1;
+                        RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg);
+
+                        tag.SF涓嬫枡浣�WRelease1005 = 0;
+                        tag.SF涓嬫枡浣�WSafe0305 = 0;
+                    }
+                    else if (ssx == "1003")
+                    {
+                        tag.FNK1.D2210 = 1;
+                        //tag.SF涓嬫枡浣�RArrive1003_LAST = 1;
+
+                        RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg);
+                        tag.SF涓嬫枡浣�WRelease1003 = 0;
+                        tag.SF涓嬫枡浣�WSafe0305 = 0;
+                    }
+                    else if (ssx == "1013")
+                    {
+                        tag.FNK2.D2215 = 1;
+                        //tag.SF涓嬫枡浣�RArrive1013_LAST = 1;
+                        RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg);
+
+                        tag.SF涓嬫枡浣�WRelease1013 = 0;
+                        tag.SF涓嬫枡浣�WSafe1113 = 0;
+                    }
+                    else if (ssx == "1011")
+                    {
+                        tag.FNK2.D2210 = 1;
+                        //tag.SF涓嬫枡浣�RArrive1011_LAST = 1;
+                        RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg);
+
+                        tag.SF涓嬫枡浣�WRelease1011 = 0;
+                        tag.SF涓嬫枡浣�WSafe1113 = 0;
+                    }
+                }
+                else if (RArrive == 0 && RArriveLast == 1)
+                {
+                    RedisHelper.Add($"FNK1003051113.RArrive{ssx}_LAST", "0", out string msg);
+                    //Conn.榛樿Redis.SetValue($"FNK1003051113.RArrive{ssx}_LAST", "0", $"FNK1003051113Queue");
+                }
+            }
+        }
+
+        public void ThreadFNK1Over(Tag tag)
+        {
+            Console.WriteLine($"ThreadFNK1Over 浠诲姟鐘舵�锛歿tag.FNK1.D2217}- 绌洪棽{tag.FNK1.D2212}");
+            if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
+            {
+                //tag.FNK1.D2215 = 0;
+                //tag.FNK1.D2212_LAST = 1;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
+
+                tag.SF涓嬫枡浣�WRelease1005 = 1;
+                tag.SF涓嬫枡浣�WSafe0305 = 1;
+                System.Threading.Thread.Sleep(1000);
+                RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "0", out msg);
+            }
+            if (tag.FNK1.D2216 == 1)
+                tag.FNK1.D2215 = 0;
+            else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)
+                //tag.FNK1.D2217_LAST = 0;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg);
+
+            if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
+            {
+                //tag.FNK1.D2217_LAST = 1;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
+                tag.SF涓嬫枡浣�WRelease1003 = 1;
+                tag.SF涓嬫枡浣�WSafe0305 = 1;
+                System.Threading.Thread.Sleep(1000);
+                RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "0", out msg);
+            }
+            //else if (tag.FNK1.D2211 == 1)
+            //    tag.FNK1.D2210 = 0;
+            else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)
+            {
+                //tag.FNK1.D2212_LAST = 0;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg);
+            }
+            if (tag.FNK1.D2211 == 1)
+                tag.FNK1.D2210 = 0;
+
+        }
+        public void ThreadFNK2Over(Tag tag)
+        {
+            Console.WriteLine($"ThreadFNK2Over 浠诲姟鐘舵�锛歿tag.FNK2.D2217}- 绌洪棽{tag.FNK2.D2212}");
+            if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
+            {
+                tag.FNK2.D2215 = 0;
+                //tag.FNK2.D2212_LAST = 1;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
+
+                tag.SF涓嬫枡浣�WRelease1013 = 1;
+                tag.SF涓嬫枡浣�WSafe1113 = 1;
+                System.Threading.Thread.Sleep(1000);
+                RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "0", out msg);
+            }
+            else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)
+                //tag.FNK2.D2217_LAST = 0;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg);
+
+            if (tag.FNK2.D2216 == 1)
+                tag.FNK2.D2215 = 0;
+
+            if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)
+            {
+                tag.FNK2.D2210 = 0;
+                //tag.FNK2.D2217_LAST = 1;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
+
+                tag.SF涓嬫枡浣�WRelease1011 = 1;
+                tag.SF涓嬫枡浣�WSafe1113 = 1;
+                System.Threading.Thread.Sleep(1000);
+                RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "0", out msg);
+            }
+            else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)
+            {
+                //tag.FNK2.D2212_LAST = 0;
+                RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg);
+            }
+            if (tag.FNK2.D2211 == 1)
+                tag.FNK2.D2210 = 0;
+        }
+
+        public void Thread1019Down(Tag tag)
+        {
+            Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}");
+        }
+        public void Thread1025Up(Tag tag)
+        {
+            Console.WriteLine($"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}");
+        }
+        public void Thread1022Up(Tag tag)
+        {
+            Console.WriteLine($"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}");
+        }
+        public void Thread1030Down(Tag tag)
+        {
+            Console.WriteLine($"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}");
+        }
+        public void Thread2030Down(Tag tag)
+        {
+            Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇");
+        }
+
+
+
+
 
     }
 }
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
index f967b91..441a273 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Build/Project/\344\273\243\347\240\201/\347\225\214\351\235\242\344\272\213\344\273\266.cs"
@@ -187,49 +187,8 @@
                     try
                     {
                         #region    [鑴氭湰][20250325083325390][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦1]
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『1");
 
-                        if (VERX != null)
-                        {
-                            if (tag.Js1.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 1)
-                            {
-                                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                {
-                                    requestType = 4,
-                                    endBit = VERX.location[0]
-                                }));
-                                LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
-                                if (str.Contains("true"))
-                                {
-                                    //tag.Js1.D1212_LAST = 1;
-                                    RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg);
-                                }
-                            }
-                            if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)
-                            {
-                                //tag.Js1.D1212_LAST = 0; 
-                                RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg);
-                            }
-                            if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)
-                            {
-                                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                {
-                                    requestType = 4,
-                                    endBit = VERX.location[1]
-                                }));
-                                LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
-                                if (str.Contains("true"))
-                                {
-                                    //tag.Js1.D1213_LAST = 1;
-                                    RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg);
-                                }
-                            }
-                            if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)
-                            {
-                                //tag.Js1.D1213_LAST = 0;
-                                RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg);
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadJS1", new object[] { tag });
                         #endregion [鑴氭湰][20250325083325390][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦1]
                     }
                     catch (Exception ex)
@@ -260,53 +219,8 @@
                         #region    [鑴氭湰][20250325083326611][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦2]
                         //jsz2鎹风灛鎶撹噦2
 
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 2 && x.deviceName == "Js鎹烽『2");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadJS2", new object[] { tag });
 
-                        if (VERX != null)
-                        {
-                            if (tag.Js2.D1212_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 1)
-                            {
-                                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                {
-                                    requestType = 4,
-                                    endBit = VERX.location[0]
-                                }));
-                                LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
-                                if (str.Contains("true"))
-                                {
-                                    //tag.Js2.D1212_LAST = 1;
-
-                                    RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "1", out string msg);
-                                }
-                            }
-                            if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)
-                            {
-                                //tag.Js2.D1212_LAST = 0;
-
-                                RedisHelper.Add($"Js鎹烽『1.D1212_LAST", "0", out string msg);
-                            }
-                            if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)
-                            {
-                                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                {
-                                    requestType = 4,
-                                    endBit = VERX.location[1]
-                                }));
-                                LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
-                                if (str.Contains("true"))
-                                {
-                                    //tag.Js2.D1213_LAST = 1;
-
-                                    RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "1", out string msg);
-                                }
-                            }
-                            if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)
-                            {
-                                //tag.Js2.D1213_LAST = 0;
-
-                                RedisHelper.Add($"Js鎹烽『1.D1213_LAST", "0", out string msg);
-                            }
-                        }
                         #endregion [鑴氭湰][20250325083326611][涓氬姟閫昏緫.绗笁鏍囨.鎹风灛鎶撹噦2]
                     }
                     catch (Exception ex)
@@ -368,66 +282,7 @@
                     {
                         #region    [鑴氭湰][20250325083149366][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L]
 
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1"));
-
-                        if (VERX != null)
-                        {
-                            if (tag.wxr1.R44 && !tag.wxr1.R44_LAST && tag.wxr1.R10)
-                            {
-                                if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                    {
-                                        requestType = 1,
-                                        cntrCode = traycode,
-                                        startBit = VERX.location[0],
-                                        endBit = ""
-                                    }));
-                                    LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
-                                    if (str.Contains("true"))
-                                    {
-                                        tag.wxr1.R44_LAST = true;
-                                    }
-                                }
-                                else
-                                {
-                                    TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
-                                }
-                            }
-                            else
-                            {
-                                //TaskRepository ts = new TaskRepository();
-                                if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
-                                {
-                                    if (tag.wxr1.R10)
-                                    {
-                                        tag.wxr1.R10_LAST = false;
-                                    }
-                                    else
-                                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
-                                    {
-                                        //涓婃姤鏍¢獙銆�-                                        ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
-                                        {
-                                            sceneType = 1,
-                                            cntrCode = traycode,
-                                        }));
-                                        if (str.Contains("true"))
-                                        {
-                                            //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
-                                            tag.wxr1.R10 = true;
-                                            tag.wxr1.R44_LAST = false;
-                                        }
-                                        else
-                                        {
-                                            //鎶ヨ銆�-                                        }
-                                    }
-                                    else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
-                                }
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr1L", new object[] { tag });
                         #endregion [鑴氭湰][20250325083149366][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L]
                     }
                     catch (Exception ex)
@@ -456,65 +311,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250610002047005][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R]
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("1"));
-
-                        if (VERX != null)
-                        {
-                            if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)
-                            {
-                                if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                    {
-                                        requestType = 1,
-                                        cntrCode = traycode,
-                                        startBit = VERX.location[1],
-                                        endBit = ""
-                                    }));
-                                    LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
-                                    if (str.Contains("true"))
-                                    {
-                                        tag.wxr1.R46_LAST = true;
-                                    }
-                                }
-                                else
-                                {
-                                    TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
-                                }
-                            }
-                            else
-                            {
-                                if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
-                                {
-                                    if (tag.wxr1.R11)
-                                    {
-                                        tag.wxr1.R11_LAST = false;
-                                    }
-                                    else
-                                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
-                                    {
-                                        //涓婃姤鏍¢獙銆�-                                        ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
-                                        {
-                                            sceneType = 1,
-                                            cntrCode = traycode,
-                                        }));
-                                        if (str.Contains("true"))
-                                        {
-                                            //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
-                                            tag.wxr1.R11 = true;
-                                            tag.wxr1.R46_LAST = false;
-                                        }
-                                        else
-                                        {
-                                            //鎶ヨ銆�-                                        }
-                                    }
-                                    else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
-                                }
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr1R", new object[] { tag });
                         #endregion [鑴氭湰][20250610002047005][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R]
                     }
                     catch (Exception ex)
@@ -543,66 +340,8 @@
                     try
                     {
                         #region    [鑴氭湰][20250325083315503][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L]
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr2L", new object[] { tag });
 
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2"));
-
-                        if (VERX != null)
-                        {
-                            if (tag.wxr2.R44 && !tag.wxr2.R44_LAST && tag.wxr2.R10)
-                            {
-                                if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                    {
-                                        requestType = 1,
-                                        cntrCode = traycode,
-                                        startBit = VERX.location[0],
-                                        endBit = ""
-                                    }));
-                                    LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
-                                    if (str.Contains("true"))
-                                    {
-                                        tag.wxr2.R44_LAST = true;
-                                    }
-                                }
-                                else
-                                {
-                                    TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
-                                }
-                            }
-                            else
-                            {
-                                if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
-                                {
-                                    if (tag.wxr2.R10)
-                                    {
-                                        tag.wxr2.R10_LAST = false;
-                                    }
-                                    else
-                                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
-                                    {
-                                        //涓婃姤鏍¢獙銆�-                                        ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
-                                        {
-                                            sceneType = 1,
-                                            cntrCode = traycode,
-                                        }));
-                                        if (str.Contains("true"))
-                                        {
-                                            //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
-                                            tag.wxr2.R10 = true;
-                                            tag.wxr2.R44_LAST = false;
-                                        }
-                                        else
-                                        {
-                                            //鎶ヨ銆�-                                        }
-                                    }
-                                    else { TcpServer.TcpServerSend(VERX.deviceNo[0], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
-                                }
-                            }
-                        }
                         #endregion [鑴氭湰][20250325083315503][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�L]
                     }
                     catch (Exception ex)
@@ -631,65 +370,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250610002647095][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R]
-                        var VERX = Settings.deviceInfos?.Find(x => x.deviceType == 1 && x.deviceName.Contains("2"));
-
-                        if (VERX != null)
-                        {
-                            if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)
-                            {
-                                if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
-                                    {
-                                        requestType = 1,
-                                        cntrCode = traycode,
-                                        startBit = VERX.location[1],
-                                        endBit = ""
-                                    }));
-                                    LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
-                                    if (str.Contains("true"))
-                                    {
-                                        tag.wxr2.R46_LAST = true;
-                                    }
-                                }
-                                else
-                                {
-                                    TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
-                                }
-                            }
-                            else
-                            {
-                                if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
-                                {
-                                    if (tag.wxr2.R11)
-                                    {
-                                        tag.wxr2.R11_LAST = false;
-                                    }
-                                    else
-                                    if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
-                                    {
-                                        //涓婃姤鏍¢獙銆�-                                        ///var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/202", requestJson);
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
-                                        {
-                                            sceneType = 1,
-                                            cntrCode = traycode,
-                                        }));
-                                        if (str.Contains("true"))
-                                        {
-                                            //Conn.榛樿Redis.SetValue("缁村笇灏旀姄鑷�.R10", "true", "缁村笇灏旀姄鑷�Queue");
-                                            tag.wxr2.R11 = true;
-                                            tag.wxr2.R46_LAST = false;
-                                        }
-                                        else
-                                        {
-                                            //鎶ヨ銆�-                                        }
-                                    }
-                                    else { TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E")); }
-                                }
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Threadwxr2R", new object[] { tag });
                         #endregion [鑴氭湰][20250610002647095][涓氬姟閫昏緫.绗笁鏍囨.缁寸郴灏�鍙�缁村笇灏旀姄鑷�R]
                     }
                     catch (Exception ex)
@@ -744,321 +425,9 @@
                     try
                     {
                         #region    [鑴氭湰][20250325085542733][涓氬姟閫昏緫.浠诲姟涓嬪彂]
-                        Console.WriteLine("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr  浠诲姟涓嬪彂");
-                        LogHelper.Info("浠诲姟涓嬪彂  try 1 杩涘叆");
-                        Console.WriteLine("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr  try 浠诲姟涓嬪彂1");
 
-                        ITaskRepository taskservice = new TaskRepository();
-                        try
-                        {
-                            LogHelper.Info("浠诲姟涓嬪彂  ARG 浠诲姟 杩涘叆");
-                            #region AGV浠诲姟涓嬪彂銆�-
-                            var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "AGV");
-                            if (tklist.Any())
-                                foreach (var tk in tklist.GroupBy(item =>
-                                {
-                                    var ticks = item.T_CREATE.Ticks;
-                                    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
-                                }).OrderBy(x => x.Key))
-                                {
-                                    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();
-                                    foreach (var t in ts)
-                                    {
-                                        var b = false;
-                                        b = RunTask(t);
-
-                                        if (b)
-                                        {
-                                            t.S_B_STATE = "宸叉帹閫�;
-                                            taskservice.Update(t);
-                                        }
-                                    }
-                                    break;
-                                }
-                            //foreach (var tk in tklist.GroupBy(item =>
-                            //{
-                            //    var ticks = item.T_CREATE.Ticks;
-                            //    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
-                            //}).OrderBy(x => x.Key))
-                            //if (tklist.Any())
-                            //{
-
-                            #endregion
-                        }
-                        catch (Exception ex)
-                        {
-                            LogHelper.Info(ex.Message + ex.StackTrace);
-                        }
-                        try
-                        {
-                            LogHelper.Info("浠诲姟涓嬪彂  Rgv 浠诲姟 杩涘叆");
-                            #region Rgv
-
-                            LogHelper.Info($"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆�);
-                            var task1Isrun = false;
-                            if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)
-                            {
-                                task1Isrun = true;
-                                //if (tag.RGV.bit1taskOver_LAST == 1)
-                                //    RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
-                            }
-                            var task2Isrun = false;
-                            if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)
-                            {
-                                task2Isrun = true;
-                                //if (tag.RGV.bit2taskOver_LAST == 1)
-                                //    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
-                            }
-                            if (task1Isrun || task2Isrun)
-                            {
-                                string mes = "";
-                                if (task1Isrun)
-                                    mes += tag.RGV.ReadTask1No + "鎵ц涓�..";
-                                if (task2Isrun)
-                                    mes += tag.RGV.ReadTask2No + "鎵ц涓�..";
-                                LogHelper.Info($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�");
-                                throw new Exception($"{mes} 涓嶈兘涓嬪彂鏂颁换鍔°�");
-                            }
-
-                            var thisOver = 0;
-
-                            TaskEntity task1 = null;
-                            TaskEntity task2 = null;
-
-                            LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅浠诲姟銆�);
-                            if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)
-                            {
-                                var taskno = tag.RGV.ReadTask1No;
-                                LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{tag.RGV.ReadTask1No}");
-                                string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
-                                task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
-
-                                LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST锛歿tag.RGV.bit1taskOver_LAST}");
-                                if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)
-                                {
-                                    if (task1.S_B_STATE != "瀹屾垚")
-                                    {
-                                        thisOver = 1;
-                                        if (task1.S_B_STATE == "鍙栬揣瀹屾垚")
-                                        {
-                                            task1.S_B_STATE = "瀹屾垚";
-                                        }
-                                        else
-                                        {
-                                            task1.S_B_STATE = "鍙栬揣瀹屾垚";
-                                        }
-                                        LogHelper.Info($"RGV 1宸ヤ綅浠诲姟{task1.S_TASK_NO} 鐘舵�鍒囨崲涓簕task1.S_B_STATE}");
-                                        //tag.RGV.bit1taskOver_LAST = 1;
-                                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "1", out string msg);
-                                        LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鍐欏鐞�);
-                                        taskservice.Update(task1);
-                                        LogHelper.Info($"RGV 1宸ヤ綅浠诲姟鏇存柊銆�);
-                                    }
-                                    else
-                                    {
-                                        LogHelper.Info("RGV1宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�);
-                                    }
-                                }
-                            }
-                            else if (tag.RGV.ReadTask1No == 0)
-                            {
-                                LogHelper.Info($"RGV 1宸ヤ綅娌℃湁浠诲姟銆�);
-                            }
-
-                            LogHelper.Info($"鏌ョ湅RGV 2宸ヤ綅浠诲姟銆�);
-                            if (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)
-                            {
-                                var taskno = tag.RGV.ReadTask2No;
-                                LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{tag.RGV.ReadTask2No}");
-                                string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
-                                task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
-
-                                LogHelper.Info($"RGV2宸ヤ綅浠诲姟{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST锛歿tag.RGV.bit2taskOver_LAST}");
-                                if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)
-                                {
-                                    if (task2.S_B_STATE != "瀹屾垚")
-                                    {
-                                        thisOver = 2;
-                                        if (task2.S_B_STATE == "鍙栬揣瀹屾垚")
-                                        {
-                                            task2.S_B_STATE = "瀹屾垚";
-                                        }
-                                        else
-                                        {
-                                            task2.S_B_STATE = "鍙栬揣瀹屾垚";
-                                        }
-                                        LogHelper.Info($"RGV 2宸ヤ綅浠诲姟{task2.S_TASK_NO} 鐘舵�鍒囨崲涓簕task2.S_B_STATE}");
-                                        RedisHelper.Add($"RGV.bit2taskOver_LAST", "1", out string msg);
-                                        LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鍐欏鐞�);
-                                        taskservice.Update(task2);
-                                        LogHelper.Info($"RGV 2宸ヤ綅浠诲姟鏇存柊銆�);
-                                    }
-                                    else
-                                    {
-                                        LogHelper.Info("RGV2宸ヤ綅浠诲姟宸茬粡瀹屾垚銆�);
-                                    }
-                                }
-                            }
-                            else if (tag.RGV.ReadTask2No == 0)
-                            {
-                                LogHelper.Info($"RGV 2宸ヤ綅娌℃湁浠诲姟銆�);
-                            }
-
-                            //if (thisOver > 0)
-                            {
-                                var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev);
-                                if (v2 != null)
-                                {
-                                    LogHelper.Info($"RGVQueue 璇诲埌缁撴灉-{JsonConvert.SerializeObject(v2)}  \n 涓嬪彂鍓嶈繘琛屾竻闄ゃ�");
-                                    var b = RedisHelper.Remove("RGVQueue", out rev);
-                                }
-                            }
-
-                            ///1 鏈夎揣  灏� 鍙栥�  1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗�-                            var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
-                            if (task1 != null && task1.S_B_STATE != "瀹屾垚") //1鏈変换鍔�-                            {
-                                if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 鏈変换鍔� 2 鏈変换鍔°� 
-                                {
-                                    LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 涔熸湁浠诲姟{task2.S_TASK_NO}銆�寮�宸ヤ綅1 鍗歌揣銆�);
-                                    tag.RGV.workMod = 1;
-                                    tag.RGV.taskmod = 2;
-                                    tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
-                                    tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
-                                    System.Threading.Thread.Sleep(750);
-                                    //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
-                                    //tag.RGV.taskend = 125;
-                                    //Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue");
-
-                                    LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0");
-                                    RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
-                                    LogHelper.Info($"{task1.S_TASK_NO}> end 鍐�125");
-                                    Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-                                }
-                                else //1鏈変换鍔� 2 娌′换鍔°�
-                                {
-                                    LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔°�");
-                                    //1 濡傛灉鏈夊悓渚у彇璐т换鍔°�灏卞彇銆傛病鏈�-                                    var leftSide = new List<string> { "1023", "1020" };
-                                    var RightSide = new List<string> { "1002", "1008", "1010", "1016" };
-                                    bool creT2 = false;
-                                    if (leftSide.Contains(task1.S_START_LOC))
-                                    {
-                                        leftSide.Remove(task1.S_START_LOC);
-                                        var lsde = leftSide.FirstOrDefault();
-                                        var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != "1017");
-                                        if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�-                                        {
-                                            LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�);
-                                            tag.RGV.workMod = 2;
-                                            tag.RGV.taskmod = 1;
-                                            tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
-                                            tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
-                                            t2.S_B_STATE = "宸叉帹閫�;
-                                            taskservice.Update(t2);
-                                            creT2 = true;
-                                            System.Threading.Thread.Sleep(750);
-                                            LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�0");
-                                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
-                                            LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125");
-                                            Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-                                        }
-                                    }
-                                    else if (RightSide.Contains(task1.S_START_LOC))
-                                    {
-                                        RightSide.Remove(task1.S_START_LOC);
-                                        var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != "1017");
-                                        if (t2 != null) //鍚屼晶鍙栬揣浠诲姟銆�-                                        {
-                                            LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 鎵惧悓渚у彇璐т换鍔t2.S_TASK_NO}銆�);
-                                            tag.RGV.workMod = 2;
-                                            tag.RGV.taskmod = 1;
-                                            tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
-                                            tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
-                                            t2.S_B_STATE = "宸叉帹閫�;
-                                            taskservice.Update(t2);
-                                            creT2 = true;
-                                            System.Threading.Thread.Sleep(750);
-                                            LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST 鍐�125");
-                                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
-                                            LogHelper.Info($"{t2.S_TASK_NO}> end 鍐�125");
-                                            Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-                                        }
-                                    }
-                                    //else //1 鐩存帴鍗歌揣銆�
-                                    if (!creT2)
-                                    {
-                                        LogHelper.Info($"鏌ョ湅RGV1 鏈変换鍔task1.S_TASK_NO},宸ヤ綅2 娌′换鍔°� 娌℃湁鍚屼晶鍙栬揣浠诲姟 1宸ヤ綅鍗歌揣銆�);
-                                        tag.RGV.workMod = 1;
-                                        tag.RGV.taskmod = 2;
-                                        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
-                                        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
-                                        System.Threading.Thread.Sleep(750);
-                                        LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST 鍐�0");
-                                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
-                                        LogHelper.Info($"{task1.S_TASK_NO}> taskend 鍐�0");
-                                        Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                if (task2 != null && task2.S_B_STATE != "瀹屾垚")// 1 娌′换鍔� 2 鏈変换鍔°� 
-                                {
-                                    LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 鏈変换鍔task2.S_TASK_NO}銆傚伐浣�鍗歌揣銆傘�");
-                                    //2 鍗歌揣銆�-                                    tag.RGV.workMod = 2;
-                                    tag.RGV.taskmod = 2;
-                                    tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));
-                                    tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);
-                                    System.Threading.Thread.Sleep(750);
-                                    LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST 鍐�0");
-                                    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
-                                    //tag.RGV.taskend = 125;
-                                    LogHelper.Info($"{task2.S_TASK_NO}> taskend 鍐�25");
-                                    Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-                                }
-                                else //1mei 浠诲姟  2 娌′换鍔°�
-                                {
-                                    LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�");
-                                    //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�
-                                    var lss = tklist.Take(2).ToList();
-                                    var e1017first = lss.Find(x => x.S_END_LOC == "1017");
-                                    if (e1017first == null)
-                                    {
-                                        e1017first = lss.FirstOrDefault();
-                                    }
-                                    if (e1017first != null)
-                                    {
-                                        LogHelper.Info($"鏌ョ湅RGV 1宸ヤ綅娌′换鍔�宸ヤ綅2 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔e1017first.S_TASK_NO}> 缁堢偣{e1017first.S_END_LOC}銆�);
-                                        tag.RGV.workMod = 1;
-                                        tag.RGV.taskmod = 1;
-                                        uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));
-                                        LogHelper.Info($"{e1017first.S_TASK_NO}> 杞崲鍚庝换鍔″彿{tno} 寮�鍐欏叆銆�);
-                                        tag.RGV.taskno1 = tno;
-                                        LogHelper.Info($"{e1017first.S_TASK_NO}>寮�鍐欏叆 task1do>>{e1017first.S_START_LOC}銆�);
-                                        tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);
-                                        LogHelper.Info($"{e1017first.S_TASK_NO}> 鏇存柊浠诲姟銆�);
-                                        e1017first.S_B_STATE = "宸叉帹閫�;
-                                        taskservice.Update(e1017first);
-                                        System.Threading.Thread.Sleep(750);
-                                        LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST 鍐�");
-                                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
-                                        LogHelper.Info($"{e1017first.S_TASK_NO}> taskend 鍐�25");
-                                        //tag.RGV.taskend=125
-                                        Conn.榛樿Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
-
-                                    }
-                                }
-                            }
-                            LogHelper.Info($"rgv 澶勭悊瀹屾垚銆倀askend 125");
-                            #endregion
-                        }
-                        catch (Exception ex)
-                        {
-                            LogHelper.Info(ex.Message + ex.StackTrace);
-                        }
+                        Func<TaskEntity, bool> myDelegate = (t) => RunTask(t);
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadTaskRun", new object[] { tag, myDelegate });
                         #endregion [鑴氭湰][20250325085542733][涓氬姟閫昏緫.浠诲姟涓嬪彂]
                     }
                     catch (Exception ex)
@@ -1139,121 +508,8 @@
                     {
                         #region    [鑴氭湰][20250611223832523][涓氬姟閫昏緫.鍏夋爡澶勭悊]
                         // - 鍏夋爡浜や簰澶勭悊銆傘�
-                        var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
-                        TaskActRepository taskActRepository = new TaskActRepository();
-                        TaskRepository taskRepository = new TaskRepository();
-                        var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);
-                        foreach (var item in requires)
-                        {
-                            var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);
-                            if (tin == -1)
-                            {
-                                item.N_CREATEMETHOD = -1;
-                                taskActRepository.Update(item);
-                                continue;
-                            }
-                            //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
-                            string loc = "";
-                            if (tin < 2)
-                            {
-                                loc = item.S_START_LOC;
-                            }
-                            else
-                            {
-                                loc = item.S_END_LOC;
-                            }
-                            if (loc == null) continue; else loc = loc.Trim();
-                            bool goin = tin % 2 == 0;
-                            bool continuuuuu = false;
-                            var dev = Settings.deviceInfos.Find(x => x.location.Contains(loc));
-                            if (dev != null)
-                            {
-                                var V = dev.location.ToList().FindIndex(x => x == loc) == 0;
-                                //杞﹁蛋浜� 寮�厜鏍�-                                if (!goin)
-                                {
-                                    if (dev.deviceType == 1)
-                                    {
-                                        LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"));
-                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue");
-
-                                    }
-                                    else if (dev.deviceType == 2)
-                                    {
-                                        LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue"));
-                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
-                                    }
-
-                                    item.N_CREATEMETHOD = 1;
-                                    taskActRepository.Update(item);
-                                }
-                                //杞﹁杩涘叆浜や簰銆�-                                else
-                                {
-                                    if (dev.deviceType == 1)
-                                    {
-                                        var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�-                                        if (tf?.ToLower() == "true")
-                                        {
-                                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
-                                            continuuuuu = true;
-                                        }
-                                        else
-                                        {
-                                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue"));
-                                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue");
-                                        }
-
-                                    }
-                                    else if (dev.deviceType == 2)
-                                    {
-                                        var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
-                                        int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
-                                        if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1)
-                                        {
-                                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
-                                            continuuuuu = true;
-                                        }
-                                        else
-                                        {
-                                            LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1220" : "D1221"), dev.deviceName + "Queue"));
-                                            Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue");
-                                        }
-                                    }
-
-                                }
-
-                            }
-                            if (continuuuuu)
-                            {
-                                LogHelper.Info($"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛�);
-                                continueTask(new HaiKangOrderInfo
-                                {
-                                    reqCode = item.S_ID.Replace("-", ""),
-                                    taskCode = item.S_TASK_NO
-                                });
-                                item.N_CREATEMETHOD = 1;
-                                taskActRepository.Update(item);
-                            }
-                        }
-                        System.Threading.Thread.Sleep(3000);
-                        //閲嶇疆淇″彿
-                        foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))
-                        {
-                            var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
-                            int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
-                            if (TcpServer.GetBitdata(numm, 0) == 0)
-                            {
-                                Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue");
-                                Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue");
-                            }
-                            else if (TcpServer.GetBitdata(numm, 1) == 0)
-                            {
-                                Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue");
-                                Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue");
-                            }
-                        }
-
+                        Action<HaiKangOrderInfo> myDelegate = (t) => continueTask(t);
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadGrats", new object[] { tag, myDelegate });
                         // 鍙戦偅绉戜笅鏂欏厜鏍呫�
                         #endregion [鑴氭湰][20250611223832523][涓氬姟閫昏緫.鍏夋爡澶勭悊]
                     }
@@ -1284,89 +540,7 @@
                     {
                         #region    [鑴氭湰][20250616094224396][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1020绌烘涓嬬嚎]
                         //1020  1023 绌烘涓嬬嚎
-                        foreach (var Bssx in new string[] { "1020", "1023" })
-                        {
-                            var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
-                            var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
-                            var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
-                            Console.WriteLine($"{Bssx} 绌轰笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
-                            if (RtaskState == 3 && RtaskState_LAST == 0)
-                            {
-                                try
-                                {
-                                    var listtep = new List<string>();
-                                    if (Bssx == "1020")
-                                    {
-                                        if (tag.SF涓嬫枡浣�RArrive1003 == 1)
-                                        {
-                                            listtep = new List<string> { "1012", "1004" };
-                                        }
-                                        else
-                                        {
-                                            listtep = new List<string> { "1004", "1012" };
-                                        }
-                                    }
-                                    else
-                                    {
-                                        if (tag.SF涓嬫枡浣�RArrive1005 == 1)
-                                        {
-                                            listtep = new List<string> { "1014", "1006" };
-                                        }
-                                        else
-                                        {
-                                            listtep = new List<string> { "1006", "1014" };
-                                        }
-                                    }
-
-                                    foreach (var item in listtep)//(Bssx == "1020" ? new string[] { "1004", "1012" } : new string[] { "1006", "1014" }))
-                                    {
-                                        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
-                                        var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
-                                        if (R5 == 5 && R5绌洪棽_LAST == 0)
-                                        {
-                                            var b = TaskProcess.CreateTask("", Bssx, item, "绌轰笂RGV", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                                            if (b)
-                                            {
-                                                LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛");
-                                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
-                                                //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
-                                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
-                                                //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
-                                                break;
-                                            }
-                                        }
-                                        else if (R5 != 5 && R5绌洪棽_LAST == 1)
-                                        {
-                                            RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg);
-                                            //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
-                                        }
-                                    }
-                                    System.Threading.Thread.Sleep(1000);
-                                }
-                                catch (Exception ex)
-                                {
-                                    LogHelper.Error(ex.Message, ex);
-                                    Console.WriteLine(ex.Message + ex.StackTrace);
-                                }
-                            }
-                            else if (RtaskState != 3 && RtaskState_LAST == 1)
-                            {
-                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
-                                //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue");
-                            }
-                            System.Threading.Thread.Sleep(2000);
-                        }
-
-                        foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" })
-                        {
-                            var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
-                            var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
-                            if (R5 != 5 && R5绌洪棽_LAST == 1)
-                            {
-                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg);
-                                //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadEdown", new object[] { tag });
                         #endregion [鑴氭湰][20250616094224396][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1020绌烘涓嬬嚎]
                     }
                     catch (Exception ex)
@@ -1425,41 +599,7 @@
                     {
                         #region    [鑴氭湰][20250616094632985][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.瀹氬瓙婊′笅绾縘
                         //瀹氬瓙婊′笅绾� 1008  1016   ->  1026
-                        foreach (var Bssx in new string[] { "1008", "1016" })
-                        {
-                            var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
-                            var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
-                            var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
-                            Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
-                            if (RtaskState == 3 && RtaskState_LAST == 0)
-                            {
-                                var item = "1026";
-                                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
-                                var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
-                                if (R5 == 5 && R5绌洪棽_LAST == 0)
-                                {
-                                    var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                                    if (b)
-                                    {
-                                        RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
-                                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2);
-                                        //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
-                                        //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
-                                        break;
-                                    }
-                                }
-                                else if (R5 != 5 && R5绌洪棽_LAST == 1)
-                                {
-                                    RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg2);
-                                }
-                            }
-                            else if (RtaskState != 3 && RtaskState_LAST == 1)
-                            {
-                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
-                                //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue");
-                            }
-                            System.Threading.Thread.Sleep(2000);
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadDdown", new object[] { tag });
                         #endregion [鑴氭湰][20250616094632985][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.瀹氬瓙婊′笅绾縘
                     }
                     catch (Exception ex)
@@ -1489,40 +629,7 @@
                     {
                         #region    [鑴氭湰][20250616094511322][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.杞瓙婊′笅绾縘
                         //杞瓙婊′笅绾� 1002  1010   - RGV2宸ヤ綅涓嶅彲鍒�1017 涓嶅彲涓嬪彂2宸ヤ綅浠诲姟銆�-                        foreach (var Bssx in new string[] { "1002", "1010" })
-                        {
-                            var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
-                            var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
-                            var R鎵樼洏鐮�= (System.String)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{Bssx}Read.R鎵樼洏鐮�), typeof(System.String));
-                            Console.WriteLine($"{Bssx} 婊′笅妫�祴锛氫换鍔$敵璇凤細{RtaskState}- 鏄惁宸插鐞嗭細{RtaskState_LAST}- 鎵樼洏鐮侊細{R鎵樼洏鐮亇");
-                            if (RtaskState == 3 && RtaskState_LAST == 0)
-                            {
-                                var item = "1017";
-                                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽"), typeof(System.UInt16));
-                                var R5绌洪棽_LAST = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"S{item}Read.R5绌洪棽_LAST"), typeof(System.UInt16));
-                                if (R5 == 5 && R5绌洪棽_LAST == 0)
-                                {
-                                    var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                                    if (b)
-                                    {
-                                        RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out string msg);
-                                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
-                                        //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
-                                        //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
-                                        break;
-                                    }
-                                }
-                                else if (R5 != 5 && R5绌洪棽_LAST == 1)
-                                {
-                                    RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg1);
-                                }
-                            }
-                            else if (RtaskState != 3 && RtaskState_LAST == 1)
-                            {
-                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
-                            }
-                            System.Threading.Thread.Sleep(2000);
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread0210Down", new object[] { tag });
                         #endregion [鑴氭湰][20250616094511322][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.杞瓙婊′笅绾縘
                     }
                     catch (Exception ex)
@@ -1552,55 +659,7 @@
                     {
                         #region    [鑴氭湰][20250616095605911][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.涓嬫枡浣嶆娴媇
                         //涓嬫枡浣嶆娴嬨�  1003  鍒颁綅鏃�鍐�鏍囪瘑淇″彿 骞�缁欐満姊版墜淇″彿銆� 
-                        foreach (var ssx in new string[] { "1003", "1005", "1011", "1013" })
-                        {
-                            var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16));
-                            var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16));
-                            if (RArrive == 1 && RArriveLast == 0)
-                            {
-                                if (ssx == "1005")
-                                {
-                                    tag.FNK1.D2215 = 1;
-                                    //tag.SF涓嬫枡浣�RArrive1005_LAST = 1;
-                                    RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg);
-
-                                    tag.SF涓嬫枡浣�WRelease1005 = 0;
-                                    tag.SF涓嬫枡浣�WSafe0305 = 0;
-                                }
-                                else if (ssx == "1003")
-                                {
-                                    tag.FNK1.D2210 = 1;
-                                    //tag.SF涓嬫枡浣�RArrive1003_LAST = 1;
-
-                                    RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg);
-                                    tag.SF涓嬫枡浣�WRelease1003 = 0;
-                                    tag.SF涓嬫枡浣�WSafe0305 = 0;
-                                }
-                                else if (ssx == "1013")
-                                {
-                                    tag.FNK2.D2215 = 1;
-                                    //tag.SF涓嬫枡浣�RArrive1013_LAST = 1;
-                                    RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg);
-
-                                    tag.SF涓嬫枡浣�WRelease1013 = 0;
-                                    tag.SF涓嬫枡浣�WSafe1113 = 0;
-                                }
-                                else if (ssx == "1011")
-                                {
-                                    tag.FNK2.D2210 = 1;
-                                    //tag.SF涓嬫枡浣�RArrive1011_LAST = 1;
-                                    RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg);
-
-                                    tag.SF涓嬫枡浣�WRelease1011 = 0;
-                                    tag.SF涓嬫枡浣�WSafe1113 = 0;
-                                }
-                            }
-                            else if (RArrive == 0 && RArriveLast == 1)
-                            {
-                                RedisHelper.Add($"FNK1003051113.RArrive{ssx}_LAST", "0", out string msg);
-                                //Conn.榛樿Redis.SetValue($"FNK1003051113.RArrive{ssx}_LAST", "0", $"FNK1003051113Queue");
-                            }
-                        }
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread涓嬫枡浣嶆娴�, new object[] { tag });
                         #endregion [鑴氭湰][20250616095605911][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.涓嬫枡浣嶆娴媇
                     }
                     catch (Exception ex)
@@ -1631,42 +690,7 @@
 
                         ////2217 - 1003
                         #region    [鑴氭湰][20250616095709155][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1鍙稦NK鏈烘鎵嬪畬鎴怾
-                        if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
-                        {
-                            //tag.FNK1.D2215 = 0;
-                            //tag.FNK1.D2212_LAST = 1;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
-
-                            tag.SF涓嬫枡浣�WRelease1005 = 1;
-                            tag.SF涓嬫枡浣�WSafe0305 = 1;
-                            System.Threading.Thread.Sleep(1000);
-                            RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "0", out msg);
-                        }
-                        if (tag.FNK1.D2216 == 1)
-                            tag.FNK1.D2215 = 0;
-                        else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)
-                            //tag.FNK1.D2217_LAST = 0;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg);
-
-                        if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
-                        {
-                            //tag.FNK1.D2217_LAST = 1;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
-                            tag.SF涓嬫枡浣�WRelease1003 = 1;
-                            tag.SF涓嬫枡浣�WSafe0305 = 1;
-                            System.Threading.Thread.Sleep(1000);
-                            RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "0", out msg);
-                        }
-                        //else if (tag.FNK1.D2211 == 1)
-                        //    tag.FNK1.D2210 = 0;
-                        else if (tag.FNK1.D2212 == 0 && tag.FNK1.D2212_LAST == 1)
-                        {
-                            //tag.FNK1.D2212_LAST = 0;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg);
-                        }
-                        if (tag.FNK1.D2211 == 1)
-                            tag.FNK1.D2210 = 0;
-
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadFNK1Over", new object[] { tag });
                         #endregion [鑴氭湰][20250616095709155][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1鍙稦NK鏈烘鎵嬪畬鎴怾
                     }
                     catch (Exception ex)
@@ -1695,42 +719,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250616095733680][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2鍙稦NK鏈烘鎵嬪畬鎴怾
-                        if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
-                        {
-                            tag.FNK2.D2215 = 0;
-                            //tag.FNK2.D2212_LAST = 1;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
-
-                            tag.SF涓嬫枡浣�WRelease1013 = 1;
-                            tag.SF涓嬫枡浣�WSafe1113 = 1;
-                            System.Threading.Thread.Sleep(1000);
-                            RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "0", out msg);
-                        }
-                        else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)
-                            //tag.FNK2.D2217_LAST = 0;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "0", out string msg);
-
-                        if (tag.FNK2.D2216 == 1)
-                            tag.FNK2.D2215 = 0;
-
-                        if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)
-                        {
-                            tag.FNK2.D2210 = 0;
-                            //tag.FNK2.D2217_LAST = 1;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
-
-                            tag.SF涓嬫枡浣�WRelease1011 = 1;
-                            tag.SF涓嬫枡浣�WSafe1113 = 1;
-                            System.Threading.Thread.Sleep(1000);
-                            RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "0", out msg);
-                        }
-                        else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)
-                        {
-                            //tag.FNK2.D2212_LAST = 0;
-                            RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "0", out string msg);
-                        }
-                        if (tag.FNK2.D2211 == 1)
-                            tag.FNK2.D2210 = 0;
+                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadFNK2Over", new object[] { tag });
                         #endregion [鑴氭湰][20250616095733680][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2鍙稦NK鏈烘鎵嬪畬鎴怾
                     }
                     catch (Exception ex)
@@ -1760,7 +749,7 @@
                     {
                         #region    [鑴氭湰][20250617085708084][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1019杞弧鍑鸿緭閫佺嚎.Program1]
 
-                        Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread1019Down", new object[] { tag });
                         #endregion [鑴氭湰][20250617085708084][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1019杞弧鍑鸿緭閫佺嚎.Program1]
                     }
                     catch (Exception ex)
@@ -1790,7 +779,7 @@
                     {
                         #region    [鑴氭湰][20250617085712101][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1025agv涓婄┖.Program1]
 
-                        Console.WriteLine($"SA1025 浠诲姟鐘舵�锛歿tag.SA1025.RtaskState}- 绌洪棽{tag.SA1025.R5绌洪棽}");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread1025Up", new object[] { tag });
                         #endregion [鑴氭湰][20250617085712101][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1025agv涓婄┖.Program1]
                     }
                     catch (Exception ex)
@@ -1819,8 +808,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250617085750712][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1022agv涓婄┖.Program1]
-
-                        Console.WriteLine($"SA1022 浠诲姟鐘舵�锛歿tag.SA1022.RtaskState}- 绌洪棽{tag.SA1022.R5绌洪棽}");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread1022Up", new object[] { tag });
                         #endregion [鑴氭湰][20250617085750712][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1022agv涓婄┖.Program1]
                     }
                     catch (Exception ex)
@@ -1849,8 +837,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250617085800942][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1030涓嬫瘝鎵�Program1]
-
-                        Console.WriteLine($"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread1030Down", new object[] { tag });
                         #endregion [鑴氭湰][20250617085800942][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.1030涓嬫瘝鎵�Program1]
                     }
                     catch (Exception ex)
@@ -1879,8 +866,7 @@
                     try
                     {
                         #region    [鑴氭湰][20250617085809982][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2030杈撻�绾夸笅瀹氬瓙.Program1]
-
-                        Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇");
+                        AutoThread.InvokeMethod(AutoThread.Instance, "Thread2030Down", new object[] { tag });
                         #endregion [鑴氭湰][20250617085809982][涓氬姟閫昏緫.娴佺▼2鐑鐞嗙倝杩涘嚭.2030杈撻�绾夸笅瀹氬瓙.Program1]
                     }
                     catch (Exception ex)

--
Gitblit v1.9.1