From 20f9d82c65c5199afacc493886af60dab1f1423b Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期四, 19 六月 2025 08:23:44 +0800
Subject: [PATCH] 1

---
 2025年6月12日/AuxAllWCS/Scripts/Custom.json  |    6 +-
 2025年6月12日/AuxAllWCS/RunTime/Code/自定义类.cs |   17 ++++++--
 S7/Static/NetAssist.exe                   |    0 
 S7/Static/NetAssist.cfg                   |    2 +
 2025年6月12日/AuxAllWCS/Devices/PlcConfig    |   60 +++++++++++++++---------------
 2025年6月12日/AuxAllWCS/AuxAllWCS.json       |    2 
 2025年6月12日/AuxAllWCS/Net/Conn.json        |    2 
 2025年6月12日/AuxAllWCS/Scripts/Script.json  |   22 +++++-----
 2025年6月12日/AuxAllWCS/Devices/设备通信.json    |    2 
 9 files changed, 61 insertions(+), 52 deletions(-)

diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json"
index 0552aae..a2809ca 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/AuxAllWCS.json"
@@ -9,5 +9,5 @@
   "DevelopVersion": "1.0.2.0",
   "Encode": "Ij/zvOgkqNT5SmHrFKCAVQ==",
   "CreationTime": "0001-01-01 00:00:00",
-  "LastWriteTime": "2025-06-17 09:30:15"
+  "LastWriteTime": "2025-06-18 23:06:58"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
index 5bbc16d..e7d0346 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/PlcConfig"
@@ -1781,7 +1781,7 @@
       "Comm": "MXComponent",
       "IP": "1",
       "RedisQueueName": "p鍙戦偅绉�涓嬬嚎Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -1934,7 +1934,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "A1025鏀捐揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2087,7 +2087,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "A1022鏀捐揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2240,7 +2240,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "A1019鍙栬揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2393,7 +2393,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "A1030鍙栬揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2546,7 +2546,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "SSXReadTempQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2699,7 +2699,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1019ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -2852,7 +2852,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1022ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3005,7 +3005,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1025ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3158,7 +3158,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1017ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3311,7 +3311,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1023ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3464,7 +3464,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1020ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3617,7 +3617,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1002ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3668,7 +3668,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1004ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3719,7 +3719,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1006ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -3872,7 +3872,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1008ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4025,7 +4025,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1010ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4178,7 +4178,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1012ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4229,7 +4229,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1014ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4382,7 +4382,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1016ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4569,7 +4569,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "FNK1003051113Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4654,7 +4654,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "SSX1003051113Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4807,7 +4807,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1026ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -4960,7 +4960,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.160:102[0,1][v1.0]",
       "RedisQueueName": "S1030ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -5028,7 +5028,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.150:102[0,1][v1.0]",
       "RedisQueueName": "S2001ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -5181,7 +5181,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.150:102[0,1][v1.0]",
       "RedisQueueName": "S2030ReadQueue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -5334,7 +5334,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.150:102[0,1][v1.0]",
       "RedisQueueName": "A2001鏀捐揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -5487,7 +5487,7 @@
       "Comm": "S7Net",
       "IP": "10.221.55.150:102[0,1][v1.0]",
       "RedisQueueName": "A2030鍙栬揣浜や簰Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -6439,7 +6439,7 @@
       "Comm": "MXComponent",
       "IP": "2",
       "RedisQueueName": "p鍙戦偅绉�涓嬬嚎Queue",
-      "IsSimulate": true,
+      "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
       "Reserve3": ""
@@ -6769,5 +6769,5 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-06-16 10:45:37"
+  "LastWriteTime": "2025-06-18 08:31:50"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
index 0ec5928..08fed37 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
@@ -2,5 +2,5 @@
   "ProjectSn": "1",
   "DeviceList": [],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-06-16 10:45:40"
+  "LastWriteTime": "2025-06-18 08:31:50"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
index 7aa359c..3449a48 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Net/Conn.json"
@@ -340,5 +340,5 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-06-17 09:00:35"
+  "LastWriteTime": "2025-06-18 08:32:12"
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
index 707ac26..ee13809 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
@@ -535,6 +535,8 @@
 #region    [鑷畾涔夌被][20250325152141671][TaskProcess]
 	internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = "AGV", int cntrCount = 1, int startLayer = 1, int endLayer = 1)
 {
+	
+            LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>");
      var cntrInfo = string.Join(",", cntrs);
  ILocRepository locc = new LocRepository();
  var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);
@@ -575,11 +577,16 @@
      };
      ITaskRepository taskserice = new TaskRepository();
      taskserice.Insert(wmsTask);
-     fromLoc.S_LOCK_STATE = "鍑哄簱閿�;
-     endLoc.S_LOCK_STATE = "鍏ュ簱閿�;
-     locc.Update(fromLoc);
-     locc.Update(endLoc);
-     return true;
+     
+                if (workMode == "AGV")
+                {
+                    fromLoc.S_LOCK_STATE = "鍑哄簱閿�;
+                    endLoc.S_LOCK_STATE = "鍏ュ簱閿�;
+                    locc.Update(fromLoc);
+                    locc.Update(endLoc);
+                }
+                
+                LogHelper.Debug($"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛");
  }
  catch (Exception ex)
  {
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
index 3230d18..47cbbd7 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Custom.json"
@@ -593,8 +593,8 @@
       "Type": "ClassCode",
       "Level": "Item",
       "Statement": "public class TaskProcess",
-      "EditCode": "internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n     var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n            var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n            var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n            string t = \"F01\";\r\n            if (s && !e) t = \"A002\";\r\n            if (!s && e) t = \"A003\";\r\n            if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n     TaskEntity wmsTask = new TaskEntity()\r\n     {\r\n     \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n         S_TASK_NO = GenerateTaskNo(),\r\n         S_START_LAREA = fromLoc.S_AREA_CODE,\r\n         S_END_LAREA = endLoc.S_AREA_CODE,\r\n         S_DEPART_NAME = \"\",\r\n         S_START_LOC = from,\r\n         S_END_LOC = to,\r\n         S_TYPE = taskType,\r\n         S_SRC_NO = no,//\r\n         N_PRIORITY = pri,\r\n         S_WORK_MODE = workMode,\r\n         S_B_STATE = \"鏈墽琛孿",\r\n         S_CNTRS = cntrInfo,\r\n         N_START_LAYER = startLayer,\r\n         N_END_LAYER = endLayer,\r\n         N_CNTR_COUNT = cntrCount,\r\n                    S_INDEX=t,\r\n     };\r\n     ITaskRepository taskserice = new TaskRepository();\r\n     taskserice.Insert(wmsTask);\r\n     fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n     endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n     locc.Update(fromLoc);\r\n     locc.Update(endLoc);\r\n     return true;\r\n }\r\n catch (Exception ex)\r\n {\r\n     LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n     return false;\r\n }\r\n}\r\n\r\n\r\n     internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n        {\r\n            var action = new TaskActEntity()\r\n            {\r\n                S_ID = Guid.NewGuid().ToString(),\r\n                S_STATE = \"缂栬緫\",\r\n                T_CREATE = DateTime.Now,\r\n                T_MODIFY = DateTime.Now,\r\n                S_START_LOC= strloc,\r\n                S_END_LOC= endloc,\r\n                S_ACTION_CODE = state,\r\n                S_TASK_NO = no,\r\n                S_EQ_NO = forkliftNo,\r\n                S_EQ_TYPE = \"agv\",\r\n                S_DATA = extData,\r\n                N_CREATEMETHOD = 0\r\n            };\r\n            TaskActRepository taskserice = new TaskActRepository();\r\n            taskserice.Insert(action);\r\n        }\r\n\r\n        public static System.String GenerateTaskNo()\r\n        {\r\n            var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n            var date = DateTime.Now.ToString(\"yyMMdd\");\r\n            return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n        }",
-      "Code": "public class TaskProcess\r\n{internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n     var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n            var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n            var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n            string t = \"F01\";\r\n            if (s && !e) t = \"A002\";\r\n            if (!s && e) t = \"A003\";\r\n            if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n     TaskEntity wmsTask = new TaskEntity()\r\n     {\r\n     \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n         S_TASK_NO = GenerateTaskNo(),\r\n         S_START_LAREA = fromLoc.S_AREA_CODE,\r\n         S_END_LAREA = endLoc.S_AREA_CODE,\r\n         S_DEPART_NAME = \"\",\r\n         S_START_LOC = from,\r\n         S_END_LOC = to,\r\n         S_TYPE = taskType,\r\n         S_SRC_NO = no,//\r\n         N_PRIORITY = pri,\r\n         S_WORK_MODE = workMode,\r\n         S_B_STATE = \"鏈墽琛孿",\r\n         S_CNTRS = cntrInfo,\r\n         N_START_LAYER = startLayer,\r\n         N_END_LAYER = endLayer,\r\n         N_CNTR_COUNT = cntrCount,\r\n                    S_INDEX=t,\r\n     };\r\n     ITaskRepository taskserice = new TaskRepository();\r\n     taskserice.Insert(wmsTask);\r\n     fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n     endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n     locc.Update(fromLoc);\r\n     locc.Update(endLoc);\r\n     return true;\r\n }\r\n catch (Exception ex)\r\n {\r\n     LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n     return false;\r\n }\r\n}\r\n\r\n\r\n     internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n        {\r\n            var action = new TaskActEntity()\r\n            {\r\n                S_ID = Guid.NewGuid().ToString(),\r\n                S_STATE = \"缂栬緫\",\r\n                T_CREATE = DateTime.Now,\r\n                T_MODIFY = DateTime.Now,\r\n                S_START_LOC= strloc,\r\n                S_END_LOC= endloc,\r\n                S_ACTION_CODE = state,\r\n                S_TASK_NO = no,\r\n                S_EQ_NO = forkliftNo,\r\n                S_EQ_TYPE = \"agv\",\r\n                S_DATA = extData,\r\n                N_CREATEMETHOD = 0\r\n            };\r\n            TaskActRepository taskserice = new TaskActRepository();\r\n            taskserice.Insert(action);\r\n        }\r\n\r\n        public static System.String GenerateTaskNo()\r\n        {\r\n            var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n            var date = DateTime.Now.ToString(\"yyMMdd\");\r\n            return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n        }\r\n}",
+      "EditCode": "internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n            LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n     var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n            var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n            var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n            string t = \"F01\";\r\n            if (s && !e) t = \"A002\";\r\n            if (!s && e) t = \"A003\";\r\n            if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n     TaskEntity wmsTask = new TaskEntity()\r\n     {\r\n     \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n         S_TASK_NO = GenerateTaskNo(),\r\n         S_START_LAREA = fromLoc.S_AREA_CODE,\r\n         S_END_LAREA = endLoc.S_AREA_CODE,\r\n         S_DEPART_NAME = \"\",\r\n         S_START_LOC = from,\r\n         S_END_LOC = to,\r\n         S_TYPE = taskType,\r\n         S_SRC_NO = no,//\r\n         N_PRIORITY = pri,\r\n         S_WORK_MODE = workMode,\r\n         S_B_STATE = \"鏈墽琛孿",\r\n         S_CNTRS = cntrInfo,\r\n         N_START_LAYER = startLayer,\r\n         N_END_LAYER = endLayer,\r\n         N_CNTR_COUNT = cntrCount,\r\n                    S_INDEX=t,\r\n     };\r\n     ITaskRepository taskserice = new TaskRepository();\r\n     taskserice.Insert(wmsTask);\r\n     \r\n                if (workMode == \"AGV\")\r\n                {\r\n                    fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n                    endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n                    locc.Update(fromLoc);\r\n                    locc.Update(endLoc);\r\n                }\r\n                \r\n                LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n }\r\n catch (Exception ex)\r\n {\r\n     LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n     return false;\r\n }\r\n}\r\n\r\n\r\n     internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n        {\r\n            var action = new TaskActEntity()\r\n            {\r\n                S_ID = Guid.NewGuid().ToString(),\r\n                S_STATE = \"缂栬緫\",\r\n                T_CREATE = DateTime.Now,\r\n                T_MODIFY = DateTime.Now,\r\n                S_START_LOC= strloc,\r\n                S_END_LOC= endloc,\r\n                S_ACTION_CODE = state,\r\n                S_TASK_NO = no,\r\n                S_EQ_NO = forkliftNo,\r\n                S_EQ_TYPE = \"agv\",\r\n                S_DATA = extData,\r\n                N_CREATEMETHOD = 0\r\n            };\r\n            TaskActRepository taskserice = new TaskActRepository();\r\n            taskserice.Insert(action);\r\n        }\r\n\r\n        public static System.String GenerateTaskNo()\r\n        {\r\n            var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n            var date = DateTime.Now.ToString(\"yyMMdd\");\r\n            return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n        }",
+      "Code": "public class TaskProcess\r\n{internal static bool CreateTask(string no, string from, string to, string taskType, int pri, List<string> cntrs, string workMode = \"AGV\", int cntrCount = 1, int startLayer = 1, int endLayer = 1)\r\n{\r\n\t\r\n            LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to}寮�鍒涘缓>\");\r\n     var cntrInfo = string.Join(\",\", cntrs);\r\n ILocRepository locc = new LocRepository();\r\n var fromLoc = locc.FindEntity(x => x.S_LOC_CODE == from);\r\n var endLoc = locc.FindEntity(x => x.S_LOC_CODE == to);\r\n \r\n            var s = Settings.deviceInfos.Find(x => x.location.Contains(from)) != null;\r\n            var e = Settings.deviceInfos.Find(x => x.location.Contains(to)) != null;\r\n            string t = \"F01\";\r\n            if (s && !e) t = \"A002\";\r\n            if (!s && e) t = \"A003\";\r\n            if (s && e) t = \"A004\";\r\n try\r\n {\r\n\r\n     TaskEntity wmsTask = new TaskEntity()\r\n     {\r\n     \tS_ID = Guid.NewGuid().ToString(),\r\n\t\tS_STATE = \"缂栬緫\",\r\n\t\tT_CREATE = DateTime.Now,\r\n\t\tT_MODIFY = DateTime.Now,\r\n\r\n         S_TASK_NO = GenerateTaskNo(),\r\n         S_START_LAREA = fromLoc.S_AREA_CODE,\r\n         S_END_LAREA = endLoc.S_AREA_CODE,\r\n         S_DEPART_NAME = \"\",\r\n         S_START_LOC = from,\r\n         S_END_LOC = to,\r\n         S_TYPE = taskType,\r\n         S_SRC_NO = no,//\r\n         N_PRIORITY = pri,\r\n         S_WORK_MODE = workMode,\r\n         S_B_STATE = \"鏈墽琛孿",\r\n         S_CNTRS = cntrInfo,\r\n         N_START_LAYER = startLayer,\r\n         N_END_LAYER = endLayer,\r\n         N_CNTR_COUNT = cntrCount,\r\n                    S_INDEX=t,\r\n     };\r\n     ITaskRepository taskserice = new TaskRepository();\r\n     taskserice.Insert(wmsTask);\r\n     \r\n                if (workMode == \"AGV\")\r\n                {\r\n                    fromLoc.S_LOCK_STATE = \"鍑哄簱閿乗";\r\n                    endLoc.S_LOCK_STATE = \"鍏ュ簱閿乗";\r\n                    locc.Update(fromLoc);\r\n                    locc.Update(endLoc);\r\n                }\r\n                \r\n                LogHelper.Debug($\"杈撻�绾縍GV绌烘墭浠诲姟 from:{from}>to {to} 鍒涘缓{wmsTask.S_TASK_NO}鎴愬姛\");\r\n }\r\n catch (Exception ex)\r\n {\r\n     LogHelper.Error(\"CreateTask\" + ex.Message, ex);\r\n     return false;\r\n }\r\n}\r\n\r\n\r\n     internal static void AddActionRecord(string no, string state, string forkliftNo, string extData,string strloc,string endloc)\r\n        {\r\n            var action = new TaskActEntity()\r\n            {\r\n                S_ID = Guid.NewGuid().ToString(),\r\n                S_STATE = \"缂栬緫\",\r\n                T_CREATE = DateTime.Now,\r\n                T_MODIFY = DateTime.Now,\r\n                S_START_LOC= strloc,\r\n                S_END_LOC= endloc,\r\n                S_ACTION_CODE = state,\r\n                S_TASK_NO = no,\r\n                S_EQ_NO = forkliftNo,\r\n                S_EQ_TYPE = \"agv\",\r\n                S_DATA = extData,\r\n                N_CREATEMETHOD = 0\r\n            };\r\n            TaskActRepository taskserice = new TaskActRepository();\r\n            taskserice.Insert(action);\r\n        }\r\n\r\n        public static System.String GenerateTaskNo()\r\n        {\r\n            var id = SYSHelper.GetSerialNumber(\"浠诲姟鍙穃", \"TN\", \"1\");\r\n            var date = DateTime.Now.ToString(\"yyMMdd\");\r\n            return $\"TN{date}{id.ToString().PadLeft(4, '0')}\";\r\n        }\r\n}",
       "CusMethod": {
         "Name": "",
         "Params": [],
@@ -671,6 +671,6 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-06-17 09:30:15",
+  "LastWriteTime": "2025-06-18 23:06:58",
   "HasSaved": true
 }
\ No newline at end of file
diff --git "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json" "b/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json"
index 66547f9..11efd81 100644
--- "a/2025\345\271\2646\346\234\21012\346\227\245/AuxAllWCS/Scripts/Script.json"
+++ "b/2025\345\271\2646\346\234\21012\346\227\245/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 鏈夎揣  灏� 鍙栥�  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浠诲姟 缁�鍙峰伐浣嶃�\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 鏈夎揣  灏� 鍙栥�  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浠诲姟 缁�鍙峰伐浣嶃�\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 鏈夎揣  灏� 鍙栥�  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}銆傚伐浣�鍗歌揣銆傘�\");\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 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n        //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\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 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔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 鏈夎揣  灏� 鍙栥�  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}銆傚伐浣�鍗歌揣銆傘�\");\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 涔熸病浠诲姟銆備紭鍏�宸ヤ綅缁堢偣1017浠诲姟銆傘�\");\r\n        //銆佷笅 1017浠诲姟 缁�鍙峰伐浣嶃�\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 涔熸病浠诲姟銆�宸ヤ綅涓嬩换鍔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($\"杈撻�绾縍GV绌烘墭浠诲姟 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($\"杈撻�绾縍GV绌烘墭浠诲姟 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
 }
\ No newline at end of file
diff --git a/S7/Static/NetAssist.cfg b/S7/Static/NetAssist.cfg
new file mode 100644
index 0000000..d0b4bdb
--- /dev/null
+++ b/S7/Static/NetAssist.cfg
@@ -0,0 +1,2 @@
+[OPTIONS]
+upgrade=I3ZlcnNpb249NTAwMTQKI3VybD1odHRwOi8vZnJlZS5jbXNvZnQuY24vZG93bmxvYWQvY21zb2Z0L2Fzc2lzdGFudC9uZXRhc3Npc3Q1LjAuMTQuemlwCiNtZXNzYWdlPXs1LjAuMTQNCiAoMSkg1Pa800NTVrW8yOsvtbyz9ii/7L3d1rjB7i/F+sG/t6LLzS/X1Lavu9i4tCkNCiAoMikgzsS8/rSryuTU9rzTt9aw/L3hyvi3+9Ghz+4NCiAoMykguaS+38PmsOXU9rzTR1NNtffK1LmmxNwNCiAoNCkguaS+38PmsOXU9rzT19a3+7HgwuvXqru7uabE3A0KICg1KSDG5Mv80N64tNPFu68gDQo1LjAuMTMNCiAoMSkg08W7r7bPzfi71ri0uvO1xM2o0MXW0LbP1tjBrLmmxNwNCiAoMikg0N64tFVEUNfpsqXU2rbgzfi/qLu3vrPW0MK308nS7LOjzsrM4g0KICgzKSDF+sG/t6LLzS+/7L3dt6LLzdT2vNPOxLz+t6LLzdGhz+4NCiAoNCkgwPrKt7zHwrwvxfrBv7eiy80vv+y93beiy83U9rzTudi8/NfWy9HL9w0KICg1KSDF+sG/t6LLzdans9a009a4tqjP7r+qyrwNCiAoNikg08W7r73Fsb7S/cfmL9fUtq/TprTw1Pa801VURjix4MLr1qez1g0KNS4wLjEwDQogKDEpINDC1PZNUVRUv827p7bL0K3S6dans9YNCiAoMikg0MLU9lRDUL/Nu6e2y7bPv6rW2MGsyejWw8/uDQogKDMpINDC1PbF+sG/t6LLzdGtu7e0zsr9yejWw8/uDQogKDQpINDC1PbK/b7dzbyx7dfUtq+xo7Tmtb1FWENFTLHtuPENCjUuMC4xDQogKDEpINT2vNPX1Lav06a08C/X1Lao0uW9xbG+DQogKDIpINT2vNNKVDgwONCt0unW1bbLxKPE4g0KICgzKSDU9rzTTW9kYnVz0K3S6dbVtsu198rUfSM=
diff --git a/S7/Static/NetAssist.exe b/S7/Static/NetAssist.exe
new file mode 100644
index 0000000..163f4cb
--- /dev/null
+++ b/S7/Static/NetAssist.exe
Binary files differ

--
Gitblit v1.9.1