czw
5 天以前 1cf00bcc4e6869b356dd15310648bb93c9b1bbde
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
@@ -61,6 +61,9 @@
        {
            var cacheKey = $"{instance.GetType().FullName}_{methodName}";
            try
            {
            if (!_methodCache.TryGetValue(cacheKey, out var methodDelegate))
            {
                // èŽ·å–æ–¹æ³•ä¿¡æ¯
@@ -85,6 +88,12 @@
            //    return null;
            return methodDelegate.DynamicInvoke(args);
        }
            catch (Exception ex)
            {
                LogHelper.Error($"InvokeMethod > cacheKey-{ex.Message}", ex);
                throw ex;
            }
        }
        // æ ¹æ®æ–¹æ³•签名生成对应的委托类型
        private static Type GetDelegateType(MethodInfo methodInfo)
@@ -104,6 +113,19 @@
            }
        }
        //private static TaskRepository _repository;
        //public static TaskRepository _TpInstence
        //{
        //    get
        //    {
        //        if (_repository == null)
        //            _repository = new TaskRepository();
        //        return _repository;
        //    }
        //}
        /// <summary>
        /// é…ç½®åˆå§‹åŒ–。
        /// </summary>
@@ -177,24 +199,43 @@
            tasks.Add(GetTask(ThreadMXC4, 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));
            Task.WaitAll(tasks.ToArray());
        }
        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>();
@@ -755,7 +796,7 @@
            Console.WriteLine($"ThreadTaskRun ä»»åŠ¡ä¸‹å‘ =================> ");
            LogHelper.Info("ThreadTaskRun ä»»åŠ¡ä¸‹å‘");
            ITaskRepository taskservice = new TaskRepository();
            TaskRepository taskservice = new TaskRepository();
            try
            {
                LogHelper.Info("任务下发  AGV ä»»åŠ¡ è¿›å…¥");
@@ -1179,6 +1220,10 @@
            {
                LogHelper.Info(ex.Message + ex.StackTrace);
            }
            finally
            {
                taskservice.Disnull();
            }
        }
@@ -1189,6 +1234,9 @@
            var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
            TaskActRepository taskActRepository = new TaskActRepository();
            TaskRepository taskRepository = new TaskRepository();
            try
            {
            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())
@@ -1249,7 +1297,8 @@
                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;
                        var locindex = dev.location.ToList().FindIndex(x => x == loc);
                        var V = locindex == 0;
                    //车走了  å¼€å…‰æ …
                    if (!goin)
                    {
@@ -1337,6 +1386,31 @@
                                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} å¼€å¯å…‰æ …处理完成 =================> ");
                        }
@@ -1541,15 +1615,50 @@
                            {
                                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)
                                {
                                    LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "右")} å…‰æ …{(goin ? "关闭" : "开启")} ç”³è¯·ã€‚ å·²ç»å…³é—­ï¼");
                                    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 if (dev.deviceType == 6)
                                {
                                    var close = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue(dev.deviceName + "." + (V ? "RD1203" : "RD1204")), typeof(System.UInt16));
                                    LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "右")} å…‰æ …{(goin ? "关闭" : "开启")} ç”³è¯·ã€‚ å…³é—­çŠ¶æ€ï¼š{close}!");
                                    var canDo = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue(dev.deviceName + "." + (locindex == 0 ? "RD1200" : locindex == 1 ? "RD1201" : "RD1202")), typeof(System.UInt16));
                                    if (close == 0)
                                    {
                                        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} å…³é—­å…‰æ …处理完成 =================> ");
@@ -1569,8 +1678,18 @@
                    item.S_REVIEW_COMMENT = $"车子继续任务OK";
                    taskActRepository.Update(item);
                }
            }
            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)
@@ -1647,6 +1766,8 @@
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            try
            {
            foreach (var Bssx in new string[] { "1020", "1023" })
            {
                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
@@ -1738,27 +1859,7 @@
                System.Threading.Thread.Sleep(2000);
            }
            foreach (var item in new string[] { "1004", "1012", "1006", "1014", "1026", "1017" })
            {
                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲"), typeof(System.UInt16));
                var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲_LAST"), typeof(System.UInt16));
                if (R5 != 5 && R5空闲_LAST == 1)
                {
                    RedisHelper.Add($"S{item}Read.R5空闲_LAST", "0", out string msg);
                    //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "0", $"S{item}ReadQueue");
                }
            }
        }
        public void ThreadDdown(Tag tag)
        {
            Console.WriteLine($"ThreadDdown 08 16==================> 1026");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,08 16 > 1026终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
                /**
            foreach (var Bssx in new string[] { "1008", "1016" })
            {
                var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
@@ -1824,17 +1925,8 @@
                }
                System.Threading.Thread.Sleep(2000);
            }
        }
        public void Thread0210Down(Tag tag)
        {
            Console.WriteLine($"Thread0210Down ==================>");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,02 10 > 1017终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            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));
@@ -1891,6 +1983,196 @@
                    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" })
            {
                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲"), typeof(System.UInt16));
                var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{item}Read.R5空闲_LAST"), typeof(System.UInt16));
                if (R5 != 5 && R5空闲_LAST == 1)
                {
                    RedisHelper.Add($"S{item}Read.R5空闲_LAST", "0", out string msg);
                    //Conn.默认Redis.SetValue($"S{item}Read.R5空闲_LAST", "0", $"S{item}ReadQueue");
                }
            }
        }
        public void ThreadDdown(Tag tag)
        {
            Console.WriteLine($"ThreadDdown 08 16==================> 1026");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,08 16 > 1026终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            try
            {
                foreach (var Bssx in new string[] { "1008", "1016" })
                {
                    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState"), typeof(System.UInt16));
                    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.RtaskState_LAST"), typeof(System.UInt16));
                    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($"S{Bssx}Read.R托盘码"), typeof(System.String));
                    Console.WriteLine($"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}");
                    if (RtaskState == 3 && RtaskState_LAST == 0)
                    {
                        var 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);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThreadDown>>" + ex.Message, ex);
            }
            finally
            {
                taskRepository.Disnull();
            }
        }
        public void Thread0210Down(Tag tag)
        {
            //return;
            Console.WriteLine($"Thread0210Down ==================>");
            if (tag.RGV.R充电状态 == 1 || tag.RGV.R手动1自动2 == 1 || tag.RGV.RgvrunError > 0)
            {
                LogHelper.Info($"RGV æ‰‹åЍ||故障||充电,02 10 > 1017终止。");
                return;
            }
            TaskRepository taskRepository = new TaskRepository();
            try
            {
                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("Thread0210Down>>" + ex.Message, ex);
            }
            finally
            {
                taskRepository.Disnull();
            }
        }
@@ -2339,9 +2621,10 @@
        public void ResolveMesTask(Tag tag)
        {
            TaskRepository taskservice = new TaskRepository();
            try
            {
            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)
            {
                LogHelper.Info($"解释MES任务 ->{task.S_TASK_NO} ");
@@ -2854,6 +3137,15 @@
                }
            }
        }
            catch (Exception ex)
            {
                LogHelper.Error("ThreadGrats>>" + ex.Message, ex);
            }
            finally
            {
                taskservice.Disnull();
            }
        }
        public string procNo()
        {
@@ -2871,13 +3163,15 @@
        {
            // æŸ¥è¯¢ä»»åŠ¡ï¼šæ ¹æ®ä»»åŠ¡å·
            //var wcsTask = WCSHelper.GetTask(model.taskCode);
            ITaskRepository MainMissionService = new TaskRepository();
            TaskRepository MainMissionService = new TaskRepository();
            LocRepository locrep = new LocRepository();
            try
            {
            var wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);
            if (wcsTask != null)
            {
                if (!string.IsNullOrWhiteSpace(model.method))
                {
                    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);
@@ -3172,6 +3466,16 @@
                LogHelper.Info($"当前任务号任务不存在{model.taskCode} agv杭叉交互日志");
                return new HkReturnResult { reqCode = model.reqCode, code = 1, message = "这不是我们的任务。" };
            }
            }
            catch (Exception ex)
            {
                LogHelper.Error("ThreadGrats>>" + ex.Message, ex);
            }
            finally
            {
                locrep.Disnull();
                MainMissionService.Disnull();
            }
            return new HkReturnResult { reqCode = model.reqCode, code = 0 };
        }
@@ -3192,6 +3496,7 @@
            }
        }
        public void ThreadMXC5(Tag tag)
        {
            var VERX = Settings.deviceInfos.Find(x => x.deviceType == 6 && x.deviceName.Contains("1号"));
@@ -3200,6 +3505,60 @@
                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)
@@ -3210,7 +3569,38 @@
                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. æœ‰å–筐信号就写,没信号嫑写
@@ -3334,9 +3724,6 @@
        }
    }
    public class HttpServer
    {