From a47e45d04ca5beadcf815d852cae52ef56f669e5 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期三, 23 七月 2025 16:39:33 +0800
Subject: [PATCH] 1

---
 2025年6月12日/AuxAllWCS/Build/Project/代码/VS自定义类/AutoThread.cs | 3350 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 2,009 insertions(+), 1,341 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 10d44fc..9e25737 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"
@@ -30,9 +30,33 @@
 using System.Net.NetworkInformation;
 using System.Windows.Documents;
 using System.Text.RegularExpressions;
+using GZ.Device.PLC;
 
 namespace GZ.Projects.AuxAllWCS
 {
+    public static class ExtendClass
+    {
+        public static void Disnull(this TaskRepository repository)
+        {
+            repository.dbcontext.Dispose();
+            repository = null;
+        }
+        public static void Disnull(this LocRepository repository)
+        {
+            repository.dbcontext.Dispose();
+            repository = null;
+        }
+        public static void Disnull(this TaskActRepository repository)
+        {
+            repository.dbcontext.Dispose();
+            repository = null;
+        }
+        public static void Disnull(this SYSRepository repository)
+        {
+            repository.dbcontext.Dispose();
+            repository = null;
+        }
+    }
     public partial class AutoThread
     {
 
@@ -61,29 +85,38 @@
         {
             var cacheKey = $"{instance.GetType().FullName}_{methodName}";
 
-            if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate))
+            try
             {
-                // 鑾峰彇鏂规硶淇℃伅
-                var methodInfo = instance.GetType().GetMethod(
-                    methodName,
-                    BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
 
-                if (methodInfo == null)
-                    throw new MissingMethodException($"Method {methodName} not found");
+                if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate))
+                {
+                    // 鑾峰彇鏂规硶淇℃伅
+                    var methodInfo = instance.GetType().GetMethod(
+                        methodName,
+                        BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
 
-                // 鍒涘缓濮旀墭骞剁紦瀛�-                methodDelegate = Delegate.CreateDelegate(
-                    GetDelegateType(methodInfo),
-                    instance,
-                    methodInfo);
+                    if (methodInfo == null)
+                        throw new MissingMethodException($"Method {methodName} not found");
 
-                _methodCache.TryAdd(cacheKey, methodDelegate);
+                    // 鍒涘缓濮旀墭骞剁紦瀛�+                    methodDelegate = Delegate.CreateDelegate(
+                        GetDelegateType(methodInfo),
+                        instance,
+                        methodInfo);
+
+                    _methodCache.TryAdd(cacheKey, methodDelegate);
+                }
+
+                // 鎵ц濮旀墭
+                //if (methodName != "TaskEverythingRun")
+                //    return null;
+                return methodDelegate.DynamicInvoke(args);
             }
-
-            // 鎵ц濮旀墭
-            //if (methodName != "TaskEverythingRun")
-            //    return null;
-            return methodDelegate.DynamicInvoke(args);
+            catch (Exception ex)
+            {
+                LogHelper.Error($"InvokeMethod > cacheKey:{cacheKey}-{ex.Message}", ex);
+                throw ex;
+            }
         }
 
         // 鏍规嵁鏂规硶绛惧悕鐢熸垚瀵瑰簲鐨勫鎵樼被鍨�@@ -103,6 +136,20 @@
                 return System.Linq.Expressions.Expression.GetFuncType(parameterTypes.ToArray());
             }
         }
+
+
+
+
+        //private static TaskRepository _repository;
+        //public static TaskRepository _TpInstence
+        //{
+        //    get
+        //    {
+        //        if (_repository == null)
+        //            _repository = new TaskRepository();
+        //        return _repository;
+        //    }
+        //}
 
         /// <summary>
         /// 閰嶇疆鍒濆鍖栥�
@@ -130,31 +177,44 @@
         }
 
 
+
         public void ThreaTotal(Tag tag, Device device)
         {
             List<Task> tasks = new List<Task>();
+            LogHelper.Info("ThreaTotal 绾跨▼鎬荤嚎鍚姩");
             tasks.Add(GetTask(delegate (Tag tag1, Device device1)
             {
                 try
                 {
-                    foreach (var ip in new List<string> {
-                    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
-                    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
-                    device1.D瀹氬瓙1鍙锋満姊版墜.Config.IP,
-                    device1.D瀹氬瓙2鍙锋満姊版墜.Config.IP,
-                    device1.Js鎹烽『1.Config.IP,
-                    device1.Js鎹烽『2.Config.IP,
-                    device1.缁村笇灏旀姄鑷�.Config.IP,
-                    device1.缁村笇灏旀姄鑷�.Config.IP,
-                    device1.RGV.Config.IP
-                })
-                    {
-                        string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
+                    //    foreach (var ip in new List<string> {
+                    //    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
+                    //    device1.p鍙戦偅绉�涓嬬嚎.Config.IP,
+                    //    device1.D瀹氬瓙1鍙锋満姊版墜.Config.IP,
+                    //    device1.D瀹氬瓙2鍙锋満姊版墜.Config.IP,
+                    //    device1.Js鎹烽『1.Config.IP,
+                    //    device1.Js鎹烽『2.Config.IP,
+                    //    device1.缁村笇灏旀姄鑷�.Config.IP,
+                    //    device1.缁村笇灏旀姄鑷�.Config.IP,
+                    //    device1.RGV.Config.IP,
+                    //    device1.S1002Read.Config.IP,
+                    //    device1.S2001Read.Config.IP,
+                    //    device1.S3001Read.Config.IP
+                    //})
+                    //    {
+                    //        string pattern = @"\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b";
 
-                        var matches = Regex.Match(ip, pattern);
-                        if (matches.Success)
-                            IsMachineOnline(matches.Value);
-                    }
+                    //        var matches = Regex.Match(ip, pattern);
+                    //        if (matches.Success)
+                    //        {
+                    //            var b = IsMachineOnline(matches.Value);
+                    //            if (!Iponlines.ContainsKey(ip))
+                    //            {
+                    //                Iponlines.TryAdd(ip, b);
+                    //            }
+                    //            else
+                    //                Iponlines[ip] = b;
+                    //        }
+                    //    }
                 }
                 catch (Exception ex)
                 {
@@ -164,25 +224,65 @@
             }, tag, device, 3000));
             tasks.Add(GetTask(ThreadMXC3, tag, 3000));
             tasks.Add(GetTask(ThreadMXC4, tag, 3000));
-            tasks.Add(GetTask(ResetGats, tag, 3000));
+            //tasks.Add(GetTask(ResetGats, tag, 3000));
 
-            tasks.Add(GetTask(sa1022, tag, 3000));
-            tasks.Add(GetTask(sa1025, tag, 3000));
-            tasks.Add(GetTask(sa1030, tag, 3000));
-            tasks.Add(GetTask(sa2001, tag, 3000));
-            tasks.Add(GetTask(sa2030, tag, 3000));
-            tasks.Add(GetTask(sa2008, tag, 3000));
-            tasks.Add(GetTask(sa3001, tag, 3000));
-            tasks.Add(GetTask(sa3005, tag, 3000));
-            tasks.Add(GetTask(sa3006, tag, 3000));
-            tasks.Add(GetTask(sa3010, tag, 3000));
+            tasks.Add(GetTask(taskssss1, tag, 3000));
+            tasks.Add(GetTask(taskssss2, tag, 3000));
+            tasks.Add(GetTask(taskssss3, tag, 3000));
+            //tasks.Add(GetTask(sa1022, tag, 3000));
+            //tasks.Add(GetTask(sa1025, tag, 3000));
+            //tasks.Add(GetTask(sa1030, tag, 3000));
+            //tasks.Add(GetTask(sa2001, tag, 3000));
+            //tasks.Add(GetTask(sa2030, tag, 3000));
+            //tasks.Add(GetTask(sa2008, tag, 3000));
+            //tasks.Add(GetTask(sa3001, tag, 3000));
+            //tasks.Add(GetTask(sa3005, tag, 3000));
+            //tasks.Add(GetTask(sa3006, tag, 3000));
+            //tasks.Add(GetTask(sa3010, tag, 3000));
 
 
+            tasks.Add(GetTask(ThreadMXC5, tag, 3000));
+            tasks.Add(GetTask(ThreadMXC6, tag, 3000));
+            tasks.Add(GetTask(ThreadS7helper, tag, 3000));
 
-
+            LogHelper.Info("ThreaTotal 绾跨▼鎬荤嚎runing");
             Task.WaitAll(tasks.ToArray());
+            LogHelper.Info("ThreaTotal 绾跨▼鎬荤嚎over");
         }
 
+
+        private void ThreadS7helper(Tag tag)
+        {
+            //var plc = new Plc(CpuType.S71500,);
+
+            //foreach (var item in collection)
+            //{
+            //    S7.Net.Plc plc = new Plc(CpuType.S71500, item.address, 0, 1);
+            //    Link(plc);
+            //    PLCS.Add(item.deviceName, plc);
+            //}
+        }
+
+        void taskssss1(Tag tag)
+        {
+            sa1025(tag);
+            sa1030(tag);
+        }
+        void taskssss2(Tag tag)
+        {
+            sa2001(tag);
+            sa2030(tag);
+            sa2008(tag);
+        }
+        void taskssss3(Tag tag)
+        {
+            sa3001(tag);
+            sa3005(tag);
+            sa3006(tag);
+            sa3010(tag);
+        }
+
+        //public static ConcurrentDictionary<string, bool> Iponlines = new ConcurrentDictionary<string, bool>();
         public bool IsMachineOnline(string hostNameOrIp, int timeout = 1000)
         {
             //device.p鍙戦偅绉�涓嬬嚎.Config.IP
@@ -273,6 +373,7 @@
 
             if (VERX != null)
             {
+                LogHelper.Info($"{VERX.deviceName}鏃堕棿鎴�{RedisHelper.Get<string>("Js鎹烽『1#Timestamp", out string mg)} D1212>{tag.Js1.D1212} 宸︽弧淇″彿:{TcpServer.GetBitdata(tag.Js1.D1212, 2)} D1212_LAST>{tag.Js1.D1212_LAST} 鍙虫弧淇″彿>{TcpServer.GetBitdata(tag.Js1.D1212, 3)} D1213_LAST>{tag.Js1.D1213_LAST}");
                 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
@@ -291,8 +392,9 @@
                 if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)
                 {
                     //tag.Js1.D1212_LAST = 0; 
+                    tag.Js1.D1224 = 0;
                     RedisHelper.Add($"Js鎹烽『1.D1202_LAST", "0", out string msg);
-                    //Conn.榛樿Redis.SetValue(VERX.deviceName + ".D1224", "0", VERX.deviceName + "Queue");
+                    //Conn.榛樿Redis.SetValue("Js鎹烽『1.D1224", "0", VERX.deviceName + "Queue");
                 }
 
                 if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)
@@ -313,8 +415,8 @@
                 if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)
                 {
                     //tag.Js1.D1213_LAST = 0;
+                    tag.Js1.D1225 = 0;
                     RedisHelper.Add($"Js鎹烽『1.D1203_LAST", "0", out string msg);
-                    //Conn.榛樿Redis.SetValue(VERX.deviceName + ".D1225", "0", VERX.deviceName + "Queue");
                 }
             }
         }
@@ -329,6 +431,8 @@
 
             if (VERX != null)
             {
+                LogHelper.Info($"{VERX.deviceName} 鏃堕棿鎴�{RedisHelper.Get<string>("Js鎹烽『2#Timestamp", out string mg)} D1212>{tag.Js2.D1212} 宸︽弧淇″彿:{TcpServer.GetBitdata(tag.Js2.D1212, 2)} D1212_LAST>{tag.Js2.D1212_LAST} 鍙虫弧淇″彿>{TcpServer.GetBitdata(tag.Js2.D1212, 3)} D1213_LAST>{tag.Js2.D1213_LAST}");
+
                 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
@@ -346,7 +450,7 @@
                 if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)
                 {
                     //tag.Js2.D1212_LAST = 0;
-
+                    tag.Js2.D1224 = 0;
                     RedisHelper.Add($"Js鎹烽『2.D1202_LAST", "0", out string msg);
                 }
                 if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)
@@ -364,10 +468,10 @@
                         RedisHelper.Add($"Js鎹烽『2.D1203_LAST", "1", out string msg);
                     }
                 }
-                if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)
+                if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 0)
                 {
                     //tag.Js2.D1213_LAST = 0;
-
+                    tag.Js2.D1225 = 0;
                     RedisHelper.Add($"Js鎹烽『2.D1203_LAST", "0", out string msg);
                 }
             }
@@ -411,6 +515,10 @@
                 }
                 else
                 {
+                    if (tag.wxr1.R44_LAST && !tag.wxr1.R44)
+                    {
+                        RedisHelper.Add($"缁村笇灏旀姄鑷�.R44_LAST", "false", out string msg);
+                    }
                     //TaskRepository ts = new TaskRepository();
                     if (tag.wxr1.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
                     {
@@ -439,7 +547,7 @@
                                 //tag.wxr1.R10 = true;
                                 Conn.榛樿Redis.SetValue(VERX.deviceName + ".R10", "true", VERX.deviceName + "Queue");
                                 //tag.wxr1.R44_LAST = false;
-                                RedisHelper.Add($"缁村笇灏旀姄鑷�.R44_LAST", "false", out string msg);
+                                //RedisHelper.Add($"缁村笇灏旀姄鑷�.R44_LAST", "false", out string msg);
                             }
                             else
                             {
@@ -468,7 +576,7 @@
             if (VERX != null)
             {
                 if (tag.wxr1.R46)
-                    LogHelper.Info($"{VERX.deviceName} R44>{tag.wxr1.R46} R44LAST>{tag.wxr1.R46_LAST} R10>{tag.wxr1.R11}");
+                    LogHelper.Info($"{VERX.deviceName} R46>{tag.wxr1.R46} R46LAST>{tag.wxr1.R46_LAST} R11>{tag.wxr1.R11}");
                 if (tag.wxr1.R46 && !tag.wxr1.R46_LAST && tag.wxr1.R11)
                 {
                     if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode) && !string.IsNullOrEmpty(traycode.Trim()))
@@ -495,6 +603,10 @@
                 }
                 else
                 {
+                    if (tag.wxr1.R46_LAST && !tag.wxr1.R46)
+                    {
+                        RedisHelper.Add($"缁村笇灏旀姄鑷�.R46_LAST", "false", out string msg);
+                    }
                     if (tag.wxr1.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
                     {
                         if (tag.wxr1.R11)
@@ -521,7 +633,7 @@
                                 //tag.wxr1.R11 = true;
                                 Conn.榛樿Redis.SetValue(VERX.deviceName + ".R11", "true", VERX.deviceName + "Queue");
                                 //tag.wxr1.R46_LAST = false;
-                                RedisHelper.Add($"缁村笇灏旀姄鑷�.R46_LAST", "false", out string msg);
+                                //RedisHelper.Add($"缁村笇灏旀姄鑷�.R46_LAST", "false", out string msg);
                             }
                             else
                             {
@@ -577,6 +689,10 @@
                 }
                 else
                 {
+                    if (tag.wxr2.R44_LAST && !tag.wxr2.R44)
+                    {
+                        RedisHelper.Add($"缁村笇灏旀姄鑷�.R44_LAST", "false", out string msg);
+                    }
                     if (tag.wxr2.R10_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
                     {
                         if (tag.wxr2.R10)
@@ -633,7 +749,7 @@
             if (VERX != null)
             {
                 if (tag.wxr2.R46)
-                    LogHelper.Info($"{VERX.deviceName} R44>{tag.wxr2.R46} R44LAST>{tag.wxr2.R46_LAST} R10>{tag.wxr2.R11}");
+                    LogHelper.Info($"{VERX.deviceName} R46>{tag.wxr2.R46} R46LAST>{tag.wxr2.R46_LAST} R11>{tag.wxr2.R11}");
                 if (tag.wxr2.R46 && !tag.wxr2.R46_LAST && tag.wxr2.R11)
                 {
                     if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode) && !string.IsNullOrEmpty(traycode.Trim()))
@@ -655,11 +771,15 @@
                     }
                     else
                     {
-                        TcpServer.TcpServerSend(VERX.deviceNo[2], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
+                        TcpServer.TcpServerSend(VERX.deviceNo[1], GZ.Device.PLC.PlcHelper.Hex2Bin("544F4E"));
                     }
                 }
                 else
                 {
+                    if (tag.wxr2.R46_LAST && !tag.wxr2.R46)
+                    {
+                        RedisHelper.Add($"缁村笇灏旀姄鑷�.R46_LAST", "false", out string msg);
+                    }
                     //LogHelper.Info($"Threadwxr2R 鎵樼洏鏀剧疆淇″彿1銆傘�  -{tag.wxr2.R11_LAST}");
                     if (tag.wxr2.R11_LAST) //鎵樼洏鏀剧疆淇″彿銆傘�
                     {
@@ -720,7 +840,7 @@
             Console.WriteLine($"ThreadTaskRun 浠诲姟涓嬪彂 =================> ");
             LogHelper.Info("ThreadTaskRun 浠诲姟涓嬪彂");
 
-            ITaskRepository taskservice = new TaskRepository();
+            TaskRepository taskservice = new TaskRepository();
             try
             {
                 LogHelper.Info("浠诲姟涓嬪彂  AGV 浠诲姟 杩涘叆");
@@ -768,15 +888,25 @@
 
                 LogHelper.Info($"鏌ョ湅RGV 鐢甸噺锛氥�{tag.RGV.R褰撳墠鐢甸噺}銆�鍏呯數鐘舵�锛氥�{tag.RGV.R鍏呯數鐘舵�}銆�鏁呴殰浠g爜锛氥�{tag.RGV.RgvrunError}銆�鎵嬪姩1鑷姩2銆恵tag.RGV.R鎵嬪姩1鑷姩2}銆�);
 
+                if (tag.RGV.R鍏呯數鐘舵� == 1)
+                {
+                    LogHelper.Info($"RGV 鍏呯數妯″紡锛屼笉鐢ㄧ銆�);
+                    return;
+                }
                 if (tag.RGV.R鎵嬪姩1鑷姩2 == 1)
                 {
                     LogHelper.Info($"RGV 鎵嬪姩妯″紡锛屼笉鐢ㄧ銆�);
                     return;
                 }
+                if (tag.RGV.RgvrunError > 0)
+                {
+                    LogHelper.Info($"RGV 鏁呴殰锛屼笉鐢ㄧ銆�);
+                    return;
+                }
+                LogHelper.Info($"RGV125鍛戒护鏌ョ湅 Rgv浠诲姟鏁版嵁 鍐�workmode:{tag.RGV.workMod} taskmod{tag.RGV.taskmod}  t1No:{tag.RGV.taskno1} t1do:{tag.RGV.task1do}  t2No:{tag.RGV.taskno2} t2do:{tag.RGV.task2do} taskend:{tag.RGV.taskend} ");
                 if (tag.RGV.taskend == 125)
                 {
                     LogHelper.Info($"RGV 鏈�25鍛戒护鏈墽琛屻� ");
-                    LogHelper.Info($"RGV125鍛戒护鏈墽琛�浠诲姟鏁版嵁 workmode:{tag.RGV.workMod}\n taskmod{tag.RGV.taskmod} \n t1No:{tag.RGV.taskno1}\n t1do:{tag.RGV.task1do} \n t2No:{tag.RGV.taskno2}\n t2do:{tag.RGV.task2do}\n taskend:{tag.RGV.taskend} ");
 
                     if (tag.RGV.workMod == 0 && tag.RGV.taskmod == 0 && tag.RGV.taskno1 == tag.RGV.ReadTask1No && tag.RGV.taskno2 == tag.RGV.ReadTask2No)
                     {
@@ -786,28 +916,28 @@
                     System.Threading.Thread.Sleep(3000);
                     return;
                 }
-                LogHelper.Info($"浠诲姟涓嬪彂 Rgv 浠诲姟 杩涘叆 Rgv淇℃伅 W1鐘舵�{tag.RGV.w1status} ReadTask1No>{tag.RGV.ReadTask1No} 1宸ヤ綅鏉$爜:{tag.RGV.bit1Code} bit1taskOver>{tag.RGV.bit1taskOver} W2鐘舵�{tag.RGV.w2status} ReadTask2No>{tag.RGV.ReadTask2No} 2宸ヤ綅鏉$爜:{tag.RGV.bit2Code} bit2taskOver>{tag.RGV.bit2taskOver}");
+                LogHelper.Info($"浠诲姟涓嬪彂 Rgv浠诲姟鏁版嵁 璇�W1鐘舵�{tag.RGV.w1status} ReadTask1No>{tag.RGV.ReadTask1No} 1宸ヤ綅鏉$爜:{tag.RGV.bit1Code} bit1taskOver>{tag.RGV.bit1taskOver} W2鐘舵�{tag.RGV.w2status} ReadTask2No>{tag.RGV.ReadTask2No} 2宸ヤ綅鏉$爜:{tag.RGV.bit2Code} bit2taskOver>{tag.RGV.bit2taskOver}");
                 TaskEntity task1 = null;
                 TaskEntity task2 = null;
                 var task1Isrun = false;
                 if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)
                 {
-                    var taskno = tag.RGV.ReadTask1No;
-                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
-                    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
-                    if (task1 != null && task1.S_B_STATE != "瀹屾垚")
-                        task1Isrun = true;
+                    //var taskno = tag.RGV.ReadTask1No;
+                    //string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
+                    //task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
+                    //if (task1 != null && task1.S_B_STATE != "瀹屾垚")
+                    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)
                 {
-                    var taskno = tag.RGV.ReadTask2No;
-                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
-                    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
-                    if (task2 != null && task2.S_B_STATE != "瀹屾垚")
-                        task2Isrun = true;
+                    //var taskno = tag.RGV.ReadTask2No;
+                    //string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
+                    //task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
+                    //if (task2 != null && task2.S_B_STATE != "瀹屾垚")
+                    task2Isrun = true;
                     //if (tag.RGV.bit2taskOver_LAST == 1)
                     //    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                 }
@@ -916,9 +1046,22 @@
                 //        var b = RedisHelper.Remove("RGVQueue", out rev);
                 //    }
                 //}
+                var tklistall = taskservice.FindList(x => x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
+                var tklist = tklistall.FindAll(x => x.S_B_STATE == "鏈墽琛�);
+                var tkunNormal = tklistall.Except(tklist);
+                if (tkunNormal.Any())
+                    foreach (var tk in tkunNormal)
+                    {
+                        if (tk.S_TASK_NO != task1?.S_TASK_NO && tk.S_TASK_NO != task2?.S_TASK_NO)
+                        {
+                            tk.S_B_STATE = "鍙栨秷";
+                            tk.S_NOTE = "涓嶅湪鎵ц闃熷垪涓�鍙栨秷";
+                            taskservice.Update(tk);
+                        }
+                    }
 
                 ///1 鏈夎揣  灏� 鍙栥�  1 娌¤揣 灏� 鍗歌揣锛�閮芥湁璐� 灏�鍗歌揣銆�閮芥病璐�灏�鍗�-                var tklist = taskservice.FindList(x => x.S_B_STATE == "鏈墽琛� && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
+                // 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 鏈変换鍔°� 
@@ -1114,12 +1257,18 @@
                         }
                     }
                 }
+                task1 = null;
+                task2 = null;
                 LogHelper.Info($"rgv 澶勭悊瀹屾垚銆倀askend 125");
                 #endregion
             }
             catch (Exception ex)
             {
                 LogHelper.Info(ex.Message + ex.StackTrace);
+            }
+            finally
+            {
+                taskservice.Disnull();
             }
         }
 
@@ -1131,345 +1280,465 @@
             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).OrderBy(x => x.T_CREATE).ToList();
-            var timeMorhours = requires.FindAll(x => DateTime.Now.Subtract(x.T_CREATE).TotalHours > 1);
-            if (timeMorhours.Any())
+            try
             {
-                foreach (var mor in timeMorhours)
+                var requires1 = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0).OrderBy(x => x.T_CREATE).ToList();
+                var timeMorhours = requires1.FindAll(x => DateTime.Now.Subtract(x.T_CREATE).TotalHours > 1);
+                if (timeMorhours.Any())
                 {
-                    mor.N_CREATEMETHOD = 2;
-                    mor.S_REVIEW_COMMENT = "瓒呮椂涓嶅鐞�;
-                    taskActRepository.Update(mor);
-                }
-                requires = requires.Except(timeMorhours).ToList();
-            }
-            foreach (var item in requires)
-            {
-                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE}鍏夋爡澶勭悊 =================> ");
-                var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);
-                if (tin == -1)
-                {
-                    item.N_CREATEMETHOD = -1;
-                    item.S_REVIEW_COMMENT = $"淇″彿鏈煡{item.S_ACTION_CODE}涓嶅鐞�;
-                    taskActRepository.Update(item);
-                    continue;
-                }
-                var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
-                if (task == null)
-                {
-                    item.N_CREATEMETHOD = -1;
-                    item.S_REVIEW_COMMENT = $"浠诲姟涓㈠け涓嶅鐞�;
-                    taskActRepository.Update(item);
-                    continue;
-                }
-                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)
-                {
-                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡澶勭悊 =================> ");
-                    var V = dev.location.ToList().FindIndex(x => x == loc) == 0;
-                    //杞﹁蛋浜� 寮�厜鏍�-                    if (!goin)
+                    foreach (var mor in timeMorhours)
                     {
-                        if (dev.deviceType == 4)
-                        {
-                            LogHelper.Info($"杞︾寮�緭閫佺嚎浜や簰>  {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
-                            switch (loc)
-                            {
-                                case "1019":
-                                    {
-                                        SetRedistoPlc("A1019鍙栬揣浜や簰.SOver", "true", "A1019鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "1030":
-                                    {
-                                        SetRedistoPlc("A1030鍙栬揣浜や簰.SOver", "true", "A1030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "2030":
-                                    {
-                                        SetRedistoPlc("A2030鍙栬揣浜や簰.SOver", "true", "A2030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "3005":
-                                    {
-                                        SetRedistoPlc("A3005鍙栬揣浜や簰.SOver", "true", "A3005鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "3010":
-                                    {
-                                        SetRedistoPlc("A3010鍙栬揣浜や簰.SOver", "true", "A3010鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                //}
-                                //switch (loc)
-                                //{
-                                case "1022":
-                                    {
-                                        SetRedistoPlc("A1022鏀捐揣浜や簰.SOver", "true", "A1022鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "1025":
-                                    {
-                                        SetRedistoPlc("A1025鏀捐揣浜や簰.SOver", "true", "A1025鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "2001":
-                                    {
-                                        SetRedistoPlc("A2001鏀捐揣浜や簰.SOver", "true", "A2001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                        tag.SA2001.wTaskNo = 20012007;
-                                        tag.SA2001.wEbit = 2007;
-                                        tag.SA2001.w鎵樼洏鐮�= TaskProcess.GenerateTaskNo("铏氭嫙鎵樼洏鍙�).Substring(3);
-                                    }
-                                    break;
-                                case "3001":
-                                    {
-                                        SetRedistoPlc("A3001鏀捐揣浜や簰.SOver", "true", "A3001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                                case "3006":
-                                    {
-                                        SetRedistoPlc("A3006鏀捐揣浜や簰.SOver", "true", "A3006鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
-                                    }
-                                    break;
-                            }
-                        }
-                        else
-                        {
-                            if (dev.deviceType == 1)
-                            {
-                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                                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", false);
-                            }
-                            else if (dev.deviceType == 2)
-                            {
-                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                                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 ? "D1220" : "D1221"), "0", dev.deviceName + "Queue");
-                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
-                            }
-                            else if (dev.deviceType == 5)
-                            {
-                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
-                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "1", dev.deviceName + "Queue");
-                                Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "0", dev.deviceName + "Queue");
-                            }
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊瀹屾垚 =================> ");
-                        }
-                        item.N_CREATEMETHOD = 1;
-                        item.S_REVIEW_COMMENT = $"鍏夋爡寮�惎瀹屾垚";
-                        taskActRepository.Update(item);
+                        mor.N_CREATEMETHOD = 2;
+                        mor.S_REVIEW_COMMENT = "瓒呮椂涓嶅鐞�;
+                        taskActRepository.Update(mor);
                     }
-                    //杞﹁杩涘叆浜や簰銆�+                    requires1 = requires1.Except(timeMorhours).ToList();
+                }
+                foreach (var requires in requires1.GroupBy(x => x.S_TASK_NO))
+                //foreach (var item in requires)
+                {
+                    var rsss = requires.ToList();
+                    var item = rsss.OrderBy(x => x.S_ACTION_CODE.Contains("release") ? 0 : 1).LastOrDefault();
+                    if (rsss.Count > 1)
+                    {
+                        rsss.Remove(item);
+                        foreach (var mor in rsss)
+                        {
+                            mor.N_CREATEMETHOD = 3;
+                            mor.S_REVIEW_COMMENT = "澶氫綑涓嶅鐞�;
+                            taskActRepository.Update(mor);
+                        }
+                    }
+                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE}鍏夋爡澶勭悊 =================> ");
+                    var tin = taskCOdes.IndexOf(item.S_ACTION_CODE);
+                    if (tin == -1)
+                    {
+                        item.N_CREATEMETHOD = -1;
+                        item.S_REVIEW_COMMENT = $"淇″彿鏈煡{item.S_ACTION_CODE}涓嶅鐞�;
+                        taskActRepository.Update(item);
+                        continue;
+                    }
+                    var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
+                    if (task == null)
+                    {
+                        item.N_CREATEMETHOD = -1;
+                        item.S_REVIEW_COMMENT = $"浠诲姟涓㈠け涓嶅鐞�;
+                        taskActRepository.Update(item);
+                        continue;
+                    }
+                    string loc = "";
+                    if (tin < 2)
+                    {
+                        loc = item.S_START_LOC;
+                    }
                     else
                     {
-                        if (dev.deviceType == 4)
+                        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)
+                    {
+                        LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡澶勭悊 =================> ");
+                        var locindex = dev.location.ToList().FindIndex(x => x == loc);
+                        var V = locindex == 0;
+                        //杞﹁蛋浜� 寮�厜鏍�+                        if (!goin)
                         {
-                            LogHelper.Info($"杞﹁姹傝緭閫佺嚎浜や簰> {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
-                            //tag.SA1019.Sagverr
-                            switch (loc)
+                            if (dev.deviceType == 4)
                             {
-                                case "1019":
-                                    {
-                                        if (tag.SA1019.SreadCan)
+                                LogHelper.Info($"杞︾寮�緭閫佺嚎浜や簰>  {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
+                                switch (loc)
+                                {
+                                    case "1019":
                                         {
-                                            LogHelper.Info($"1019 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A1019鍙栬揣浜や簰.SOver", "true", "A1019鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A1019鍙栬揣浜や簰.Ssetreq", "true", "A1019鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "1030":
-                                    {
-                                        if (tag.SA1030.SreadCan)
+                                        break;
+                                    case "1030":
                                         {
-                                            LogHelper.Info($"1030 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A1030鍙栬揣浜や簰.SOver", "true", "A1030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A1030鍙栬揣浜や簰.Ssetreq", "true", "A1030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "2030":
-                                    {
-                                        if (tag.SA2030.SreadCan)
+                                        break;
+                                    case "2030":
                                         {
-                                            LogHelper.Info($"2030 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A2030鍙栬揣浜や簰.SOver", "true", "A2030鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A2030鍙栬揣浜や簰.Ssetreq", "true", "A2030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "3005":
-                                    {
-                                        if (tag.ssx杈撻�绾�s3005.SreadCan)
+                                        break;
+                                    case "3005":
                                         {
-                                            LogHelper.Info($"3005 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A3005鍙栬揣浜や簰.SOver", "true", "A3005鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A3005鍙栬揣浜や簰.Ssetreq", "true", "A3005鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "3010":
-                                    {
-                                        if (tag.ssx杈撻�绾�s3010.SreadCan)
+                                        break;
+                                    case "3010":
                                         {
-                                            LogHelper.Info($"3010 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A3010鍙栬揣浜や簰.SOver", "true", "A3010鍙栬揣浜や簰Queue", "agv 鍙栬揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A3010鍙栬揣浜や簰.Ssetreq", "true", "A3010鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                //}
-                                //switch (loc)
-                                //{
-                                case "1022":
-                                    {
-                                        if (tag.SA1022.SreadCan)
+                                        break;
+                                    //}
+                                    //switch (loc)
+                                    //{
+                                    case "1022":
                                         {
-                                            LogHelper.Info($"1022 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A1022鏀捐揣浜や簰.SOver", "true", "A1022鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A1022鏀捐揣浜や簰.Ssetreq", "true", "A1022鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "1025":
-                                    {
-                                        if (tag.SA1025.SreadCan)
+                                        break;
+                                    case "1025":
                                         {
-                                            LogHelper.Info($"1025 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A1025鏀捐揣浜や簰.SOver", "true", "A1025鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A1025鏀捐揣浜や簰.Ssetreq", "true", "A1025鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "2001":
-                                    {
-                                        if (tag.SA2001.SreadCan)
+                                        break;
+                                    case "2001":
                                         {
-                                            LogHelper.Info($"2001 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A2001鏀捐揣浜や簰.SOver", "true", "A2001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
+                                            tag.SA2001.wTaskNo = 20012007;
+                                            tag.SA2001.wEbit = 2007;
+                                            tag.SA2001.w鎵樼洏鐮�= TaskProcess.GenerateTaskNo("铏氭嫙鎵樼洏鍙�).Substring(3);
                                         }
-                                        else
-                                            SetRedistoPlc("A2001鏀捐揣浜や簰.Ssetreq", "true", "A2001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "3001":
-                                    {
-                                        if (tag.ssx杈撻�绾�s3001.SreadCan)
+                                        break;
+                                    case "3001":
                                         {
-                                            LogHelper.Info($"3001 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A3001鏀捐揣浜や簰.SOver", "true", "A3001鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A3001鏀捐揣浜や簰.Ssetreq", "true", "A3001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
-                                case "3006":
-                                    {
-                                        if (tag.ssx杈撻�绾�s3006.SreadCan)
+                                        break;
+                                    case "3006":
                                         {
-                                            LogHelper.Info($"3006 璇诲埌杈撻�绾垮厑璁搞�");
-                                            continuuuuu = true;
+                                            SetRedistoPlc("A3006鏀捐揣浜や簰.SOver", "true", "A3006鏀捐揣浜や簰Queue", "agv 鏀捐揣瀹屾垚鍐欏畬鎴愪氦浜�);
                                         }
-                                        else
-                                            SetRedistoPlc("A3006鏀捐揣浜や簰.Ssetreq", "true", "A3006鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
-                                    }
-                                    break;
+                                        break;
+                                }
                             }
+                            else
+                            {
+                                if (dev.deviceType == 1)
+                                {
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                    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", false);
+                                }
+                                else if (dev.deviceType == 2)
+                                {
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                    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 ? "D1220" : "D1221"), "0", dev.deviceName + "Queue");
+                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "1", dev.deviceName + "Queue");
+                                }
+                                else if (dev.deviceType == 5)
+                                {
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 =================> ");
+                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "1", dev.deviceName + "Queue");
+                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "0", dev.deviceName + "Queue");
+                                }
+                                else if (dev.deviceType == 6)
+                                {
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 group=================> ");
+                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (locindex == 0 ? "WD1210" : locindex == 1 ? "WD1211" : "WD1212"), "0", dev.deviceName + "Queue");
+                                    GZ.Modular.Redis.WriteGroupEntity group = new GZ.Modular.Redis.WriteGroupEntity();
+                                    group.groupName = dev.deviceName + ".Turn" + (V ? "1" : "2");
+                                    group.queueStatus = 1;
+                                    group.queueTime = DateTime.Now;
+                                    group.writeList = new List<GZ.Modular.Redis.ParamData>();
+
+                                    GZ.Modular.Redis.ParamData p_WD1213 = new GZ.Modular.Redis.ParamData();
+                                    p_WD1213.paramName = dev.deviceName + "." + (V ? "WD1213" : "WD1215");
+                                    p_WD1213.paramValue = "1";
+                                    group.writeList.Add(p_WD1213);
+
+                                    GZ.Modular.Redis.ParamData p_WD1214 = new GZ.Modular.Redis.ParamData();
+                                    p_WD1214.paramName = dev.deviceName + "." + (V ? "WD1214" : "WD1216");
+                                    p_WD1214.paramValue = "0";
+                                    group.writeList.Add(p_WD1214);
+
+                                    string lastKey = "";
+                                    string lastVal = "";
+                                    Conn.榛樿Redis.SetQueue(group, dev.deviceName + "Queue", lastKey, lastVal);
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊 group over=================> ");
+                                }
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 寮�惎鍏夋爡澶勭悊瀹屾垚 =================> ");
+                            }
+                            item.N_CREATEMETHOD = 1;
+                            item.S_REVIEW_COMMENT = $"鍏夋爡寮�惎瀹屾垚";
+                            taskActRepository.Update(item);
                         }
+                        //杞﹁杩涘叆浜や簰銆�                         else
                         {
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊 =================> ");
-                            if (dev.deviceType == 1)
+                            if (dev.deviceType == 4)
                             {
-                                var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�-                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡鍏抽棴淇″彿{tf}");
-                                if (tf?.ToLower() == "true")
+                                LogHelper.Info($"杞﹁姹傝緭閫佺嚎浜や簰> {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} SSX AGV 浜や簰銆傘�銆�);
+                                //tag.SA1019.Sagverr
+                                switch (loc)
                                 {
-                                    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", false);
+                                    case "1019":
+                                        {
+                                            if (tag.SA1019.SreadCan)
+                                            {
+                                                LogHelper.Info($"1019 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A1019鍙栬揣浜や簰.Ssetreq", "true", "A1019鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA1019.StaskMode = 1;
+                                            }
+                                        }
+                                        break;
+                                    case "1030":
+                                        {
+                                            if (tag.SA1030.SreadCan)
+                                            {
+                                                LogHelper.Info($"1030 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A1030鍙栬揣浜や簰.Ssetreq", "true", "A1030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA1030.StaskMode = 1;
+                                            }
+                                        }
+                                        break;
+                                    case "2030":
+                                        {
+                                            if (tag.SA2030.SreadCan)
+                                            {
+                                                LogHelper.Info($"2030 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A2030鍙栬揣浜や簰.Ssetreq", "true", "A2030鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA2030.StaskMode = 1;
+                                            }
+                                        }
+                                        break;
+                                    case "3005":
+                                        {
+                                            if (tag.ssx杈撻�绾�s3005.SreadCan)
+                                            {
+                                                LogHelper.Info($"3005 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A3005鍙栬揣浜や簰.Ssetreq", "true", "A3005鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.ssx杈撻�绾�s3005.StaskMode = 1;
+                                            }
+                                        }
+                                        break;
+                                    case "3010":
+                                        {
+                                            if (tag.ssx杈撻�绾�s3010.SreadCan)
+                                            {
+                                                LogHelper.Info($"3010 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A3010鍙栬揣浜や簰.Ssetreq", "true", "A3010鍙栬揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.ssx杈撻�绾�s3010.StaskMode = 1;
+                                            }
+                                        }
+                                        break;
+                                    //}
+                                    //switch (loc)
+                                    //{
+                                    case "1022":
+                                        {
+                                            if (tag.SA1022.SreadCan)
+                                            {
+                                                LogHelper.Info($"1022 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A1022鏀捐揣浜や簰.Ssetreq", "true", "A1022鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA1022.StaskMode = 2;
+                                            }
+                                        }
+                                        break;
+                                    case "1025":
+                                        {
+                                            if (tag.SA1025.SreadCan)
+                                            {
+                                                LogHelper.Info($"1025 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A1025鏀捐揣浜や簰.Ssetreq", "true", "A1025鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA1025.StaskMode = 2;
+                                            }
+                                        }
+                                        break;
+                                    case "2001":
+                                        {
+                                            if (tag.SA2001.SreadCan)
+                                            {
+                                                LogHelper.Info($"2001 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A2001鏀捐揣浜や簰.Ssetreq", "true", "A2001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.SA2001.StaskMode = 2;
+                                            }
+                                        }
+                                        break;
+                                    case "3001":
+                                        {
+                                            if (tag.ssx杈撻�绾�s3001.SreadCan)
+                                            {
+                                                LogHelper.Info($"3001 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A3001鏀捐揣浜や簰.Ssetreq", "true", "A3001鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.ssx杈撻�绾�s3001.StaskMode = 2;
+                                            }
+                                        }
+                                        break;
+                                    case "3006":
+                                        {
+                                            if (tag.ssx杈撻�绾�s3006.SreadCan)
+                                            {
+                                                LogHelper.Info($"3006 璇诲埌杈撻�绾垮厑璁搞�");
+                                                continuuuuu = true;
+                                            }
+                                            else
+                                            {
+                                                SetRedistoPlc("A3006鏀捐揣浜や簰.Ssetreq", "true", "A3006鏀捐揣浜や簰Queue", "鍐橝GV鐢宠");
+                                                tag.ssx杈撻�绾�s3006.StaskMode = 2;
+                                            }
+                                        }
+                                        break;
                                 }
                             }
-                            else if (dev.deviceType == 2)
+                            else
                             {
-                                var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
-                                int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
-                                int close = TcpServer.GetBitdata(numm, (V ? 0 : 1));
-                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡鍏抽棴淇″彿{close}");
-                                if (close == 1)
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊 =================> ");
+                                if (dev.deviceType == 1)
                                 {
-                                    LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
-                                    continuuuuu = true;
+                                    var tf = Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "R50" : "R52"));//璇诲叧闂姸鎬�+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡鍏抽棴淇″彿{tf}");
+                                    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", false);
+                                    }
                                 }
-                                else
+                                else if (dev.deviceType == 2)
                                 {
-                                    LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆� + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue"));
-                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "0", dev.deviceName + "Queue");
-                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue");
+                                    var tf = Conn.榛樿Redis.GetValue(dev.deviceName + ".D1202");
+                                    int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
+                                    int close = TcpServer.GetBitdata(numm, (V ? 0 : 1));
+                                    LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏夋爡鍏抽棴淇″彿{close}");
+                                    if (close == 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"), "1", dev.deviceName + "Queue"));
+                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1222" : "D1223"), "0", dev.deviceName + "Queue");
+                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D1220" : "D1221"), "1", dev.deviceName + "Queue");
 
-                                    string d12201 = RedisHelper.Get<string>(dev.deviceName + "." + (V ? "D1220" : "D1221"), out string msg);
-                                    LogHelper.Info($"ThreadGrats 鍐檣(dev.deviceName + "." + (V ? "D1220" : "D1221"))}涓�1 锛�鍚庤{d12201}");
+                                        string d12201 = RedisHelper.Get<string>(dev.deviceName + "." + (V ? "D1220" : "D1221"), out string msg);
+                                        LogHelper.Info($"ThreadGrats 鍐檣(dev.deviceName + "." + (V ? "D1220" : "D1221"))}涓�1 锛�鍚庤{d12201}");
+                                    }
                                 }
-                            }
-                            else if (dev.deviceType == 5)
-                            {
+                                else if (dev.deviceType == 5)
+                                {
 
-                                var close = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "D2220" : "D2225")), typeof(System.UInt16));
-                                if (close == 1)
-                                {
-                                    LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�宸茬粡鍏抽棴锛�);
-                                    continuuuuu = true;
+                                    var close = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "D2220" : "D2225")), typeof(System.UInt16));
+                                    LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆�鍏抽棴鐘舵�锛歿close}锛�);
+                                    if (close == 0)
+                                    {
+                                        continuuuuu = true;
+                                    }
+                                    else
+                                    {
+                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "1", dev.deviceName + "Queue");
+                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "0", dev.deviceName + "Queue");
+                                    }
                                 }
-                                else
+                                else if (dev.deviceType == 6)
                                 {
-                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2212" : "D2217"), "1", dev.deviceName + "Queue");
-                                    Conn.榛樿Redis.SetValue(dev.deviceName + "." + (V ? "D2211" : "D2216"), "0", dev.deviceName + "Queue");
+                                    var close = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue(dev.deviceName + "." + (V ? "RD1203" : "RD1204")), typeof(System.UInt16));
+
+                                    var canDo = (System.UInt16)System.Convert.ChangeType(Conn.榛樿Redis.GetValue(dev.deviceName + "." + (locindex == 0 ? "RD1200" : locindex == 1 ? "RD1201" : "RD1202")), typeof(System.UInt16));
+                                    LogHelper.Info($"{dev.deviceName}{(V ? "宸� : "鍙�)} 鍏夋爡{(goin ? "鍏抽棴" : "寮�惎")} 鐢宠銆傚畞姹�鍏抽棴鐘舵�锛歿close}锛�鍏佽鎿嶄綔鐘舵�锛歿canDo}");
+                                    if (close == 0 && canDo == 1)
+                                    {
+                                        continuuuuu = true;
+                                    }
+                                    else
+                                    {
+                                        Conn.榛樿Redis.SetValue(dev.deviceName + "." + (locindex == 0 ? "WD1210" : locindex == 1 ? "WD1211" : "WD1212"), "1", dev.deviceName + "Queue");
+                                        LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊 group =================> ");
+                                        GZ.Modular.Redis.WriteGroupEntity group = new GZ.Modular.Redis.WriteGroupEntity();
+                                        group.groupName = dev.deviceName + ".Turn" + (V ? "1" : "2");
+                                        group.queueStatus = 1;
+                                        group.queueTime = DateTime.Now;
+                                        group.writeList = new List<GZ.Modular.Redis.ParamData>();
+
+                                        GZ.Modular.Redis.ParamData p_WD1213 = new GZ.Modular.Redis.ParamData();
+                                        p_WD1213.paramName = dev.deviceName + "." + (V ? "WD1213" : "WD1215");
+                                        p_WD1213.paramValue = "0";
+                                        group.writeList.Add(p_WD1213);
+
+                                        GZ.Modular.Redis.ParamData p_WD1214 = new GZ.Modular.Redis.ParamData();
+                                        p_WD1214.paramName = dev.deviceName + "." + (V ? "WD1214" : "WD1216");
+                                        p_WD1214.paramValue = "1";
+                                        group.writeList.Add(p_WD1214);
+
+                                        string lastKey = "";
+                                        string lastVal = "";
+                                        Conn.榛樿Redis.SetQueue(group, dev.deviceName + "Queue", lastKey, lastVal);
+                                        LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊 group over=================> ");
+                                    }
                                 }
+                                LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊瀹屾垚 =================> ");
                             }
-                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} 璁惧鏄瘂dev.deviceName} 鍏抽棴鍏夋爡澶勭悊瀹屾垚 =================> ");
                         }
                     }
-                }
 
-                if (continuuuuu)
-                {
-                    LogHelper.Info($"{item.S_TASK_NO}{item.S_ACTION_CODE} 杞﹁締鍙戦�缁х画浠诲姟锛�);
-                    continueTask?.Invoke(new HaiKangOrderInfo
+                    if (continuuuuu)
                     {
-                        reqCode = item.S_ID.Replace("-", ""),
-                        taskCode = item.S_TASK_NO
-                    });
-                    item.N_CREATEMETHOD = 1;
-                    item.S_REVIEW_COMMENT = $"杞﹀瓙缁х画浠诲姟OK";
-                    taskActRepository.Update(item);
+                        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;
+                        item.S_REVIEW_COMMENT = $"杞﹀瓙缁х画浠诲姟OK";
+                        taskActRepository.Update(item);
+                    }
+
                 }
+                requires1 = null;
+                timeMorhours = null;
             }
-            System.Threading.Thread.Sleep(3000);
+            catch (Exception ex)
+            {
+                LogHelper.Error("ThreadGrats>>" + ex.Message, ex);
+            }
+            finally
+            {
+                taskActRepository.Disnull();
+                taskRepository.Disnull();
+            }
+            //ResetGats(tag);
         }
         public void ResetGats(Tag tag)
         {
@@ -1482,18 +1751,20 @@
                 //int int0 = TcpServer.GetBitdata(numm, 0);
                 //int int1 = TcpServer.GetBitdata(numm, 1);
 
-                if (TcpServer.GetBitdata(numm, 0) == 0)
-                {
-                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue", false);
-                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue", false);
-                }
-                if (TcpServer.GetBitdata(numm, 1) == 0)
-                {
-                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue", false);
-                    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue", false);
-                }
+                //if (TcpServer.GetBitdata(numm, 0) == 0)
+                //{
+                //    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue", false);
+                //    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue", false);
+                //}
+                //if (TcpServer.GetBitdata(numm, 1) == 0)
+                //{
+                //    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue", false);
+                //    Conn.榛樿Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue", false);
+                //}
+
                 if (TcpServer.GetBitdata(numm, 2) == 0)
                 {
+                    //Conn.榛樿Redis.GetValue(dev.deviceName + ".D1224");
                     Conn.榛樿Redis.SetValue(dev.deviceName + ".D1224", "0", dev.deviceName + "Queue", false);
                 }
                 if (TcpServer.GetBitdata(numm, 3) == 0)
@@ -1510,18 +1781,22 @@
                 //涓�嚎鍦板潃锛�0.221.55.181     绔彛锛�000
                 //if (IsMachineOnline("10.221.55.181"))
                 {
-                    //if (tag.DZ1.D2211 == 1 && tag.DZ1.D2220 == 1)
-                    //    tag.DZ1.D2211 = 0;
-                    //if (tag.DZ1.D2216 == 1 && tag.DZ1.D2225 == 1)
-                    //    tag.DZ1.D2216 = 0;
+                    if (tag.DZ1.D2211 == 1 && tag.DZ1.D2220 == 1)
+                        //tag.DZ1.D2211 = 0;
+                        Conn.榛樿Redis.SetValue("D瀹氬瓙1鍙锋満姊版墜.D2211", "0", "D瀹氬瓙1鍙锋満姊版墜Queue", false);
+                    if (tag.DZ1.D2216 == 1 && tag.DZ1.D2225 == 1)
+                        //tag.DZ1.D2216 = 0;
+                        Conn.榛樿Redis.SetValue("D瀹氬瓙1鍙锋満姊版墜.D2216", "0", "D瀹氬瓙1鍙锋満姊版墜Queue", false);
                 }
                 //浜岀嚎鍦板潃锛�0.221.55.179     绔彛锛�000
                 //if (IsMachineOnline("10.221.55.179"))
                 {
-                    //if (tag.DZ2.D2211 == 1 && tag.DZ2.D2220 == 1)
-                    //    tag.DZ2.D2211 = 0;
-                    //if (tag.DZ2.D2216 == 1 && tag.DZ2.D2225 == 1)
-                    //    tag.DZ2.D2216 = 0;
+                    if (tag.DZ2.D2211 == 1 && tag.DZ2.D2220 == 1)
+                        //tag.DZ2.D2211 = 0;
+                        Conn.榛樿Redis.SetValue("D瀹氬瓙2鍙锋満姊版墜.D2211", "0", "D瀹氬瓙2鍙锋満姊版墜Queue", false);
+                    if (tag.DZ2.D2216 == 1 && tag.DZ2.D2225 == 1)
+                        //tag.DZ2.D2216 = 0;
+                        Conn.榛樿Redis.SetValue("D瀹氬瓙2鍙锋満姊版墜.D2216", "0", "D瀹氬瓙2鍙锋満姊版墜Queue", false);
                 }
             }
             LogHelper.Info($"ThreadGrats deviceType5鍏夋爡鍐欏叆浣嶉噸缃畬鎴愩� =================> ");
@@ -1533,96 +1808,239 @@
         public void ThreadEdown(Tag tag)
         {
             Console.WriteLine($"ThreadEdown 20 23 = 绌轰笅妫�祴 =================> ");
-            TaskRepository taskRepository = new TaskRepository();
-            foreach (var Bssx in new string[] { "1020", "1023" })
+            if (tag.RGV.R鍏呯數鐘舵� == 1 || tag.RGV.R鎵嬪姩1鑷姩2 == 1 || tag.RGV.RgvrunError > 0)
             {
-                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)
+                LogHelper.Info($"RGV 鎵嬪姩||鏁呴殰||鍏呯數锛岀┖涓嬫娴嬬粓姝€�");
+                return;
+            }
+            TaskRepository taskRepository = new TaskRepository();
+            try
+            {
+                foreach (var Bssx in new string[] { "1020", "1023" })
                 {
-                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                    string msg = "";
-                    if (task != null)
+                    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)
                     {
-                        Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        continue;
-                    }
-                    try
-                    {
-                        var listtep = new List<string>();
-                        if (Bssx == "1020")
+                        var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                        string msg = "";
+                        if (task != null)
                         {
-                            if (!string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1003Barcode) && string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1011Barcode))
+                            Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            continue;
+                        }
+                        try
+                        {
+                            var listtep = new List<string>();
+                            if (Bssx == "1020")
                             {
-                                listtep = new List<string> { "1012", "1004" };
+                                if (!string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1003Barcode) && string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1011Barcode))
+                                {
+                                    listtep = new List<string> { "1012", "1004" };
+                                }
+                                else
+                                {
+                                    listtep = new List<string> { "1004", "1012" };
+                                }
                             }
                             else
                             {
-                                listtep = new List<string> { "1004", "1012" };
-                            }
-                        }
-                        else
-                        {
-                            //if (tag.SF涓嬫枡浣�RArrive1005 == 1)
-                            if (!string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1005Barcode) && string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1013Barcode))
-                            {
-                                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 && task == null)
-                            {
-                                task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                                msg = "";
-                                if (task != null)
+                                //if (tag.SF涓嬫枡浣�RArrive1005 == 1)
+                                if (!string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1005Barcode) && string.IsNullOrEmpty(tag.SFT涓嬫枡鍙f墭鐩�R1013Barcode))
                                 {
-                                    Console.WriteLine($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                                    LogHelper.Info($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                                    continue;
+                                    listtep = new List<string> { "1014", "1006" };
                                 }
-
-                                var b = TaskProcess.CreateTask("", Bssx, item, "绌轰笂RGV", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                                if (b)
+                                else
                                 {
-                                    LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{Bssx}>to {item}寮�鍒涘缓鎴愬姛");
-                                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
-                                    //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
-                                    RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out msg);
-                                    //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "1", $"S{item}ReadQueue");
-                                    break;
+                                    listtep = new List<string> { "1006", "1014" };
                                 }
                             }
-                            else if (R5 != 5 && R5绌洪棽_LAST == 1)
+
+                            foreach (var item in listtep)//(Bssx == "1020" ? new string[] { "1004", "1012" } : new string[] { "1006", "1014" }))
                             {
-                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out msg);
-                                //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
+                                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 && task == null)
+                                {
+                                    task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                                    msg = "";
+                                    if (task != null)
+                                    {
+                                        Console.WriteLine($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                        LogHelper.Info($" {item}鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                        continue;
+                                    }
+
+                                    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 msg);
+                                        //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "1", $"S{Bssx}ReadQueue");
+                                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out msg);
+                                        //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 msg);
+                                    //Conn.榛樿Redis.SetValue($"S{item}Read.R5绌洪棽_LAST", "0", $"S{item}ReadQueue");
+                                }
                             }
+                            System.Threading.Thread.Sleep(1000);
                         }
-                        System.Threading.Thread.Sleep(1000);
+                        catch (Exception ex)
+                        {
+                            LogHelper.Error(ex.Message, ex);
+                            Console.WriteLine(ex.Message + ex.StackTrace);
+                        }
                     }
-                    catch (Exception ex)
+                    else if (RtaskState != 3 && RtaskState_LAST == 1)
                     {
-                        LogHelper.Error(ex.Message, ex);
-                        Console.WriteLine(ex.Message + ex.StackTrace);
+                        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);
                 }
-                else if (RtaskState != 3 && RtaskState_LAST == 1)
+
+                /**
+                foreach (var Bssx in new string[] { "1008", "1016" })
                 {
-                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
-                    //Conn.榛樿Redis.SetValue($"S{Bssx}Read.RtaskState_LAST", "0", $"S{Bssx}ReadQueue");
+                    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 task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                        string msg = "";
+                        if (task != null)
+                        {
+                            Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            continue;
+                        }
+
+                        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)
+                        {
+                            task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                            msg = "";
+                            if (task != null)
+                            {
+                                Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                continue;
+                            }
+                            var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                            if (b)
+                            {
+                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
+                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2);
+
+                                LogHelper.Info($"{R鎵樼洏鐮亇 瀹氬瓙鐢熶骇瀹屾垚杩涜椴嶅伐锛侊紒");
+                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/223", JsonConvert.SerializeObject(new
+                                {
+                                    cntrCode = R鎵樼洏鐮�
+                                    type = 1,
+                                    lineCode = "1002,1008".Contains(Bssx) ? "T01" : "T02"
+                                }));
+                                //var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                //if (strr.success && strr.data != null)
+                                //{
+
+                                //}
+                                //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);
                 }
-                System.Threading.Thread.Sleep(2000);
+
+
+                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 task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                        string msg = "";
+                        if (task != null)
+                        {
+                            Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            continue;
+                        }
+                        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)
+                        {
+                            task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                            msg = "";
+                            if (task != null)
+                            {
+                                Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                continue;
+                            }
+                            var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                            if (b)
+                            {
+                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
+                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
+                                LogHelper.Info($"{R鎵樼洏鐮亇 杞瓙鐢熶骇瀹屾垚杩涜椴嶅伐锛侊紒");
+                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/223", JsonConvert.SerializeObject(new
+                                {
+                                    cntrCode = R鎵樼洏鐮�
+                                    type = 2,
+                                    lineCode = "1002,1008".Contains(Bssx) ? "T01" : "T02"
+                                }));
+                                //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);
+                }
+                **/
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("ThreadEdown>>" + ex.Message, ex);
+            }
+            finally
+            {
+                taskRepository.Disnull();
             }
 
             foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" })
@@ -1639,115 +2057,170 @@
 
         public void ThreadDdown(Tag tag)
         {
-            Console.WriteLine($"ThreadDdown 08 10 ==================> 1026");
-            TaskRepository taskRepository = new TaskRepository();
-            foreach (var Bssx in new string[] { "1008", "1016" })
+            Console.WriteLine($"ThreadDdown 08 16==================> 1026");
+            if (tag.RGV.R鍏呯數鐘舵� == 1 || tag.RGV.R鎵嬪姩1鑷姩2 == 1 || tag.RGV.RgvrunError > 0)
             {
-                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)
+                LogHelper.Info($"RGV 鎵嬪姩||鏁呴殰||鍏呯數锛�8 16 > 1026缁堟銆�);
+                return;
+            }
+            TaskRepository taskRepository = new TaskRepository();
+            try
+            {
+                foreach (var Bssx in new string[] { "1008", "1016" })
                 {
-                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                    string msg = "";
-                    if (task != null)
+                    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)
                     {
-                        Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        continue;
-                    }
-
-                    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)
-                    {
-                        task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                        msg = "";
+                        var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                        string msg = "";
                         if (task != null)
                         {
-                            Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                            LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
                             continue;
                         }
-                        var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                        if (b)
+
+                        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)
                         {
-                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out 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;
+                            task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                            msg = "";
+                            if (task != null)
+                            {
+                                Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                continue;
+                            }
+                            var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1026", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                            if (b)
+                            {
+                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
+                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg2);
+
+                                LogHelper.Info($"{R鎵樼洏鐮亇 瀹氬瓙鐢熶骇瀹屾垚杩涜椴嶅伐锛侊紒");
+                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/223", JsonConvert.SerializeObject(new
+                                {
+                                    cntrCode = R鎵樼洏鐮�
+                                    type = 1,
+                                    lineCode = "1002,1008".Contains(Bssx) ? "T01" : "T02"
+                                }));
+                                //var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                //if (strr.success && strr.data != null)
+                                //{
+
+                                //}
+                                //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 (R5 != 5 && R5绌洪棽_LAST == 1)
+                    else if (RtaskState != 3 && RtaskState_LAST == 1)
                     {
-                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg2);
+                        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);
                 }
-                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);
+
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("ThreadDown>>" + ex.Message, ex);
+            }
+            finally
+            {
+                taskRepository.Disnull();
             }
         }
 
         public void Thread0210Down(Tag tag)
         {
+            //return;
             Console.WriteLine($"Thread0210Down ==================>");
-            TaskRepository taskRepository = new TaskRepository();
-            foreach (var Bssx in new string[] { "1002", "1010" })
+            if (tag.RGV.R鍏呯數鐘舵� == 1 || tag.RGV.R鎵嬪姩1鑷姩2 == 1 || tag.RGV.RgvrunError > 0)
             {
-                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)
+                LogHelper.Info($"RGV 鎵嬪姩||鏁呴殰||鍏呯數锛�2 10 > 1017缁堟銆�);
+                return;
+            }
+            TaskRepository taskRepository = new TaskRepository();
+            try
+            {
+                foreach (var Bssx in new string[] { "1002", "1010" })
                 {
-                    var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                    string msg = "";
-                    if (task != null)
+                    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)
                     {
-                        Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                        continue;
-                    }
-                    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)
-                    {
-                        task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
-                        msg = "";
+                        var task = taskRepository.FindEntity(x => x.S_START_LOC == Bssx && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                        string msg = "";
                         if (task != null)
                         {
-                            Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
-                            LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            Console.WriteLine($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                            LogHelper.Info($"{Bssx} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
                             continue;
                         }
-                        var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
-                        if (b)
+                        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)
                         {
-                            RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out 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;
+                            task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "瀹屾垚" && x.S_B_STATE != "鍙栨秷");
+                            msg = "";
+                            if (task != null)
+                            {
+                                Console.WriteLine($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                LogHelper.Info($"{item} 鏈夋鍦�[{task.S_B_STATE}] 涓殑{task.S_TASK_NO}浠诲姟");
+                                continue;
+                            }
+                            var b = TaskProcess.CreateTask("", Bssx, item, "婊¤浆1017", 5, new List<string> { R鎵樼洏鐮�}, "RGV");
+                            if (b)
+                            {
+                                RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "1", out msg);
+                                RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "1", out string msg1);
+                                LogHelper.Info($"{R鎵樼洏鐮亇 杞瓙鐢熶骇瀹屾垚杩涜椴嶅伐锛侊紒");
+                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/223", JsonConvert.SerializeObject(new
+                                {
+                                    cntrCode = R鎵樼洏鐮�
+                                    type = 2,
+                                    lineCode = "1002,1008".Contains(Bssx) ? "T01" : "T02"
+                                }));
+                                //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 (R5 != 5 && R5绌洪棽_LAST == 1)
+                    else if (RtaskState != 3 && RtaskState_LAST == 1)
                     {
-                        RedisHelper.Add($"S{item}Read.R5绌洪棽_LAST", "0", out string msg1);
+                        RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
                     }
+                    System.Threading.Thread.Sleep(2000);
                 }
-                else if (RtaskState != 3 && RtaskState_LAST == 1)
-                {
-                    RedisHelper.Add($"S{Bssx}Read.RtaskState_LAST", "0", out string msg);
-                }
-                System.Threading.Thread.Sleep(2000);
+
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("Thread0210Down>>" + ex.Message, ex);
+            }
+            finally
+            {
+                taskRepository.Disnull();
             }
         }
 
@@ -1775,6 +2248,7 @@
                             {
                                 LogHelper.Info($"ssx == 1003 && tag.SF涓嬫枡浣�WRelease1003:{tag.SF涓嬫枡浣�WRelease1003}  鍐檉1 2210=1锛孉rrive{ssx}BarcodeLast={RtrayCode}");
                                 tag.FNK1.D2210 = 1;
+                                //Conn.榛樿Redis.SetValue($"p鍙戦偅绉�涓嬬嚎.D2210", "1", $"p鍙戦偅绉�涓嬬嚎Queue",false);
                             }
                             break;
                         case "1005":
@@ -1815,33 +2289,33 @@
 
                 if (WRelease == 1 && rReleaseOver == 1)
                 {
-                    switch (ssx)
-                    {
-                        case "1003":
-                            {
-                                LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK1.D2213{tag.FNK1.D2213}=1? 骞跺啓0");
-                                tag.FNK1.D2213 = 0;
-                            }
-                            break;
-                        case "1005":
-                            {
-                                LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK1.D2218{tag.FNK1.D2218}=1? 骞跺啓0");
-                                tag.FNK1.D2218 = 0;
-                            }
-                            break;
-                        case "1011":
-                            {
-                                LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK2.D2213{tag.FNK1.D2213}=1? 骞跺啓0");
-                                tag.FNK2.D2213 = 0;
-                            }
-                            break;
-                        case "1013":
-                            {
-                                LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK2.D2218{tag.FNK2.D2218}=1?  骞跺啓0");
-                                tag.FNK2.D2218 = 0;
-                            }
-                            break;
-                    }
+                    //switch (ssx)
+                    //{
+                    //    case "1003":
+                    //        {
+                    //            LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK1.D2213{tag.FNK1.D2213}=1? 骞跺啓0");
+                    //            tag.FNK1.D2213 = 0;
+                    //        }
+                    //        break;
+                    //    case "1005":
+                    //        {
+                    //            LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK1.D2218{tag.FNK1.D2218}=1? 骞跺啓0");
+                    //            tag.FNK1.D2218 = 0;
+                    //        }
+                    //        break;
+                    //    case "1011":
+                    //        {
+                    //            LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK2.D2213{tag.FNK1.D2213}=1? 骞跺啓0");
+                    //            tag.FNK2.D2213 = 0;
+                    //        }
+                    //        break;
+                    //    case "1013":
+                    //        {
+                    //            LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  璇籉NK2.D2218{tag.FNK2.D2218}=1?  骞跺啓0");
+                    //            tag.FNK2.D2218 = 0;
+                    //        }
+                    //        break;
+                    //}
                     LogHelper.Info($"璇粄ssx} WRelease=1&& rReleaseOver=1  WRelease 鍐�");
                     Conn.榛樿Redis.SetValue($"FNK1003051113.WRelease{ssx}", "0", $"FNK1003051113Queue");
                 }
@@ -1852,12 +2326,14 @@
         public void ThreadFNK1Over(Tag tag)
         {
             Console.WriteLine($"ThreadFNK1Over    =====>");
+            LogHelper.Info($" FN1 鏃堕棿鎴�{RedisHelper.Get<string>("p鍙戦偅绉�涓嬬嚎#Timestamp", out string mg)}");
             LogHelper.Info($" FN1 D2217>{tag.FNK1.D2217} D2217LAST>{tag.FNK1.D2217_LAST} D2215>{tag.FNK1.D2215} D2216>{tag.FNK1.D2216} D2218>{tag.FNK1.D2218}");
             //LogHelper.Info($" FN1 .D2217=1,2217_LAST=0 鍐�2215=0锛孌2217_LAST=1锛學Release1005=1 RArrive1005_LAST=0");
+
             if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
             {
                 //tag.FNK1.D2215 = 0;
-                tag.FNK1.D2218 = 1;
+                //tag.FNK1.D2218 = 1;
                 //tag.FNK1.D2212_LAST = 1;
                 RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
 
@@ -1884,7 +2360,7 @@
             LogHelper.Info($" FN1 D2212>{tag.FNK1.D2212} D2212LAST>{tag.FNK1.D2212_LAST} D2210>{tag.FNK1.D2210} D2211>{tag.FNK1.D2211} D2213>{tag.FNK1.D2213}");
             if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
             {
-                tag.FNK1.D2213 = 1;
+                //tag.FNK1.D2213 = 1;
                 //tag.FNK1.D2210 = 0;
                 //tag.FNK1.D2217_LAST = 1;
                 RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
@@ -1915,11 +2391,12 @@
         public void ThreadFNK2Over(Tag tag)
         {
             Console.WriteLine($"ThreadFNK2Over    =====>");
+            LogHelper.Info($" FN2 鏃堕棿鎴�{RedisHelper.Get<string>("p鍙戦偅绉�涓嬬嚎#Timestamp", out string mg)}");
             LogHelper.Info($" FN2 D2217>{tag.FNK2.D2217} D2217LAST>{tag.FNK2.D2217_LAST} D2215>{tag.FNK2.D2215} D2216>{tag.FNK2.D2216} D2218>{tag.FNK2.D2218}");
             if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
             {
                 //tag.FNK2.D2215 = 0;
-                tag.FNK2.D2218 = 1;
+                //tag.FNK2.D2218 = 1;
                 //tag.FNK2.D2212_LAST = 1;
                 RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2217_LAST", "1", out string msg);
 
@@ -1948,7 +2425,7 @@
             if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)
             {
                 //tag.FNK2.D2210 = 0;
-                tag.FNK2.D2213 = 1;
+                //tag.FNK2.D2213 = 1;
                 //tag.FNK2.D2217_LAST = 1;
                 RedisHelper.Add($"p鍙戦偅绉�涓嬬嚎.D2212_LAST", "1", out string msg);
 
@@ -1978,11 +2455,12 @@
         {
             var taggg = tag.SA1019;
             string vqu = "A1019鍙栬揣浜や簰";
-            Console.WriteLine($"1019浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"1019浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
             //Console.WriteLine($"1019浠诲姟鐘舵�锛�  =====>");
             //Console.WriteLine($"1019浠诲姟鐘舵�锛歿tag.SA1019.RtaskState}- barcode:{tag.SA1019.R鎵樼洏鐮亇- 绌洪棽{tag.SA1019.R5绌洪棽}");
@@ -1991,18 +2469,38 @@
         private void sa2008(Tag tag)
         {
             var rdisTcode = RedisHelper.Get<string>($"Arrive{2008}BarcodeLast", out string msg);
-            //if(tag.ssx杈撻�绾�s2008)
+            LogHelper.Info($"2008 鎵樼洏鍙穥tag.SA2030.R鎵樼洏鐮亇  redis Arrive{2008}BarcodeLast鎵樼洏鍙凤細{rdisTcode} 鍖归厤鏍¢獙銆�);
+            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2008.R鎵樼洏鐮� && rdisTcode != tag.ssx杈撻�绾�s2008.R鎵樼洏鐮�
+            {
+                var ntr = tag.ssx杈撻�绾�s2008.R鎵樼洏鐮�
+                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                {
+                    cntrCode = ntr,
+                    type = 1
+                }));
+                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                if (strr.success && strr.data != null)
+                {
+                    var end = (strr.data.lineNum == 1 ? 2027
+                                : strr.data.lineNum == 2 ? 2020 : 2013);
+                    tag.ssx杈撻�绾�s2008.wTaskNo = (uint)(20080000 + end);
+                    tag.ssx杈撻�绾�s2008.wEbit = 2027;
+                    tag.ssx杈撻�绾�s2008.R鎵樼洏鐮�= ntr;
+                    RedisHelper.Add<string>($"Arrive{2008}BarcodeLast", ntr, out msg);
+                }
+            }
         }
 
         private void sa2030(Tag tag)
         {
             var taggg = tag.SA2030;
             string vqu = "A2030鍙栬揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2010,11 +2508,12 @@
         {
             var taggg = tag.SA2001;
             string vqu = "A2001鏀捐揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2022,11 +2521,12 @@
         {
             var taggg = tag.SA1030;
             string vqu = "A1030鍙栬揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
                 SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
                 SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "鍐橝GV鐢宠");
             }
         }
 
@@ -2034,11 +2534,12 @@
         {
             var taggg = tag.SA1025;
             string vqu = "A1025鏀捐揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2046,11 +2547,12 @@
         {
             var taggg = tag.SA1022;
             string vqu = "A1022鏀捐揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2058,11 +2560,12 @@
         {
             var taggg = tag.ssx杈撻�绾�s3010;
             string vqu = "A3010鍙栬揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2070,11 +2573,12 @@
         {
             var taggg = tag.ssx杈撻�绾�s3006;
             string vqu = "A3006鏀捐揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2082,11 +2586,12 @@
         {
             var taggg = tag.ssx杈撻�绾�s3005;
             string vqu = "A3005鍙栬揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2094,11 +2599,12 @@
         {
             var taggg = tag.ssx杈撻�绾�s3010;
             string vqu = "A3001鏀捐揣浜や簰";
-            Console.WriteLine($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
-            if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
+            LogHelper.Info($"{vqu}浠诲姟鐘舵�锛�  =====>浠诲姟鐢宠锛歿taggg.Ssetreq},杈撻�绾垮厑璁革細{taggg.SreadCan} 浠诲姟瀹屾垚锛歿taggg.SOver} 杈撻�绾挎敹鍒板畬鎴愶細{taggg.SreadAgvover}");
+            if (taggg.SOver && taggg.SreadAgvover)
             {
-                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "鍐橝GV鐢宠");
-                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "鍐橝GV鐢宠");
+                SetRedistoPlc(vqu + ".Ssetreq", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".SOver", "false", vqu + "Queue", "娓匒GV鐢宠");
+                SetRedistoPlc(vqu + ".StaskMode", "0", vqu + "Queue", "娓匒GV鐢宠");
             }
         }
 
@@ -2124,7 +2630,19 @@
         }
         public void Thread1030Down(Tag tag)
         {
-            //Console.WriteLine($"SA1030 浠诲姟鐘舵�锛�  =====>agv瀹屾垚SOver{tag.SA1030.SOver}");
+            Console.WriteLine($"SA1030 浠诲姟鐘舵�锛�  =====>");
+            if (tag.SA1030.RtaskState == 4 && tag.SA1030.RtaskState_LAST == 0 && tag.SA2001.R5绌洪棽 == 5)
+            {
+                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                {
+                    requestType = 10,
+                    startBit = "1030",
+                    endBit = "2001",
+                }));
+                RedisHelper.Add($"S1030Read.RtaskState_LAST", "1", out string msg);
+            }
+            else if (tag.SA1030.RtaskState != 4 && tag.SA1030.RtaskState_LAST == 1)
+                RedisHelper.Add($"S1030Read.RtaskState_LAST", "0", out string msg);
             //if (tag.SA1019.SOver && tag.SA1019.SreadSsxOver)
             //{
             //    SetRedistoPlc("A1022鏀捐揣浜や簰.Ssetreq", "false", "A1022鏀捐揣浜や簰Queue", "娓呯悊");
@@ -2132,8 +2650,16 @@
             //}
             //Console.WriteLine($"SA1030 浠诲姟鐘舵�锛歿tag.SA1030.RtaskState}- 绌洪棽{tag.SA1030.R5绌洪棽}-->瀵瑰簲缁堢偣2001>绌洪棽5锛歿tag.SA2001.R5绌洪棽}");
         }
+        static int i = 0;
         public void Thread2030Down(Tag tag)
         {
+            i++;
+            if (i > 2 * 3600 / 3)
+            {
+                Console.Clear();
+                LogHelper.Info($"寰幆{i}娆�> 娓呯┖鎺у埗鍙般�");
+                i = 0;
+            }
 
             //Console.WriteLine($"SA2030 浠诲姟鐘舵�锛�  =====>");
             //Console.WriteLine($"SA2030 浠诲姟鐘舵�锛歿tag.SA2030.RtaskState}- 绌洪棽{tag.SA2030.R5绌洪棽} - barcode:{tag.SA2030.R鎵樼洏鐮亇");
@@ -2143,519 +2669,535 @@
         public void ResolveMesTask(Tag tag)
         {
             TaskRepository taskservice = new TaskRepository();
-            var tasks = taskservice.FindList(x => (x.S_B_STATE == "MES" || x.S_B_STATE == "People") && x.N_PRIORITY == -88);
-            var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceType == 2);
-            //if (VERXs.Any())
-            foreach (var task in tasks)
+            try
             {
-                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} ");
-                if (task.S_TYPE?.Trim() == "100")
+                var tasks = taskservice.FindList(x => (x.S_B_STATE == "MES" || x.S_B_STATE == "People") && x.N_PRIORITY == -88);
+                var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceType == 2);
+                foreach (var task in tasks)
                 {
-                    LogHelper.Info($"MES浠诲姟 S_TYPE 100->{task.S_TYPE} ");
-                }
-                var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));
-                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} {(sx == null ? "闈� : "鏄�)}鎬昏鏈哄櫒浜轰换鍔�);
-                if (sx == null)
-                {
-                gotoOOOOOOOOO:
-                    if (string.IsNullOrEmpty(task.S_CNTRS) && !string.IsNullOrEmpty(task.S_INDEX))
+                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} ");
+                    if (task.S_TYPE?.Trim() == "100")
                     {
-                        // 鍙枡浠诲姟銆�鎸囧畾鐗╂枡涓嶆寚瀹氭墭鐩橈紝闇�鍑哄簱
-                        var ssagv = Settings.deviceInfos.Find(x => x.deviceType == 4);
-                        if (ssagv.location.Contains(task.S_START_LOC))
-                            switch (task.S_START_LOC)
-                            {
-                                case "2030":
-                                    if (!string.IsNullOrEmpty(tag.SA2030.R鎵樼洏鐮�)
-                                    {
-                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 2030 鍑哄彛鎵樼洏鍙穥tag.SA2030.R鎵樼洏鐮亇 鍖归厤鏍¢獙銆�);
-                                        var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                        LogHelper.Info($"MES浠诲姟 S_TYPE 100->{task.S_TYPE} ");
+                    }
+                    var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));
+                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} {(sx == null ? "闈� : "鏄�)}鎬昏鏈哄櫒浜轰换鍔�);
+                    if (sx == null)
+                    {
+                    gotoOOOOOOOOO:
+                        if (string.IsNullOrEmpty(task.S_CNTRS) && !string.IsNullOrEmpty(task.S_INDEX))
+                        {
+                            // 鍙枡浠诲姟銆�鎸囧畾鐗╂枡涓嶆寚瀹氭墭鐩橈紝闇�鍑哄簱
+                            var ssagv = Settings.deviceInfos.Find(x => x.deviceType == 4);
+                            if (ssagv.location.Contains(task.S_START_LOC))
+                                switch (task.S_START_LOC)
+                                {
+                                    case "2030":
+                                        if (!string.IsNullOrEmpty(tag.SA2030.R鎵樼洏鐮�)
                                         {
-                                            cntrCode = tag.SA2030.R鎵樼洏鐮�
-                                            type = 1
-                                        }));
-                                        var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                        if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                        {
-                                            task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
-                                            taskservice.Update(task);
-                                            goto gotoOOOOOOOOO;
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 2030 鍑哄彛鎵樼洏鍙穥tag.SA2030.R鎵樼洏鐮亇 鍖归厤鏍¢獙銆�);
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.SA2030.R鎵樼洏鐮�
+                                                type = 1
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
+                                                taskservice.Update(task);
+                                                goto gotoOOOOOOOOO;
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�2030 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                            }
                                         }
                                         else
                                         {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�2030 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                            //2027  2220   2013.. 璇嗗埆涓�笅锛屽紑濮嬪簱
+                                            //1 鐪�7 20 13 鏄惁鏈変换鍔°� 鏈夊垯涓嶅嚭浜嗐� 绛夊嚭鍙e垽鏂尮閰嶃�
+                                            //2  閮芥病鏈変换鍔★紝閫愪釜鍖归厤鏄惁绗﹀悎锛屽垯鍑哄簱銆�+                                            //LogHelper.Info($"");
+                                            {
+                                                var t20132027 = tag.ssx杈撻�绾�s2027;
+                                                LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                                if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                                {
+                                                    LogHelper.Info($"2027浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                    continue;
+                                                }
+                                            }
+                                            {
+                                                var t20132027 = tag.ssx杈撻�绾�s2020;
+                                                LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                                if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                                {
+                                                    LogHelper.Info($"2020浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                    continue;
+                                                }
+                                            }
+                                            {
+                                                var t20132027 = tag.ssx杈撻�绾�s2013;
+                                                LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
+                                                if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
+                                                {
+                                                    LogHelper.Info($"2013浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
+                                                    continue;
+                                                }
+                                            }
+                                            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�)
+                                            {
+                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                                {
+                                                    cntrCode = tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
+                                                    type = 1
+                                                }));
+                                                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                                {
+                                                    LogHelper.Info($"2027 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2027.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20272030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                    tag.ssx杈撻�绾�s2027.wTaskNo = 20272030;
+                                                    tag.ssx杈撻�绾�s2027.wEbit = 2030;
+                                                    tag.ssx杈撻�绾�s2027.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
+                                                    LogHelper.Info($"2027 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                    continue;
+                                                }
+                                            }
+                                            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�)
+                                            {
+                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                                {
+                                                    cntrCode = tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
+                                                    type = 1
+                                                }));
+                                                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                                {
+                                                    LogHelper.Info($"2020 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2020.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20202030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                    tag.ssx杈撻�绾�s2020.wTaskNo = 20202030;
+                                                    tag.ssx杈撻�绾�s2020.wEbit = 2030;
+                                                    tag.ssx杈撻�绾�s2020.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
+                                                    LogHelper.Info($"2020 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                    continue;
+                                                }
+                                            }
+                                            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�)
+                                            {
+                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                                {
+                                                    cntrCode = tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
+                                                    type = 1
+                                                }));
+                                                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                                {
+                                                    LogHelper.Info($"2013 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2013.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20132030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
+                                                    tag.ssx杈撻�绾�s2013.wTaskNo = 20132030;
+                                                    tag.ssx杈撻�绾�s2013.wEbit = 2030;
+                                                    tag.ssx杈撻�绾�s2013.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
+                                                    LogHelper.Info($"2013 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
+                                                    continue;
+                                                }
+                                            }
+                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鏃ュ織鑳借窇鍒拌繖锛岃鏄庢病鐗╂枡锛屾垨鑰呴兘涓嶇鍚�鏃犳硶鍘�030");
                                         }
+                                        break;
+                                    case "1019":
+                                        if (!string.IsNullOrEmpty(tag.SA1019.R鎵樼洏鐮�)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                            {
+                                                cntrCode = tag.SA1019.R鎵樼洏鐮�
+                                                type = 2
+                                            }));
+                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                            {
+                                                task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
+                                                taskservice.Update(task);
+                                                goto gotoOOOOOOOOO;
+                                            }
+                                            else
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�1019 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                            }
+                                        }
+                                        break;
+                                    //case "1030":
+                                    //    {
+
+                                    //    }
+                                    //break;
+                                    case "3005":
+                                        {
+                                            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�)
+                                            {
+                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                                {
+                                                    cntrCode = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
+                                                    type = 2
+                                                }));
+                                                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                                {
+                                                    task.S_CNTRS = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
+                                                    taskservice.Update(task);
+                                                    goto gotoOOOOOOOOO;
+                                                }
+                                                else
+                                                {
+                                                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                                }
+                                            }
+                                        }
+                                        break;
+                                    case "3010":
+                                        {
+                                            if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�)
+                                            {
+                                                var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
+                                                {
+                                                    cntrCode = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
+                                                    type = 2
+                                                }));
+                                                var strr = JsonConvert.DeserializeObject<MES2234>(str);
+                                                if (strr.success && strr.data.materialCode == task.S_INDEX)
+                                                {
+                                                    task.S_CNTRS = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
+                                                    taskservice.Update(task);
+                                                    goto gotoOOOOOOOOO;
+                                                }
+                                                else
+                                                {
+                                                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
+                                                }
+                                            }
+                                        }
+                                        break;
+                                }
+                            //else if (ssagv.location.Contains(task.S_END_LOC))
+                            //    switch (task.S_END_LOC)
+                            //    {
+                            //        case "1022":
+                            //            {
+                            //                if (tag.SA1022.R5绌洪棽 != 1)
+                            //                {
+                            //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 闈炵┖闂诧紝涓嶆帹閫�);
+                            //                    continue;
+                            //                }
+                            //            }
+                            //            break;
+                            //        case "1025":
+                            //            {
+                            //                if (tag.SA1025.R5绌洪棽 != 1)
+                            //                {
+                            //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 闈炵┖闂诧紝涓嶆帹閫�);
+                            //                    continue;
+                            //                }
+                            //            }
+                            //            break;
+                            //        case "2001":
+                            //            {
+                            //                if (tag.SA2001.R5绌洪棽 != 1)
+                            //                {
+                            //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001 闈炵┖闂诧紝涓嶆帹閫�);
+                            //                    continue;
+                            //                }
+                            //            }
+                            //            break;
+                            //        case "3001":
+                            //            {
+                            //                if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 1)
+                            //                {
+                            //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001 闈炵┖闂诧紝涓嶆帹閫�);
+                            //                    continue;
+                            //                }
+                            //            }
+                            //            break;
+                            //        case "3006":
+                            //            {
+                            //                if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 1)
+                            //                {
+                            //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006 闈炵┖闂诧紝涓嶆帹閫�);
+                            //                    continue;
+                            //                }
+                            //            }
+                            //            break;
+                            //    }
+                        }
+                        else
+                        {
+                            //if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
+                            //{
+                            //}
+                            //if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))  //1030 鏄富鍔ㄧ敵璇凤紝 涓嶇敤鍒ゆ柇銆�+                            //{
+                            //    //鐗╂枡鍖归厤鍒ゆ柇銆傚拰 2030鍒ゆ柇
+                            //}
+                            string type = "";
+                            if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))
+                                switch (task.S_START_LOC)
+                                {
+                                    case "1019":
+                                        {
+                                            type = "A009";
+                                            if (tag.SA1019.RtaskState != 4)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 1019 RtaskState>{tag.SA1019.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "2030":
+                                        {
+                                            type = "A007";
+                                            if (tag.SA2030.RtaskState != 4)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 2030 RtaskState>{tag.SA2030.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "3005":
+                                        {
+                                            type = "A010";
+                                            if (tag.ssx杈撻�绾�s3005.RtaskState != 4)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3005 RtaskState>{tag.ssx杈撻�绾�s3005.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "3010":
+                                        {
+                                            type = "A010";
+                                            if (tag.ssx杈撻�绾�s3010.RtaskState != 4)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3010 RtaskState>{tag.ssx杈撻�绾�s3010.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                }
+                            if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
+                                switch (task.S_END_LOC)
+                                {
+                                    case "1022":
+                                        {
+                                            type = "A008";
+                                            if (tag.SA1022.R5绌洪棽 != 5)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 >{tag.SA1022.R5绌洪棽} 闈炵┖闂诧紝涓嶆帹閫�);
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "1025":
+                                        {
+                                            type = "A007";
+                                            if (tag.SA1025.R5绌洪棽 != 5)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 >{tag.SA1025.R5绌洪棽} 闈炵┖闂诧紝涓嶆帹閫�);
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "2001":
+                                        {
+                                            type = "A007";
+                                            if (tag.SA2001.R5绌洪棽 != 5)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001>{tag.SA2001.R5绌洪棽} 闈炵┖闂诧紝涓嶆帹閫�);
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "3001":
+                                        {
+                                            type = "A010";
+                                            if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 5)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001>{tag.ssx杈撻�绾�s3001.R5绌洪棽} 闈炵┖闂诧紝涓嶆帹閫�);
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                    case "3006":
+                                        {
+                                            type = "A010";
+                                            if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 5)
+                                            {
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006>{tag.ssx杈撻�绾�s3001.R5绌洪棽} 闈炵┖闂诧紝涓嶆帹閫�);
+                                                continue;
+                                            }
+                                        }
+                                        break;
+                                }
+
+                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐩存帴鐢熸垚瀵瑰簲浠诲姟");
+                            //鐩存帴鐢熸垚瀵瑰簲浠诲姟銆�+                            var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS?.Split(',').ToList() ?? new List<string>(), "AGV", type);
+
+                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐩存帴鐢熸垚瀵瑰簲浠诲姟 缁撴灉锛歿res}");
+                            if (res)
+                            {
+                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 淇敼鏍囪瘑");
+                                //task.N_PRIORITY = 0;
+                                taskservice.dbcontext.Set<TaskEntity>().Attach(task);
+                                taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;
+                                taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;
+                                taskservice.dbcontext.SaveChanges();
+                            }
+                        }
+                    }
+                    else
+                    {
+                        var sindex = sx.location.ToList().IndexOf(task.S_END_LOC);
+                        LocRepository locRepository = new LocRepository();
+                        //鐢熸垚璺宠穬浠诲姟銆� -- 鎵樼洏璐т綅琛ㄣ� 
+                        var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);
+
+                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鏌ユ壘鏄惁鏈夊凡鐢熸垚浠诲姟锛歿t1s != null}");
+                        if (t1s.Any())
+                        {
+                            var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();
+                            if (t1.S_END_LOC == task.S_END_LOC)
+                            {
+                                task.N_PRIORITY = 0;
+                                task.S_B_STATE = "MES_瀹屾垚";
+                                taskservice.Update(task);
+                                continue;
+                            }
+                            if (t1.S_B_STATE == "瀹屾垚")
+                            {
+                                //1.缁堢偣鏄惁鏈夋墭鐩樸� 渚濇嵁鏄粓鐐圭殑浠诲姟鏄�浣滀负缁堢偣锛岃繕鏄捣鐐广�
+                                //var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC");
+                                //var ec = taskservice.FindList(x => x.S_START_LOC == task.S_START_LOC && x.S_END_LOC == task.S_START_LOC, new Common.Data.Pagination
+                                //                        {
+                                //                            page = 1,
+                                //                            sidx = "T_CREATE",
+                                //                            sord = "desc",
+                                //                            rows = 1
+                                //                        }).FirstOrDefault();
+                                //TaskEntity ec = null;
+                                //var dev = Conn.榛樿Redis.GetValue(sx.deviceName + "." + (sindex == 0 ? "D1224" : "D1225"));
+                                //if (dev?.Trim() == "1")
+                                //    ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "瀹屾垚", new Common.Data.Pagination
+                                //    {
+                                //        page = 1,
+                                //        sidx = "T_CREATE",
+                                //        sord = "desc",
+                                //        rows = 1
+                                //    }).FirstOrDefault();
+
+                                bool canReq = true;
+                                var tf = Conn.榛樿Redis.GetValue(sx.deviceName + ".D1202");
+                                var V = sx.location.ToList().FindIndex(x => x == task.S_END_LOC) == 0;
+                                var tf2 = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
+                                canReq = TcpServer.GetBitdata(tf2, (V ? 2 : 3)) == 1;
+                                //if (canReq)
+                                //    ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "瀹屾垚", new Common.Data.Pagination
+                                //    {
+                                //        page = 1,
+                                //        sidx = "T_CREATE",
+                                //        sord = "desc",
+                                //        rows = 1
+                                //    }).FirstOrDefault();
+                                if (t1.S_START_LOC == task.S_START_LOC && canReq)//!= task.S_END_LOC)
+                                {
+                                    //绗簩娈点�
+                                    LocEntity endLoc = null;
+                                    var di = sx;
+                                    if (di != null)
+                                    {
+                                        //foreach (var ssloc in di.deviceNo)
+                                        {
+                                            var ssloc = di.deviceNo[1];
+                                            var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
+                                            if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE.Trim() == "鏃�)
+                                            {
+                                                endLoc = endloc;
+                                                //break;
+                                            }
+                                            else
+                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缂撳瓨浣峽ssloc} 涓嶅彲鐢ㄣ�");
+                                        }
+                                        if (endLoc != null)
+                                        {
+                                            var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "涓嬬┖", 7, "NONE".Split(',').ToList());
+                                            if (res)
+                                            {
+                                                task.N_PRIORITY = 0; taskservice.Update(task);
+                                            }
+                                        }
+                                    }
+                                }
+                                else
+                                {
+                                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐢熸垚绗笁娈典换鍔°�");
+                                    if (t1.S_START_LOC != task.S_START_LOC)
+                                    {
+                                        t1 = taskservice.FindEntity(x => x.S_SRC_NO == task.S_TASK_NO && x.S_START_LOC == task.S_START_LOC && x.S_B_STATE == "瀹屾垚");
+                                    }
+                                    var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + "琛ユ弧", 6, task.S_CNTRS.Split(',').ToList());
+                                    if (res)
+                                    {
+                                        task.N_PRIORITY = 0; taskservice.Update(task);
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        {
+                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 绛涢�鐢熸垚绗竴娈�浠诲姟銆�);
+                            //鐢熸垚绗竴娈点�
+                            LocEntity endLoc = null;
+                            var di = sx;
+                            if (di != null)
+                            {
+                                //foreach (var ssloc in di.deviceNo)
+                                {
+                                    var ssloc = di.deviceNo[0];
+                                    var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
+                                    if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE.Trim() == "鏃�)
+                                    {
+                                        endLoc = endloc;
+                                        //break;
                                     }
                                     else
-                                    {
-                                        //2027  2220   2013.. 璇嗗埆涓�笅锛屽紑濮嬪簱
-                                        //1 鐪�7 20 13 鏄惁鏈変换鍔°� 鏈夊垯涓嶅嚭浜嗐� 绛夊嚭鍙e垽鏂尮閰嶃�
-                                        //2  閮芥病鏈変换鍔★紝閫愪釜鍖归厤鏄惁绗﹀悎锛屽垯鍑哄簱銆�-                                        //LogHelper.Info($"");
-                                        {
-                                            var t20132027 = tag.ssx杈撻�绾�s2027;
-                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
-                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
-                                            {
-                                                LogHelper.Info($"2027浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
-                                                continue;
-                                            }
-                                        }
-                                        {
-                                            var t20132027 = tag.ssx杈撻�绾�s2020;
-                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
-                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
-                                            {
-                                                LogHelper.Info($"2020浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
-                                                continue;
-                                            }
-                                        }
-                                        {
-                                            var t20132027 = tag.ssx杈撻�绾�s2013;
-                                            LogHelper.Info($"璇嗗埆2027浠诲姟 鎵樼洏鍙凤細{t20132027.R鎵樼洏鐮亇 RTaskNo>{t20132027.RTaskNo} REbit>{t20132027.REbit} wTaskNo>{t20132027.wTaskNo} wEbit>{t20132027.wEbit}");
-                                            if ((t20132027.RTaskNo > 0 && t20132027.REbit == 2030) || (t20132027.wTaskNo > 0 && t20132027.wEbit == 2030))
-                                            {
-                                                LogHelper.Info($"2013浠诲姟 浠诲姟缁堢偣鏄�030 锛岀粓姝�);
-                                                continue;
-                                            }
-                                        }
-                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�)
-                                        {
-                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                            {
-                                                cntrCode = tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
-                                                type = 1
-                                            }));
-                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                            {
-                                                LogHelper.Info($"2027 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2027.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20272030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
-                                                tag.ssx杈撻�绾�s2027.wTaskNo = 20272030;
-                                                tag.ssx杈撻�绾�s2027.wEbit = 2030;
-                                                tag.ssx杈撻�绾�s2027.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2027.R鎵樼洏鐮�
-                                                LogHelper.Info($"2027 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
-                                                continue;
-                                            }
-                                        }
-                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�)
-                                        {
-                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                            {
-                                                cntrCode = tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
-                                                type = 1
-                                            }));
-                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                            {
-                                                LogHelper.Info($"2020 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2020.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20202030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
-                                                tag.ssx杈撻�绾�s2020.wTaskNo = 20202030;
-                                                tag.ssx杈撻�绾�s2020.wEbit = 2030;
-                                                tag.ssx杈撻�绾�s2020.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2020.R鎵樼洏鐮�
-                                                LogHelper.Info($"2020 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
-                                                continue;
-                                            }
-                                        }
-                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�)
-                                        {
-                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                            {
-                                                cntrCode = tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
-                                                type = 1
-                                            }));
-                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                            {
-                                                LogHelper.Info($"2013 璇诲埌鎵樼洏{tag.ssx杈撻�绾�s2013.R鎵樼洏鐮亇 鍖归厤鎴愬姛锛屽啓浠诲姟鍙凤細20132030锛岀粓鐐癸細2030 鍜屾墭鐩樼爜鍚岃");
-                                                tag.ssx杈撻�绾�s2013.wTaskNo = 20132030;
-                                                tag.ssx杈撻�绾�s2013.wEbit = 2030;
-                                                tag.ssx杈撻�绾�s2013.w鎵樼洏鐮�= tag.ssx杈撻�绾�s2013.R鎵樼洏鐮�
-                                                LogHelper.Info($"2013 > 2030  SSX浠诲姟涓嬪彂瀹屾垚銆�);
-                                                continue;
-                                            }
-                                        }
-                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鏃ュ織鑳借窇鍒拌繖锛岃鏄庢病鐗╂枡锛屾垨鑰呴兘涓嶇鍚�鏃犳硶鍘�030");
-                                    }
-                                    break;
-                                case "1019":
-                                    if (!string.IsNullOrEmpty(tag.SA1019.R鎵樼洏鐮�)
-                                    {
-                                        var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                        {
-                                            cntrCode = tag.SA1019.R鎵樼洏鐮�
-                                            type = 2
-                                        }));
-                                        var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                        if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                        {
-                                            task.S_CNTRS = tag.SA2030.R鎵樼洏鐮�
-                                            taskservice.Update(task);
-                                            goto gotoOOOOOOOOO;
-                                        }
-                                        else
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�1019 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
-                                        }
-                                    }
-                                    break;
-                                //case "1030":
-                                //    {
+                                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缂撳瓨浣峽ssloc} 涓嶅彲鐢ㄣ�");
+                                }
+                                if (endLoc != null)
+                                {
+                                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鍒涘缓绗竴娈�浠诲姟銆�);
+                                    var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "婊¤浆", 8, task.S_CNTRS.Split(',').ToList());
 
-                                //    }
-                                //break;
-                                case "3005":
+                                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鍒涘缓绗竴娈�浠诲姟銆傜粨鏋滐細{res}");
+                                    if (res)
                                     {
-                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�)
-                                        {
-                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                            {
-                                                cntrCode = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
-                                                type = 2
-                                            }));
-                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                            {
-                                                task.S_CNTRS = tag.ssx杈撻�绾�s3005.R鎵樼洏鐮�
-                                                taskservice.Update(task);
-                                                goto gotoOOOOOOOOO;
-                                            }
-                                            else
-                                            {
-                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
-                                            }
-                                        }
+                                        task.N_PRIORITY = 0; taskservice.Update(task);
                                     }
-                                    break;
-                                case "3010":
-                                    {
-                                        if (!string.IsNullOrEmpty(tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�)
-                                        {
-                                            var str = Settings.apiHelper.Post(Settings.MESbaseUrl + "mom-basic/dataTransmission/json/service/224", JsonConvert.SerializeObject(new
-                                            {
-                                                cntrCode = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
-                                                type = 2
-                                            }));
-                                            var strr = JsonConvert.DeserializeObject<MES2234>(str);
-                                            if (strr.success && strr.data.materialCode == task.S_INDEX)
-                                            {
-                                                task.S_CNTRS = tag.ssx杈撻�绾�s3010.R鎵樼洏鐮�
-                                                taskservice.Update(task);
-                                                goto gotoOOOOOOOOO;
-                                            }
-                                            else
-                                            {
-                                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐗╂枡{task.S_INDEX} 涓�3010 鍑哄彛鐨勬墭鐩樼墿鏂檣strr.data.materialCode}涓嶇鍚�);
-                                            }
-                                        }
-                                    }
-                                    break;
+                                }
                             }
-                        //else if (ssagv.location.Contains(task.S_END_LOC))
-                        //    switch (task.S_END_LOC)
-                        //    {
-                        //        case "1022":
-                        //            {
-                        //                if (tag.SA1022.R5绌洪棽 != 1)
-                        //                {
-                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 闈炵┖闂诧紝涓嶆帹閫�);
-                        //                    continue;
-                        //                }
-                        //            }
-                        //            break;
-                        //        case "1025":
-                        //            {
-                        //                if (tag.SA1025.R5绌洪棽 != 1)
-                        //                {
-                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 闈炵┖闂诧紝涓嶆帹閫�);
-                        //                    continue;
-                        //                }
-                        //            }
-                        //            break;
-                        //        case "2001":
-                        //            {
-                        //                if (tag.SA2001.R5绌洪棽 != 1)
-                        //                {
-                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001 闈炵┖闂诧紝涓嶆帹閫�);
-                        //                    continue;
-                        //                }
-                        //            }
-                        //            break;
-                        //        case "3001":
-                        //            {
-                        //                if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 1)
-                        //                {
-                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001 闈炵┖闂诧紝涓嶆帹閫�);
-                        //                    continue;
-                        //                }
-                        //            }
-                        //            break;
-                        //        case "3006":
-                        //            {
-                        //                if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 1)
-                        //                {
-                        //                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006 闈炵┖闂诧紝涓嶆帹閫�);
-                        //                    continue;
-                        //                }
-                        //            }
-                        //            break;
-                        //    }
-                    }
-                    else
-                    {
-                        //if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
-                        //{
-                        //}
-                        //if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))  //1030 鏄富鍔ㄧ敵璇凤紝 涓嶇敤鍒ゆ柇銆�-                        //{
-                        //    //鐗╂枡鍖归厤鍒ゆ柇銆傚拰 2030鍒ゆ柇
-                        //}
-                        string type = "";
-                        if (new List<string> { "1019"/*, "1030"*/, "2030", "3005", "3010" }.Contains(task.S_START_LOC))
-                            switch (task.S_START_LOC)
-                            {
-                                case "1019":
-                                    {
-                                        type = "A009";
-                                        if (tag.SA1019.RtaskState != 4)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 1019 RtaskState>{tag.SA1019.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "2030":
-                                    {
-                                        type = "A007";
-                                        if (tag.SA2030.RtaskState != 4)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 2030 RtaskState>{tag.SA2030.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "3005":
-                                    {
-                                        type = "A010";
-                                        if (tag.ssx杈撻�绾�s3005.RtaskState != 4)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3005 RtaskState>{tag.ssx杈撻�绾�s3005.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "3010":
-                                    {
-                                        type = "A010";
-                                        if (tag.ssx杈撻�绾�s3010.RtaskState != 4)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 璧风偣 3010 RtaskState>{tag.ssx杈撻�绾�s3010.RtaskState} 鏈敵璇稲GV浠诲姟锛屼笉鎺ㄩ�");
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                            }
-                        if (new List<string> { "2001", "1022", "1025", "3001", "3006" }.Contains(task.S_END_LOC))
-                            switch (task.S_END_LOC)
-                            {
-                                case "1022":
-                                    {
-                                        type = "A008";
-                                        if (tag.SA1022.R5绌洪棽 != 1)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣1022 闈炵┖闂诧紝涓嶆帹閫�);
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "1025":
-                                    {
-                                        type = "A007";
-                                        if (tag.SA1025.R5绌洪棽 != 1)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 1025 闈炵┖闂诧紝涓嶆帹閫�);
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "2001":
-                                    {
-                                        type = "A007";
-                                        if (tag.SA2001.R5绌洪棽 != 1)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 2001 闈炵┖闂诧紝涓嶆帹閫�);
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "3001":
-                                    {
-                                        type = "A010";
-                                        if (tag.ssx杈撻�绾�s3001.R5绌洪棽 != 1)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3001 闈炵┖闂诧紝涓嶆帹閫�);
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                                case "3006":
-                                    {
-                                        type = "A010";
-                                        if (tag.ssx杈撻�绾�s3006.R5绌洪棽 != 1)
-                                        {
-                                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 缁堢偣 3006 闈炵┖闂诧紝涓嶆帹閫�);
-                                            continue;
-                                        }
-                                    }
-                                    break;
-                            }
-
-                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐩存帴鐢熸垚瀵瑰簲浠诲姟");
-                        //鐩存帴鐢熸垚瀵瑰簲浠诲姟銆�-                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS?.Split(',').ToList() ?? new List<string>(), type);
-
-                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鐩存帴鐢熸垚瀵瑰簲浠诲姟 缁撴灉锛歿res}");
-                        if (res)
-                        {
-                            LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 淇敼鏍囪瘑");
-                            //task.N_PRIORITY = 0;
-                            taskservice.dbcontext.Set<TaskEntity>().Attach(task);
-                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;
-                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;
-                            taskservice.dbcontext.SaveChanges();
                         }
+
                     }
                 }
-                else
-                {
-                    var sindex = sx.location.ToList().IndexOf(task.S_END_LOC);
-                    LocRepository locRepository = new LocRepository();
-                    //鐢熸垚璺宠穬浠诲姟銆� -- 鎵樼洏璐т綅琛ㄣ� 
-                    var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);
-
-                    LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鏌ユ壘鏄惁鏈夊凡鐢熸垚浠诲姟锛歿t1s != null}");
-                    if (t1s.Any())
-                    {
-                        var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();
-                        if (t1.S_END_LOC == task.S_END_LOC)
-                        {
-                            task.N_PRIORITY = 0;
-                            task.S_B_STATE = "MES_瀹屾垚";
-                            taskservice.Update(task);
-                            continue;
-                        }
-                        if (t1.S_B_STATE == "瀹屾垚")
-                        {
-                            //1.缁堢偣鏄惁鏈夋墭鐩樸� 渚濇嵁鏄粓鐐圭殑浠诲姟鏄�浣滀负缁堢偣锛岃繕鏄捣鐐广�
-                            //var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC");
-                            //var ec = taskservice.FindList(x => x.S_START_LOC == task.S_START_LOC && x.S_END_LOC == task.S_START_LOC, new Common.Data.Pagination
-                            //                        {
-                            //                            page = 1,
-                            //                            sidx = "T_CREATE",
-                            //                            sord = "desc",
-                            //                            rows = 1
-                            //                        }).FirstOrDefault();
-                            //TaskEntity ec = null;
-                            //var dev = Conn.榛樿Redis.GetValue(sx.deviceName + "." + (sindex == 0 ? "D1224" : "D1225"));
-                            //if (dev?.Trim() == "1")
-                            //    ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "瀹屾垚", new Common.Data.Pagination
-                            //    {
-                            //        page = 1,
-                            //        sidx = "T_CREATE",
-                            //        sord = "desc",
-                            //        rows = 1
-                            //    }).FirstOrDefault();
-                            bool canReq = true;
-                            var tf = Conn.榛樿Redis.GetValue(sx.deviceName + ".D1202");
-                            var V = sx.location.ToList().FindIndex(x => x == task.S_END_LOC) == 0;
-                            var tf2 = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
-                            canReq = TcpServer.GetBitdata(tf2, (V ? 2 : 3)) == 1;
-                            //if (canReq)
-                            //    ec = taskservice.FindList(x => x.S_END_LOC == task.S_END_LOC && x.S_B_STATE == "瀹屾垚", new Common.Data.Pagination
-                            //    {
-                            //        page = 1,
-                            //        sidx = "T_CREATE",
-                            //        sord = "desc",
-                            //        rows = 1
-                            //    }).FirstOrDefault();
-                            if (t1.S_START_LOC == task.S_START_LOC && canReq)//!= task.S_END_LOC)
-                            {
-                                //绗簩娈点�
-                                LocEntity endLoc = null;
-                                var di = sx;
-                                if (di != null)
-                                {
-                                    //foreach (var ssloc in di.deviceNo)
-                                    {
-                                        var ssloc = di.deviceNo[1];
-                                        var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
-                                        if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE.Trim() == "鏃�)
-                                        {
-                                            endLoc = endloc;
-                                            //break;
-                                        }
-                                    }
-                                    if (endLoc != null)
-                                    {
-                                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "涓嬬┖", 7, "NONE".Split(',').ToList());
-                                        if (res)
-                                        {
-                                            task.N_PRIORITY = 0; taskservice.Update(task);
-                                        }
-                                    }
-                                }
-                            }
-                            else
-                            {
-                                if (t1.S_START_LOC != task.S_START_LOC)
-                                {
-                                    t1 = taskservice.FindEntity(x => x.S_SRC_NO == task.S_TASK_NO && x.S_START_LOC == task.S_START_LOC && x.S_B_STATE == "瀹屾垚");
-                                }
-                                var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + "琛ユ弧", 6, task.S_CNTRS.Split(',').ToList());
-                                if (res)
-                                {
-                                    task.N_PRIORITY = 0; taskservice.Update(task);
-                                }
-                            }
-                        }
-                    }
-                    else
-                    {
-                        LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 绛涢�鐢熸垚绗竴娈�浠诲姟銆�);
-                        //鐢熸垚绗竴娈点�
-                        LocEntity endLoc = null;
-                        var di = sx;
-                        if (di != null)
-                        {
-                            //foreach (var ssloc in di.deviceNo)
-                            {
-                                var ssloc = di.deviceNo[0];
-                                var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
-                                if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE.Trim() == "鏃�)
-                                {
-                                    endLoc = endloc;
-                                    //break;
-                                }
-                            }
-                            if (endLoc != null)
-                            {
-                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鍒涘缓绗竴娈�浠诲姟銆�);
-                                var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "婊¤浆", 8, task.S_CNTRS.Split(',').ToList());
-
-                                LogHelper.Info($"瑙i噴MES浠诲姟 ->{task.S_TASK_NO} 鍒涘缓绗竴娈�浠诲姟銆傜粨鏋滐細{res}");
-                                if (res)
-                                {
-                                    task.N_PRIORITY = 0; taskservice.Update(task);
-                                }
-                            }
-                        }
-                    }
-
-                }
+            }
+            catch (Exception ex)
+            {
+                LogHelper.Error("ThreadGrats>>" + ex.Message, ex);
+            }
+            finally
+            {
+                taskservice.Disnull();
             }
         }
 
         public string procNo()
         {
-            return TaskProcess.GenerateTaskNo("鏃ュ織娴佹按鍙�);
+            return TaskProcess.GenerateTaskNo("鏃ュ織娴佹按鍙�, "LOG");
         }
         public bool SetRedistoPlc(string key, string value, string queue, string desc)
         {
@@ -2669,298 +3211,318 @@
         {
             // 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿
             //var wcsTask = WCSHelper.GetTask(model.taskCode);
-            ITaskRepository MainMissionService = new TaskRepository();
-            var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);
-            if (wcsTask != null)
+            TaskRepository MainMissionService = new TaskRepository();
+            LocRepository locrep = new LocRepository();
+            try
             {
-                if (!string.IsNullOrWhiteSpace(model.method))
+                var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);
+                if (wcsTask != null)
                 {
-                    ILocRepository locrep = new LocRepository();
-                    var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);
-                    var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);
-
-                    List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();
-                    bool bobe = false;
-                    //model.method = model.method?.ToLower();
-                    switch (model.method)
+                    if (!string.IsNullOrWhiteSpace(model.method))
                     {
-                        case "start":
-                            LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
-                            if (wcsTask.S_B_STATE.Trim() == "宸叉帹閫�)
-                            {
-                                wcsTask.S_B_STATE = "鎵ц涓�;
-                                wcsTask.T_START_TIME = DateTime.Now;
+                        var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);
+                        var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);
+
+                        List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();
+                        bool bobe = false;
+                        //model.method = model.method?.ToLower();
+                        switch (model.method)
+                        {
+                            case "start":
+                                LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
+                                if (wcsTask.S_B_STATE.Trim() == "宸叉帹閫�)
+                                {
+                                    wcsTask.S_B_STATE = "鎵ц涓�;
+                                    wcsTask.T_START_TIME = DateTime.Now;
+                                    MainMissionService.Update(wcsTask);
+                                    bobe = true;
+                                }
+                                break;
+                            case "outBin":
+                            case "outbin":
+                                model.method = model.method?.ToLower();
+                                LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
+                                wcsTask.S_B_STATE = "鍙栬揣瀹屾垚";
+
+                                startloc.N_CURRENT_NUM = 0;
+                                startloc.S_LOCK_STATE = "鏃�;
+                                startloc.T_MODIFY = DateTime.Now;
+                                //ILocContainerRepository locContainerRepository = new LocContainerRepository();
+                                ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);
+                                //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);
                                 MainMissionService.Update(wcsTask);
+                                locrep.Update(startloc);
+
                                 bobe = true;
-                            }
-                            break;
-                        case "outBin":
-                        case "outbin":
-                            model.method = model.method?.ToLower();
-                            LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
-                            wcsTask.S_B_STATE = "鍙栬揣瀹屾垚";
-
-                            startloc.N_CURRENT_NUM = 0;
-                            startloc.S_LOCK_STATE = "鏃�;
-                            startloc.T_MODIFY = DateTime.Now;
-                            //ILocContainerRepository locContainerRepository = new LocContainerRepository();
-                            ////var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);
-                            //locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);
-                            MainMissionService.Update(wcsTask);
-                            locrep.Update(startloc);
-
-                            bobe = true;
-                            var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));
-                            if (device != null)
-                            {
-                                if (device.deviceType == 1)
+                                var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));
+                                if (device != null)
                                 {
-                                    if (device.deviceName.Contains("缁村笇灏旀姄鑷�))
-                                    {  //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮�-                                        var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
-                                        string V = inde ? "R05" : "R06";
-                                        Conn.榛樿Redis.SetValue(device.deviceName + "." + V, "true", device.deviceName + "Queue", false);
-
-                                        TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);
-                                    }
-                                }
-                                else if (device.deviceType == 2)
-                                {
-                                    //Task.Run(() =>
-                                    //{
-                                    //    var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
-                                    //    string V = inde ? "D1224" : "D1225";
-                                    //    Conn.榛樿Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue");
-                                    //});
-                                }
-                                else
-                                    switch (device.deviceType)
+                                    if (device.deviceType == 1)
                                     {
-                                        case 4:
-                                            {
+                                        if (device.deviceName.Contains("缁村笇灏旀姄鑷�))
+                                        {  //鍗歌揣杩涜娓呯┖锛岃Е鍙戞壂鐮�+                                            var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
+                                            string V = inde ? "R05" : "R06";
+                                            Conn.榛樿Redis.SetValue(device.deviceName + "." + V, "true", device.deviceName + "Queue", false);
 
-                                            }
-                                            break;
-
+                                            TcpServer.TrayIps.Remove(device.deviceNo[inde ? 0 : 1]);
+                                        }
                                     }
-                            }
-                            //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);
-                            break;
-                        case "end":
-                            LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
-                            wcsTask.S_B_STATE = "瀹屾垚";
-                            wcsTask.T_END_TIME = DateTime.Now;
-
-                            bobe = true;
-                            //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();
-                            //List<LocContainerEntity> llls = new List<LocContainerEntity>();
-                            //foreach (var c in cntrs)
-                            //{
-                            //    var action = new LocContainerEntity()
-                            //    {
-                            //        S_ID = Guid.NewGuid().ToString(),
-                            //        S_STATE = "缂栬緫",
-                            //        T_CREATE = DateTime.Now,
-                            //        T_MODIFY = DateTime.Now,
-
-                            //        S_LOC_CODE = endLoc.S_LOC_CODE,
-                            //        S_CNTR_CODE = c,
-                            //        S_TYPE = "",
-                            //    };
-                            //    llls.Add(action);
-                            //}
-
-                            endLoc.S_LOCK_STATE = "鏃�;
-                            endLoc.N_CURRENT_NUM = 1;
-                            endLoc.T_MODIFY = DateTime.Now;
-                            MainMissionService.Update(wcsTask);
-                            if (Settings.deviceInfos.Find(x => x.deviceType == 2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC))) != null)
-                                locrep.Update(endLoc);
-                            //locContainerRepository2.Insert(llls);
-
-                            var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));
-                            if (device2 != null)
-                            {
-                                if (device2.deviceType == 1)
-                                {
-                                    if (device2.deviceName.Contains("缁村笇灏旀姄鑷�))
-                                    {
-                                        //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? "R10" : "R11";
-                                        //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue");
-                                        //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�
-                                        var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                        //string V = inde ? "R05" : "R06";
-                                        //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue");
-                                        string V2 = inde ? "R10_LAST" : "R11_LAST";
-                                        //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V2, "true", device2.deviceName + "Queue");
-
-                                        GZ.Modular.Redis.RedisHelper.Add(device2.deviceName + "." + V2, "true", out string msg1);
-                                        TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);
-                                    }
-                                }
-                                else if (device2.deviceType == 2)
-                                {
-                                    if (device2.deviceName.Contains("Js鎹烽『"))
+                                    else if (device.deviceType == 2)
                                     {
                                         //Task.Run(() =>
                                         //{
-                                        var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                        string V = inde ? "D1224" : "D1225";
-                                        Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                        //    var inde = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0;
+                                        //    string V = inde ? "D1224" : "D1225";
+                                        //    Conn.榛樿Redis.SetValue(device.deviceName + "." + V, "0", device.deviceName + "Queue");
                                         //});
+                                    }
+                                    else
+                                        switch (device.deviceType)
+                                        {
+                                            case 4:
+                                                {
 
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
-                                        {
-                                            sceneType = 3,
-                                            cntrCode = cntrs.FirstOrDefault()
-                                        }));
-                                        //if (device2.deviceName.Contains("1"))
-                                        //{
-                                        //    if (inde) tag.Js1.D1224 = 1;
-                                        //    else tag.Js1.D1225 = 1;
-                                        //}else
-                                        //{
-                                        //    if (inde) tag.Js2.D1224 = 1;
-                                        //    else tag.Js2.D1225 = 1;
-                                        //}
-                                    }
-                                    var ssloc = device2.deviceNo[1];
-                                    var endloc = locrep.FindEntity(x => x.S_LOC_CODE == ssloc);
-                                    LogHelper.Info($"鎹烽『鍗歌揣鍚庯紝 鏌ョ湅缂撳瓨浣�{ssloc}-{endloc?.N_CURRENT_NUM}>0? 鍒欑敵璇穖es鎼蛋銆�);
-                                    if (endloc != null && endloc.N_CURRENT_NUM == 1)
+                                                }
+                                                break;
+
+                                        }
+                                }
+                                //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);
+                                break;
+                            case "end":
+                                LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
+                                wcsTask.S_B_STATE = "瀹屾垚";
+                                wcsTask.T_END_TIME = DateTime.Now;
+
+                                bobe = true;
+                                //ILocContainerRepository locContainerRepository2 = new LocContainerRepository();
+                                //List<LocContainerEntity> llls = new List<LocContainerEntity>();
+                                //foreach (var c in cntrs)
+                                //{
+                                //    var action = new LocContainerEntity()
+                                //    {
+                                //        S_ID = Guid.NewGuid().ToString(),
+                                //        S_STATE = "缂栬緫",
+                                //        T_CREATE = DateTime.Now,
+                                //        T_MODIFY = DateTime.Now,
+
+                                //        S_LOC_CODE = endLoc.S_LOC_CODE,
+                                //        S_CNTR_CODE = c,
+                                //        S_TYPE = "",
+                                //    };
+                                //    llls.Add(action);
+                                //}
+
+                                endLoc.S_LOCK_STATE = "鏃�;
+                                endLoc.N_CURRENT_NUM = 1;
+                                endLoc.T_MODIFY = DateTime.Now;
+                                MainMissionService.Update(wcsTask);
+                                if (Settings.deviceInfos.Find(x => x.deviceType == 2 && (/*x.location.Contains(wcsTask.S_END_LOC)||*/x.deviceNo.Contains(wcsTask.S_END_LOC))) != null)
+                                    locrep.Update(endLoc);
+                                //locContainerRepository2.Insert(llls);
+
+                                var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));
+                                if (device2 != null)
+                                {
+                                    if (device2.deviceType == 1)
                                     {
-                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                                        if (device2.deviceName.Contains("缁村笇灏旀姄鑷�))
                                         {
-                                            requestType = 3,
-                                            startBit = ssloc
-                                        }));
-                                        LogHelper.Info($"{ssloc}鐢宠mes浠诲姟缁撴灉{str}");
+                                            //string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? "R10" : "R11";
+                                            //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue");
+                                            //鍗歌揣鍐嶅啓鎵樼洏鍙栬蛋銆�鐒跺悗瑙﹀彂鎵爜杩涜鏍¢獙銆�
+                                            var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                            //string V = inde ? "R05" : "R06";
+                                            //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "true", device2.deviceName + "Queue");
+                                            string V2 = inde ? "R10_LAST" : "R11_LAST";
+                                            //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V2, "true", device2.deviceName + "Queue");
+
+                                            GZ.Modular.Redis.RedisHelper.Add(device2.deviceName + "." + V2, "true", out string msg1);
+                                            TcpServer.TrayIps.Remove(device2.deviceNo[inde ? 0 : 1]);
+                                        }
                                     }
+                                    else if (device2.deviceType == 2)
+                                    {
+                                        if (device2.deviceName.Contains("Js鎹烽『"))
+                                        {
+                                            //Task.Run(() =>
+                                            //{
+                                            var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                            string V = inde ? "D1224" : "D1225";
+                                            Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                            //});
+
+                                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/202", JsonConvert.SerializeObject(new
+                                            {
+                                                sceneType = 3,
+                                                cntrCode = cntrs.FirstOrDefault()
+                                            }));
+                                            //if (device2.deviceName.Contains("1"))
+                                            //{
+                                            //    if (inde) tag.Js1.D1224 = 1;
+                                            //    else tag.Js1.D1225 = 1;
+                                            //}else
+                                            //{
+                                            //    if (inde) tag.Js2.D1224 = 1;
+                                            //    else tag.Js2.D1225 = 1;
+                                            //}
+                                        }
+                                        //Task.Run(() =>
+                                        //{
+                                        var ssloc = device2.deviceNo[1];
+                                        var endloc = locrep.FindEntity(x => x.S_LOC_CODE == ssloc);
+                                        LogHelper.Info($"鎹烽『鍗歌揣鍚庯紝 鏌ョ湅缂撳瓨浣�{ssloc}-{endloc?.N_CURRENT_NUM}>0? 鍒欑敵璇穖es鎼蛋銆�);
+                                        if (endloc != null && endloc.N_CURRENT_NUM == 1)
+                                        {
+                                            var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                                            {
+                                                requestType = 3,
+                                                startBit = ssloc
+                                            }));
+                                            LogHelper.Info($"{ssloc}鐢宠mes浠诲姟缁撴灉{str}");
+                                            var strr = JsonConvert.DeserializeObject<Messss>(str);
+                                            if (strr != null && strr.success && strr.data?.state == 0)
+                                            {
+                                                //return;
+                                            }
+                                        }
+                                        //});
+                                    }
+                                    else
+                                        switch (device2.deviceType)
+                                        {
+                                            case 4:
+                                                {
+
+                                                }
+                                                break;
+                                            case 5:
+                                                {
+                                                    var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                                    string V = inde ? "D2210" : "D2215";
+                                                    Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                                }
+                                                break;
+                                            case 6:
+                                                {
+                                                    //var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
+                                                    //string V = inde ? "D2210" : "D2215";
+                                                    //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
+                                                }
+                                                break;
+                                        }
+                                }
+
+                                //LocationMethod.JudgeLocation(wcsTask);
+                                break;
+                            case "cancel":
+                                LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
+                                wcsTask.S_B_STATE = "鍙栨秷";
+                                //startloc.S_LOCK_STATE = "鏃�;
+                                //endLoc.S_LOCK_STATE = "鏃�;
+                                MainMissionService.Update(wcsTask);
+                                TaskActRepository taskActRepository = new TaskActRepository();
+                                var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);
+                                if (tare.Any())
+                                {
+                                    if (tare.Find(x => x.S_ACTION_CODE == "outbin") == null)
+                                    {
+                                        startloc.S_LOCK_STATE = "鏃�;
+                                        endLoc.S_LOCK_STATE = "鏃�;
+                                        locrep.Update(startloc);
+                                        locrep.Update(endLoc);
+                                    }
+                                    else if (tare.Find(x => x.S_ACTION_CODE == "end") == null)
+                                    {
+                                        endLoc.S_LOCK_STATE = "鏃�;
+                                        locrep.Update(endLoc);
+                                    }
+                                }
+
+                                //locrep.Update(startloc);
+                                //locrep.Update(endLoc);
+                                //TaskProcess.OperateStatus(wcsTask, 7);
+                                //WCSHelper.Fail(wcsTask);
+                                break;
+                            case "apply":
+                                // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆
+                                //TaskisOk(wcsTask);
+                                break;
+                        }
+
+                        if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))
+                        {
+                            var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);
+                            if (mestask != null && bobe)
+                            {
+                                if (model.method != "end")
+                                {
+                                    if (mestask.S_START_LOC == wcsTask.S_START_LOC && mestask.S_B_STATE == "MES")
+                                        Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
+                                        {
+                                            reqCode = wcsTask.S_SRC_NO,
+                                            model.method
+                                        }));
                                 }
                                 else
-                                    switch (device2.deviceType)
+                                {
+                                    if (mestask.S_END_LOC != wcsTask.S_END_LOC)
                                     {
-                                        case 4:
-                                            {
-
-                                            }
-                                            break;
-                                        case 5:
-                                            {
-                                                var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                                string V = inde ? "D2210" : "D2215";
-                                                Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
-                                            }
-                                            break;
-                                        case 6:
-                                            {
-                                                //var inde = device2.location.ToList().FindIndex(x => x == wcsTask.S_END_LOC) == 0;
-                                                //string V = inde ? "D2210" : "D2215";
-                                                //Conn.榛樿Redis.SetValue(device2.deviceName + "." + V, "1", device2.deviceName + "Queue");
-                                            }
-                                            break;
+                                        LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�");
+                                        mestask.N_PRIORITY = -88;
+                                        MainMissionService.Update(mestask);
                                     }
-                            }
-
-                            //LocationMethod.JudgeLocation(wcsTask);
-                            break;
-                        case "cancel":
-                            LogHelper.Info($"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}", "agv鏉弶浜や簰鏃ュ織");
-                            wcsTask.S_B_STATE = "鍙栨秷";
-                            //startloc.S_LOCK_STATE = "鏃�;
-                            //endLoc.S_LOCK_STATE = "鏃�;
-                            MainMissionService.Update(wcsTask);
-                            TaskActRepository taskActRepository = new TaskActRepository();
-                            var tare = taskActRepository.FindList(x => x.S_TASK_NO == wcsTask.S_TASK_NO);
-                            if (tare.Any())
-                            {
-                                if (tare.Find(x => x.S_ACTION_CODE == "outbin") == null)
-                                {
-                                    startloc.S_LOCK_STATE = "鏃�;
-                                    endLoc.S_LOCK_STATE = "鏃�;
-                                    locrep.Update(startloc);
-                                    locrep.Update(endLoc);
+                                    else if (mestask.S_B_STATE == "MES")
+                                    {
+                                        var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
+                                        {
+                                            reqCode = wcsTask.S_SRC_NO,
+                                            model.method
+                                        }));
+                                    }
                                 }
-                                else if (tare.Find(x => x.S_ACTION_CODE == "end") == null)
-                                {
-                                    endLoc.S_LOCK_STATE = "鏃�;
-                                    locrep.Update(endLoc);
-                                }
+
                             }
-
-                            //locrep.Update(startloc);
-                            //locrep.Update(endLoc);
-                            //TaskProcess.OperateStatus(wcsTask, 7);
-                            //WCSHelper.Fail(wcsTask);
-                            break;
-                        case "apply":
-                            // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆
-                            //TaskisOk(wcsTask);
-                            break;
-                    }
-
-                    if (!string.IsNullOrEmpty(wcsTask.S_SRC_NO))
-                    {
-                        var mestask = MainMissionService.FindEntity(x => x.S_TASK_NO == wcsTask.S_SRC_NO);
-                        if (mestask != null && bobe)
-                        {
-                            if (model.method != "end")
+                            else if (mestask != null && model.method == "cancel")
                             {
-                                if (mestask.S_START_LOC == wcsTask.S_START_LOC && mestask.S_B_STATE == "MES")
+                                if (mestask.S_B_STATE == "MES")
                                     Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
                                     {
                                         reqCode = wcsTask.S_SRC_NO,
                                         model.method
                                     }));
+                                LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆�);
+                                mestask.N_PRIORITY = -1;
+                                mestask.S_B_STATE = "MES_鍙栨秷";
+                                MainMissionService.Update(mestask);
                             }
-                            else
-                            {
-                                if (mestask.S_END_LOC != wcsTask.S_END_LOC)
-                                {
-                                    LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛畬鎴愶紝閲嶇疆杩涜浜岄樁娈点�");
-                                    mestask.N_PRIORITY = -88;
-                                    MainMissionService.Update(mestask);
-                                }
-                                else if (mestask.S_B_STATE == "MES")
-                                {
-                                    var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
-                                    {
-                                        reqCode = wcsTask.S_SRC_NO,
-                                        model.method
-                                    }));
-                                }
-                            }
-
                         }
-                        else if (mestask != null && model.method == "cancel")
-                        {
-                            if (mestask.S_B_STATE == "MES")
-                                Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/201", JsonConvert.SerializeObject(new
-                                {
-                                    reqCode = wcsTask.S_SRC_NO,
-                                    model.method
-                                }));
-                            LogHelper.Info($"{wcsTask.S_SRC_NO}-{wcsTask.S_TASK_NO} 涓�樁娈靛彇娑堬紝閲嶇疆鐐癸紝绾跨▼澶勭悊銆�);
-                            mestask.N_PRIORITY = -1;
-                            mestask.S_B_STATE = "MES_鍙栨秷";
-                            MainMissionService.Update(mestask);
-                        }
+                        TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data, wcsTask.S_START_LOC, wcsTask.S_END_LOC);
+                        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus
                     }
-                    TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data, wcsTask.S_START_LOC, wcsTask.S_END_LOC);
-                    //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus
+                    else
+                    {
+                        // 鏆傛椂璁惧畾涓�
+                        wcsTask.S_B_STATE = "涓婃姤鐘舵�绌�;
+                        //瀹夊叏璇锋眰绛�+                        //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);
+                    }
                 }
                 else
                 {
-                    // 鏆傛椂璁惧畾涓�
-                    wcsTask.S_B_STATE = "涓婃姤鐘舵�绌�;
-                    //瀹夊叏璇锋眰绛�-                    //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);
+                    LogHelper.Info($"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode} agv鏉弶浜や簰鏃ュ織");
+                    return new HkReturnResult { reqCode = model.reqCode, code = 1, message = "杩欎笉鏄垜浠殑浠诲姟銆� };
                 }
             }
-            else
+            catch (Exception ex)
             {
-                LogHelper.Info($"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode} agv鏉弶浜や簰鏃ュ織");
-                return new HkReturnResult { reqCode = model.reqCode, code = 1, message = "杩欎笉鏄垜浠殑浠诲姟銆� };
+                LogHelper.Error("ThreadGrats>>" + ex.Message, ex);
+            }
+            finally
+            {
+                locrep.Disnull();
+                MainMissionService.Disnull();
             }
             return new HkReturnResult { reqCode = model.reqCode, code = 0 };
         }
@@ -2982,6 +3544,111 @@
             }
         }
 
+
+        public void ThreadMXC5(Tag tag)
+        {
+            var VERX = Settings.deviceInfos.Find(x => x.deviceType == 6 && x.deviceName.Contains("1鍙�));
+            if (VERX == null)
+            {
+                LogHelper.Info("杞瓙1鍙风嚎 deviceType 6 娌℃湁閰嶇疆銆�);
+                return;
+            }
+
+            if (tag.ZZ1.RD1200 == 1 && tag.ZZ1.RD1200_LAST == 0)
+            {
+                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                {
+                    requestType = 11,
+                    endBit = VERX.location[0]
+                }));
+                LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
+                var strr = JsonConvert.DeserializeObject<Messss>(str);
+                if (strr != null && strr.success && strr.data?.state == 0)
+                {
+                    RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1200_LAST", "1", out string msg);
+                }
+            }
+            else if (tag.ZZ1.RD1200 == 0 && tag.ZZ1.RD1200_LAST == 1)
+                RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1200_LAST", "0", out string msg);
+
+
+            if (tag.ZZ1.RD1201 == 1 && tag.ZZ1.RD1201_LAST == 0)
+            {
+                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                {
+                    requestType = 11,
+                    endBit = VERX.location[1]
+                }));
+                LogHelper.Info($"{VERX.location[1]}鐢宠mes浠诲姟缁撴灉{str}");
+                var strr = JsonConvert.DeserializeObject<Messss>(str);
+                if (strr != null && strr.success && strr.data?.state == 0)
+                {
+                    RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1201_LAST", "1", out string msg);
+                }
+            }
+            else if (tag.ZZ1.RD1201 == 0 && tag.ZZ1.RD1201_LAST == 1)
+                RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1201_LAST", "0", out string msg);
+
+
+            if (tag.ZZ1.RD1202 == 1 && tag.ZZ1.RD1202_LAST == 0)
+            {
+                var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
+                {
+                    requestType = 9,
+                    startBit = VERX.location[2],
+                    unLockStartBitOutbin = true
+                }));
+                LogHelper.Info($"{VERX.location[2]}鐢宠mes浠诲姟缁撴灉{str}");
+                var strr = JsonConvert.DeserializeObject<Messss>(str);
+                if (strr != null && strr.success && strr.data?.state == 0)
+                {
+                    RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1202_LAST", "1", out string msg);
+                }
+            }
+            else if (tag.ZZ1.RD1202 == 0 && tag.ZZ1.RD1202_LAST == 1)
+                RedisHelper.Add($"Z杞瓙1鍙锋満姊版墜.RD1202_LAST", "0", out string msg);
+
+        }
+        public void ThreadMXC6(Tag tag)
+        {
+            var VERX = Settings.deviceInfos.Find(x => x.deviceType == 6 && x.deviceName.Contains("2鍙�));
+            if (VERX == null)
+            {
+                LogHelper.Info("杞瓙2鍙风嚎 deviceType 6 娌℃湁閰嶇疆銆�);
+                return;
+            }
+
+            if (tag.ZZ2.RD1200 == 1 && tag.ZZ2.RD1200_LAST == 0)
+            {
+
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1200_LAST", "1", out string msg);
+            }
+            else if (tag.ZZ2.RD1200 == 0 && tag.ZZ2.RD1200_LAST == 1)
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1200_LAST", "0", out string msg);
+
+
+            if (tag.ZZ2.RD1201 == 1 && tag.ZZ2.RD1201_LAST == 0)
+            {
+
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1201_LAST", "1", out string msg);
+            }
+            else if (tag.ZZ2.RD1201 == 0 && tag.ZZ2.RD1201_LAST == 1)
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1201_LAST", "0", out string msg);
+
+
+            if (tag.ZZ2.RD1202 == 1 && tag.ZZ2.RD1202_LAST == 0)
+            {
+
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1202_LAST", "1", out string msg);
+            }
+            else if (tag.ZZ2.RD1202 == 0 && tag.ZZ2.RD1202_LAST == 1)
+                RedisHelper.Add($"Z杞瓙2鍙锋満姊版墜.RD1202_LAST", "0", out string msg);
+
+        }
+
+
+
+
         /// <summary>
         /// 瀹氬瓙1鍙风嚎銆�         /// 1.澧炲姞涓嬬嚎閫昏緫銆�  2. 鏈夊彇绛愪俊鍙峰氨鍐欙紝娌′俊鍙峰珣鍐�@@ -2995,13 +3662,14 @@
                 LogHelper.Info("瀹氬瓙1鍙风嚎 deviceType 5 娌℃湁閰嶇疆銆�);
                 return;
             }
-            LogHelper.Info($" {VERX.deviceName} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
+            LogHelper.Info($" {VERX.deviceName} 鏃堕棿鎴�{RedisHelper.Get<string>("D瀹氬瓙1鍙锋満姊版墜#Timestamp", out string mg)} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
             if (tag.DZ1.D2221 == 1 && tag.DZ1.D2221_LAST == 0)
             {
                 var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
                 {
                     requestType = 7,
                     startBit = VERX.location[0],
+                    endBit = "1025",
                     unLockStartBitOutbin = true
                 }));
                 LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
@@ -3025,6 +3693,7 @@
                 {
                     requestType = 7,
                     startBit = VERX.location[1],
+                    endBit = "1025",
                     unLockStartBitOutbin = true
                 }));
                 LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
@@ -3054,13 +3723,14 @@
                 LogHelper.Info("瀹氬瓙2鍙风嚎 deviceType 5 娌℃湁閰嶇疆銆�);
                 return;
             }
-            LogHelper.Info($" {VERX.deviceName} D2221>{tag.DZ1.D2221} D2221_LAST>{tag.DZ1.D2221_LAST}  D2226>{tag.DZ1.D2226}  D2226_LAST>{tag.DZ1.D2226_LAST}");
+            LogHelper.Info($" {VERX.deviceName} 鏃堕棿鎴�{RedisHelper.Get<string>("D瀹氬瓙2鍙锋満姊版墜#Timestamp", out string mg)} D2221>{tag.DZ2.D2221} D2221_LAST>{tag.DZ2.D2221_LAST}  D2226>{tag.DZ2.D2226}  D2226_LAST>{tag.DZ2.D2226_LAST}");
             if (tag.DZ2.D2221 == 1 && tag.DZ2.D2221_LAST == 0)
             {
                 var str = Settings.apiHelper.Post(Settings.WMSbaseUrl + "mom-basic/dataTransmission/json/service/200", JsonConvert.SerializeObject(new
                 {
                     requestType = 7,
                     startBit = VERX.location[0],
+                    endBit = "1025",
                     unLockStartBitOutbin = true
                 }));
                 LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
@@ -3083,6 +3753,7 @@
                 {
                     requestType = 7,
                     startBit = VERX.location[1],
+                    endBit = "1025",
                     unLockStartBitOutbin = true
                 }));
                 LogHelper.Info($"{VERX.location[0]}鐢宠mes浠诲姟缁撴灉{str}");
@@ -3101,9 +3772,6 @@
         }
 
     }
-
-
-
 
     public class HttpServer
     {

--
Gitblit v1.9.1