1
czw
2025-06-25 95cd9faab13b3c5447a8ae3d658de7296de5fc52
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/VS×Ô¶¨ÒåÀà/AutoThread.cs
@@ -1,4 +1,5 @@
using Newtonsoft.Json;
#region    [自定义类-VS][20250623083459471][AutoThread]
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Collections.Concurrent;
@@ -236,7 +237,8 @@
                        LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        {
                            tag.wxr1.R44_LAST = true;
                            //tag.wxr1.R44_LAST = true;
                            RedisHelper.Add($"维希尔抓臂1.R44_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -251,7 +253,8 @@
                    {
                        if (tag.wxr1.R10)
                        {
                            tag.wxr1.R10_LAST = false;
                            //tag.wxr1.R10_LAST = false;
                            RedisHelper.Add($"维希尔抓臂1.R10_LAST", "false", out string msg);
                        }
                        else
                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
@@ -267,7 +270,8 @@
                            {
                                //Conn.默认Redis.SetValue("维希尔抓臂1.R10", "true", "维希尔抓臂1Queue");
                                tag.wxr1.R10 = true;
                                tag.wxr1.R44_LAST = false;
                                //tag.wxr1.R44_LAST = false;
                                RedisHelper.Add($"维希尔抓臂1.R44_LAST", "false", out string msg);
                            }
                            else
                            {
@@ -305,7 +309,8 @@
                        LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        {
                            tag.wxr1.R46_LAST = true;
                            //tag.wxr1.R46_LAST = true;
                            RedisHelper.Add($"维希尔抓臂1.R46_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -319,7 +324,8 @@
                    {
                        if (tag.wxr1.R11)
                        {
                            tag.wxr1.R11_LAST = false;
                            //tag.wxr1.R11_LAST = false;
                            RedisHelper.Add($"维希尔抓臂1.R11_LAST", "false", out string msg);
                        }
                        else
                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
@@ -335,7 +341,8 @@
                            {
                                //Conn.默认Redis.SetValue("维希尔抓臂1.R10", "true", "维希尔抓臂1Queue");
                                tag.wxr1.R11 = true;
                                tag.wxr1.R46_LAST = false;
                                //tag.wxr1.R46_LAST = false;
                                RedisHelper.Add($"维希尔抓臂1.R46_LAST", "false", out string msg);
                            }
                            else
                            {
@@ -373,7 +380,8 @@
                        LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        {
                            tag.wxr2.R44_LAST = true;
                            //tag.wxr2.R44_LAST = true;
                            RedisHelper.Add($"维希尔抓臂2.R44_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -387,7 +395,8 @@
                    {
                        if (tag.wxr2.R10)
                        {
                            tag.wxr2.R10_LAST = false;
                            //tag.wxr2.R10_LAST = false;
                            RedisHelper.Add($"维希尔抓臂2.R10_LAST", "false", out string msg);
                        }
                        else
                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[0], out string traycode))
@@ -403,7 +412,8 @@
                            {
                                //Conn.默认Redis.SetValue("维希尔抓臂1.R10", "true", "维希尔抓臂1Queue");
                                tag.wxr2.R10 = true;
                                tag.wxr2.R44_LAST = false;
                                //tag.wxr2.R44_LAST = false;
                                RedisHelper.Add($"维希尔抓臂2.R44_LAST", "false", out string msg);
                            }
                            else
                            {
@@ -442,7 +452,8 @@
                        LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        {
                            tag.wxr2.R46_LAST = true;
                            //tag.wxr2.R46_LAST = true;
                            RedisHelper.Add($"维希尔抓臂2.R46_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -456,7 +467,8 @@
                    {
                        if (tag.wxr2.R11)
                        {
                            tag.wxr2.R11_LAST = false;
                            //tag.wxr2.R11_LAST = false;
                            RedisHelper.Add($"维希尔抓臂2.R11_LAST", "false", out string msg);
                        }
                        else
                        if (TcpServer.TrayIps.TryGetValue(VERX.deviceNo[1], out string traycode))
@@ -472,7 +484,8 @@
                            {
                                //Conn.默认Redis.SetValue("维希尔抓臂1.R10", "true", "维希尔抓臂1Queue");
                                tag.wxr2.R11 = true;
                                tag.wxr2.R46_LAST = false;
                                //tag.wxr2.R46_LAST = false;
                                RedisHelper.Add($"维希尔抓臂2.R46_LAST", "false", out string msg);
                            }
                            else
                            {
@@ -535,21 +548,44 @@
            }
            try
            {
                LogHelper.Info("任务下发  Rgv ä»»åŠ¡ è¿›å…¥");
                #region Rgv
                LogHelper.Info($"查看RGV ç”µé‡ï¼šã€{tag.RGV.R当前电量}】 å……电状态:【{tag.RGV.R充电状态}】 æ•…障代码:【{tag.RGV.RgvrunError}】");
                LogHelper.Info($"查看RGV ç”µé‡ï¼šã€{tag.RGV.R当前电量}】 å……电状态:【{tag.RGV.R充电状态}】 æ•…障代码:【{tag.RGV.RgvrunError}】 æ‰‹åЍ1自动2【{tag.RGV.R手动1自动2}】");
                if (tag.RGV.R手动1自动2 == 1)
                {
                    LogHelper.Info($"RGV æ‰‹åŠ¨æ¨¡å¼ï¼Œä¸ç”¨ç®¡ã€‚");
                    return;
                }
                if (tag.RGV.taskend == 125)
                {
                    LogHelper.Info($"RGV æœ‰125命令未执行。");
                    System.Threading.Thread.Sleep(3000);
                    return;
                }
                LogHelper.Info("任务下发  Rgv ä»»åŠ¡ è¿›å…¥");
                TaskEntity task1 = null;
                TaskEntity task2 = null;
                var task1Isrun = false;
                if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)
                {
                    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)
                {
                    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);
                }
@@ -561,12 +597,10 @@
                    if (task2Isrun)
                        mes += tag.RGV.ReadTask2No + "执行中...";
                    LogHelper.Info($"{mes} ä¸èƒ½ä¸‹å‘新任务。");
                    throw new Exception($"{mes} ä¸èƒ½ä¸‹å‘新任务。");
                    System.Threading.Thread.Sleep(3000);
                    return;
                }
                var thisOver = 0;
                TaskEntity task1 = null;
                TaskEntity task2 = null;
                LogHelper.Info($"查看RGV 1工位任务》");
                if (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)
                {
@@ -575,7 +609,7 @@
                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    LogHelper.Info($"RGV 1工位任务{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST:{tag.RGV.bit1taskOver_LAST}");
                    LogHelper.Info($"RGV 1工位任务{task1?.S_TASK_NO}.bit1taskOver_LAST:{tag.RGV.bit1taskOver_LAST}");
                    if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)
                    {
                        if (task1.S_B_STATE != "完成")
@@ -584,11 +618,13 @@
                            if (task1.S_B_STATE == "取货完成")
                            {
                                task1.S_B_STATE = "完成";
                                //tag.RGV.ReadTask1No = 0;
                            }
                            else
                            {
                                task1.S_B_STATE = "取货完成";
                            }
                            //tag.RGV.bit1taskOver = 0;
                            LogHelper.Info($"RGV 1工位任务{task1.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task1.S_B_STATE}");
                            //tag.RGV.bit1taskOver_LAST = 1;
                            RedisHelper.Add($"RGV.bit1taskOver_LAST", "1", out string msg);
@@ -624,11 +660,13 @@
                            if (task2.S_B_STATE == "取货完成")
                            {
                                task2.S_B_STATE = "完成";
                                //tag.RGV.ReadTask2No = 0;
                            }
                            else
                            {
                                task2.S_B_STATE = "取货完成";
                            }
                            //tag.RGV.bit2taskOver = 0;
                            LogHelper.Info($"RGV 2工位任务{task2.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task2.S_B_STATE}");
                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "1", out string msg);
                            LogHelper.Info($"RGV 2工位任务写处理");
@@ -647,14 +685,14 @@
                }
                //if (thisOver > 0)
                {
                    var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev);
                    if (v2 != null)
                    {
                        LogHelper.Info($"RGVQueue è¯»åˆ°ç»“æžœ-{JsonConvert.SerializeObject(v2)}  \n ä¸‹å‘前进行清除。");
                        var b = RedisHelper.Remove("RGVQueue", out rev);
                    }
                }
                //{
                //    var v2 = RedisHelper.Get<WriteGroupEntity>("RGVQueue", out string rev);
                //    if (v2 != null)
                //    {
                //        LogHelper.Info($"RGVQueue è¯»åˆ°ç»“æžœ-{JsonConvert.SerializeObject(v2)}  \n ä¸‹å‘前进行清除。");
                //        var b = RedisHelper.Remove("RGVQueue", out rev);
                //    }
                //}
                ///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸
                var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
@@ -688,11 +726,13 @@
                        // 2号 ä¼˜å…ˆç»™ 1020  1008  1016
                        var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016");
                        if (tklist != null)
                        if (t2 != null)
                        {
                            LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾1020  1008  1016取货任务{t2.S_TASK_NO}。");
                            tag.RGV.workMod = 2;
                            LogHelper.Info($"{task1.S_TASK_NO}> workMod 2 ã€Š2工位》");
                            tag.RGV.taskmod = 1;
                            LogHelper.Info($"{task1.S_TASK_NO}> taskmod 1 ã€Šå–货》");
                            tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                            tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                            t2.S_B_STATE = "已推送";
@@ -753,7 +793,9 @@
                        {
                            LogHelper.Info($"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ²¡æœ‰åŒä¾§å–货任务 1工位卸货。");
                            tag.RGV.workMod = 1;
                            LogHelper.Info($"{task1.S_TASK_NO}> workMod 1 ã€Š1工位》");
                            tag.RGV.taskmod = 2;
                            LogHelper.Info($"{task1.S_TASK_NO}> taskmod 2 ã€Šå¸è´§ã€‹");
                            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
                            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
                            System.Threading.Thread.Sleep(750);
@@ -771,7 +813,9 @@
                        LogHelper.Info($"查看RGV 1工位没任务,工位2 æœ‰ä»»åŠ¡{task2.S_TASK_NO}。工位2卸货。。");
                        //2 å¸è´§ã€‚
                        tag.RGV.workMod = 2;
                        LogHelper.Info($"{task2.S_TASK_NO}> workMod 2 ã€Š2工位》");
                        tag.RGV.taskmod = 2;
                        LogHelper.Info($"{task2.S_TASK_NO}> taskmod 2 ã€Šå¸è´§ã€‹");
                        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));
                        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);
                        System.Threading.Thread.Sleep(750);
@@ -793,9 +837,11 @@
                        //}
                        if (e1017first != null)
                        {
                            LogHelper.Info($"查看RGV1 ä»»åŠ¡å·¥ä½2 æ²¡ä»»åŠ¡ã€‚ 1002  1010  1023取货任务{e1017first.S_TASK_NO}。");
                            LogHelper.Info($"查看RGV没任务, ç»™å·¥ä½1筛选任务。 1002  1010  1023取货任务{e1017first.S_TASK_NO}。");
                            tag.RGV.workMod = 1;
                            LogHelper.Info($"{e1017first.S_TASK_NO}> workMod 1 ã€Š1工位》");
                            tag.RGV.taskmod = 1;
                            LogHelper.Info($"{e1017first.S_TASK_NO}> taskmod 1 ã€Šå–货》");
                            uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));
                            LogHelper.Info($"{e1017first.S_TASK_NO}> è½¬æ¢åŽä»»åŠ¡å·{tno} å¼€å§‹å†™å…¥ã€‚");
                            tag.RGV.taskno1 = tno;
@@ -810,17 +856,19 @@
                            LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å†™125");
                            //tag.RGV.taskend=125
                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                        }
                        else
                        {
                            var t2 = tklist.OrderBy(x => x.T_CREATE).ToList().Find(x => x.S_START_LOC == "1020" || x.S_START_LOC == "1008" || x.S_START_LOC == "1016");
                            if (tklist != null)
                            {
                                LogHelper.Info($"查看RGV1 æ²¡ä»»åŠ¡å·¥ä½2 æ²¡ä»»åŠ¡ã€‚ æ‰¾1020  1008  1016取货任务{t2.S_TASK_NO}。");
                                LogHelper.Info($"查看RGV没任务 ç»™å·¥ä½2筛选任务。 æ‰¾1020  1008  1016取货任务{t2.S_TASK_NO}。");
                                tag.RGV.workMod = 2;
                                LogHelper.Info($"{t2.S_TASK_NO}> workMod 2 ã€Š2工位》");
                                tag.RGV.taskmod = 1;
                                LogHelper.Info($"{t2.S_TASK_NO}> taskmod 1 ã€Šå–货》");
                                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));
                                LogHelper.Info($"{t2.S_TASK_NO}> taskno2  {Convert.ToUInt32(t2.S_TASK_NO.Substring(4))}《任务号》");
                                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);
                                t2.S_B_STATE = "已推送";
                                taskservice.Update(t2);
@@ -846,6 +894,7 @@
        public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask)
        {
            Console.WriteLine($"ThreadGrats å…‰æ …处理 =================> ");
            var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
            TaskActRepository taskActRepository = new TaskActRepository();
            TaskRepository taskRepository = new TaskRepository();
@@ -859,7 +908,13 @@
                    taskActRepository.Update(item);
                    continue;
                }
                //var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
                var task = taskRepository.FindEntity(x => x.S_TASK_NO == item.S_TASK_NO);
                if (task == null)
                {
                    item.N_CREATEMETHOD = -1;
                    taskActRepository.Update(item);
                    continue;
                }
                string loc = "";
                if (tin < 2)
                {
@@ -882,8 +937,7 @@
                        if (dev.deviceType == 1)
                        {
                            LogHelper.Info($"{dev.deviceName}{(V ? "å·¦" : "右")} å…‰æ …{(goin ? "关闭" : "开启")} ç”³è¯·ã€‚" + string.Format("{0}{1}{2}", dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue"));
                            Conn.默认Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue");
                            Conn.默认Redis.SetValue(dev.deviceName + "." + (V ? "R02" : "R04"), "true", dev.deviceName + "Queue", false);
                        }
                        else if (dev.deviceType == 2)
                        {
@@ -908,7 +962,7 @@
                            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");
                                Conn.默认Redis.SetValue(dev.deviceName + "." + (V ? "R01" : "R03"), "true", dev.deviceName + "Queue", false);
                            }
                        }
@@ -1155,7 +1209,7 @@
                    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 == Bssx && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                        task = taskRepository.FindEntity(x => x.S_END_LOC == item && x.S_B_STATE != "完成" && x.S_B_STATE != "取消");
                        msg = "";
                        if (task != null)
                        {
@@ -1354,3 +1408,5 @@
    }
}
#endregion [自定义类-VS][20250623083459471][AutoThread]