1
czw
2025-06-19 b447a2b0dafdaf7e460ca4a73727c81fe820a1ff
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Build/Project/´úÂë/½çÃæÊ¼þ.cs
@@ -29,6 +29,7 @@
using GZ.DB.IRepository.OIDATABASE;
using GZ.DB.Entity.OIDATABASE;
using GZ.Modular.Redis;
using System.Security.Cryptography;
namespace GZ.Projects.AuxAllWCS
{
    /// <summary>
@@ -78,15 +79,26 @@
                    try
                    {
                        #region    [脚本][20250323111613779][业务逻辑.初始化配置]
                        if (Tag.Global.SettingsOver == 0)
                        {
                            SettingInit();
                            Tag.Global.SettingsOver = 1;
                        }
                        else if (Settings.deviceInfos.Count == 0)
                        {
                            Tag.Global.SettingsOver = 0;
                        }
                        //LogHelper.Info("1111 +" + DateTime.Now);
                        //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), null);
                        //LogHelper.Info("2222 +" + DateTime.Now);
                        //((Type)typeof(Utils)).GetMethod("ThreadSettingInit").Invoke(new Utils(), new object[] { });
                        //LogHelper.Info("3333 +" + DateTime.Now);
                        Action myDelegate = () => SettingInit();
                        AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", new object[] { tag, myDelegate });
                        //LogHelper.Info("4444 +" + DateTime.Now);
                        //AutoThread.InvokeMethod(AutoThread.Instance, "ThreadSettingInit", null);
                        //LogHelper.Info("4444 +" + DateTime.Now);
                        //if (Tag.Global.SettingsOver == 0)
                        //{
                        //    SettingInit();
                        //    Tag.Global.SettingsOver = 1;
                        //}
                        //else if (Settings.deviceInfos.Count == 0)
                        //{
                        //    Tag.Global.SettingsOver = 0;
                        //}
                        #endregion [脚本][20250323111613779][业务逻辑.初始化配置]
                    }
@@ -691,6 +703,32 @@
                }
                ExitJudgeStack.TryPop(out int exitJudgeVal);
            });
            System.Threading.Tasks.Task.Factory.StartNew(() =>
            {
                System.Threading.Thread.CurrentThread.IsBackground = true;
                ExitJudgeStack.Push(0);
                //一直执行,直到满足结束条件
                while (true)
                {
                    if (IsExitApp) { break; }
                    try
                    {
                        #region    [脚本][20250610002647095][业务逻辑.第三标段.维系尔2号.维希尔抓臂2R]
                        LogHelper.Info($"测试线程运行状态日志》》》》》");
                        #endregion [脚本][20250610002647095][业务逻辑.第三标段.维系尔2号.维希尔抓臂2R]
                    }
                    catch (Exception ex)
                    {
                        Conn.默认日志.Error(ex.ToString());
                    }
                    finally
                    {
                        System.Threading.Thread.Sleep(3000);
                    }
                }
                ExitJudgeStack.TryPop(out int exitJudgeVal);
            });
            /// <summary>
            /// ç¨‹åºç‰‡æ®µ:任务下发
            /// æè¿°:
@@ -702,43 +740,58 @@
                //一直执行,直到满足结束条件
                while (true)
                {
                    if (IsExitApp) { break; }
                    //if (IsExitApp) { break; }
                    LogHelper.Info("任务下发  while è¿›å…¥");
                    try
                    {
                        LogHelper.Info("任务下发  try 1 è¿›å…¥");
                        #region    [脚本][20250325085542733][业务逻辑.任务下发]
                        ITaskRepository taskservice = new TaskRepository();
                        var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "AGV");
                        if (tklist.Any())
                            foreach (var tk in tklist.GroupBy(item =>
                            {
                                var ticks = item.T_CREATE.Ticks;
                                return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
                            }).OrderBy(x => x.Key))
                            {
                                var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();
                                foreach (var t in ts)
                                {
                                    var b = false;
                                    b = RunTask(t);
                                    if (b)
                                    {
                                        t.S_B_STATE = "已推送";
                                        taskservice.Update(t);
                                    }
                                }
                                break;
                            }
                        //foreach (var tk in tklist.GroupBy(item =>
                        //{
                        //    var ticks = item.T_CREATE.Ticks;
                        //    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
                        //}).OrderBy(x => x.Key))
                        //if (tklist.Any())
                        //{
                        try
                        {
                            LogHelper.Info("任务下发  ARG ä»»åŠ¡ è¿›å…¥");
                            #region AGV任务下发。
                            var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "AGV");
                            if (tklist.Any())
                                foreach (var tk in tklist.GroupBy(item =>
                                {
                                    var ticks = item.T_CREATE.Ticks;
                                    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
                                }).OrderBy(x => x.Key))
                                {
                                    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();
                                    foreach (var t in ts)
                                    {
                                        var b = false;
                                        b = RunTask(t);
                                        if (b)
                                        {
                                            t.S_B_STATE = "已推送";
                                            taskservice.Update(t);
                                        }
                                    }
                                    break;
                                }
                            //foreach (var tk in tklist.GroupBy(item =>
                            //{
                            //    var ticks = item.T_CREATE.Ticks;
                            //    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));
                            //}).OrderBy(x => x.Key))
                            //if (tklist.Any())
                            //{
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            LogHelper.Info(ex.Message + ex.StackTrace);
                        }
                        try
                        {
                            LogHelper.Info("任务下发  Rgv ä»»åŠ¡ è¿›å…¥");
                            #region Rgv
                            LogHelper.Info($"查看RGV ç”µé‡ï¼šã€{tag.RGV.R当前电量}】 å……电状态:【{tag.RGV.R充电状态}】 æ•…障代码:【{tag.RGV.RgvrunError}】");
@@ -862,7 +915,7 @@
                            }
                            ///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸
                            tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                            var tklist = taskservice.FindList(x => x.S_B_STATE == "未执行" && x.S_WORK_MODE == "RGV").OrderBy(x => x.T_CREATE).ToList();
                            if (task1 != null && task1.S_B_STATE != "完成") //1有任务
                            {
                                if (task2 != null && task2.S_B_STATE != "完成")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ 
@@ -873,8 +926,14 @@
                                    tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
                                    tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
                                    System.Threading.Thread.Sleep(750);
                                    //RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                                    //tag.RGV.taskend = 125;
                                    //Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue");
                                    LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST å†™ 0");
                                    RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                                    tag.RGV.taskend = 125;
                                    LogHelper.Info($"{task1.S_TASK_NO}> end å†™ 125");
                                    Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                }
                                else //1有任务  2 æ²¡ä»»åŠ¡ã€‚
                                {
@@ -899,8 +958,10 @@
                                            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);
                                            tag.RGV.taskend = 125;
                                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                        }
                                    }
                                    else if (RightSide.Contains(task1.S_START_LOC))
@@ -918,8 +979,10 @@
                                            taskservice.Update(t2);
                                            creT2 = true;
                                            System.Threading.Thread.Sleep(750);
                                            LogHelper.Info($"{t2.S_TASK_NO}> bit2taskOver_LAST å†™ 125");
                                            RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                            tag.RGV.taskend = 125;
                                            LogHelper.Info($"{t2.S_TASK_NO}> end å†™ 125");
                                            Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                        }
                                    }
                                    //else //1 ç›´æŽ¥å¸è´§ã€‚ 
@@ -931,8 +994,10 @@
                                        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));
                                        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);
                                        System.Threading.Thread.Sleep(750);
                                        LogHelper.Info($"{task1.S_TASK_NO}> bit1taskOver_LAST å†™ 0");
                                        RedisHelper.Add($"RGV.bit1taskOver_LAST", "0", out string msg);
                                        tag.RGV.taskend = 125;
                                        LogHelper.Info($"{task1.S_TASK_NO}> taskend å†™ 0");
                                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                    }
                                }
                            }
@@ -947,8 +1012,11 @@
                                    tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));
                                    tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);
                                    System.Threading.Thread.Sleep(750);
                                    LogHelper.Info($"{task2.S_TASK_NO}> bit2taskOver_LAST å†™ 0");
                                    RedisHelper.Add($"RGV.bit2taskOver_LAST", "0", out string msg);
                                    tag.RGV.taskend = 125;
                                    //tag.RGV.taskend = 125;
                                    LogHelper.Info($"{task2.S_TASK_NO}> taskend å†™125");
                                    Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                }
                                else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚
                                {
@@ -970,22 +1038,25 @@
                                        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}> taskend 125");
                                        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);
                                        tag.RGV.taskend = 125;
                                        LogHelper.Info($"{e1017first.S_TASK_NO}> taskend å†™125");
                                        //tag.RGV.taskend=125
                                        Conn.默认Redis.SetValue("RGV.taskend", "125", "RGVQueue", false);
                                    }
                                }
                            }
                            LogHelper.Info($"rgv å¤„理完成。taskend 125");
                            #endregion
                        }
                        catch (Exception ex)
                        {
                            LogHelper.Error(ex.Message, ex);
                            //throw ex;
                            LogHelper.Info(ex.Message + ex.StackTrace);
                        }
                        #endregion [脚本][20250325085542733][业务逻辑.任务下发]
                    }
@@ -1260,6 +1331,17 @@
                            }
                            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");
                            }
                        }
                        #endregion [脚本][20250616094224396][业务逻辑.流程2热处理炉进出.1020空框下线]
                    }
                    catch (Exception ex)
@@ -1462,7 +1544,7 @@
                                }
                                else if (ssx == "1003")
                                {
                                    tag.FNK2.D2210 = 1;
                                    tag.FNK1.D2210 = 1;
                                    //tag.SF下料位.RArrive1003_LAST = 1;
                                    RedisHelper.Add($"FNK1003051113.RArrive1003_LAST", "1", out string msg);