1
czw
2025-06-19 20f9d82c65c5199afacc493886af60dab1f1423b
2025Äê6ÔÂ12ÈÕ/AuxAllWCS/Scripts/Script.json
@@ -473,8 +473,8 @@
          "ID": "20250325085542733",
          "Name": "任务下发",
          "Desc": "",
          "Content": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n    var ticks = item.T_CREATE.Ticks;\r\n    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n    foreach (var t in ts)\r\n    {\r\n        var b = false;\r\n        b = RunTask(t);\r\n\r\n        if (b)\r\n        {\r\n            t.S_B_STATE = \"已推送\";\r\n            taskservice.Update(t);\r\n        }\r\n    }\r\n    break;\r\n}\r\n//foreach (var tk in tklist.GroupBy(item =>\r\n//{\r\n//    var ticks = item.T_CREATE.Ticks;\r\n//    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n//}).OrderBy(x => x.Key))\r\n//if (tklist.Any())\r\n//{\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n    task1Isrun = true;\r\n    if (tag.RGV.bit1taskOver_LAST == 1)\r\n        tag.RGV.bit1taskOver_LAST = 0;\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n    task2Isrun = true;\r\n    if (tag.RGV.bit2taskOver_LAST == 1)\r\n        tag.RGV.bit2taskOver_LAST = 0;\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n    string mes = \"\";\r\n    if (task1Isrun)\r\n        mes += tag.RGV.ReadTask1No + \"执行中...\";\r\n    if (task2Isrun)\r\n        mes += tag.RGV.ReadTask2No + \"执行中...\";\r\n    LogHelper.Info($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    throw new Exception($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n    task1 = taskservice.FindEntity(x => x.S_TASK_NO == \"TN\" + tag.RGV.ReadTask1No || x.S_TASK_NO == \"TN0\" + tag.RGV.ReadTask1No);\r\n    if (tag.RGV.bit1taskOver_LAST == 0)\r\n    {\r\n        thisOver = 1;\r\n        if (task1.S_B_STATE == \"取货完成\")\r\n        {\r\n            task1.S_B_STATE = \"完成\";\r\n        }\r\n        else\r\n        {\r\n            task1.S_B_STATE = \"取货完成\";\r\n        }\r\n        taskservice.Update(task1);\r\n        tag.RGV.bit1taskOver_LAST = 1;\r\n    }\r\n}\r\n\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n    task2 = taskservice.FindEntity(x => x.S_TASK_NO == \"TN\" + tag.RGV.ReadTask2No || x.S_TASK_NO == \"TN0\" + tag.RGV.ReadTask2No);\r\n    if (tag.RGV.bit2taskOver_LAST == 0)\r\n    {\r\n        thisOver = 2;\r\n        if (task2.S_B_STATE == \"取货完成\")\r\n        {\r\n            task2.S_B_STATE = \"完成\";\r\n        }\r\n        else\r\n        {\r\n            task2.S_B_STATE = \"取货完成\";\r\n        }\r\n        taskservice.Update(task2);\r\n        tag.RGV.bit2taskOver_LAST = 1;\r\n    }\r\n}\r\n\r\n///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸\r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"完成\") //1有任务\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        tag.RGV.workMod = 1;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(2));\r\n        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        //1 å¦‚果有同侧取货任务。就取。没有\r\n        var leftSide = new List<string> { \"1023\", \"1020\" };\r\n        var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n        bool creT2 = false;\r\n        if (leftSide.Contains(task1.S_START_LOC))\r\n        {\r\n            leftSide.Remove(task1.S_START_LOC);\r\n            var lsde = leftSide.FirstOrDefault();\r\n            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(2));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        else if (RightSide.Contains(task1.S_START_LOC))\r\n        {\r\n            RightSide.Remove(task1.S_START_LOC);\r\n            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(2));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        //else //1 ç›´æŽ¥å¸è´§ã€‚ \r\n        if (!creT2)\r\n        {\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 2;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(2));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n}\r\nelse\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æ²¡ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        //2 å¸è´§ã€‚\r\n        tag.RGV.workMod = 2;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(2));\r\n        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        //、下 1017任务 ç»™1号工位。\r\n        var lss = tklist.Take(2).ToList();\r\n        var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n        if (e1017first == null)\r\n        {\r\n            e1017first = lss.FirstOrDefault();\r\n        }\r\n        if (e1017first != null)\r\n        {\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 1;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(2));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_START_LOC);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n\r\n}",
          "ContentCopy": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n    var ticks = item.T_CREATE.Ticks;\r\n    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n    foreach (var t in ts)\r\n    {\r\n        var b = false;\r\n        b = RunTask(t);\r\n\r\n        if (b)\r\n        {\r\n            t.S_B_STATE = \"已推送\";\r\n            taskservice.Update(t);\r\n        }\r\n    }\r\n    break;\r\n}\r\n//foreach (var tk in tklist.GroupBy(item =>\r\n//{\r\n//    var ticks = item.T_CREATE.Ticks;\r\n//    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n//}).OrderBy(x => x.Key))\r\n//if (tklist.Any())\r\n//{\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n    task1Isrun = true;\r\n    if (tag.RGV.bit1taskOver_LAST == 1)\r\n        tag.RGV.bit1taskOver_LAST = 0;\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n    task2Isrun = true;\r\n    if (tag.RGV.bit2taskOver_LAST == 1)\r\n        tag.RGV.bit2taskOver_LAST = 0;\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n    string mes = \"\";\r\n    if (task1Isrun)\r\n        mes += tag.RGV.ReadTask1No + \"执行中...\";\r\n    if (task2Isrun)\r\n        mes += tag.RGV.ReadTask2No + \"执行中...\";\r\n    LogHelper.Info($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    throw new Exception($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n    task1 = taskservice.FindEntity(x => x.S_TASK_NO == \"TN\" + tag.RGV.ReadTask1No || x.S_TASK_NO == \"TN0\" + tag.RGV.ReadTask1No);\r\n    if (tag.RGV.bit1taskOver_LAST == 0)\r\n    {\r\n        thisOver = 1;\r\n        if (task1.S_B_STATE == \"取货完成\")\r\n        {\r\n            task1.S_B_STATE = \"完成\";\r\n        }\r\n        else\r\n        {\r\n            task1.S_B_STATE = \"取货完成\";\r\n        }\r\n        taskservice.Update(task1);\r\n        tag.RGV.bit1taskOver_LAST = 1;\r\n    }\r\n}\r\n\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n    task2 = taskservice.FindEntity(x => x.S_TASK_NO == \"TN\" + tag.RGV.ReadTask2No || x.S_TASK_NO == \"TN0\" + tag.RGV.ReadTask2No);\r\n    if (tag.RGV.bit2taskOver_LAST == 0)\r\n    {\r\n        thisOver = 2;\r\n        if (task2.S_B_STATE == \"取货完成\")\r\n        {\r\n            task2.S_B_STATE = \"完成\";\r\n        }\r\n        else\r\n        {\r\n            task2.S_B_STATE = \"取货完成\";\r\n        }\r\n        taskservice.Update(task2);\r\n        tag.RGV.bit2taskOver_LAST = 1;\r\n    }\r\n}\r\n\r\n///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸\r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"完成\") //1有任务\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        tag.RGV.workMod = 1;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(2));\r\n        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        //1 å¦‚果有同侧取货任务。就取。没有\r\n        var leftSide = new List<string> { \"1023\", \"1020\" };\r\n        var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n        bool creT2 = false;\r\n        if (leftSide.Contains(task1.S_START_LOC))\r\n        {\r\n            leftSide.Remove(task1.S_START_LOC);\r\n            var lsde = leftSide.FirstOrDefault();\r\n            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(2));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        else if (RightSide.Contains(task1.S_START_LOC))\r\n        {\r\n            RightSide.Remove(task1.S_START_LOC);\r\n            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(2));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        //else //1 ç›´æŽ¥å¸è´§ã€‚ \r\n        if (!creT2)\r\n        {\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 2;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(2));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n}\r\nelse\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æ²¡ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        //2 å¸è´§ã€‚\r\n        tag.RGV.workMod = 2;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(2));\r\n        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        //、下 1017任务 ç»™1号工位。\r\n        var lss = tklist.Take(2).ToList();\r\n        var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n        if (e1017first == null)\r\n        {\r\n            e1017first = lss.FirstOrDefault();\r\n        }\r\n        if (e1017first != null)\r\n        {\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 1;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(2));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_START_LOC);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n\r\n}",
          "Content": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n    var ticks = item.T_CREATE.Ticks;\r\n    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n    foreach (var t in ts)\r\n    {\r\n        var b = false;\r\n        b = RunTask(t);\r\n\r\n        if (b)\r\n        {\r\n            t.S_B_STATE = \"已推送\";\r\n            taskservice.Update(t);\r\n        }\r\n    }\r\n    break;\r\n}\r\n#region Rgv\r\n\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n    task1Isrun = true;\r\n    if (tag.RGV.bit1taskOver_LAST == 1)\r\n        RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n    task2Isrun = true;\r\n    if (tag.RGV.bit2taskOver_LAST == 1)\r\n        RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n    string mes = \"\";\r\n    if (task1Isrun)\r\n        mes += tag.RGV.ReadTask1No + \"执行中...\";\r\n    if (task2Isrun)\r\n        mes += tag.RGV.ReadTask2No + \"执行中...\";\r\n    LogHelper.Info($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    throw new Exception($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\n\r\nLogHelper.Info($\"查看RGV 1工位任务》\");\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n    var taskno = tag.RGV.ReadTask1No;\r\n    LogHelper.Info($\"RGV 1工位任务{tag.RGV.ReadTask1No}\");\r\n    string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n    LogHelper.Info($\"RGV 1工位任务{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST:{tag.RGV.bit1taskOver_LAST}\");\r\n    if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n    {\r\n        if (task1.S_B_STATE != \"完成\")\r\n        {\r\n            if (task1.S_B_STATE == \"取货完成\")\r\n            {\r\n                task1.S_B_STATE = \"完成\";\r\n            }\r\n            else\r\n            {\r\n                task1.S_B_STATE = \"取货完成\";\r\n            }\r\n            LogHelper.Info($\"RGV 1工位任务{task1.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task1.S_B_STATE}\");\r\n            //tag.RGV.bit1taskOver_LAST = 1;\r\n            RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n            LogHelper.Info($\"RGV 1工位任务写处理\");\r\n            taskservice.Update(task1);\r\n            LogHelper.Info($\"RGV 1工位任务更新。\");\r\n        }\r\n    }\r\n}\r\nelse if (tag.RGV.ReadTask1No == 0)\r\n{\r\n    LogHelper.Info($\"RGV 1工位没有任务》\");\r\n}\r\n\r\nLogHelper.Info($\"查看RGV 2工位任务》\");\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n    var taskno = tag.RGV.ReadTask2No;\r\n    LogHelper.Info($\"RGV 2工位任务{tag.RGV.ReadTask2No}\");\r\n    string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n    LogHelper.Info($\"RGV2工位任务{JsonConvert.SerializeObject(task2)}.bit1taskOver_LAST:{tag.RGV.bit2taskOver_LAST}\");\r\n    if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n    {\r\n        if (task2.S_B_STATE != \"完成\")\r\n        {\r\n            if (task2.S_B_STATE == \"取货完成\")\r\n            {\r\n                task2.S_B_STATE = \"完成\";\r\n            }\r\n            else\r\n            {\r\n                task2.S_B_STATE = \"取货完成\";\r\n            }\r\n            LogHelper.Info($\"RGV 2工位任务{task2.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task2.S_B_STATE}\");\r\n            RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n            LogHelper.Info($\"RGV 2工位任务写处理\");\r\n            taskservice.Update(task2);\r\n            LogHelper.Info($\"RGV 2工位任务更新。\");\r\n        }\r\n    }\r\n}\r\nelse if (tag.RGV.ReadTask2No == 0)\r\n{\r\n    LogHelper.Info($\"RGV 2工位没有任务》\");\r\n}\r\n\r\n\r\n///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸\r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"完成\") //1有任务\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 ä¹Ÿæœ‰ä»»åŠ¡{task2.S_TASK_NO}。 å¼€å§‹å·¥ä½1 å¸è´§ã€‚\");\r\n        tag.RGV.workMod = 1;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务。\");\r\n        //1 å¦‚果有同侧取货任务。就取。没有\r\n        var leftSide = new List<string> { \"1023\", \"1020\" };\r\n        var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n        bool creT2 = false;\r\n        if (leftSide.Contains(task1.S_START_LOC))\r\n        {\r\n            leftSide.Remove(task1.S_START_LOC);\r\n            var lsde = leftSide.FirstOrDefault();\r\n            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。\");\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        else if (RightSide.Contains(task1.S_START_LOC))\r\n        {\r\n            RightSide.Remove(task1.S_START_LOC);\r\n            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。\");\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        //else //1 ç›´æŽ¥å¸è´§ã€‚ \r\n        if (!creT2)\r\n        {\r\n            LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ²¡æœ‰åŒä¾§å–货任务 1工位卸货。\");\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 2;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n}\r\nelse\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æ²¡ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        LogHelper.Info($\"查看RGV 1工位没任务,工位2 æœ‰ä»»åŠ¡{task2.S_TASK_NO}。工位2卸货。。\");\r\n        //2 å¸è´§ã€‚\r\n        tag.RGV.workMod = 2;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        LogHelper.Info($\"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚ä¼˜å…ˆ1工位终点1017任务。。\");\r\n        //、下 1017任务 ç»™1号工位。\r\n        var lss = tklist.Take(2).ToList();\r\n        var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n        if (e1017first == null)\r\n        {\r\n            e1017first = lss.FirstOrDefault();\r\n        }\r\n        if (e1017first != null)\r\n        {\r\n            LogHelper.Info($\"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚1工位下任务{e1017first.S_TASK_NO}> ç»ˆç‚¹{e1017first.S_END_LOC}。\");\r\n            try\r\n            {\r\n                tag.RGV.workMod = 1;\r\n                tag.RGV.taskmod = 1;\r\n                uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n                LogHelper.Info($\"{e1017first.S_TASK_NO}> è½¬æ¢åŽä»»åŠ¡å·{tno} å¼€å§‹å†™å…¥ã€‚\");\r\n                tag.RGV.taskno1 = tno;\r\n                LogHelper.Info($\"{e1017first.S_TASK_NO}>开始写入 task1do>>{e1017first.S_START_LOC}。\");\r\n                tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                LogHelper.Error(ex.Message, ex);\r\n                throw ex;\r\n            }\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 125\");\r\n            e1017first.S_B_STATE = \"已推送\";\r\n            taskservice.Update(e1017first);\r\n        }\r\n    }\r\n}\r\n\r\n#endregion",
          "ContentCopy": "ITaskRepository taskservice = new TaskRepository();\r\nvar tklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"AGV\");\r\nif(tklist.Any())\r\nforeach (var tk in tklist.GroupBy(item =>\r\n{\r\n    var ticks = item.T_CREATE.Ticks;\r\n    return new DateTime(ticks - ticks % (10 * TimeSpan.TicksPerMinute));\r\n}).OrderBy(x => x.Key))\r\n{\r\n    var ts = tk.OrderByDescending(x => x.N_PRIORITY).ToList();\r\n    foreach (var t in ts)\r\n    {\r\n        var b = false;\r\n        b = RunTask(t);\r\n\r\n        if (b)\r\n        {\r\n            t.S_B_STATE = \"已推送\";\r\n            taskservice.Update(t);\r\n        }\r\n    }\r\n    break;\r\n}\r\n#region Rgv\r\n\r\nvar task1Isrun = false;\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver != 1)\r\n{\r\n    task1Isrun = true;\r\n    if (tag.RGV.bit1taskOver_LAST == 1)\r\n        RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"0\", out string msg);\r\n}\r\nvar task2Isrun = false;\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver != 1)\r\n{\r\n    task2Isrun = true;\r\n    if (tag.RGV.bit2taskOver_LAST == 1)\r\n        RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"0\", out string msg);\r\n}\r\nif (task1Isrun || task2Isrun)\r\n{\r\n    string mes = \"\";\r\n    if (task1Isrun)\r\n        mes += tag.RGV.ReadTask1No + \"执行中...\";\r\n    if (task2Isrun)\r\n        mes += tag.RGV.ReadTask2No + \"执行中...\";\r\n    LogHelper.Info($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    throw new Exception($\"{mes} ä¸èƒ½ä¸‹å‘新任务。\");\r\n    //continue;\r\n}\r\nvar thisOver = 0;\r\n\r\nTaskEntity task1 = null;\r\nTaskEntity task2 = null;\r\n\r\nLogHelper.Info($\"查看RGV 1工位任务》\");\r\nif (tag.RGV.ReadTask1No > 0 && tag.RGV.bit1taskOver == 1)\r\n{\r\n    var taskno = tag.RGV.ReadTask1No;\r\n    LogHelper.Info($\"RGV 1工位任务{tag.RGV.ReadTask1No}\");\r\n    string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n    task1 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n    LogHelper.Info($\"RGV 1工位任务{JsonConvert.SerializeObject(task1)}.bit1taskOver_LAST:{tag.RGV.bit1taskOver_LAST}\");\r\n    if (tag.RGV.bit1taskOver_LAST == 0 && task1 != null)\r\n    {\r\n        if (task1.S_B_STATE != \"完成\")\r\n        {\r\n            if (task1.S_B_STATE == \"取货完成\")\r\n            {\r\n                task1.S_B_STATE = \"完成\";\r\n            }\r\n            else\r\n            {\r\n                task1.S_B_STATE = \"取货完成\";\r\n            }\r\n            LogHelper.Info($\"RGV 1工位任务{task1.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task1.S_B_STATE}\");\r\n            //tag.RGV.bit1taskOver_LAST = 1;\r\n            RedisHelper.Add($\"RGV.bit1taskOver_LAST\", \"1\", out string msg);\r\n            LogHelper.Info($\"RGV 1工位任务写处理\");\r\n            taskservice.Update(task1);\r\n            LogHelper.Info($\"RGV 1工位任务更新。\");\r\n        }\r\n    }\r\n}\r\nelse if (tag.RGV.ReadTask1No == 0)\r\n{\r\n    LogHelper.Info($\"RGV 1工位没有任务》\");\r\n}\r\n\r\nLogHelper.Info($\"查看RGV 2工位任务》\");\r\nif (tag.RGV.ReadTask2No > 0 && tag.RGV.bit2taskOver == 1)\r\n{\r\n    var taskno = tag.RGV.ReadTask2No;\r\n    LogHelper.Info($\"RGV 2工位任务{tag.RGV.ReadTask2No}\");\r\n    string tno = \"TN\" + (DateTime.Now.ToString(\"yy\")) + ((taskno.ToString()).PadLeft(8, '0'));\r\n    task2 = taskservice.FindEntity(x => x.S_TASK_NO == tno);\r\n\r\n    LogHelper.Info($\"RGV2工位任务{JsonConvert.SerializeObject(task2)}.bit1taskOver_LAST:{tag.RGV.bit2taskOver_LAST}\");\r\n    if (tag.RGV.bit2taskOver_LAST == 0 && task2 != null)\r\n    {\r\n        if (task2.S_B_STATE != \"完成\")\r\n        {\r\n            if (task2.S_B_STATE == \"取货完成\")\r\n            {\r\n                task2.S_B_STATE = \"完成\";\r\n            }\r\n            else\r\n            {\r\n                task2.S_B_STATE = \"取货完成\";\r\n            }\r\n            LogHelper.Info($\"RGV 2工位任务{task2.S_TASK_NO} çŠ¶æ€åˆ‡æ¢ä¸º{task2.S_B_STATE}\");\r\n            RedisHelper.Add($\"RGV.bit2taskOver_LAST\", \"1\", out string msg);\r\n            LogHelper.Info($\"RGV 2工位任务写处理\");\r\n            taskservice.Update(task2);\r\n            LogHelper.Info($\"RGV 2工位任务更新。\");\r\n        }\r\n    }\r\n}\r\nelse if (tag.RGV.ReadTask2No == 0)\r\n{\r\n    LogHelper.Info($\"RGV 2工位没有任务》\");\r\n}\r\n\r\n\r\n///1 æœ‰è´§  å°±2 å–。  1 æ²¡è´§ å°±2 å¸è´§ï¼Œ éƒ½æœ‰è´§  å°±1卸货。 éƒ½æ²¡è´§ å°±1卸\r\ntklist = taskservice.FindList(x => x.S_B_STATE == \"未执行\" && x.S_WORK_MODE == \"RGV\").OrderBy(x => x.T_CREATE).ToList();\r\nif (task1 != null && task1.S_B_STATE != \"完成\") //1有任务\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æœ‰ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 ä¹Ÿæœ‰ä»»åŠ¡{task2.S_TASK_NO}。 å¼€å§‹å·¥ä½1 å¸è´§ã€‚\");\r\n        tag.RGV.workMod = 1;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n        tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1有任务  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务。\");\r\n        //1 å¦‚果有同侧取货任务。就取。没有\r\n        var leftSide = new List<string> { \"1023\", \"1020\" };\r\n        var RightSide = new List<string> { \"1002\", \"1008\", \"1010\", \"1016\" };\r\n        bool creT2 = false;\r\n        if (leftSide.Contains(task1.S_START_LOC))\r\n        {\r\n            leftSide.Remove(task1.S_START_LOC);\r\n            var lsde = leftSide.FirstOrDefault();\r\n            var t2 = tklist.Find(x => x.S_START_LOC == lsde && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。\");\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        else if (RightSide.Contains(task1.S_START_LOC))\r\n        {\r\n            RightSide.Remove(task1.S_START_LOC);\r\n            var t2 = tklist.Find(x => RightSide.Contains(x.S_START_LOC) && x.S_END_LOC != \"1017\");\r\n            if (t2 != null) //同侧取货任务。\r\n            {\r\n                LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ‰¾åŒä¾§å–货任务{t2.S_TASK_NO}。\");\r\n                tag.RGV.workMod = 2;\r\n                tag.RGV.taskmod = 1;\r\n                tag.RGV.taskno2 = Convert.ToUInt32(t2.S_TASK_NO.Substring(4));\r\n                tag.RGV.task2do = Convert.ToUInt16(t2.S_START_LOC);\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                System.Threading.Thread.Sleep(750);\r\n                tag.RGV.taskend = 125;\r\n                t2.S_B_STATE = \"已推送\";\r\n                taskservice.Update(t2);\r\n                creT2 = true;\r\n            }\r\n        }\r\n        //else //1 ç›´æŽ¥å¸è´§ã€‚ \r\n        if (!creT2)\r\n        {\r\n            LogHelper.Info($\"查看RGV1 æœ‰ä»»åŠ¡{task1.S_TASK_NO},工位2 æ²¡ä»»åŠ¡ã€‚ æ²¡æœ‰åŒä¾§å–货任务 1工位卸货。\");\r\n            tag.RGV.workMod = 1;\r\n            tag.RGV.taskmod = 2;\r\n            tag.RGV.taskno1 = Convert.ToUInt32(task1.S_TASK_NO.Substring(4));\r\n            tag.RGV.task1do = Convert.ToUInt16(task1.S_END_LOC);\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n        }\r\n    }\r\n}\r\nelse\r\n{\r\n    if (task2 != null && task2.S_B_STATE != \"完成\")// 1 æ²¡ä»»åŠ¡  2 æœ‰ä»»åŠ¡ã€‚ \r\n    {\r\n        LogHelper.Info($\"查看RGV 1工位没任务,工位2 æœ‰ä»»åŠ¡{task2.S_TASK_NO}。工位2卸货。。\");\r\n        //2 å¸è´§ã€‚\r\n        tag.RGV.workMod = 2;\r\n        tag.RGV.taskmod = 2;\r\n        tag.RGV.taskno2 = Convert.ToUInt32(task2.S_TASK_NO.Substring(4));\r\n        tag.RGV.task2do = Convert.ToUInt16(task2.S_END_LOC);\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n        System.Threading.Thread.Sleep(750);\r\n        tag.RGV.taskend = 125;\r\n    }\r\n    else //1mei ä»»åŠ¡  2 æ²¡ä»»åŠ¡ã€‚\r\n    {\r\n        LogHelper.Info($\"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚ä¼˜å…ˆ1工位终点1017任务。。\");\r\n        //、下 1017任务 ç»™1号工位。\r\n        var lss = tklist.Take(2).ToList();\r\n        var e1017first = lss.Find(x => x.S_END_LOC == \"1017\");\r\n        if (e1017first == null)\r\n        {\r\n            e1017first = lss.FirstOrDefault();\r\n        }\r\n        if (e1017first != null)\r\n        {\r\n            LogHelper.Info($\"查看RGV 1工位没任务,工位2 ä¹Ÿæ²¡ä»»åŠ¡ã€‚1工位下任务{e1017first.S_TASK_NO}> ç»ˆç‚¹{e1017first.S_END_LOC}。\");\r\n            try\r\n            {\r\n                tag.RGV.workMod = 1;\r\n                tag.RGV.taskmod = 1;\r\n                uint tno = Convert.ToUInt32(e1017first.S_TASK_NO.Substring(4));\r\n                LogHelper.Info($\"{e1017first.S_TASK_NO}> è½¬æ¢åŽä»»åŠ¡å·{tno} å¼€å§‹å†™å…¥ã€‚\");\r\n                tag.RGV.taskno1 = tno;\r\n                LogHelper.Info($\"{e1017first.S_TASK_NO}>开始写入 task1do>>{e1017first.S_START_LOC}。\");\r\n                tag.RGV.task1do = Convert.ToUInt16(e1017first.S_START_LOC);\r\n            }\r\n            catch (Exception ex)\r\n            {\r\n                LogHelper.Error(ex.Message, ex);\r\n                throw ex;\r\n            }\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            System.Threading.Thread.Sleep(750);\r\n            tag.RGV.taskend = 125;\r\n            LogHelper.Info($\"{e1017first.S_TASK_NO}> taskend 125\");\r\n            e1017first.S_B_STATE = \"已推送\";\r\n            taskservice.Update(e1017first);\r\n        }\r\n    }\r\n}\r\n\r\n#endregion",
          "ParentID": "20250226153120175",
          "Children": [],
          "Type": "Program",
@@ -673,8 +673,8 @@
              "ID": "20250616094224396",
              "Name": "1020空框下线",
              "Desc": "",
              "Content": "//1020  1023 ç©ºæ¡†ä¸‹çº¿\r\nforeach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n        {\r\n            var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n            var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n            if (R5 == 5 && R5空闲_LAST == 0)\r\n            {\r\n                var b = TaskProcess.CreateTask(\"\", Bssx, item, \"空上RGV\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n                if (b)\r\n                {\r\n                    Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                    break;\r\n                }\r\n            }\r\n            else if (R5 != 5 && R5空闲_LAST == 1)\r\n            {\r\n                Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n            }\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ContentCopy": "//1020  1023 ç©ºæ¡†ä¸‹çº¿\r\nforeach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n        {\r\n            var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n            var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n            if (R5 == 5 && R5空闲_LAST == 0)\r\n            {\r\n                var b = TaskProcess.CreateTask(\"\", Bssx, item, \"空上RGV\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n                if (b)\r\n                {\r\n                    Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                    break;\r\n                }\r\n            }\r\n            else if (R5 != 5 && R5空闲_LAST == 1)\r\n            {\r\n                Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n            }\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "Content": "foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        try\r\n        {\r\n            foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n            {\r\n                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n                var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n                if (R5 == 5 && R5空闲_LAST == 0)\r\n                {\r\n                    var b = TaskProcess.CreateTask(\"\", Bssx, item, \"空上RGV\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n                    if (b)\r\n                    {\r\n                        LogHelper.Debug($\"输送线RGV空托任务 from:{Bssx}>to {item}开始创建成功\");\r\n                        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                        RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg1);\r\n                        //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                        break;\r\n                    }\r\n                }\r\n                else if (R5 != 5 && R5空闲_LAST == 1)\r\n                {\r\n                    RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg);\r\n                    //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n                }\r\n            }\r\n            System.Threading.Thread.Sleep(1000);\r\n        }\r\n        catch (Exception ex)\r\n        {\r\n            LogHelper.Error(ex.Message, ex);\r\n            Console.WriteLine(ex.Message + ex.StackTrace);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ContentCopy": "foreach (var Bssx in new string[] { \"1020\", \"1023\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} ç©ºä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        try\r\n        {\r\n            foreach (var item in new string[] { \"1004\", \"1006\", \"1012\", \"1014\" })\r\n            {\r\n                var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n                var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n                if (R5 == 5 && R5空闲_LAST == 0)\r\n                {\r\n                    var b = TaskProcess.CreateTask(\"\", Bssx, item, \"空上RGV\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n                    if (b)\r\n                    {\r\n                        LogHelper.Debug($\"输送线RGV空托任务 from:{Bssx}>to {item}开始创建成功\");\r\n                        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                        RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg1);\r\n                        //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                        break;\r\n                    }\r\n                }\r\n                else if (R5 != 5 && R5空闲_LAST == 1)\r\n                {\r\n                    RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg);\r\n                    //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n                }\r\n            }\r\n            System.Threading.Thread.Sleep(1000);\r\n        }\r\n        catch (Exception ex)\r\n        {\r\n            LogHelper.Error(ex.Message, ex);\r\n            Console.WriteLine(ex.Message + ex.StackTrace);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ParentID": "20250614173821058",
              "Children": [],
              "Type": "Program",
@@ -751,8 +751,8 @@
              "ID": "20250616094632985",
              "Name": "定子满下线",
              "Desc": "",
              "Content": "//定子满下线  1008  1016   ->  1026\r\nforeach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1026\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1026\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ContentCopy": "//定子满下线  1008  1016   ->  1026\r\nforeach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1026\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1026\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "Content": "foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1026\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1026\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg2);\r\n                //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg2);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ContentCopy": "foreach (var Bssx in new string[] { \"1008\", \"1016\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1026\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1026\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg2);\r\n                //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg2);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n        //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ParentID": "20250614173821058",
              "Children": [],
              "Type": "Program",
@@ -790,8 +790,8 @@
              "ID": "20250616094511322",
              "Name": "转子满下线",
              "Desc": "",
              "Content": "//转子满下线  1002  1010   - RGV2工位不可到 1017 ä¸å¯ä¸‹å‘2工位任务。\r\n foreach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n {\r\n     var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n     var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n     var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n     Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n     if (RtaskState == 3 && RtaskState_LAST == 0)\r\n     {\r\n         var item = \"1017\";\r\n         var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n         var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n         if (R5 == 5 && R5空闲_LAST == 0)\r\n         {\r\n             var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1017\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n             if (b)\r\n             {\r\n                 Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                 Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                 break;\r\n             }\r\n         }\r\n         else if (R5 != 5 && R5空闲_LAST == 1)\r\n         {\r\n             Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n         }\r\n     }\r\n     else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n     {\r\n         Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n     }\r\n     System.Threading.Thread.Sleep(2000);\r\n }",
              "ContentCopy": "//转子满下线  1002  1010   - RGV2工位不可到 1017 ä¸å¯ä¸‹å‘2工位任务。\r\n foreach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n {\r\n     var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n     var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n     var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n     Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n     if (RtaskState == 3 && RtaskState_LAST == 0)\r\n     {\r\n         var item = \"1017\";\r\n         var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n         var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n         if (R5 == 5 && R5空闲_LAST == 0)\r\n         {\r\n             var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1017\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n             if (b)\r\n             {\r\n                 Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                 Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                 break;\r\n             }\r\n         }\r\n         else if (R5 != 5 && R5空闲_LAST == 1)\r\n         {\r\n             Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"0\", $\"S{item}ReadQueue\");\r\n         }\r\n     }\r\n     else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n     {\r\n         Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"0\", $\"S{Bssx}ReadQueue\");\r\n     }\r\n     System.Threading.Thread.Sleep(2000);\r\n }",
              "Content": "//转子满下线  1002  1010   - RGV2工位不可到 1017 ä¸å¯ä¸‹å‘2工位任务。\r\nforeach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1017\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1017\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg1);\r\n                //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg1);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ContentCopy": "//转子满下线  1002  1010   - RGV2工位不可到 1017 ä¸å¯ä¸‹å‘2工位任务。\r\nforeach (var Bssx in new string[] { \"1002\", \"1010\" })\r\n{\r\n    var RtaskState = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState\"), typeof(System.UInt16));\r\n    var RtaskState_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.RtaskState_LAST\"), typeof(System.UInt16));\r\n    var R托盘码 = (System.String)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{Bssx}Read.R托盘码\"), typeof(System.String));\r\n    Console.WriteLine($\"{Bssx} æ»¡ä¸‹æ£€æµ‹ï¼šä»»åŠ¡ç”³è¯·ï¼š{RtaskState}- æ˜¯å¦å·²å¤„理:{RtaskState_LAST}- æ‰˜ç›˜ç ï¼š{R托盘码}\");\r\n    if (RtaskState == 3 && RtaskState_LAST == 0)\r\n    {\r\n        var item = \"1017\";\r\n        var R5 = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲\"), typeof(System.UInt16));\r\n        var R5空闲_LAST = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"S{item}Read.R5空闲_LAST\"), typeof(System.UInt16));\r\n        if (R5 == 5 && R5空闲_LAST == 0)\r\n        {\r\n            var b = TaskProcess.CreateTask(\"\", Bssx, item, \"满转1017\", 5, new List<string> { R托盘码 }, \"RGV\");\r\n            if (b)\r\n            {\r\n                RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"1\", out string msg);\r\n                RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"1\", out string msg1);\r\n                //Conn.默认Redis.SetValue($\"S{Bssx}Read.RtaskState_LAST\", \"1\", $\"S{Bssx}ReadQueue\");\r\n                //Conn.默认Redis.SetValue($\"S{item}Read.R5空闲_LAST\", \"1\", $\"S{item}ReadQueue\");\r\n                break;\r\n            }\r\n        }\r\n        else if (R5 != 5 && R5空闲_LAST == 1)\r\n        {\r\n            RedisHelper.Add($\"S{item}Read.R5空闲_LAST\", \"0\", out string msg1);\r\n        }\r\n    }\r\n    else if (RtaskState != 3 && RtaskState_LAST == 1)\r\n    {\r\n        RedisHelper.Add($\"S{Bssx}Read.RtaskState_LAST\", \"0\", out string msg);\r\n    }\r\n    System.Threading.Thread.Sleep(2000);\r\n}",
              "ParentID": "20250614173821058",
              "Children": [],
              "Type": "Program",
@@ -829,8 +829,8 @@
              "ID": "20250616095605911",
              "Name": "下料位检测",
              "Desc": "",
              "Content": "//下料位检测。  1003  åˆ°ä½æ—¶ å†™ æ ‡è¯†ä¿¡å· å¹¶ ç»™æœºæ¢°æ‰‹ä¿¡å·ã€‚  \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n    var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n    var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n    if (RArrive == 1 && RArriveLast == 0)\r\n    {\r\n        if (ssx == \"1005\")\r\n        {\r\n            tag.FNK1.D2210 = 1;\r\n            tag.SF下料位.RArrive1005_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1005 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1003\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1003_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1003 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1013\")\r\n        {\r\n            tag.FNK2.D2210 = 1;\r\n            tag.SF下料位.RArrive1013_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1013 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n        else if (ssx == \"1011\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1011_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1011 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n    }\r\n    else if (RArrive == 0 && RArriveLast == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", $\"FNK1003051113Queue\");\r\n    }\r\n}",
              "ContentCopy": "//下料位检测。  1003  åˆ°ä½æ—¶ å†™ æ ‡è¯†ä¿¡å· å¹¶ ç»™æœºæ¢°æ‰‹ä¿¡å·ã€‚  \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n    var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n    var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n    if (RArrive == 1 && RArriveLast == 0)\r\n    {\r\n        if (ssx == \"1005\")\r\n        {\r\n            tag.FNK1.D2210 = 1;\r\n            tag.SF下料位.RArrive1005_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1005 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1003\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1003_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1003 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1013\")\r\n        {\r\n            tag.FNK2.D2210 = 1;\r\n            tag.SF下料位.RArrive1013_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1013 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n        else if (ssx == \"1011\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1011_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1011 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n    }\r\n    else if (RArrive == 0 && RArriveLast == 1)\r\n    {\r\n        Conn.默认Redis.SetValue($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", $\"FNK1003051113Queue\");\r\n    }\r\n}",
              "Content": "//下料位检测。  1003  åˆ°ä½æ—¶ å†™ æ ‡è¯†ä¿¡å· å¹¶ ç»™æœºæ¢°æ‰‹ä¿¡å·ã€‚  \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n    var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n    var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n    if (RArrive == 1 && RArriveLast == 0)\r\n    {\r\n        if (ssx == \"1005\")\r\n        {\r\n            tag.FNK1.D2210 = 1;\r\n            tag.SF下料位.RArrive1005_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1005 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1003\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1003_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1003 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1013\")\r\n        {\r\n            tag.FNK2.D2210 = 1;\r\n            tag.SF下料位.RArrive1013_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1013 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n        else if (ssx == \"1011\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1011_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1011 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n    }\r\n    else if (RArrive == 0 && RArriveLast == 1)\r\n    {\r\n                                RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n    }\r\n}",
              "ContentCopy": "//下料位检测。  1003  åˆ°ä½æ—¶ å†™ æ ‡è¯†ä¿¡å· å¹¶ ç»™æœºæ¢°æ‰‹ä¿¡å·ã€‚  \r\nforeach (var ssx in new string[] { \"1003\", \"1005\", \"1011\", \"1013\" })\r\n{\r\n    var RArrive = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}\"), typeof(System.UInt16));\r\n    var RArriveLast = (System.UInt16)System.Convert.ChangeType(Conn.默认Redis.GetValue($\"FNK1003051113.RArrive{ssx}_LAST\"), typeof(System.UInt16));\r\n    if (RArrive == 1 && RArriveLast == 0)\r\n    {\r\n        if (ssx == \"1005\")\r\n        {\r\n            tag.FNK1.D2210 = 1;\r\n            tag.SF下料位.RArrive1005_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1005 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1003\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1003_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1003 = 0;\r\n            tag.SF下料位.WSafe0305 = 0;\r\n        }\r\n        else if (ssx == \"1013\")\r\n        {\r\n            tag.FNK2.D2210 = 1;\r\n            tag.SF下料位.RArrive1013_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1013 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n        else if (ssx == \"1011\")\r\n        {\r\n            tag.FNK2.D2215 = 1;\r\n            tag.SF下料位.RArrive1011_LAST = 1;\r\n\r\n            tag.SF下料位.WRelease1011 = 0;\r\n            tag.SF下料位.WSafe1113 = 0;\r\n        }\r\n    }\r\n    else if (RArrive == 0 && RArriveLast == 1)\r\n    {\r\n                                RedisHelper.Add($\"FNK1003051113.RArrive{ssx}_LAST\", \"0\", out string msg);\r\n    }\r\n}",
              "ParentID": "20250614173821058",
              "Children": [],
              "Type": "Program",
@@ -1410,6 +1410,6 @@
    }
  ],
  "CreationTime": "2025-02-26 15:31:20",
  "LastWriteTime": "2025-06-17 09:30:15",
  "LastWriteTime": "2025-06-18 23:06:58",
  "HasSaved": true
}