From c6f52253a482e866640dd075fd3dcbb56687f4f2 Mon Sep 17 00:00:00 2001
From: czw <selecti@yeah.net>
Date: 星期六, 31 五月 2025 12:38:17 +0800
Subject: [PATCH] New

---
 S7/Dlls/GZ.DB.Map.OIDATABASE.dll          |    0 
 S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe |    0 
 S7/Scripts/Custom.json                    |   39 +
 S7/Net/Conn.json                          |   14 
 S7/Devices/PlcConfig                      |  424 ++++++++++++++++++++---
 .gitignore                                |    2 
 S7/RunTime/Code/变量数据库.cs                  |  144 ++++++++
 S7/Robot_S7_WCS.pdf                       |    0 
 S7/Scripts/Script.json                    |   28 
 S7/RunTime/Code/自定义类.cs                   |   29 +
 S7/S7.json                                |    4 
 S7/MX Component 4.16S.zip                 |    0 
 S7/Static/config.json                     |    2 
 S7/Dlls/GZ.DB.Repository.OIDATABASE.dll   |    0 
 S7/Dlls/GZ.DB.Entity.OIDATABASE.dll       |    0 
 S7/Devices/设备通信.json                      |    2 
 S7/Variable/变量数据库.json                    |  319 +++++++++++++----
 S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll  |    0 
 S7/ndp461-devpack-kb3105179-enu.exe       |    0 
 S7/RunTime/Code/设备通信.cs                   |   34 +
 S7/Dlls/GZ.DB.App.OIDATABASE.dll          |    0 
 21 files changed, 871 insertions(+), 170 deletions(-)

diff --git a/.gitignore b/.gitignore
index 23ea317..f6cdeea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -185,3 +185,5 @@
 # Microsoft Fakes
 FakesAssemblies/
 /S7/History
+/S7/MX Component 4.16S
+/S7/redis-desktop-manager-2019.5.20.0.exe
diff --git a/S7/Devices/PlcConfig b/S7/Devices/PlcConfig
index 88dba4d..56b7903 100644
--- a/S7/Devices/PlcConfig
+++ b/S7/Devices/PlcConfig
@@ -1651,7 +1651,7 @@
       "Brand": "Siemens",
       "Model": "S7_1500",
       "Comm": "S7Net",
-      "IP": "10.221.55.110[0,1][v1.0]",
+      "IP": "10.221.55.110:102[0,1][v1.0]",
       "RedisQueueName": "缁村笇灏旀姄鑷�Queue",
       "IsSimulate": false,
       "Reserve1": "",
@@ -2059,7 +2059,7 @@
       "Brand": "Siemens",
       "Model": "S7_1500",
       "Comm": "S7Net",
-      "IP": "10.221.55.120[0,1][v1.0]",
+      "IP": "10.221.55.120:102[0,1][v1.0]",
       "RedisQueueName": "缁村笇灏旀姄鑷�Queue",
       "IsSimulate": false,
       "Reserve1": "",
@@ -2079,7 +2079,7 @@
           "Address": "M0",
           "AddrType": "",
           "Length": 1,
-          "Desc": "宸︿晶鍏夋爡杩涘叆鐢宠",
+          "Desc": "宸︿晶灞忚斀鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2096,7 +2096,7 @@
           "Address": "M1",
           "AddrType": "",
           "Length": 1,
-          "Desc": "鍙充晶鍏夋爡杩涘叆鐢宠",
+          "Desc": "鍙充晶灞忚斀鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2113,7 +2113,7 @@
           "Address": "M2",
           "AddrType": "",
           "Length": 1,
-          "Desc": "agv 鍒拌揪宸﹁竟鏂欏彴",
+          "Desc": "宸︿晶寮�惎鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2130,7 +2130,7 @@
           "Address": "M3",
           "AddrType": "",
           "Length": 1,
-          "Desc": "agv 鍒拌揪鍙宠竟鏂欏彴",
+          "Desc": "鍙充晶寮�惎鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2147,7 +2147,7 @@
           "Address": "M4",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸﹁竟鎵樼洏宸叉斁濂�,
+          "Desc": "宸︿晶鎵樼洏鍒颁綅",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2164,7 +2164,7 @@
           "Address": "M5",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV鍙宠竟鎵樼洏宸叉斁濂�,
+          "Desc": "鍙充晶鎵樼洏鍒颁綅",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2181,7 +2181,7 @@
           "Address": "M6",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸茬寮�乏杈规枡鍙�,
+          "Desc": "agv 涓诲姩鎶ヨ",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2198,7 +2198,7 @@
           "Address": "M7",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸茬寮�彸杈规枡鍙�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2215,7 +2215,7 @@
           "Address": "M32",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M0鍏佽",
+          "Desc": "宸︿晶鍏夋爡鐘舵�",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2232,7 +2232,7 @@
           "Address": "M33",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M1",
+          "Desc": "鍙充晶鍏夋爡鐘舵�",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2249,7 +2249,7 @@
           "Address": "M34",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M2",
+          "Desc": "宸︿晶鍏佽鍙栫┖",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2266,7 +2266,7 @@
           "Address": "M35",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M3",
+          "Desc": "鍙充晶鍏佽鍙栫┖",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2283,7 +2283,7 @@
           "Address": "M36",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M4",
+          "Desc": "鏈哄櫒浜烘殏鍋滅姸鎬�,
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2300,7 +2300,7 @@
           "Address": "M37",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M5",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2317,7 +2317,7 @@
           "Address": "M38",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M6",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2334,7 +2334,7 @@
           "Address": "M39",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M7",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2351,7 +2351,7 @@
           "Address": "M40",
           "AddrType": "",
           "Length": 1,
-          "Desc": "宸﹁竟鎵樼洏鎷嗗灈瀹屾垚锛屽厑璁窤GV宸﹁竟鍙栨墭鐩�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2368,7 +2368,7 @@
           "Address": "M41",
           "AddrType": "",
           "Length": 1,
-          "Desc": "鍙宠竟鎵樼洏鎷嗗灈瀹屾垚锛屽厑璁窤GV鍙宠竟鍙栨墭鐩�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2382,7 +2382,7 @@
       "Brand": "Melsec",
       "Model": "Q10UDEH",
       "Comm": "MXComponent",
-      "IP": "127.0.0.1",
+      "IP": "1",
       "RedisQueueName": "鎹风灛鎶撹噦1Queue",
       "IsSimulate": false,
       "Reserve1": "",
@@ -2392,7 +2392,7 @@
     {
       "ParamList": [
         {
-          "Id": "20250411091128147",
+          "Id": "20250417142024140",
           "Order": 1,
           "Name": "M0",
           "FullName": "鎹风灛鎶撹噦2.M0",
@@ -2402,14 +2402,14 @@
           "Address": "M0",
           "AddrType": "",
           "Length": 1,
-          "Desc": "宸︿晶鍏夋爡杩涘叆鐢宠",
+          "Desc": "宸︿晶灞忚斀鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128163",
+          "Id": "20250417142024155",
           "Order": 2,
           "Name": "M1",
           "FullName": "鎹风灛鎶撹噦2.M1",
@@ -2419,14 +2419,14 @@
           "Address": "M1",
           "AddrType": "",
           "Length": 1,
-          "Desc": "鍙充晶鍏夋爡杩涘叆鐢宠",
+          "Desc": "鍙充晶灞忚斀鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128179",
+          "Id": "20250417142024170",
           "Order": 3,
           "Name": "M2",
           "FullName": "鎹风灛鎶撹噦2.M2",
@@ -2436,14 +2436,14 @@
           "Address": "M2",
           "AddrType": "",
           "Length": 1,
-          "Desc": "agv 鍒拌揪宸﹁竟鏂欏彴",
+          "Desc": "宸︿晶寮�惎鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128194",
+          "Id": "20250417142024186",
           "Order": 4,
           "Name": "M3",
           "FullName": "鎹风灛鎶撹噦2.M3",
@@ -2453,14 +2453,14 @@
           "Address": "M3",
           "AddrType": "",
           "Length": 1,
-          "Desc": "agv 鍒拌揪鍙宠竟鏂欏彴",
+          "Desc": "鍙充晶寮�惎鍏夋爡",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128209",
+          "Id": "20250417142024201",
           "Order": 5,
           "Name": "M4",
           "FullName": "鎹风灛鎶撹噦2.M4",
@@ -2470,14 +2470,14 @@
           "Address": "M4",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸﹁竟鎵樼洏宸叉斁濂�,
+          "Desc": "宸︿晶鎵樼洏鍒颁綅",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128225",
+          "Id": "20250417142024217",
           "Order": 6,
           "Name": "M5",
           "FullName": "鎹风灛鎶撹噦2.M5",
@@ -2487,14 +2487,14 @@
           "Address": "M5",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV鍙宠竟鎵樼洏宸叉斁濂�,
+          "Desc": "鍙充晶鎵樼洏鍒颁綅",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128240",
+          "Id": "20250417142024232",
           "Order": 7,
           "Name": "M6",
           "FullName": "鎹风灛鎶撹噦2.M6",
@@ -2504,14 +2504,14 @@
           "Address": "M6",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸茬寮�乏杈规枡鍙�,
+          "Desc": "agv 涓诲姩鎶ヨ",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128255",
+          "Id": "20250417142024248",
           "Order": 8,
           "Name": "M7",
           "FullName": "鎹风灛鎶撹噦2.M7",
@@ -2521,14 +2521,14 @@
           "Address": "M7",
           "AddrType": "",
           "Length": 1,
-          "Desc": "AGV宸茬寮�彸杈规枡鍙�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128270",
+          "Id": "20250417142024263",
           "Order": 9,
           "Name": "M32",
           "FullName": "鎹风灛鎶撹噦2.M32",
@@ -2538,14 +2538,14 @@
           "Address": "M32",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M0鍏佽",
+          "Desc": "宸︿晶鍏夋爡鐘舵�",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128286",
+          "Id": "20250417142024279",
           "Order": 10,
           "Name": "M33",
           "FullName": "鎹风灛鎶撹噦2.M33",
@@ -2555,14 +2555,14 @@
           "Address": "M33",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M1",
+          "Desc": "鍙充晶鍏夋爡鐘舵�",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128301",
+          "Id": "20250417142024295",
           "Order": 11,
           "Name": "M34",
           "FullName": "鎹风灛鎶撹噦2.M34",
@@ -2572,14 +2572,14 @@
           "Address": "M34",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M2",
+          "Desc": "宸︿晶鍏佽鍙栫┖",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128317",
+          "Id": "20250417142024311",
           "Order": 12,
           "Name": "M35",
           "FullName": "鎹风灛鎶撹噦2.M35",
@@ -2589,14 +2589,14 @@
           "Address": "M35",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M3",
+          "Desc": "鍙充晶鍏佽鍙栫┖",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128332",
+          "Id": "20250417142024326",
           "Order": 13,
           "Name": "M36",
           "FullName": "鎹风灛鎶撹噦2.M36",
@@ -2606,14 +2606,14 @@
           "Address": "M36",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M4",
+          "Desc": "鏈哄櫒浜烘殏鍋滅姸鎬�,
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128348",
+          "Id": "20250417142024341",
           "Order": 14,
           "Name": "M37",
           "FullName": "鎹风灛鎶撹噦2.M37",
@@ -2623,14 +2623,14 @@
           "Address": "M37",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M5",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128364",
+          "Id": "20250417142024357",
           "Order": 15,
           "Name": "M38",
           "FullName": "鎹风灛鎶撹噦2.M38",
@@ -2640,14 +2640,14 @@
           "Address": "M38",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M6",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128379",
+          "Id": "20250417142024372",
           "Order": 16,
           "Name": "M39",
           "FullName": "鎹风灛鎶撹噦2.M39",
@@ -2657,14 +2657,14 @@
           "Address": "M39",
           "AddrType": "",
           "Length": 1,
-          "Desc": "M7",
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128394",
+          "Id": "20250417142024388",
           "Order": 17,
           "Name": "M40",
           "FullName": "鎹风灛鎶撹噦2.M40",
@@ -2674,14 +2674,14 @@
           "Address": "M40",
           "AddrType": "",
           "Length": 1,
-          "Desc": "宸﹁竟鎵樼洏鎷嗗灈瀹屾垚锛屽厑璁窤GV宸﹁竟鍙栨墭鐩�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
           "Reserve3": ""
         },
         {
-          "Id": "20250411091128410",
+          "Id": "20250417142024403",
           "Order": 18,
           "Name": "M41",
           "FullName": "鎹风灛鎶撹噦2.M41",
@@ -2691,7 +2691,7 @@
           "Address": "M41",
           "AddrType": "",
           "Length": 1,
-          "Desc": "鍙宠竟鎵樼洏鎷嗗灈瀹屾垚锛屽厑璁窤GV鍙宠竟鍙栨墭鐩�,
+          "Desc": "",
           "Trigger": false,
           "Reserve1": "",
           "Reserve2": "",
@@ -2705,8 +2705,314 @@
       "Brand": "Melsec",
       "Model": "Q10UDEH",
       "Comm": "MXComponent",
-      "IP": "127.0.0.1",
+      "IP": "2",
       "RedisQueueName": "鎹风灛鎶撹噦2Queue",
+      "IsSimulate": false,
+      "Reserve1": "",
+      "Reserve2": "",
+      "Reserve3": ""
+    },
+    {
+      "ParamList": [
+        {
+          "Id": "20250417170750831",
+          "Order": 1,
+          "Name": "Param1",
+          "FullName": "PLC3.Param1",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M0",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170818158",
+          "Order": 2,
+          "Name": "Param2",
+          "FullName": "PLC3.Param2",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M1",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170818315",
+          "Order": 3,
+          "Name": "Param3",
+          "FullName": "PLC3.Param3",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M2",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170818484",
+          "Order": 4,
+          "Name": "Param4",
+          "FullName": "PLC3.Param4",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M3",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170832254",
+          "Order": 5,
+          "Name": "Param5",
+          "FullName": "PLC3.Param5",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M32",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170832400",
+          "Order": 6,
+          "Name": "Param6",
+          "FullName": "PLC3.Param6",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M33",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417170832568",
+          "Order": 7,
+          "Name": "Param7",
+          "FullName": "PLC3.Param7",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M36",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417171011198",
+          "Order": 8,
+          "Name": "Param8",
+          "FullName": "PLC3.Param8",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "0x0001",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250417171011393",
+          "Order": 9,
+          "Name": "Param9",
+          "FullName": "PLC3.Param9",
+          "DataType": "System.Boolean",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "1",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418103545732",
+          "Order": 10,
+          "Name": "Param10",
+          "FullName": "PLC3.Param10",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "1",
+          "AddrType": "04",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        }
+      ],
+      "GroupList": [],
+      "Id": "0000003",
+      "Name": "PLC3",
+      "Desc": "",
+      "Brand": "AB",
+      "Model": "AB",
+      "Comm": "MODBUSTCP",
+      "IP": "10.221.50.200:3000",
+      "RedisQueueName": "PLC3Queue",
+      "IsSimulate": false,
+      "Reserve1": "",
+      "Reserve2": "",
+      "Reserve3": ""
+    },
+    {
+      "ParamList": [
+        {
+          "Id": "20250418104411735",
+          "Order": 1,
+          "Name": "Param1",
+          "FullName": "PLC4.Param1",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M0",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418104411883",
+          "Order": 2,
+          "Name": "Param2",
+          "FullName": "PLC4.Param2",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "M1",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418104412027",
+          "Order": 3,
+          "Name": "Param3",
+          "FullName": "PLC4.Param3",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "0x0001",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418104412140",
+          "Order": 4,
+          "Name": "Param4",
+          "FullName": "PLC4.Param4",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "1",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418104412252",
+          "Order": 5,
+          "Name": "Param5",
+          "FullName": "PLC4.Param5",
+          "DataType": "System.UInt16",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "0x1",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        },
+        {
+          "Id": "20250418104412341",
+          "Order": 6,
+          "Name": "Param6",
+          "FullName": "PLC4.Param6",
+          "DataType": "System.Boolean",
+          "DataValue": "",
+          "SetValue": "",
+          "Address": "0x0001",
+          "AddrType": "",
+          "Length": 1,
+          "Desc": "",
+          "Trigger": false,
+          "Reserve1": "",
+          "Reserve2": "",
+          "Reserve3": ""
+        }
+      ],
+      "GroupList": [],
+      "Id": "0000004",
+      "Name": "PLC4",
+      "Desc": "",
+      "Brand": "Siemens",
+      "Model": "S7_1500",
+      "Comm": "MODBUSTCP",
+      "IP": "10.221.50.200:3000",
+      "RedisQueueName": "PLC4Queue",
       "IsSimulate": false,
       "Reserve1": "",
       "Reserve2": "",
@@ -2714,5 +3020,5 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-04-11 09:11:42"
+  "LastWriteTime": "2025-04-18 10:45:48"
 }
\ No newline at end of file
diff --git "a/S7/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json" "b/S7/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
index 86b7555..379c5f7 100644
--- "a/S7/Devices/\350\256\276\345\244\207\351\200\232\344\277\241.json"
+++ "b/S7/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-04-11 09:11:42"
+  "LastWriteTime": "2025-04-18 10:45:51"
 }
\ No newline at end of file
diff --git a/S7/Dlls/GZ.DB.App.OIDATABASE.dll b/S7/Dlls/GZ.DB.App.OIDATABASE.dll
index 5837dba..e5be98b 100644
--- a/S7/Dlls/GZ.DB.App.OIDATABASE.dll
+++ b/S7/Dlls/GZ.DB.App.OIDATABASE.dll
Binary files differ
diff --git a/S7/Dlls/GZ.DB.Entity.OIDATABASE.dll b/S7/Dlls/GZ.DB.Entity.OIDATABASE.dll
index 7a753b6..954a271 100644
--- a/S7/Dlls/GZ.DB.Entity.OIDATABASE.dll
+++ b/S7/Dlls/GZ.DB.Entity.OIDATABASE.dll
Binary files differ
diff --git a/S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll b/S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll
index 798a86d..df54db9 100644
--- a/S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll
+++ b/S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll
Binary files differ
diff --git a/S7/Dlls/GZ.DB.Map.OIDATABASE.dll b/S7/Dlls/GZ.DB.Map.OIDATABASE.dll
index 5b0f926..b55e516 100644
--- a/S7/Dlls/GZ.DB.Map.OIDATABASE.dll
+++ b/S7/Dlls/GZ.DB.Map.OIDATABASE.dll
Binary files differ
diff --git a/S7/Dlls/GZ.DB.Repository.OIDATABASE.dll b/S7/Dlls/GZ.DB.Repository.OIDATABASE.dll
index a2e9074..dbff4aa 100644
--- a/S7/Dlls/GZ.DB.Repository.OIDATABASE.dll
+++ b/S7/Dlls/GZ.DB.Repository.OIDATABASE.dll
Binary files differ
diff --git a/S7/MX Component 4.16S.zip b/S7/MX Component 4.16S.zip
new file mode 100644
index 0000000..fd75591
--- /dev/null
+++ b/S7/MX Component 4.16S.zip
Binary files differ
diff --git a/S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe b/S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe
new file mode 100644
index 0000000..cfa946e
--- /dev/null
+++ b/S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe
Binary files differ
diff --git a/S7/Net/Conn.json b/S7/Net/Conn.json
index 6a14569..6737914 100644
--- a/S7/Net/Conn.json
+++ b/S7/Net/Conn.json
@@ -6,10 +6,10 @@
       "ID": "20250324101838895",
       "Name": "sql",
       "Desc": "",
-      "DataSource": "DESKTOP-DSS9VVU",
+      "DataSource": "10.221.55.116",
       "Database": "OIDATABASE",
       "UserID": "sa",
-      "Password": "123456",
+      "Password": "aux!123",
       "Timeout": 3,
       "IsDefault": true,
       "Type": "SqlServer"
@@ -180,10 +180,10 @@
       "Code": "cddc17eb-398d-4781-b24a-62baec9f680b",
       "Name": "he",
       "Desc": "",
-      "IP": "127.0.0.1",
+      "IP": "10.221.55.116",
       "Port": "8808",
-      "EndPoint": "127.0.0.1:8808",
-      "Url": "http://127.0.0.1:8808/",
+      "EndPoint": "10.221.55.116:8808",
+      "Url": "http://10.221.55.116:8808/",
       "Interface": [
         {
           "ID": "20250323130424925",
@@ -200,7 +200,7 @@
               "Type": "System.String"
             }
           ],
-          "Content": "\r\n                                        var model = JsonConvert.DeserializeObject<HaiKangOrderInfo>(requestJson);\r\n                                        LogHelper.Info(\"ExecuteState Request-haikang锛歕" + JsonConvert.SerializeObject(model), \"agv鏉弶浜や簰鏃ュ織\");\r\n                                        OperateHKTaskStatus(model);\r\n                                        return JsonConvert.SerializeObject(new HkReturnResult { reqCode = model.reqCode });",
+          "Content": "\r\n                                        LogHelper.Info(\"ExecuteState Request-haikang锛歕" + requestJson);\r\n                                        var model = JsonConvert.DeserializeObject<HaiKangOrderInfo>(requestJson);\r\n                                        OperateHKTaskStatus(model);\r\n                                        return JsonConvert.SerializeObject(new HkReturnResult { reqCode = model.reqCode });",
           "ContentType": "application/json",
           "ReqParamStr": "System.String requestJson",
           "ReqParamTypeStr": "System.String"
@@ -229,5 +229,5 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-04-11 15:46:06"
+  "LastWriteTime": "2025-04-18 10:41:51"
 }
\ No newline at end of file
diff --git a/S7/Robot_S7_WCS.pdf b/S7/Robot_S7_WCS.pdf
new file mode 100644
index 0000000..9fe6652
--- /dev/null
+++ b/S7/Robot_S7_WCS.pdf
Binary files differ
diff --git "a/S7/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs" "b/S7/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
index b24251a..80365ea 100644
--- "a/S7/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
+++ "b/S7/RunTime/Code/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.cs"
@@ -57,6 +57,8 @@
 		public Tagjs1 js1 { get { return _js1; } set { _js1=value; RaisePropertyChanged("js1"); } }
 		private Tagjs2 _js2 = new Tagjs2();
 		public Tagjs2 js2 { get { return _js2; } set { _js2=value; RaisePropertyChanged("js2"); } }
+		private TagGlobal _Global = new TagGlobal();
+		public TagGlobal Global { get { return _Global; } set { _Global=value; RaisePropertyChanged("Global"); } }
 		#endregion
 		
 		#region 鍐呴儴绫�@@ -916,6 +918,58 @@
 				RaisePropertyChanged("R52"); 
 			}
 		}
+		private System.Int16 _wl=0;
+		public System.Int16 wl
+		{
+			get 
+			{
+	return _wl; 
+			}
+			set 
+			{
+				_wl = value; 
+				RaisePropertyChanged("wl"); 
+			}
+		}
+		private System.Boolean _w143=false;
+		public System.Boolean w143
+		{
+			get 
+			{
+	return _w143; 
+			}
+			set 
+			{
+				_w143 = value; 
+				RaisePropertyChanged("w143"); 
+			}
+		}
+		private System.Int16 _w2=0;
+		public System.Int16 w2
+		{
+			get 
+			{
+	return _w2; 
+			}
+			set 
+			{
+				_w2 = value; 
+				RaisePropertyChanged("w2"); 
+			}
+		}
+		private System.Boolean _w245=false;
+		public System.Boolean w245
+		{
+			get 
+			{
+	return _w245; 
+			}
+			set 
+			{
+				_w245 = value; 
+				RaisePropertyChanged("w245"); 
+			}
+		}
 		#endregion
 		
 		#region 鍙橀噺缁�@@ -1277,6 +1331,58 @@
 			{
 				_R52 = value; 
 				RaisePropertyChanged("R52"); 
+			}
+		}
+		private System.Int16 _wl=0;
+		public System.Int16 wl
+		{
+			get 
+			{
+	return _wl; 
+			}
+			set 
+			{
+				_wl = value; 
+				RaisePropertyChanged("wl"); 
+			}
+		}
+		private System.Boolean _w143=false;
+		public System.Boolean w143
+		{
+			get 
+			{
+	return _w143; 
+			}
+			set 
+			{
+				_w143 = value; 
+				RaisePropertyChanged("w143"); 
+			}
+		}
+		private System.Int16 _w2=0;
+		public System.Int16 w2
+		{
+			get 
+			{
+	return _w2; 
+			}
+			set 
+			{
+				_w2 = value; 
+				RaisePropertyChanged("w2"); 
+			}
+		}
+		private System.Boolean _w245=false;
+		public System.Boolean w245
+		{
+			get 
+			{
+	return _w245; 
+			}
+			set 
+			{
+				_w245 = value; 
+				RaisePropertyChanged("w245"); 
 			}
 		}
 		#endregion
@@ -1819,6 +1925,44 @@
 		#endregion
 	}
 
+	public class TagGlobal : System.ComponentModel.INotifyPropertyChanged
+	{
+		#region 鍙橀噺
+		private System.UInt16 _SettingsOver=0;
+		public System.UInt16 SettingsOver
+		{
+			get 
+			{
+	return _SettingsOver; 
+			}
+			set 
+			{
+				_SettingsOver = value; 
+				RaisePropertyChanged("SettingsOver"); 
+			}
+		}
+		#endregion
+		
+		#region 鍙橀噺缁�+		#endregion
+		
+		#region 鍐呴儴绫�+		
+		#endregion
+			
+		#region 灞炴�鍙樻洿
+		public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
+		public void RaisePropertyChanged(string propertyName)
+		{
+			System.ComponentModel.PropertyChangedEventHandler handler = PropertyChanged;
+			if (handler != null)
+			{
+				handler(this, new System.ComponentModel.PropertyChangedEventArgs(propertyName));
+			}
+		}
+		#endregion
+	}
+
 
 		#endregion
 			
diff --git "a/S7/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs" "b/S7/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
index 8d414d3..265d273 100644
--- "a/S7/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
+++ "b/S7/RunTime/Code/\350\207\252\345\256\232\344\271\211\347\261\273.cs"
@@ -491,19 +491,30 @@
     int result = 0;
     lock (locker)
     {
-        ISYSRepository sysservice = new SYSRepository();
+        SYSRepository sysservice = new SYSRepository();
         var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);
 
         if (sId != null)
         {
-            sId.CN_N_MAX++;
-            sId.CN_T_LAST = DateTime.Now;
-            sysservice.Update(sId);
-            result = sId.CN_N_MAX;
+            
+                    sId.CN_N_MAX++;
+                    sId.CN_T_LAST = DateTime.Now;
+                    //sysservice.Update(sId);
+
+                    sysservice.dbcontext.Set<SYSEntity>().Attach(sId);
+                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).CurrentValue = sId.CN_N_MAX;
+
+                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).IsModified = true;
+                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).CurrentValue = sId.CN_T_LAST;
+
+                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).IsModified = true;
+                        
+                    sysservice.dbcontext.SaveChanges();
+                    result = sId.CN_N_MAX;
         }
         else
         {
-            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0 };
+            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0,CN_S_APP_TYPE="WCS" };
             sysservice.Insert(sId);
         }
     }
@@ -591,4 +602,10 @@
         }
 #endregion [鑷畾涔夌被][20250325152141671][TaskProcess]
 }
+public class Utils
+{
+#region    [鑷畾涔夌被][20250417094750211][Utils]
+	
+#endregion [鑷畾涔夌被][20250417094750211][Utils]
+}
 }
\ No newline at end of file
diff --git "a/S7/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs" "b/S7/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
index 53be932..bd6814a 100644
--- "a/S7/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
+++ "b/S7/RunTime/Code/\350\256\276\345\244\207\351\200\232\344\277\241.cs"
@@ -48,6 +48,8 @@
 		public GZ.Device.PLC.PlcBase 缁村笇灏旀姄鑷�=null;
 		public GZ.Device.PLC.PlcBase 鎹风灛鎶撹噦1=null;
 		public GZ.Device.PLC.PlcBase 鎹风灛鎶撹噦2=null;
+		public GZ.Device.PLC.PlcBase PLC3=null;
+		public GZ.Device.PLC.PlcBase PLC4=null;
 		public Device()
 		{
 			PLC1 = GZ.Device.PLC.PlcFactory.CreateInstanceByFile
@@ -110,6 +112,16 @@
 				System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "鎹风灛鎶撹噦2"),
 				null
 			);
+			PLC3 = GZ.Device.PLC.PlcFactory.CreateInstanceByFile
+			(
+				System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "PLC3"),
+				null
+			);
+			PLC4 = GZ.Device.PLC.PlcFactory.CreateInstanceByFile
+			(
+				System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Configs", "PLC4"),
+				null
+			);
 			if(System.Configuration.ConfigurationManager.AppSettings["AutoRunPLC"]=="1")
 			{
 				if(PLC1!=null){PLC1.Run();}
@@ -124,6 +136,8 @@
 				if(缁村笇灏旀姄鑷�!=null){缁村笇灏旀姄鑷�.Run();}
 				if(鎹风灛鎶撹噦1!=null){鎹风灛鎶撹噦1.Run();}
 				if(鎹风灛鎶撹噦2!=null){鎹风灛鎶撹噦2.Run();}
+				if(PLC3!=null){PLC3.Run();}
+				if(PLC4!=null){PLC4.Run();}
 			}
         }
 	}
@@ -284,6 +298,26 @@
 		}
 		#endregion
 		
+		#region PLC3
+		public _PLC3 PLC3 = new _PLC3();
+		/// <summary>
+		/// 
+		/// </summary>		
+		public class _PLC3
+		{
+		}
+		#endregion
+		
+		#region PLC4
+		public _PLC4 PLC4 = new _PLC4();
+		/// <summary>
+		/// 
+		/// </summary>		
+		public class _PLC4
+		{
+		}
+		#endregion
+		
 	}
 
 	#endregion
diff --git a/S7/S7.json b/S7/S7.json
index 29cd8b3..b711f97 100644
--- a/S7/S7.json
+++ b/S7/S7.json
@@ -2,12 +2,12 @@
   "Name": "S7",
   "Desc": "",
   "SN": "03d560ed-fd80-4d8a-a514-d992e07894b0",
-  "Directory": "G:\\1AGIT\\S7",
+  "Directory": "C:\\Users\\Administrator\\Desktop\\S7",
   "UpdateTime": "2025-02-26 15:31:01",
   "Version": "1.0.0.0",
   "PlatformVersion": "1.0.4.1",
   "DevelopVersion": "1.0.2.0",
   "Encode": "Ij/zvOgkqNT5SmHrFKCAVQ==",
   "CreationTime": "0001-01-01 00:00:00",
-  "LastWriteTime": "2025-04-11 20:39:15"
+  "LastWriteTime": "2025-04-18 10:45:51"
 }
\ No newline at end of file
diff --git a/S7/Scripts/Custom.json b/S7/Scripts/Custom.json
index f58aa65..e411d64 100644
--- a/S7/Scripts/Custom.json
+++ b/S7/Scripts/Custom.json
@@ -57,8 +57,8 @@
       "Type": "MethodCode",
       "Level": "Item",
       "Statement": "public void SettingInit()",
-      "EditCode": "try\r\n{\r\n    var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + \"/Static/config.json\";\r\n    using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))\r\n    {\r\n        using (JsonTextReader reader = new JsonTextReader(file))\r\n        {\r\n            JObject o = (JObject)JToken.ReadFrom(reader);\r\n            foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())\r\n            {\r\n                Console.WriteLine(keyValue.Name);\r\n                if (keyValue.Name == \"HostToAgvServerUrl\")\r\n                {\r\n                    Settings.HostToAgvServerUrl = keyValue.Value.ToString();\r\n                }\r\n                if (keyValue.Name == \"deviceInfo\") {\r\n                      Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());\r\n                }\r\n                if (keyValue.Name == \"HKbaseUrl\") {\r\n                      Settings.HKbaseUrl = keyValue.Value.ToString();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if(!Settings.FirstG)\r\n    \tLogHelper.Info(\"鍔犺浇閰嶇疆鏂囦欢淇℃伅 瀹屾垚\");\r\n}\r\ncatch (Exception ex)\r\n{\r\n    LogHelper.Error(\"鍔犺浇閰嶇疆鏂囦欢澶辫触锛乗" + ex.Message, ex);\r\n}",
-      "Code": "public void SettingInit()\r\n{try\r\n{\r\n    var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + \"/Static/config.json\";\r\n    using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))\r\n    {\r\n        using (JsonTextReader reader = new JsonTextReader(file))\r\n        {\r\n            JObject o = (JObject)JToken.ReadFrom(reader);\r\n            foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())\r\n            {\r\n                Console.WriteLine(keyValue.Name);\r\n                if (keyValue.Name == \"HostToAgvServerUrl\")\r\n                {\r\n                    Settings.HostToAgvServerUrl = keyValue.Value.ToString();\r\n                }\r\n                if (keyValue.Name == \"deviceInfo\") {\r\n                      Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());\r\n                }\r\n                if (keyValue.Name == \"HKbaseUrl\") {\r\n                      Settings.HKbaseUrl = keyValue.Value.ToString();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    if(!Settings.FirstG)\r\n    \tLogHelper.Info(\"鍔犺浇閰嶇疆鏂囦欢淇℃伅 瀹屾垚\");\r\n}\r\ncatch (Exception ex)\r\n{\r\n    LogHelper.Error(\"鍔犺浇閰嶇疆鏂囦欢澶辫触锛乗" + ex.Message, ex);\r\n}\r\n}",
+      "EditCode": "try\r\n{\r\n    var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + \"/Static/config.json\";\r\n    using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))\r\n    {\r\n        using (JsonTextReader reader = new JsonTextReader(file))\r\n        {\r\n            JObject o = (JObject)JToken.ReadFrom(reader);\r\n            foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())\r\n            {\r\n                Console.WriteLine(keyValue.Name);\r\n                if (keyValue.Name == \"HostToAgvServerUrl\")\r\n                {\r\n                    Settings.HostToAgvServerUrl = keyValue.Value.ToString();\r\n                }\r\n                if (keyValue.Name == \"deviceInfo\") {\r\n                      Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());\r\n                }\r\n                if (keyValue.Name == \"HKbaseUrl\") {\r\n                      Settings.HKbaseUrl = keyValue.Value.ToString();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    //if(!Settings.FirstG)\r\n    \t//LogHelper.Info(\"鍔犺浇閰嶇疆鏂囦欢淇℃伅 瀹屾垚\");\r\n}\r\ncatch (Exception ex)\r\n{\r\n    LogHelper.Error(\"鍔犺浇閰嶇疆鏂囦欢澶辫触锛乗" + ex.Message, ex);\r\n}",
+      "Code": "public void SettingInit()\r\n{try\r\n{\r\n    var jsonFile = System.AppDomain.CurrentDomain.BaseDirectory + \"/Static/config.json\";\r\n    using (System.IO.StreamReader file = System.IO.File.OpenText(jsonFile))\r\n    {\r\n        using (JsonTextReader reader = new JsonTextReader(file))\r\n        {\r\n            JObject o = (JObject)JToken.ReadFrom(reader);\r\n            foreach (Newtonsoft.Json.Linq.JProperty keyValue in o.Properties())\r\n            {\r\n                Console.WriteLine(keyValue.Name);\r\n                if (keyValue.Name == \"HostToAgvServerUrl\")\r\n                {\r\n                    Settings.HostToAgvServerUrl = keyValue.Value.ToString();\r\n                }\r\n                if (keyValue.Name == \"deviceInfo\") {\r\n                      Settings.deviceInfos = JsonConvert.DeserializeObject<List<deviceInfo>>(keyValue.Value.ToString());\r\n                }\r\n                if (keyValue.Name == \"HKbaseUrl\") {\r\n                      Settings.HKbaseUrl = keyValue.Value.ToString();\r\n                }\r\n            }\r\n        }\r\n    }\r\n    //if(!Settings.FirstG)\r\n    \t//LogHelper.Info(\"鍔犺浇閰嶇疆鏂囦欢淇℃伅 瀹屾垚\");\r\n}\r\ncatch (Exception ex)\r\n{\r\n    LogHelper.Error(\"鍔犺浇閰嶇疆鏂囦欢澶辫触锛乗" + ex.Message, ex);\r\n}\r\n}",
       "CusMethod": {
         "Name": "SettingInit",
         "Params": [],
@@ -120,8 +120,8 @@
       "Type": "MethodCode",
       "Level": "Item",
       "Statement": "public void OperateHKTaskStatus(System.Object param1)",
-      "EditCode": "HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\nif (string.IsNullOrEmpty(model.taskCode))\r\n\treturn;\r\n// 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n//var wcsTask = WCSHelper.GetTask(model.taskCode);\r\nITaskRepository MainMissionService = new TaskRepository();\r\nvar wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\nif (wcsTask != null)\r\n{\r\n    if (!string.IsNullOrWhiteSpace(model.method))\r\n    {\r\n        ILocRepository locrep = new LocRepository();\r\n        var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n        var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n                    switch (model.method)\r\n                    {\r\n                        case \"start\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n                            {\r\n                                wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n                                wcsTask.T_START_TIME = DateTime.Now;\r\n                                MainMissionService.Update(wcsTask);\r\n                            }\r\n                            break;\r\n                        case \"outbin\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n                            startloc.S_LOCK_STATE = \"鏃燶";\r\n                            startloc.T_MODIFY = DateTime.Now;\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(startloc);\r\n                            //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n                            break;\r\n                        case \"end\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"瀹屾垚\";\r\n                            wcsTask.T_END_TIME = DateTime.Now;\r\n                            endLoc.S_LOCK_STATE = \"鏃燶";\r\n                            endLoc.T_MODIFY = DateTime.Now;\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(endLoc);\r\n                            //LocationMethod.JudgeLocation(wcsTask);\r\n                            break;\r\n                        case \"cancel\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"鍙栨秷\";\r\n                            startloc.S_LOCK_STATE = \"鏃燶";\r\n                            endLoc.S_LOCK_STATE = \"鏃燶";\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(startloc);\r\n                            locrep.Update(endLoc);\r\n                            //TaskProcess.OperateStatus(wcsTask, 7);\r\n                            //WCSHelper.Fail(wcsTask);\r\n                            break;\r\n                        case \"apply\":\r\n                            // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n                            TaskisOk(wcsTask);\r\n                            break;\r\n                    }\r\n\r\n                    TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data);\r\n        //WCSHelper.AddActionRecord(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // 鏆傛椂璁惧畾涓�\r\n        wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n        MainMissionService.Update(wcsTask);\r\n        //瀹夊叏璇锋眰绛塡r\n        //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n    }\r\n}\r\nelse\r\n{\r\n    LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n}",
-      "Code": "public void OperateHKTaskStatus(System.Object param1)\r\n{HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\nif (string.IsNullOrEmpty(model.taskCode))\r\n\treturn;\r\n// 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n//var wcsTask = WCSHelper.GetTask(model.taskCode);\r\nITaskRepository MainMissionService = new TaskRepository();\r\nvar wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\nif (wcsTask != null)\r\n{\r\n    if (!string.IsNullOrWhiteSpace(model.method))\r\n    {\r\n        ILocRepository locrep = new LocRepository();\r\n        var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n        var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n                    switch (model.method)\r\n                    {\r\n                        case \"start\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n                            {\r\n                                wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n                                wcsTask.T_START_TIME = DateTime.Now;\r\n                                MainMissionService.Update(wcsTask);\r\n                            }\r\n                            break;\r\n                        case \"outbin\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n                            startloc.S_LOCK_STATE = \"鏃燶";\r\n                            startloc.T_MODIFY = DateTime.Now;\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(startloc);\r\n                            //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n                            break;\r\n                        case \"end\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"瀹屾垚\";\r\n                            wcsTask.T_END_TIME = DateTime.Now;\r\n                            endLoc.S_LOCK_STATE = \"鏃燶";\r\n                            endLoc.T_MODIFY = DateTime.Now;\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(endLoc);\r\n                            //LocationMethod.JudgeLocation(wcsTask);\r\n                            break;\r\n                        case \"cancel\":\r\n                            LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                            wcsTask.S_B_STATE = \"鍙栨秷\";\r\n                            startloc.S_LOCK_STATE = \"鏃燶";\r\n                            endLoc.S_LOCK_STATE = \"鏃燶";\r\n                            MainMissionService.Update(wcsTask);\r\n                            locrep.Update(startloc);\r\n                            locrep.Update(endLoc);\r\n                            //TaskProcess.OperateStatus(wcsTask, 7);\r\n                            //WCSHelper.Fail(wcsTask);\r\n                            break;\r\n                        case \"apply\":\r\n                            // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n                            TaskisOk(wcsTask);\r\n                            break;\r\n                    }\r\n\r\n                    TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data);\r\n        //WCSHelper.AddActionRecord(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // 鏆傛椂璁惧畾涓�\r\n        wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n        MainMissionService.Update(wcsTask);\r\n        //瀹夊叏璇锋眰绛塡r\n        //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n    }\r\n}\r\nelse\r\n{\r\n    LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n}\r\n}",
+      "EditCode": "HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\nif (string.IsNullOrEmpty(model.taskCode))\r\n    return;\r\n// 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n//var wcsTask = WCSHelper.GetTask(model.taskCode);\r\nITaskRepository MainMissionService = new TaskRepository();\r\nvar wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\nif (wcsTask != null)\r\n{\r\n    if (!string.IsNullOrWhiteSpace(model.method))\r\n    {\r\n        ILocRepository locrep = new LocRepository();\r\n        var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n        var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n        List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n        switch (model.method)\r\n        {\r\n            case \"start\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n                {\r\n                    wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n                    wcsTask.T_START_TIME = DateTime.Now;\r\n                    MainMissionService.Update(wcsTask);\r\n                }\r\n                break;\r\n            case \"outbin\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n                startloc.N_CURRENT_NUM = 0;\r\n                startloc.S_LOCK_STATE = \"鏃燶";\r\n                startloc.T_MODIFY = DateTime.Now;\r\n                ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n                //var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n                locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(startloc);\r\n\r\n                var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n                if (device != null)\r\n                {\r\n                    if (device.deviceType == 1)\r\n                    {\r\n                        if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n                        {\r\n                            string V = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R05\" : \"R06\";\r\n                            Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n                        }\r\n                    }\r\n                    //else if(device.deviceType == 2)\r\n                    //    if (device.deviceName.Contains(\"鎹风灛鎶撹噦\"))\r\n                    //        Conn.榛樿Redis.SetValue(device.deviceName + \".R10\", \"true\", device.deviceName + \"Queue\");\r\n                }\r\n                //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n                break;\r\n            case \"end\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"瀹屾垚\";\r\n                wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n                ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n                List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n                foreach (var c in cntrs)\r\n                {\r\n                    var action = new LocContainerEntity()\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\r\n                        S_LOC_CODE = endLoc.S_LOC_CODE,\r\n                        S_CNTR_CODE = c,\r\n                        S_TYPE = \"\",\r\n                    };\r\n                    llls.Add(action);\r\n                }\r\n\r\n                endLoc.S_LOCK_STATE = \"鏃燶";\r\n                startloc.N_CURRENT_NUM = 1;\r\n                endLoc.T_MODIFY = DateTime.Now;\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(endLoc);\r\n                locContainerRepository2.Insert(llls);\r\n\r\n                var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n                if (device2 != null)\r\n                {\r\n                    if (device2.deviceType == 1)\r\n                    {\r\n                        if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n                        {\r\n                            string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n                            Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n                        }\r\n                    }\r\n                    //else if(device.deviceType == 2)\r\n                    //    if (device.deviceName.Contains(\"鎹风灛鎶撹噦\"))\r\n                    //        Conn.榛樿Redis.SetValue(device.deviceName + \".R10\", \"true\", device.deviceName + \"Queue\");\r\n                }\r\n\r\n                //LocationMethod.JudgeLocation(wcsTask);\r\n                break;\r\n            case \"cancel\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"鍙栨秷\";\r\n                startloc.S_LOCK_STATE = \"鏃燶";\r\n                endLoc.S_LOCK_STATE = \"鏃燶";\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(startloc);\r\n                locrep.Update(endLoc);\r\n                //TaskProcess.OperateStatus(wcsTask, 7);\r\n                //WCSHelper.Fail(wcsTask);\r\n                break;\r\n            case \"apply\":\r\n                // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n                TaskisOk(wcsTask);\r\n                break;\r\n        }\r\n\r\n        TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data);\r\n        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // 鏆傛椂璁惧畾涓�\r\n        wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n        //瀹夊叏璇锋眰绛塡r\n        //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n    }\r\n}\r\nelse\r\n{\r\n    LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n}",
+      "Code": "public void OperateHKTaskStatus(System.Object param1)\r\n{HaiKangOrderInfo model = (HaiKangOrderInfo)param1;\r\nif (string.IsNullOrEmpty(model.taskCode))\r\n    return;\r\n// 鏌ヨ浠诲姟锛氭牴鎹换鍔″彿\r\n//var wcsTask = WCSHelper.GetTask(model.taskCode);\r\nITaskRepository MainMissionService = new TaskRepository();\r\nvar wcsTask = MainMissionService.FindEntity(x => model.taskCode == x.S_TASK_NO);\r\nif (wcsTask != null)\r\n{\r\n    if (!string.IsNullOrWhiteSpace(model.method))\r\n    {\r\n        ILocRepository locrep = new LocRepository();\r\n        var startloc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n        var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == wcsTask.S_END_LOC);\r\n\r\n        List<string> cntrs = wcsTask.S_CNTRS.Split(',').ToList();\r\n        switch (model.method)\r\n        {\r\n            case \"start\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鎵ц锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                if (wcsTask.S_B_STATE.Trim() == \"宸叉帹閫乗")\r\n                {\r\n                    wcsTask.S_B_STATE = \"鎵ц涓璡";\r\n                    wcsTask.T_START_TIME = DateTime.Now;\r\n                    MainMissionService.Update(wcsTask);\r\n                }\r\n                break;\r\n            case \"outbin\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栬揣瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"鍙栬揣瀹屾垚\";\r\n\r\n                startloc.N_CURRENT_NUM = 0;\r\n                startloc.S_LOCK_STATE = \"鏃燶";\r\n                startloc.T_MODIFY = DateTime.Now;\r\n                ILocContainerRepository locContainerRepository = new LocContainerRepository();\r\n                //var cnr = locContainerRepository.FindList(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n                locContainerRepository.Delete(x => cntrs.Contains(x.S_CNTR_CODE.Trim()) && x.S_LOC_CODE == wcsTask.S_START_LOC);\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(startloc);\r\n\r\n                var device = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_START_LOC));\r\n                if (device != null)\r\n                {\r\n                    if (device.deviceType == 1)\r\n                    {\r\n                        if (device.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n                        {\r\n                            string V = device.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R05\" : \"R06\";\r\n                            Conn.榛樿Redis.SetValue(device.deviceName + \".\" + V, \"true\", device.deviceName + \"Queue\");\r\n                        }\r\n                    }\r\n                    //else if(device.deviceType == 2)\r\n                    //    if (device.deviceName.Contains(\"鎹风灛鎶撹噦\"))\r\n                    //        Conn.榛樿Redis.SetValue(device.deviceName + \".R10\", \"true\", device.deviceName + \"Queue\");\r\n                }\r\n                //LocationHelper.UnLockLoc(wcsTask.S_START_LOC);\r\n                break;\r\n            case \"end\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负瀹屾垚锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"瀹屾垚\";\r\n                wcsTask.T_END_TIME = DateTime.Now;\r\n\r\n                ILocContainerRepository locContainerRepository2 = new LocContainerRepository();\r\n                List<LocContainerEntity> llls = new List<LocContainerEntity>();\r\n                foreach (var c in cntrs)\r\n                {\r\n                    var action = new LocContainerEntity()\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\r\n                        S_LOC_CODE = endLoc.S_LOC_CODE,\r\n                        S_CNTR_CODE = c,\r\n                        S_TYPE = \"\",\r\n                    };\r\n                    llls.Add(action);\r\n                }\r\n\r\n                endLoc.S_LOCK_STATE = \"鏃燶";\r\n                startloc.N_CURRENT_NUM = 1;\r\n                endLoc.T_MODIFY = DateTime.Now;\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(endLoc);\r\n                locContainerRepository2.Insert(llls);\r\n\r\n                var device2 = Settings.deviceInfos.Find(x => x.location.Contains(wcsTask.S_END_LOC));\r\n                if (device2 != null)\r\n                {\r\n                    if (device2.deviceType == 1)\r\n                    {\r\n                        if (device2.deviceName.Contains(\"缁村笇灏旀姄鑷俓"))\r\n                        {\r\n                            string V = device2.location.ToList().FindIndex(x => x == wcsTask.S_START_LOC) == 0 ? \"R10\" : \"R11\";\r\n                            Conn.榛樿Redis.SetValue(device2.deviceName + \".\" + V, \"true\", device2.deviceName + \"Queue\");\r\n                        }\r\n                    }\r\n                    //else if(device.deviceType == 2)\r\n                    //    if (device.deviceName.Contains(\"鎹风灛鎶撹噦\"))\r\n                    //        Conn.榛樿Redis.SetValue(device.deviceName + \".R10\", \"true\", device.deviceName + \"Queue\");\r\n                }\r\n\r\n                //LocationMethod.JudgeLocation(wcsTask);\r\n                break;\r\n            case \"cancel\":\r\n                LogHelper.Info($\"娴峰悍杞︿换鍔$姸鎬佸彉鏇翠负鍙栨秷锛屼换鍔″彿涓猴細{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n                wcsTask.S_B_STATE = \"鍙栨秷\";\r\n                startloc.S_LOCK_STATE = \"鏃燶";\r\n                endLoc.S_LOCK_STATE = \"鏃燶";\r\n                MainMissionService.Update(wcsTask);\r\n                locrep.Update(startloc);\r\n                locrep.Update(endLoc);\r\n                //TaskProcess.OperateStatus(wcsTask, 7);\r\n                //WCSHelper.Fail(wcsTask);\r\n                break;\r\n            case \"apply\":\r\n                // 鍒ゆ柇璇ヤ换鍔$殑鎺ラ┏浣嶆槸鍚︽湁鍏朵粬鍏ュ簱鎴栧嚭搴撲换鍔★紝濡傛灉鏈夛紝鍒欏湪绛変綅绛夊緟锛屽鏋滄病鏈夛紝鍒欏叆\r\n                TaskisOk(wcsTask);\r\n                break;\r\n        }\r\n\r\n        TaskProcess.AddActionRecord(model.taskCode, model.method, model.eqpCode, model.data);\r\n        //璋冪敤绗笁鏂规帴鍙o紙濡傛灉鏈夛級TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // 鏆傛椂璁惧畾涓�\r\n        wcsTask.S_B_STATE = \"涓婃姤鐘舵�绌篭";\r\n        //瀹夊叏璇锋眰绛塡r\n        //TaskProcess.OperateReq(model.taskCode, wcsTask.N_B_STATE, model.eqpCode, model.data);\r\n    }\r\n}\r\nelse\r\n{\r\n    LogHelper.Info($\"褰撳墠浠诲姟鍙蜂换鍔′笉瀛樺湪{model.taskCode}\", \"agv鏉弶浜や簰鏃ュ織\");\r\n}\r\n}",
       "CusMethod": {
         "Name": "OperateHKTaskStatus",
         "Params": [
@@ -356,8 +356,8 @@
       "Type": "MethodCode",
       "Level": "Item",
       "Statement": "public System.Boolean RunTask(GZ.DB.Entity.OIDATABASE.TaskEntity task)",
-      "EditCode": "\r\n            ILocRepository locrep = new LocRepository();\r\n            var startloc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_START_LOC);\r\n            var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_END_LOC);\r\n            if (startloc == null || endLoc == null)\r\n            {\r\n                LogHelper.Info($\"{task.S_TASK_NO}-浠诲姟璧�缁堢偣 娌℃壘鍒版暟鎹�\");\r\n                return false;\r\n            }\r\n            var start = startloc.S_AGV_SITE;\r\n            var end = endLoc.S_AGV_SITE;\r\n\r\n            // 鍒涘缓涓や釜璺緞\r\n            var positions = new List<positionCodePath>(){\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = start,\r\n                                Type = \"00\"\r\n                            },\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = end,\r\n                                Type = \"00\"\r\n                            }\r\n            };\r\n\r\n            //璋冪涓夋柟鎺ュ彛\r\n            var model = new HaiKangOrderInfo\r\n            {\r\n                taskCode = task.S_TASK_NO,\r\n                ctnrCode = task.S_CNTRS,\r\n                taskTyp = \"F02\",\r\n                positionCodePath = positions\r\n            };\r\n\r\n            return CreateOrder(model);",
-      "Code": "public System.Boolean RunTask(GZ.DB.Entity.OIDATABASE.TaskEntity task)\r\n{\r\n            ILocRepository locrep = new LocRepository();\r\n            var startloc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_START_LOC);\r\n            var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_END_LOC);\r\n            if (startloc == null || endLoc == null)\r\n            {\r\n                LogHelper.Info($\"{task.S_TASK_NO}-浠诲姟璧�缁堢偣 娌℃壘鍒版暟鎹�\");\r\n                return false;\r\n            }\r\n            var start = startloc.S_AGV_SITE;\r\n            var end = endLoc.S_AGV_SITE;\r\n\r\n            // 鍒涘缓涓や釜璺緞\r\n            var positions = new List<positionCodePath>(){\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = start,\r\n                                Type = \"00\"\r\n                            },\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = end,\r\n                                Type = \"00\"\r\n                            }\r\n            };\r\n\r\n            //璋冪涓夋柟鎺ュ彛\r\n            var model = new HaiKangOrderInfo\r\n            {\r\n                taskCode = task.S_TASK_NO,\r\n                ctnrCode = task.S_CNTRS,\r\n                taskTyp = \"F02\",\r\n                positionCodePath = positions\r\n            };\r\n\r\n            return CreateOrder(model);\r\n}",
+      "EditCode": "\r\n            ILocRepository locrep = new LocRepository();\r\n            var startloc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_START_LOC);\r\n            var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_END_LOC);\r\n            if (startloc == null || endLoc == null)\r\n            {\r\n                LogHelper.Info($\"{task.S_TASK_NO}-浠诲姟璧�缁堢偣 娌℃壘鍒版暟鎹�\");\r\n                return false;\r\n            }\r\n            var start = startloc.S_AGV_SITE.Trim();\r\n            var end = endLoc.S_AGV_SITE.Trim();\r\n\r\n            // 鍒涘缓涓や釜璺緞\r\n            var positions = new List<positionCodePath>(){\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = start,\r\n                                Type = \"00\"\r\n                            },\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = end,\r\n                                Type = \"00\"\r\n                            }\r\n            };\r\n\r\n            //璋冪涓夋柟鎺ュ彛\r\n            var model = new HaiKangOrderInfo\r\n            {\r\n                reqCode=task.S_TASK_NO.Trim(),\r\n                reqTime=DateTime.Now.ToString(\"yyyy-MM-dd HH:mm:ss\"),\r\n                taskCode = task.S_TASK_NO.Trim(),\r\n                ctnrCode = task.S_CNTRS,\r\n                taskTyp = \"F01\",\r\n                positionCodePath = positions\r\n            };\r\n\r\n            return CreateOrder(model);",
+      "Code": "public System.Boolean RunTask(GZ.DB.Entity.OIDATABASE.TaskEntity task)\r\n{\r\n            ILocRepository locrep = new LocRepository();\r\n            var startloc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_START_LOC);\r\n            var endLoc = locrep.FindEntity(x => x.S_LOC_CODE == task.S_END_LOC);\r\n            if (startloc == null || endLoc == null)\r\n            {\r\n                LogHelper.Info($\"{task.S_TASK_NO}-浠诲姟璧�缁堢偣 娌℃壘鍒版暟鎹�\");\r\n                return false;\r\n            }\r\n            var start = startloc.S_AGV_SITE.Trim();\r\n            var end = endLoc.S_AGV_SITE.Trim();\r\n\r\n            // 鍒涘缓涓や釜璺緞\r\n            var positions = new List<positionCodePath>(){\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = start,\r\n                                Type = \"00\"\r\n                            },\r\n                            new positionCodePath()\r\n                            {\r\n                                positionCode = end,\r\n                                Type = \"00\"\r\n                            }\r\n            };\r\n\r\n            //璋冪涓夋柟鎺ュ彛\r\n            var model = new HaiKangOrderInfo\r\n            {\r\n                reqCode=task.S_TASK_NO.Trim(),\r\n                reqTime=DateTime.Now.ToString(\"yyyy-MM-dd HH:mm:ss\"),\r\n                taskCode = task.S_TASK_NO.Trim(),\r\n                ctnrCode = task.S_CNTRS,\r\n                taskTyp = \"F01\",\r\n                positionCodePath = positions\r\n            };\r\n\r\n            return CreateOrder(model);\r\n}",
       "CusMethod": {
         "Name": "RunTask",
         "Params": [
@@ -572,8 +572,8 @@
       "Type": "ClassCode",
       "Level": "Item",
       "Statement": "public class SYSHelper",
-      "EditCode": "private static object locker = new object();\r\ninternal static int GetSerialNumber(string snType, string prefix, string Vend = \"0\")\r\n{\r\n    if (Vend == \"1\")\r\n        Vend = DateTime.Now.ToString(\"yyMMdd\");\r\n    int result = 0;\r\n    lock (locker)\r\n    {\r\n        ISYSRepository sysservice = new SYSRepository();\r\n        var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);\r\n\r\n        if (sId != null)\r\n        {\r\n            sId.CN_N_MAX++;\r\n            sId.CN_T_LAST = DateTime.Now;\r\n            sysservice.Update(sId);\r\n            result = sId.CN_N_MAX;\r\n        }\r\n        else\r\n        {\r\n            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0 };\r\n            sysservice.Insert(sId);\r\n        }\r\n    }\r\n    return result;\r\n}",
-      "Code": "public class SYSHelper\r\n{private static object locker = new object();\r\ninternal static int GetSerialNumber(string snType, string prefix, string Vend = \"0\")\r\n{\r\n    if (Vend == \"1\")\r\n        Vend = DateTime.Now.ToString(\"yyMMdd\");\r\n    int result = 0;\r\n    lock (locker)\r\n    {\r\n        ISYSRepository sysservice = new SYSRepository();\r\n        var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);\r\n\r\n        if (sId != null)\r\n        {\r\n            sId.CN_N_MAX++;\r\n            sId.CN_T_LAST = DateTime.Now;\r\n            sysservice.Update(sId);\r\n            result = sId.CN_N_MAX;\r\n        }\r\n        else\r\n        {\r\n            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0 };\r\n            sysservice.Insert(sId);\r\n        }\r\n    }\r\n    return result;\r\n}\r\n}",
+      "EditCode": "private static object locker = new object();\r\ninternal static int GetSerialNumber(string snType, string prefix, string Vend = \"0\")\r\n{\r\n    if (Vend == \"1\")\r\n        Vend = DateTime.Now.ToString(\"yyMMdd\");\r\n    int result = 0;\r\n    lock (locker)\r\n    {\r\n        SYSRepository sysservice = new SYSRepository();\r\n        var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);\r\n\r\n        if (sId != null)\r\n        {\r\n            \r\n                    sId.CN_N_MAX++;\r\n                    sId.CN_T_LAST = DateTime.Now;\r\n                    //sysservice.Update(sId);\r\n\r\n                    sysservice.dbcontext.Set<SYSEntity>().Attach(sId);\r\n                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).CurrentValue = sId.CN_N_MAX;\r\n\r\n                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).IsModified = true;\r\n                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).CurrentValue = sId.CN_T_LAST;\r\n\r\n                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).IsModified = true;\r\n                        \r\n                    sysservice.dbcontext.SaveChanges();\r\n                    result = sId.CN_N_MAX;\r\n        }\r\n        else\r\n        {\r\n            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0,CN_S_APP_TYPE=\"WCS\" };\r\n            sysservice.Insert(sId);\r\n        }\r\n    }\r\n    return result;\r\n}",
+      "Code": "public class SYSHelper\r\n{private static object locker = new object();\r\ninternal static int GetSerialNumber(string snType, string prefix, string Vend = \"0\")\r\n{\r\n    if (Vend == \"1\")\r\n        Vend = DateTime.Now.ToString(\"yyMMdd\");\r\n    int result = 0;\r\n    lock (locker)\r\n    {\r\n        SYSRepository sysservice = new SYSRepository();\r\n        var sId = sysservice.FindEntity(a => a.CN_S_TYPE.Trim() == snType && a.CN_S_PRE.Trim() == prefix + Vend);\r\n\r\n        if (sId != null)\r\n        {\r\n            \r\n                    sId.CN_N_MAX++;\r\n                    sId.CN_T_LAST = DateTime.Now;\r\n                    //sysservice.Update(sId);\r\n\r\n                    sysservice.dbcontext.Set<SYSEntity>().Attach(sId);\r\n                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).CurrentValue = sId.CN_N_MAX;\r\n\r\n                    sysservice.dbcontext.Entry(sId).Property(x => x.CN_N_MAX).IsModified = true;\r\n                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).CurrentValue = sId.CN_T_LAST;\r\n\r\n                    sysservice.dbcontext.Entry(sId).Property(x=>x.CN_T_LAST).IsModified = true;\r\n                        \r\n                    sysservice.dbcontext.SaveChanges();\r\n                    result = sId.CN_N_MAX;\r\n        }\r\n        else\r\n        {\r\n            sId = new SYSEntity { CN_S_TYPE = snType, CN_T_LAST = DateTime.Now, CN_S_PRE = prefix + Vend, CN_N_MAX = 0,CN_S_APP_TYPE=\"WCS\" };\r\n            sysservice.Insert(sId);\r\n        }\r\n    }\r\n    return result;\r\n}\r\n}",
       "CusMethod": {
         "Name": "",
         "Params": [],
@@ -605,9 +605,30 @@
         "InheritClass": "",
         "Inherits": []
       }
+    },
+    {
+      "ID": "20250417094750211",
+      "Name": "Utils",
+      "Desc": "",
+      "ParentID": "",
+      "Type": "ClassCode",
+      "Level": "Item",
+      "Statement": "public class Utils",
+      "EditCode": "",
+      "Code": "public class Utils\r\n{\r\n}",
+      "CusMethod": {
+        "Name": "",
+        "Params": [],
+        "ReturnType": ""
+      },
+      "CusClass": {
+        "Name": "Utils",
+        "InheritClass": "",
+        "Inherits": []
+      }
     }
   ],
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-04-11 20:40:37",
+  "LastWriteTime": "2025-04-18 10:41:31",
   "HasSaved": true
 }
\ No newline at end of file
diff --git a/S7/Scripts/Script.json b/S7/Scripts/Script.json
index 2951f77..1e2e745 100644
--- a/S7/Scripts/Script.json
+++ b/S7/Scripts/Script.json
@@ -131,14 +131,14 @@
           "ID": "20250323151832119",
           "Name": "Program4",
           "Desc": "",
-          "Content": "Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");",
-          "ContentCopy": "Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");",
+          "Content": "//Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n\r\n                    List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n                    List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n                    LocRepository locservice = new LocRepository();\r\n                    for (int i = 0; i < locs.Count; i++)\r\n                    {\r\n                        string loccode = locs[i];\r\n                        string sitesss = sites[i];\r\n                        var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n                        if (loc == null)\r\n                        {\r\n                            locservice.Insert(new LocEntity\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_DEEP = \"vxr\",\r\n\r\n                                S_LOC_CODE = loccode,\r\n                                S_AGV_SITE = sitesss,\r\n\r\n                                S_LOCK_STATE = \"鏃燶",\r\n                                N_ROW = 1,\r\n                                N_COL = 1,\r\n                                N_AGV_CODE = 0,\r\n                                N_AGV_SITE_LAYER = 0,\r\n                                N_CAPACITY = 1,\r\n                                N_CURRENT_NUM = 0,\r\n                                S_TYPE = \"\",\r\n\r\n                            });\r\n                        }\r\n                    }\r\n                   // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n",
+          "ContentCopy": "//Conn.榛樿Redis.SetValue(\"瑗块棬瀛�.Param3\",\"300\",\"瑗块棬瀛�Queue\");\r\n\r\n                    List<string> locs = new List<string>() { \"vxr1l\", \"vx1r\", \"vxr1c1\", \"vxr1c2\", \"vxr2l\", \"vxr2r\", \"vxr2c1\", \"vxr2c2\" };\r\n                    List<string> sites = new List<string>() { \"196365BB283162\", \"193841BB283149\", \"198756BB287300\", \"198767BB286133\", \"206987BB282931\", \"204460BB282975\", \"209405BB287057\", \"209377BB285899\" };\r\n\r\n                    LocRepository locservice = new LocRepository();\r\n                    for (int i = 0; i < locs.Count; i++)\r\n                    {\r\n                        string loccode = locs[i];\r\n                        string sitesss = sites[i];\r\n                        var loc = locservice.FindEntity(x => x.S_LOC_CODE == loccode);\r\n                        if (loc == null)\r\n                        {\r\n                            locservice.Insert(new LocEntity\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_DEEP = \"vxr\",\r\n\r\n                                S_LOC_CODE = loccode,\r\n                                S_AGV_SITE = sitesss,\r\n\r\n                                S_LOCK_STATE = \"鏃燶",\r\n                                N_ROW = 1,\r\n                                N_COL = 1,\r\n                                N_AGV_CODE = 0,\r\n                                N_AGV_SITE_LAYER = 0,\r\n                                N_CAPACITY = 1,\r\n                                N_CURRENT_NUM = 0,\r\n                                S_TYPE = \"\",\r\n\r\n                            });\r\n                        }\r\n                    }\r\n                   // TaskProcess.CreateTask(\"\", locs[6], locs[7], \"test\", 9, new List<string> { \"test\" }, 1, 1, 1);\r\n",
           "ParentID": "20250226153120175",
           "Children": [],
           "Type": "Program",
           "Property": {
-            "SyncExec": "False",
-            "RepeatExec": "None",
+            "SyncExec": "True",
+            "RepeatExec": "Count",
             "ExceCount": 1,
             "ExceInternal": 3000,
             "StartCondition": {
@@ -147,7 +147,11 @@
               "Expression": "",
               "Judge": "",
               "Command": {},
-              "HmiEvent": {}
+              "HmiEvent": {
+                "20250306140515428": [
+                  "Open"
+                ]
+              }
             },
             "EndCondition": {
               "Type": "None",
@@ -174,8 +178,8 @@
               "ID": "20250325083149366",
               "Name": "缁村笇灏旀姄鑷�",
               "Desc": "",
-              "Content": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"缁村笇灏旀姄鑷�\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.wxr1.R44)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.wxr1.R46)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"F\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓嬫枡\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"E\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓婄┖鎵樼洏\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
-              "ContentCopy": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"缁村笇灏旀姄鑷�\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.wxr1.R44)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.wxr1.R46)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"F\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓嬫枡\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"E\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓婄┖鎵樼洏\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
+              "Content": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"缁村笇灏旀姄鑷�\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.wxr1.R44&&Tag.wxr1.R10)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.wxr1.R46&&Tag.wxr1.R11)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"F\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓嬫枡\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"E\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓婄┖鎵樼洏\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
+              "ContentCopy": "\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"缁村笇灏旀姄鑷�\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.wxr1.R44&&Tag.wxr1.R10)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.wxr1.R46&&Tag.wxr1.R11)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"F\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓嬫枡\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"E\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"vxr1涓婄┖鎵樼洏\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
               "ParentID": "20250325083047245",
               "Children": [],
               "Type": "Program",
@@ -291,8 +295,8 @@
               "ID": "20250325083325390",
               "Name": "鎹风灛鎶撹噦1",
               "Desc": "",
-              "Content": "//jsz1鎹风灛鎶撹噦1\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦1\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.js1.M40)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.js1.M41)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"E\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"F\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
-              "ContentCopy": "//jsz1鎹风灛鎶撹噦1\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦1\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.js1.M40)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.js1.M41)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"E\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"F\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
+              "Content": "//jsz1鎹风灛鎶撹噦1\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦1\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.js1.M40==1)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.js1.M41==1)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"E\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"F\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
+              "ContentCopy": "//jsz1鎹风灛鎶撹噦1\r\nvar VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦1\");\r\n\r\nif (VERX != null)\r\n{\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n    if (!string.IsNullOrEmpty(VERX.location[0]))\r\n    {\r\n        v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n        //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n        if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1l);\r\n    }\r\n    if (!string.IsNullOrEmpty(VERX.location[1]))\r\n    {\r\n        v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n        if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n            emptyLoc.Add(v1r);\r\n    }\r\n    if (Tag.js1.M40==1)\r\n    {\r\n        startLoc = v1l;\r\n    }\r\n    else if (Tag.js1.M41==1)\r\n    {\r\n        startLoc = v1r;\r\n    }\r\n\r\n    ContainerRepository containerservice = new ContainerRepository();\r\n    if (startLoc != null)\r\n    {\r\n        if (startLoc.N_CURRENT_NUM == 1)\r\n        {\r\n            if (startLoc.T_FULL_TIME == null)\r\n            {\r\n                //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                startLoc.T_FULL_TIME = DateTime.Now;\r\n                locservice.Update(startLoc);\r\n                //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                //locservice.dbcontext.SaveChanges();\r\n            }\r\n            if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n            {\r\n                LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                foreach (var item in VERX.deviceNo)\r\n                {\r\n                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                    if (loc != null)\r\n                    {\r\n                        if (loc.N_CURRENT_NUM == 0)\r\n                        {\r\n                            endLoc = loc;\r\n                            break;\r\n                        }\r\n                    }\r\n                }\r\n                if (endLoc != null && ent != null)\r\n                {\r\n                    var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                    c.S_TYPE = \"E\";\r\n                    containerservice.Update(c);\r\n                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    if (emptyLoc.Any())\r\n    {\r\n        List<string> exclist = new List<string>();\r\n    next:\r\n        endLoc = emptyLoc.First();\r\n        emptyLoc.Remove(endLoc);\r\n        startLoc = null;\r\n        ContainerEntity c = null;\r\n        foreach (var lcode in VERX.deviceNo)\r\n        {\r\n            if (exclist.Contains(lcode))\r\n                continue;\r\n            var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n            if (loc != null)\r\n            {\r\n                var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                if (cntr != null)\r\n                {\r\n                    c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                    if (c != null && c.S_TYPE == \"F\")\r\n                    {\r\n                        startLoc = loc;\r\n                    }\r\n                }\r\n            }\r\n            exclist.Add(lcode);\r\n            if (startLoc != null)\r\n                break;\r\n        }\r\n        if (startLoc != null)\r\n        {\r\n            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS1涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n        }\r\n        if (emptyLoc.Any()) goto next;\r\n    }\r\n}",
               "ParentID": "20250325083047245",
               "Children": [],
               "Type": "Program",
@@ -330,8 +334,8 @@
               "ID": "20250325083326611",
               "Name": "鎹风灛鎶撹噦2",
               "Desc": "",
-              "Content": "//jsz2鎹风灛鎶撹噦2\r\n\r\n                        var VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦2\");\r\n\r\n                        if (VERX != null)\r\n                        {\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n                            if (!string.IsNullOrEmpty(VERX.location[0]))\r\n                            {\r\n                                v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n                                //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n                                if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1l);\r\n                            }\r\n                            if (!string.IsNullOrEmpty(VERX.location[1]))\r\n                            {\r\n                                v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n                                if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1r);\r\n                            }\r\n                                if (Tag.js2.M40)\r\n\t\t\t\t    {\r\n\t\t\t\t        startLoc = v1l;\r\n\t\t\t\t    }\r\n\t\t\t\t    else if (Tag.js2.M41)\r\n                            {\r\n                                startLoc = v1r;\r\n                            }\r\n\r\n                            ContainerRepository containerservice = new ContainerRepository();\r\n                            if (startLoc != null)\r\n                            {\r\n                                if (startLoc.N_CURRENT_NUM == 1)\r\n                                {\r\n                                    if (startLoc.T_FULL_TIME == null)\r\n                                    {\r\n                                        //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                                        startLoc.T_FULL_TIME = DateTime.Now;\r\n                                        locservice.Update(startLoc);\r\n                                        //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                                        //locservice.dbcontext.SaveChanges();\r\n                                    }\r\n                                    if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n                                    {\r\n                                        LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                        foreach (var item in VERX.deviceNo)\r\n                                        {\r\n                                            var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                            if (loc != null)\r\n                                            {\r\n                                                if (loc.N_CURRENT_NUM == 0)\r\n                                                {\r\n                                                    endLoc = loc;\r\n                                                    break;\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null && ent != null)\r\n                                        {\r\n                                            var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                                            c.S_TYPE = \"E\";\r\n                                            containerservice.Update(c);\r\n                                            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                                        }\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (emptyLoc.Any())\r\n                            {\r\n                                List<string> exclist = new List<string>();\r\n                            next:\r\n                                endLoc = emptyLoc.First();\r\n                                emptyLoc.Remove(endLoc);\r\n                                startLoc = null;\r\n                                ContainerEntity c = null;\r\n                                foreach (var lcode in VERX.deviceNo)\r\n                                {\r\n                                    if (exclist.Contains(lcode))\r\n                                        continue;\r\n                                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n                                    if (loc != null)\r\n                                    {\r\n                                        var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                                        if (cntr != null)\r\n                                        {\r\n                                            c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                                            if (c != null && c.S_TYPE == \"F\")\r\n                                            {\r\n                                                startLoc = loc;\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                    exclist.Add(lcode);\r\n                                    if (startLoc != null)\r\n                                        break;\r\n                                }\r\n                                if (startLoc != null)\r\n                                {\r\n                                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n                                }\r\n                                if (emptyLoc.Any()) goto next;\r\n                            }\r\n                        }",
-              "ContentCopy": "//jsz2鎹风灛鎶撹噦2\r\n\r\n                        var VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦2\");\r\n\r\n                        if (VERX != null)\r\n                        {\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n                            if (!string.IsNullOrEmpty(VERX.location[0]))\r\n                            {\r\n                                v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n                                //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n                                if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1l);\r\n                            }\r\n                            if (!string.IsNullOrEmpty(VERX.location[1]))\r\n                            {\r\n                                v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n                                if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1r);\r\n                            }\r\n                                if (Tag.js2.M40)\r\n\t\t\t\t    {\r\n\t\t\t\t        startLoc = v1l;\r\n\t\t\t\t    }\r\n\t\t\t\t    else if (Tag.js2.M41)\r\n                            {\r\n                                startLoc = v1r;\r\n                            }\r\n\r\n                            ContainerRepository containerservice = new ContainerRepository();\r\n                            if (startLoc != null)\r\n                            {\r\n                                if (startLoc.N_CURRENT_NUM == 1)\r\n                                {\r\n                                    if (startLoc.T_FULL_TIME == null)\r\n                                    {\r\n                                        //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                                        startLoc.T_FULL_TIME = DateTime.Now;\r\n                                        locservice.Update(startLoc);\r\n                                        //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                                        //locservice.dbcontext.SaveChanges();\r\n                                    }\r\n                                    if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n                                    {\r\n                                        LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                        foreach (var item in VERX.deviceNo)\r\n                                        {\r\n                                            var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                            if (loc != null)\r\n                                            {\r\n                                                if (loc.N_CURRENT_NUM == 0)\r\n                                                {\r\n                                                    endLoc = loc;\r\n                                                    break;\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null && ent != null)\r\n                                        {\r\n                                            var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                                            c.S_TYPE = \"E\";\r\n                                            containerservice.Update(c);\r\n                                            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                                        }\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (emptyLoc.Any())\r\n                            {\r\n                                List<string> exclist = new List<string>();\r\n                            next:\r\n                                endLoc = emptyLoc.First();\r\n                                emptyLoc.Remove(endLoc);\r\n                                startLoc = null;\r\n                                ContainerEntity c = null;\r\n                                foreach (var lcode in VERX.deviceNo)\r\n                                {\r\n                                    if (exclist.Contains(lcode))\r\n                                        continue;\r\n                                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n                                    if (loc != null)\r\n                                    {\r\n                                        var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                                        if (cntr != null)\r\n                                        {\r\n                                            c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                                            if (c != null && c.S_TYPE == \"F\")\r\n                                            {\r\n                                                startLoc = loc;\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                    exclist.Add(lcode);\r\n                                    if (startLoc != null)\r\n                                        break;\r\n                                }\r\n                                if (startLoc != null)\r\n                                {\r\n                                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n                                }\r\n                                if (emptyLoc.Any()) goto next;\r\n                            }\r\n                        }",
+              "Content": "//jsz2鎹风灛鎶撹噦2\r\n\r\n                        var VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦2\");\r\n\r\n                        if (VERX != null)\r\n                        {\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n                            if (!string.IsNullOrEmpty(VERX.location[0]))\r\n                            {\r\n                                v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n                                //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n                                if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1l);\r\n                            }\r\n                            if (!string.IsNullOrEmpty(VERX.location[1]))\r\n                            {\r\n                                v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n                                if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1r);\r\n                            }\r\n                                if (Tag.js2.M40==1)\r\n\t\t\t\t    {\r\n\t\t\t\t        startLoc = v1l;\r\n\t\t\t\t    }\r\n\t\t\t\t    else if (Tag.js2.M41==1)\r\n                            {\r\n                                startLoc = v1r;\r\n                            }\r\n\r\n                            ContainerRepository containerservice = new ContainerRepository();\r\n                            if (startLoc != null)\r\n                            {\r\n                                if (startLoc.N_CURRENT_NUM == 1)\r\n                                {\r\n                                    if (startLoc.T_FULL_TIME == null)\r\n                                    {\r\n                                        //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                                        startLoc.T_FULL_TIME = DateTime.Now;\r\n                                        locservice.Update(startLoc);\r\n                                        //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                                        //locservice.dbcontext.SaveChanges();\r\n                                    }\r\n                                    if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n                                    {\r\n                                        LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                        foreach (var item in VERX.deviceNo)\r\n                                        {\r\n                                            var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                            if (loc != null)\r\n                                            {\r\n                                                if (loc.N_CURRENT_NUM == 0)\r\n                                                {\r\n                                                    endLoc = loc;\r\n                                                    break;\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null && ent != null)\r\n                                        {\r\n                                            var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                                            c.S_TYPE = \"E\";\r\n                                            containerservice.Update(c);\r\n                                            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                                        }\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (emptyLoc.Any())\r\n                            {\r\n                                List<string> exclist = new List<string>();\r\n                            next:\r\n                                endLoc = emptyLoc.First();\r\n                                emptyLoc.Remove(endLoc);\r\n                                startLoc = null;\r\n                                ContainerEntity c = null;\r\n                                foreach (var lcode in VERX.deviceNo)\r\n                                {\r\n                                    if (exclist.Contains(lcode))\r\n                                        continue;\r\n                                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n                                    if (loc != null)\r\n                                    {\r\n                                        var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                                        if (cntr != null)\r\n                                        {\r\n                                            c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                                            if (c != null && c.S_TYPE == \"F\")\r\n                                            {\r\n                                                startLoc = loc;\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                    exclist.Add(lcode);\r\n                                    if (startLoc != null)\r\n                                        break;\r\n                                }\r\n                                if (startLoc != null)\r\n                                {\r\n                                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n                                }\r\n                                if (emptyLoc.Any()) goto next;\r\n                            }\r\n                        }",
+              "ContentCopy": "//jsz2鎹风灛鎶撹噦2\r\n\r\n                        var VERX = Settings.deviceInfos?.Find(x => x.deviceName == \"鎹风灛鎶撹噦2\");\r\n\r\n                        if (VERX != null)\r\n                        {\r\nLocRepository locservice = new LocRepository();\r\nLocContainerRepository loccontainerservice = new LocContainerRepository();\r\nLocEntity v1l = null;\r\nLocEntity v1r = null;\r\nLocEntity startLoc = null;\r\nLocEntity endLoc = null;\r\nList<LocEntity> emptyLoc = new List<LocEntity>();\r\n                            if (!string.IsNullOrEmpty(VERX.location[0]))\r\n                            {\r\n                                v1l = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[0]);\r\n                                //if (startLoc == null && startLoc.S_LOCK_STATE == \"鏃燶")\r\n                                if (v1l != null && v1l.N_CURRENT_NUM == 0 && v1l.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1l);\r\n                            }\r\n                            if (!string.IsNullOrEmpty(VERX.location[1]))\r\n                            {\r\n                                v1r = locservice.FindEntity(x => x.S_LOC_CODE == VERX.location[1]);\r\n                                if (v1r != null && v1r.N_CURRENT_NUM == 0 && v1r.S_LOCK_STATE == \"鏃燶")\r\n                                    emptyLoc.Add(v1r);\r\n                            }\r\n                                if (Tag.js2.M40==1)\r\n\t\t\t\t    {\r\n\t\t\t\t        startLoc = v1l;\r\n\t\t\t\t    }\r\n\t\t\t\t    else if (Tag.js2.M41==1)\r\n                            {\r\n                                startLoc = v1r;\r\n                            }\r\n\r\n                            ContainerRepository containerservice = new ContainerRepository();\r\n                            if (startLoc != null)\r\n                            {\r\n                                if (startLoc.N_CURRENT_NUM == 1)\r\n                                {\r\n                                    if (startLoc.T_FULL_TIME == null)\r\n                                    {\r\n                                        //locservice.dbcontext.Set<LocEntity>().Attach(startLoc);\r\n                                        startLoc.T_FULL_TIME = DateTime.Now;\r\n                                        locservice.Update(startLoc);\r\n                                        //locservice.dbcontext.Entry(startLoc).Property(x => x.T_FULL_TIME).IsModified = true;\r\n                                        //locservice.dbcontext.SaveChanges();\r\n                                    }\r\n                                    if (startLoc.T_FULL_TIME != null && DateTime.Now.Subtract(startLoc.T_FULL_TIME ?? DateTime.Now).TotalSeconds > 30)\r\n                                    {\r\n                                        LocContainerEntity ent = loccontainerservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                        foreach (var item in VERX.deviceNo)\r\n                                        {\r\n                                            var loc = locservice.FindEntity(x => x.S_LOC_CODE == startLoc.S_LOC_CODE);\r\n                                            if (loc != null)\r\n                                            {\r\n                                                if (loc.N_CURRENT_NUM == 0)\r\n                                                {\r\n                                                    endLoc = loc;\r\n                                                    break;\r\n                                                }\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null && ent != null)\r\n                                        {\r\n                                            var c = containerservice.FindEntity(x => x.S_CODE == ent.S_CNTR_CODE);\r\n                                            c.S_TYPE = \"E\";\r\n                                            containerservice.Update(c);\r\n                                            TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓嬬┖\", 6, new List<string> { ent?.S_CNTR_CODE ?? \"TP\" + Settings.GetTimeStamp() }, 1, 1, 1);\r\n                                        }\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (emptyLoc.Any())\r\n                            {\r\n                                List<string> exclist = new List<string>();\r\n                            next:\r\n                                endLoc = emptyLoc.First();\r\n                                emptyLoc.Remove(endLoc);\r\n                                startLoc = null;\r\n                                ContainerEntity c = null;\r\n                                foreach (var lcode in VERX.deviceNo)\r\n                                {\r\n                                    if (exclist.Contains(lcode))\r\n                                        continue;\r\n                                    var loc = locservice.FindEntity(x => x.S_LOC_CODE == lcode && x.S_LOCK_STATE == \"鏃燶" && x.N_CURRENT_NUM == 1);\r\n                                    if (loc != null)\r\n                                    {\r\n                                        var cntr = loccontainerservice.FindEntity(x => x.S_LOC_CODE == lcode);\r\n                                        if (cntr != null)\r\n                                        {\r\n                                            c = containerservice.FindEntity(x => x.S_CODE == cntr.S_CNTR_CODE);\r\n                                            if (c != null && c.S_TYPE == \"F\")\r\n                                            {\r\n                                                startLoc = loc;\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                    exclist.Add(lcode);\r\n                                    if (startLoc != null)\r\n                                        break;\r\n                                }\r\n                                if (startLoc != null)\r\n                                {\r\n                                    TaskProcess.CreateTask(\"\", startLoc.S_LOC_CODE, endLoc.S_LOC_CODE, \"JS2涓婃枡\", 7, new List<string> { c?.S_CODE }, 1, 1, 1);\r\n                                }\r\n                                if (emptyLoc.Any()) goto next;\r\n                            }\r\n                        }",
               "ParentID": "20250325083047245",
               "Children": [],
               "Type": "Program",
@@ -1028,6 +1032,6 @@
     }
   ],
   "CreationTime": "2025-02-26 15:31:20",
-  "LastWriteTime": "2025-04-11 20:39:15",
+  "LastWriteTime": "2025-04-17 09:48:04",
   "HasSaved": true
 }
\ No newline at end of file
diff --git a/S7/Static/config.json b/S7/Static/config.json
index 299e9e7..a41a6d8 100644
--- a/S7/Static/config.json
+++ b/S7/Static/config.json
@@ -1,6 +1,6 @@
 {
     "HostToAgvServerUrl": "vvvvvvvvvvvv",
-    "HKbaseUrl": "http://172.16.10.42:8182/",
+    "HKbaseUrl": "http://10.221.55.249:8181/",
     "deviceInfo": [
       {
         "address": "0",
diff --git "a/S7/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json" "b/S7/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
index c9da503..fe327c4 100644
--- "a/S7/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
+++ "b/S7/Variable/\345\217\230\351\207\217\346\225\260\346\215\256\345\272\223.json"
@@ -1080,6 +1080,78 @@
             "GroupID": "20250411091213369",
             "GroupFullName": "Tag.wxr1",
             "FullName": "Tag.wxr1.R52"
+          },
+          {
+            "ID": "20250415152407780",
+            "Name": "wl",
+            "Desc": "1鍙锋暟閲�,
+            "Type": "System.Int16",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "0",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091213369",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.wl"
+          },
+          {
+            "ID": "20250415152457283",
+            "Name": "w143",
+            "Desc": "1鍙蜂笂娆″崟娆℃姄鍙栦俊鍙凤紝涓嬫涓簍rue 涓旇繖涓负false 灏眞1 鍔�",
+            "Type": "System.Boolean",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "false",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091213369",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w143"
+          },
+          {
+            "ID": "20250415152710952",
+            "Name": "w2",
+            "Desc": "2鍙锋暟閲�,
+            "Type": "System.Int16",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "0",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091213369",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w2"
+          },
+          {
+            "ID": "20250415152711420",
+            "Name": "w245",
+            "Desc": "2鍙蜂笂娆″崟娆℃姄鍙栦俊鍙凤紝涓嬫涓簍rue 涓旇繖涓负false 灏眞2 鍔�",
+            "Type": "System.Boolean",
+            "ShortType": "",
+            "MinVal": "",
+            "MaxVal": "",
+            "DefaultVal": "false",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091213369",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w245"
           }
         ],
         "Children": []
@@ -1559,6 +1631,78 @@
             "GroupID": "20250411091232150",
             "GroupFullName": "Tag.wxr2",
             "FullName": "Tag.wxr2.R52"
+          },
+          {
+            "ID": "202504151524077801",
+            "Name": "wl",
+            "Desc": "1鍙锋暟閲�,
+            "Type": "System.Int16",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "0",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091232150",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.wl"
+          },
+          {
+            "ID": "202504151524572831",
+            "Name": "w143",
+            "Desc": "1鍙蜂笂娆″崟娆℃姄鍙栦俊鍙凤紝涓嬫涓簍rue 涓旇繖涓负false 灏眞1 鍔�",
+            "Type": "System.Boolean",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "false",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091232150",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w143"
+          },
+          {
+            "ID": "202504151527109521",
+            "Name": "w2",
+            "Desc": "2鍙锋暟閲�,
+            "Type": "System.Int16",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "",
+            "DefaultVal": "0",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091232150",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w2"
+          },
+          {
+            "ID": "202504151527114201",
+            "Name": "w245",
+            "Desc": "2鍙蜂笂娆″崟娆℃姄鍙栦俊鍙凤紝涓嬫涓簍rue 涓旇繖涓负false 灏眞2 鍔�",
+            "Type": "System.Boolean",
+            "ShortType": "",
+            "MinVal": "",
+            "MaxVal": "",
+            "DefaultVal": "false",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250411091232150",
+            "GroupFullName": "Tag.wxr1",
+            "FullName": "Tag.wxr1.w245"
           }
         ],
         "Children": []
@@ -1915,10 +2059,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M0",
-            "Map": "鎹风灛鎶撹噦2.M0",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -1933,10 +2077,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M4",
-            "Map": "鎹风灛鎶撹噦2.M4",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -1951,10 +2095,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M1",
-            "Map": "鎹风灛鎶撹噦2.M1",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -1969,10 +2113,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M2",
-            "Map": "鎹风灛鎶撹噦2.M2",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -1987,10 +2131,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M3",
-            "Map": "鎹风灛鎶撹噦2.M3",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2005,10 +2149,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M5",
-            "Map": "鎹风灛鎶撹噦2.M5",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2023,10 +2167,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M6",
-            "Map": "鎹风灛鎶撹噦2.M6",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2041,10 +2185,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M7",
-            "Map": "鎹风灛鎶撹噦2.M7",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2059,10 +2203,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M32",
-            "Map": "鎹风灛鎶撹噦2.M32",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2077,10 +2221,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M33",
-            "Map": "鎹风灛鎶撹噦2.M33",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2095,10 +2239,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M34",
-            "Map": "鎹风灛鎶撹噦2.M34",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2113,10 +2257,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M35",
-            "Map": "鎹风灛鎶撹噦2.M35",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2131,10 +2275,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M36",
-            "Map": "鎹风灛鎶撹噦2.M36",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2149,10 +2293,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M37",
-            "Map": "鎹风灛鎶撹噦2.M37",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2167,10 +2311,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M38",
-            "Map": "鎹风灛鎶撹噦2.M38",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2185,10 +2329,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M39",
-            "Map": "鎹风灛鎶撹噦2.M39",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2203,10 +2347,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M40",
-            "Map": "鎹风灛鎶撹噦2.M40",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2221,10 +2365,10 @@
             "MinVal": "",
             "MaxVal": "",
             "DefaultVal": "",
-            "MapDevice": "鎹风灛鎶撹噦2",
-            "MapParam": "M41",
-            "Map": "鎹风灛鎶撹噦2.M41",
-            "Queue": "鎹风灛鎶撹噦2Queue",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
             "Converter": "",
             "GroupID": "20250411091247262",
             "GroupFullName": "Tag.js2",
@@ -2232,11 +2376,40 @@
           }
         ],
         "Children": []
+      },
+      {
+        "ID": "20250415152100836",
+        "Name": "Global",
+        "Desc": "",
+        "ParentID": "20250226153123812",
+        "ParentFullName": "Tag",
+        "FullName": "Tag.Global",
+        "Vars": [
+          {
+            "ID": "20250415152113172",
+            "Name": "SettingsOver",
+            "Desc": "鍒濆鍖栨垚鍔熷悗涓�.1浠ュ悗鑷銆傝揪鍒版煇浜涙潯浠跺氨閲嶈浇",
+            "Type": "System.UInt16",
+            "ShortType": "",
+            "MinVal": "0",
+            "MaxVal": "1000",
+            "DefaultVal": "0",
+            "MapDevice": "",
+            "MapParam": "",
+            "Map": "",
+            "Queue": "",
+            "Converter": "",
+            "GroupID": "20250415152100836",
+            "GroupFullName": "Tag.Global",
+            "FullName": "Tag.Global.SettingsOver"
+          }
+        ],
+        "Children": []
       }
     ]
   },
   "CreationTime": "2025-02-26 15:31:23",
-  "LastWriteTime": "2025-04-11 11:32:53",
+  "LastWriteTime": "2025-04-17 14:19:39",
   "Sample": {
     "ID": "",
     "Name": "Tag",
diff --git a/S7/ndp461-devpack-kb3105179-enu.exe b/S7/ndp461-devpack-kb3105179-enu.exe
new file mode 100644
index 0000000..a79de72
--- /dev/null
+++ b/S7/ndp461-devpack-kb3105179-enu.exe
Binary files differ

--
Gitblit v1.9.1