New
czw
2025-05-31 c6f52253a482e866640dd075fd3dcbb56687f4f2
New
4个文件已添加
17个文件已修改
1041 ■■■■ 已修改文件
.gitignore 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Devices/PlcConfig 424 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Devices/设备通信.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Dlls/GZ.DB.App.OIDATABASE.dll 补丁 | 查看 | 原始文档 | blame | 历史
S7/Dlls/GZ.DB.Entity.OIDATABASE.dll 补丁 | 查看 | 原始文档 | blame | 历史
S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll 补丁 | 查看 | 原始文档 | blame | 历史
S7/Dlls/GZ.DB.Map.OIDATABASE.dll 补丁 | 查看 | 原始文档 | blame | 历史
S7/Dlls/GZ.DB.Repository.OIDATABASE.dll 补丁 | 查看 | 原始文档 | blame | 历史
S7/MX Component 4.16S.zip 补丁 | 查看 | 原始文档 | blame | 历史
S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe 补丁 | 查看 | 原始文档 | blame | 历史
S7/Net/Conn.json 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Robot_S7_WCS.pdf 补丁 | 查看 | 原始文档 | blame | 历史
S7/RunTime/Code/变量数据库.cs 144 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/RunTime/Code/自定义类.cs 29 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/RunTime/Code/设备通信.cs 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/S7.json 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Scripts/Custom.json 39 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Scripts/Script.json 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Static/config.json 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Variable/变量数据库.json 319 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/ndp461-devpack-kb3105179-enu.exe 补丁 | 查看 | 原始文档 | blame | 历史
.gitignore
@@ -185,3 +185,5 @@
# Microsoft Fakes
FakesAssemblies/
/S7/History
/S7/MX Component 4.16S
/S7/redis-desktop-manager-2019.5.20.0.exe
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": "维希尔抓臂1Queue",
      "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": "维希尔抓臂2Queue",
      "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": "左边托盘拆垛完成,允许AGV左边取托盘",
          "Desc": "",
          "Trigger": false,
          "Reserve1": "",
          "Reserve2": "",
@@ -2368,7 +2368,7 @@
          "Address": "M41",
          "AddrType": "",
          "Length": 1,
          "Desc": "右边托盘拆垛完成,允许AGV右边取托盘",
          "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": "左边托盘拆垛完成,允许AGV左边取托盘",
          "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": "右边托盘拆垛完成,允许AGV右边取托盘",
          "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"
}
S7/Devices/É豸ͨÐÅ.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"
}
S7/Dlls/GZ.DB.App.OIDATABASE.dll
Binary files differ
S7/Dlls/GZ.DB.Entity.OIDATABASE.dll
Binary files differ
S7/Dlls/GZ.DB.IRepository.OIDATABASE.dll
Binary files differ
S7/Dlls/GZ.DB.Map.OIDATABASE.dll
Binary files differ
S7/Dlls/GZ.DB.Repository.OIDATABASE.dll
Binary files differ
S7/MX Component 4.16S.zip
Binary files differ
S7/NDP461-KB3102436-x86-x64-AllOS-ENU.exe
Binary files differ
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"
}
S7/Robot_S7_WCS.pdf
Binary files differ
S7/RunTime/Code/±äÁ¿Êý¾Ý¿â.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
            
S7/RunTime/Code/×Ô¶¨ÒåÀà.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]
}
}
S7/RunTime/Code/É豸ͨÐÅ.cs
@@ -48,6 +48,8 @@
        public GZ.Device.PLC.PlcBase ç»´å¸Œå°”抓臂2=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(维希尔抓臂2!=null){维希尔抓臂2.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
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"
}
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        //调用第三方接口(如果有)TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // æš‚时设定为0\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        //调用第三方接口(如果有)TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // æš‚时设定为0\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        //调用第三方接口(如果有)TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // æš‚时设定为0\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        //调用第三方接口(如果有)TaskProcess.ReportStatus\r\n    }\r\n    else\r\n    {\r\n        // æš‚时设定为0\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
}
S7/Scripts/Script.json
@@ -131,14 +131,14 @@
          "ID": "20250323151832119",
          "Name": "Program4",
          "Desc": "",
          "Content": "Conn.默认Redis.SetValue(\"西门子2.Param3\",\"300\",\"西门子2Queue\");",
          "ContentCopy": "Conn.默认Redis.SetValue(\"西门子2.Param3\",\"300\",\"西门子2Queue\");",
          "Content": "//Conn.默认Redis.SetValue(\"西门子2.Param3\",\"300\",\"西门子2Queue\");\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(\"西门子2.Param3\",\"300\",\"西门子2Queue\");\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": "维希尔抓臂1",
              "Desc": "",
              "Content": "\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.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 == \"维希尔抓臂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.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 == \"维希尔抓臂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.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 == \"维希尔抓臂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.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
}
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",
S7/Variable/±äÁ¿Êý¾Ý¿â.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号上次单次抓取信号,下次为true ä¸”这个为false å°±w1 åŠ 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号上次单次抓取信号,下次为true ä¸”这个为false å°±w2 åŠ 1",
            "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号上次单次抓取信号,下次为true ä¸”这个为false å°±w1 åŠ 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号上次单次抓取信号,下次为true ä¸”这个为false å°±w2 åŠ 1",
            "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.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",
S7/ndp461-devpack-kb3105179-enu.exe
Binary files differ