1
czw
2025-06-27 e52744716da77be232ac6ecc7573a2ef2294e65c
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;
@@ -14,6 +15,8 @@
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using System.Windows.Interop;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox;
using System.Security.Cryptography;
using System.Windows.Markup;
namespace GZ.Projects.AuxAllWCS
{
@@ -103,6 +106,12 @@
            {
                tag.Global.SettingsOver = 0;
            }
            else tag.Global.SettingsOver++;
            if (tag.Global.SettingsOver > 999)
            {
                tag.Global.SettingsOver = 1;
                Console.Clear();
            }
        }
        /// <summary>
@@ -124,16 +133,17 @@
                        endBit = VERX.location[0]
                    }));
                    LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                    if (str.Contains("true"))
                    var strr = JsonConvert.DeserializeObject<Messss>(str);
                    if (strr != null && strr.success && strr.data?.state == 0)
                    {
                        //tag.Js1.D1212_LAST = 1;
                        RedisHelper.Add($"Js捷顺1.D1212_LAST", "1", out string msg);
                        RedisHelper.Add($"Js捷顺1.D1202_LAST", "1", out string msg);
                    }
                }
                if (tag.Js1.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 2) == 0)
                {
                    //tag.Js1.D1212_LAST = 0; 
                    RedisHelper.Add($"Js捷顺1.D1212_LAST", "0", out string msg);
                    RedisHelper.Add($"Js捷顺1.D1202_LAST", "0", out string msg);
                }
                if (tag.Js1.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 1)
                {
@@ -143,16 +153,17 @@
                        endBit = VERX.location[1]
                    }));
                    LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                    if (str.Contains("true"))
                    var strr = JsonConvert.DeserializeObject<Messss>(str);
                    if (strr != null && strr.success && strr.data?.state == 0)
                    {
                        //tag.Js1.D1213_LAST = 1;
                        RedisHelper.Add($"Js捷顺1.D1213_LAST", "1", out string msg);
                        RedisHelper.Add($"Js捷顺1.D1203_LAST", "1", out string msg);
                    }
                }
                if (tag.Js1.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js1.D1212, 3) == 0)
                {
                    //tag.Js1.D1213_LAST = 0;
                    RedisHelper.Add($"Js捷顺1.D1213_LAST", "0", out string msg);
                    RedisHelper.Add($"Js捷顺1.D1203_LAST", "0", out string msg);
                }
            }
        }
@@ -175,18 +186,17 @@
                        endBit = VERX.location[0]
                    }));
                    LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                    if (str.Contains("true"))
                    var strr = JsonConvert.DeserializeObject<Messss>(str);
                    if (strr != null && strr.success && strr.data?.state == 0)
                    {
                        //tag.Js2.D1212_LAST = 1;
                        RedisHelper.Add($"Js捷顺1.D1212_LAST", "1", out string msg);
                        RedisHelper.Add($"Js捷顺2.D1202_LAST", "1", out string msg);
                    }
                }
                if (tag.Js2.D1212_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1212, 2) == 0)
                {
                    //tag.Js2.D1212_LAST = 0;
                    RedisHelper.Add($"Js捷顺1.D1212_LAST", "0", out string msg);
                    RedisHelper.Add($"Js捷顺2.D1202_LAST", "0", out string msg);
                }
                if (tag.Js2.D1213_LAST == 0 && TcpServer.GetBitdata(tag.Js2.D1212, 3) == 1)
                {
@@ -196,18 +206,18 @@
                        endBit = VERX.location[1]
                    }));
                    LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                    if (str.Contains("true"))
                    {
                        //tag.Js2.D1213_LAST = 1;
                        RedisHelper.Add($"Js捷顺1.D1213_LAST", "1", out string msg);
                    var strr = JsonConvert.DeserializeObject<Messss>(str);
                    if (strr != null && strr.success && strr.data?.state == 0)
                    {
                        RedisHelper.Add($"Js捷顺2.D1203_LAST", "1", out string msg);
                    }
                }
                if (tag.Js2.D1213_LAST == 1 && TcpServer.GetBitdata(tag.Js2.D1213, 2) == 0)
                {
                    //tag.Js2.D1213_LAST = 0;
                    RedisHelper.Add($"Js捷顺1.D1213_LAST", "0", out string msg);
                    RedisHelper.Add($"Js捷顺2.D1203_LAST", "0", out string msg);
                }
            }
        }
@@ -234,9 +244,11 @@
                            endBit = ""
                        }));
                        LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        var strr = JsonConvert.DeserializeObject<Messss>(str);
                        if (strr != null && strr.success && strr.data?.state == 0)
                        {
                            tag.wxr1.R44_LAST = true;
                            //tag.wxr1.R44_LAST = true;
                            RedisHelper.Add($"维希尔抓臂1.R44_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -251,7 +263,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 +280,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
                            {
@@ -303,9 +317,11 @@
                            endBit = ""
                        }));
                        LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        var strr = JsonConvert.DeserializeObject<Messss>(str);
                        if (strr != null && strr.success && strr.data?.state == 0)
                        {
                            tag.wxr1.R46_LAST = true;
                            //tag.wxr1.R46_LAST = true;
                            RedisHelper.Add($"维希尔抓臂1.R46_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -319,7 +335,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 +352,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
                            {
@@ -371,9 +389,11 @@
                            endBit = ""
                        }));
                        LogHelper.Info($"{VERX.location[0]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        var strr = JsonConvert.DeserializeObject<Messss>(str);
                        if (strr != null && strr.success && strr.data?.state == 0)
                        {
                            tag.wxr2.R44_LAST = true;
                            //tag.wxr2.R44_LAST = true;
                            RedisHelper.Add($"维希尔抓臂2.R44_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -387,7 +407,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 +424,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
                            {
@@ -440,9 +462,11 @@
                            endBit = ""
                        }));
                        LogHelper.Info($"{VERX.location[1]}申请mes任务结果{str}");
                        if (str.Contains("true"))
                        var strr = JsonConvert.DeserializeObject<Messss>(str);
                        if (strr != null && strr.success && strr.data?.state == 0)
                        {
                            tag.wxr2.R46_LAST = true;
                            //tag.wxr2.R46_LAST = true;
                            RedisHelper.Add($"维希尔抓臂2.R46_LAST", "true", out string msg);
                        }
                    }
                    else
@@ -456,7 +480,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 +497,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
                            {
@@ -494,7 +520,7 @@
            ITaskRepository taskservice = new TaskRepository();
            try
            {
                LogHelper.Info("任务下发  ARG ä»»åŠ¡ è¿›å…¥");
                LogHelper.Info("任务下发  AGV ä»»åŠ¡ è¿›å…¥");
                #region AGV任务下发。
                var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "AGV");
@@ -535,21 +561,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 +610,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 +622,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 +631,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);
@@ -615,7 +664,7 @@
                    string tno = "TN" + (DateTime.Now.ToString("yy")) + ((taskno.ToString()).PadLeft(8, '0'));
                    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);
                    LogHelper.Info($"RGV2工位任务{JsonConvert.SerializeObject(task2)}.bit2taskOver_LAST:{tag.RGV.bit2taskOver_LAST}");
                    LogHelper.Info($"RGV2工位任务{task2?.S_TASK_NO}.bit2taskOver_LAST:{tag.RGV.bit2taskOver_LAST}");
                    if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)
                    {
                        if (task2.S_B_STATE != "完成")
@@ -624,11 +673,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 +698,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();
@@ -692,17 +743,18 @@
                        {
                            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 = "已推送";
                            taskservice.Update(t2);
                            creT2 = true;
                            System.Threading.Thread.Sleep(750);
                            LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                            t2.S_B_STATE = "已推送";
                            taskservice.Update(t2);
                        }
                        ////2 å¦‚果有同侧取货任务。就取。没有
                        //else if (leftSide.Contains(task1.S_START_LOC))
@@ -753,7 +805,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 +825,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,41 +849,44 @@
                        //}
                        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;
                            LogHelper.Info($"{e1017first.S_TASK_NO}>开始写入 task1do>>{e1017first.S_START_LOC}。");
                            tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);
                            LogHelper.Info($"{e1017first.S_TASK_NO}> æ›´æ–°ä»»åŠ¡ã€‚");
                            e1017first.S_B_STATE = "已推送";
                            taskservice.Update(e1017first);
                            System.Threading.Thread.Sleep(750);
                            LogHelper.Info($"{e1017first.S_TASK_NO}> bit1taskOver_LAST å†™0");
                            RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                            LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å†™125");
                            //tag.RGV.taskend=125
                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                            e1017first.S_B_STATE = "已推送";
                            taskservice.Update(e1017first);
                        }
                        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);
                                System.Threading.Thread.Sleep(750);
                                LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                                RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                t2.S_B_STATE = "已推送";
                                taskservice.Update(t2);
                            }
                        }
                    }
@@ -844,13 +903,15 @@
        public void ThreadGrats(Tag tag, Action<HaiKangOrderInfo> continueTask)
        {
            Console.WriteLine($"ThreadGrats å…‰æ …处理 =================> ");
            LogHelper.Info($"ThreadGrats å…‰æ …处理 =================> ");
            var taskCOdes = new List<string> { "Sarrive", "Srelease", "Earrive", "Erelease" };
            TaskActRepository taskActRepository = new TaskActRepository();
            TaskRepository taskRepository = new TaskRepository();
            var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0);
            var requires = taskActRepository.FindList(x => taskCOdes.Contains(x.S_ACTION_CODE) && x.N_CREATEMETHOD == 0).OrderBy(x => x.T_CREATE);
            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)
                {
@@ -858,7 +919,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)
                {
@@ -874,21 +941,26 @@
                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)
                    {
                        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");
                            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");
                        }
                        LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} è®¾å¤‡æ˜¯{dev.deviceName} å¼€å¯å…‰æ …处理完成 =================> ");
                        item.N_CREATEMETHOD = 1;
                        taskActRepository.Update(item);
@@ -898,7 +970,9 @@
                    {
                        if (dev.deviceType == 1)
                        {
                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} è®¾å¤‡æ˜¯{dev.deviceName} å…³é—­å…‰æ …处理 =================> ");
                            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 ? "关闭" : "开启")} ç”³è¯·ã€‚ å·²ç»å…³é—­ï¼");
@@ -907,26 +981,33 @@
                            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);
                            }
                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} è®¾å¤‡æ˜¯{dev.deviceName} å…³é—­å…‰æ …处理完成 =================> ");
                        }
                        else if (dev.deviceType == 2)
                        {
                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} è®¾å¤‡æ˜¯{dev.deviceName} å…³é—­å…‰æ …处理 =================> ");
                            var tf = Conn.默认Redis.GetValue(dev.deviceName + ".D1202");
                            int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
                            if (TcpServer.GetBitdata(numm, (V ? 0 : 1)) == 1)
                            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"), dev.deviceName + "Queue"));
                                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}");
                            }
                            LogHelper.Info($"ThreadGrats {item.S_TASK_NO} >{item.S_ACTION_CODE} è®¾å¤‡æ˜¯{dev.deviceName} å…³é—­å…‰æ …处理完成 =================> ");
                        }
                    }
                }
@@ -943,23 +1024,35 @@
                }
            }
            System.Threading.Thread.Sleep(3000);
            LogHelper.Info($"ThreadGrats deviceType2光栅写入位重置 =================> ");
            //重置信号
            foreach (var dev in Settings.deviceInfos.FindAll(x => x.deviceType == 2))
            {
                var tf = Conn.默认Redis.GetValue(dev.deviceName + ".D1202");
                int numm = int.Parse(string.IsNullOrEmpty(tf) ? "0" : tf);
                //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");
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue");
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1220", "0", dev.deviceName + "Queue", false);
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1222", "0", dev.deviceName + "Queue", false);
                }
                else if (TcpServer.GetBitdata(numm, 1) == 0)
                if (TcpServer.GetBitdata(numm, 1) == 0)
                {
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1221", "0", dev.deviceName + "Queue");
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1223", "0", dev.deviceName + "Queue");
                    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.SetValue(dev.deviceName + ".D1224", "0", dev.deviceName + "Queue", false);
                }
                if (TcpServer.GetBitdata(numm, 3) == 0)
                {
                    Conn.默认Redis.SetValue(dev.deviceName + ".D1225", "0", dev.deviceName + "Queue", false);
                }
            }
            LogHelper.Info($"ThreadGrats deviceType2光栅写入位重置完成。 =================> ");
        }
        /// <summary>
        /// 1020  1023空框下线
@@ -1193,10 +1286,12 @@
            {
                var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"FNK1003051113.RArrive{ssx}"), typeof(System.UInt16));
                var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($"FNK1003051113.RArrive{ssx}_LAST"), typeof(System.UInt16));
                LogHelper.Info($" FNK1003051113.RArrive{ssx}>{RArrive} && FNK1003051113.RArrive{ssx}_LAST >{RArriveLast}");
                if (RArrive == 1 && RArriveLast == 0)
                {
                    if (ssx == "1005" && tag.SF下料位.WRelease1005 == 0)
                    {
                        LogHelper.Info($"ssx == 1005 && tag.SF下料位.WRelease1005:{tag.SF下料位.WRelease1005}  å†™f1 2215=1,RArrive1005_LAST=1");
                        tag.FNK1.D2215 = 1;
                        //tag.SF下料位.RArrive1005_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "1", out string msg);
@@ -1206,6 +1301,7 @@
                    }
                    else if (ssx == "1003" && tag.SF下料位.WRelease1003 == 0)
                    {
                        LogHelper.Info($"ssx == 1003 && tag.SF下料位.WRelease1003:{tag.SF下料位.WRelease1003}  å†™f1 2210=1,RArrive1003_LAST=1");
                        tag.FNK1.D2210 = 1;
                        //tag.SF下料位.RArrive1003_LAST = 1;
@@ -1216,6 +1312,7 @@
                    }
                    else if (ssx == "1013" && tag.SF下料位.WRelease1013 == 0)
                    {
                        LogHelper.Info($"ssx == 1013 && tag.SF下料位.WRelease1013:{tag.SF下料位.WRelease1013}  å†™f2 2215=1,RArrive1013_LAST=1");
                        tag.FNK2.D2215 = 1;
                        //tag.SF下料位.RArrive1013_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "1", out string msg);
@@ -1225,6 +1322,7 @@
                    }
                    else if (ssx == "1011" && tag.SF下料位.WRelease1011 == 0)
                    {
                        LogHelper.Info($"ssx == 1011 && tag.SF下料位.WRelease1011:{tag.SF下料位.WRelease1011}  å†™f2 2210=1,RArrive1011_LAST=1");
                        tag.FNK2.D2210 = 1;
                        //tag.SF下料位.RArrive1011_LAST = 1;
                        RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "1", out string msg);
@@ -1235,6 +1333,7 @@
                }
                else if (RArrive == 0 && RArriveLast == 1)
                {
                    LogHelper.Info($"重置 FNK1003051113.RArrive{ssx}_LAST=0");
                    RedisHelper.Add($"FNK1003051113.RArrive{ssx}_LAST", "0", out string msg);
                    //Conn.默认Redis.SetValue($"FNK1003051113.RArrive{ssx}_LAST", "0", $"FNK1003051113Queue");
                }
@@ -1244,6 +1343,8 @@
        public void ThreadFNK1Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK1Over    =====>");
            LogHelper.Info($" FN1 D2217>{tag.FNK1.D2217} D2217LAST>{tag.FNK1.D2217_LAST} D2215>{tag.FNK1.D2215} D2216>{tag.FNK1.D2216} D2215>{tag.FNK1.D2215}");
            //LogHelper.Info($" FN1 .D2217=1,2217_LAST=0 å†™ 2215=0,D2217_LAST=1,WRelease1005=1 RArrive1005_LAST=0");
            if (tag.FNK1.D2217 == 1 && tag.FNK1.D2217_LAST == 0)
            {
                tag.FNK1.D2215 = 0;
@@ -1254,13 +1355,22 @@
                tag.SF下料位.WSafe0305 = 1;
                System.Threading.Thread.Sleep(1000);
                RedisHelper.Add($"FNK1003051113.RArrive1005_LAST", "0", out msg);
                LogHelper.Info($" FN1 .D2217=1,2217_LAST=0 å†™ 2215=0,D2217_LAST=1,WRelease1005=1 RArrive1005_LAST=0");
            }
            if (tag.FNK1.D2216 == 1)
                tag.FNK1.D2215 = 0;
            else if (tag.FNK1.D2217 == 0 && tag.FNK1.D2217_LAST == 1)
            {
                //tag.FNK1.D2217_LAST = 0;
                RedisHelper.Add($"p发那科1下线.D2217_LAST", "0", out string msg);
                LogHelper.Info($" p发那科1下线.D2217_LAST=0");
            }
            if (tag.FNK1.D2216 == 1)
            {
                tag.FNK1.D2215 = 0;
                LogHelper.Info($" p发那科1下线 è¯»D2216=1  å†™D2215 =0");
            }
            LogHelper.Info($" FN1 D2212>{tag.FNK1.D2212} D2212LAST>{tag.FNK1.D2212_LAST} D2210>{tag.FNK1.D2210} D2211>{tag.FNK1.D2211} D2210>{tag.FNK1.D2210}");
            if (tag.FNK1.D2212 == 1 && tag.FNK1.D2212_LAST == 0)
            {
                tag.FNK1.D2210 = 0;
@@ -1270,6 +1380,7 @@
                tag.SF下料位.WSafe0305 = 1;
                System.Threading.Thread.Sleep(1000);
                RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "0", out msg);
                LogHelper.Info($" FN1 .D2212=1,2212_LAST=0 å†™ 2210=0,D2212_LAST=1,WRelease1003=1 RArrive1003_LAST=0");
            }
            //else if (tag.FNK1.D2211 == 1)
            //    tag.FNK1.D2210 = 0;
@@ -1277,14 +1388,21 @@
            {
                //tag.FNK1.D2212_LAST = 0;
                RedisHelper.Add($"p发那科1下线.D2212_LAST", "0", out string msg);
                LogHelper.Info($" p发那科1下线.D2212_LAST=0");
            }
            if (tag.FNK1.D2211 == 1)
            {
                tag.FNK1.D2210 = 0;
                LogHelper.Info($" p发那科1下线 è¯»D2211=1  å†™D2210 =0");
            }
        }
        public void ThreadFNK2Over(Tag tag)
        {
            Console.WriteLine($"ThreadFNK2Over    =====>");
            LogHelper.Info($" FN2 D2217>{tag.FNK2.D2217} D2217LAST>{tag.FNK2.D2217_LAST} D2215>{tag.FNK2.D2215} D2216>{tag.FNK2.D2216} D2215>{tag.FNK2.D2215}");
            if (tag.FNK2.D2217 == 1 && tag.FNK2.D2217_LAST == 0)
            {
                tag.FNK2.D2215 = 0;
@@ -1295,14 +1413,23 @@
                tag.SF下料位.WSafe1113 = 1;
                System.Threading.Thread.Sleep(1000);
                RedisHelper.Add($"FNK1003051113.RArrive1013_LAST", "0", out msg);
                LogHelper.Info($" FN2 .D2217=1,2217_LAST=0 å†™ 2215=0,D2217_LAST=1,WRelease1013=1 RArrive1013_LAST=0");
            }
            else if (tag.FNK2.D2217 == 0 && tag.FNK2.D2217_LAST == 1)
            {
                //tag.FNK2.D2217_LAST = 0;
                RedisHelper.Add($"p发那科2下线.D2217_LAST", "0", out string msg);
                LogHelper.Info($" p发那科2下线.D2217_LAST=0");
            }
            if (tag.FNK2.D2216 == 1)
            {
                tag.FNK2.D2215 = 0;
                LogHelper.Info($" p发那科2下线 è¯»D2216=1  å†™D2215 =0");
            }
            LogHelper.Info($" FN2 D2212>{tag.FNK2.D2212} D2212LAST>{tag.FNK2.D2212_LAST} D2210>{tag.FNK2.D2210} D2211>{tag.FNK2.D2211} D2210>{tag.FNK2.D2210}");
            if (tag.FNK2.D2212 == 1 && tag.FNK2.D2212_LAST == 0)
            {
                tag.FNK2.D2210 = 0;
@@ -1313,16 +1440,22 @@
                tag.SF下料位.WSafe1113 = 1;
                System.Threading.Thread.Sleep(1000);
                RedisHelper.Add($"FNK1003051113.RArrive1011_LAST", "0", out msg);
                LogHelper.Info($" FN2 .D2212=1,2212_LAST=0 å†™ 2210=0,D2212_LAST=1,WRelease1011=1 RArrive1011_LAST=0");
            }
            else if (tag.FNK2.D2212 == 0 && tag.FNK2.D2212_LAST == 1)
            {
                //tag.FNK2.D2212_LAST = 0;
                RedisHelper.Add($"p发那科2下线.D2212_LAST", "0", out string msg);
                LogHelper.Info($" p发那科2下线.D2212_LAST=0");
            }
            if (tag.FNK2.D2211 == 1)
            {
                tag.FNK2.D2210 = 0;
                LogHelper.Info($" p发那科2下线 è¯»D2211=1  å†™D2210 =0");
            }
        }
        public void Thread1019Down(Tag tag)
        {
@@ -1352,4 +1485,20 @@
    }
    class Messss
    {
        public bool success { get; set; }
        public Ddata data { get; set; }
        public object extra { get; set; }
    }
    public class Ddata
    {
        public string reqCode { get; set; }
        public int state { get; set; }
        public string error { get; set; }
    }
}
#endregion [自定义类-VS][20250623083459471][AutoThread]