czw
2025-06-03 428c09cb12be9c1d9f803681f34d9a33dfa8a8f3
wms mes
6个文件已修改
492 ■■■■ 已修改文件
S7/Net/Conn.json 85 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/RunTime/Code/自定义类.cs 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/S7.json 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Scripts/Custom.json 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Scripts/Script.json 77 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Static/config.json 106 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
S7/Net/Conn.json
@@ -12,7 +12,8 @@
      "Password": "aux!123",
      "Timeout": 3,
      "IsDefault": true,
      "Type": "SqlServer"
      "Type": "SqlServer",
      "Special": []
    }
  ],
  "Redis": [
@@ -224,10 +225,90 @@
          "ContentType": "application/json",
          "ReqParamStr": "System.String requestJson",
          "ReqParamTypeStr": "System.String"
        },
        {
          "ID": "20250531151614198",
          "Name": "CreateTask",
          "Desc": "MES ä»»åŠ¡ä¸‹å‘",
          "Method": "POST",
          "RawUrl": "/api/Wcs/CreateTask",
          "Response": "System.String",
          "Request": [
            {
              "ID": "1",
              "Name": "requestJson",
              "Desc": "请求报文json",
              "Type": "System.String"
            }
          ],
          "Content": "\r\n                                        LogHelper.Info(\"/api/Wcs/CreateTask:\" + requestJson);\r\n                                        var model = JsonConvert.DeserializeObject<ToWMSMES.CreateTask>(requestJson);\r\n                                        var res = ToWMSMES.CreateTask.CreatemesTask(model);\r\n                                        return JsonConvert.SerializeObject(res);",
          "ContentType": "application/json",
          "ReqParamStr": "System.String requestJson",
          "ReqParamTypeStr": "System.String"
        },
        {
          "ID": "20250531151746358",
          "Name": "TestRequestTask",
          "Desc": "机械口请求任务接口",
          "Method": "POST",
          "RawUrl": "/api/Wcs/TestRequestTask",
          "Response": "System.String",
          "Request": [
            {
              "ID": "1",
              "Name": "requestJson",
              "Desc": "请求报文json",
              "Type": "System.String"
            }
          ],
          "Content": "LogHelper.Info(\"/api/Wcs/TestRequestTask:\" + requestJson);\r\nvar str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", requestJson);\r\nreturn str;",
          "ContentType": "application/json",
          "ReqParamStr": "System.String requestJson",
          "ReqParamTypeStr": "System.String"
        },
        {
          "ID": "20250531151956740",
          "Name": "updateStatus",
          "Desc": "任务状态上报接口",
          "Method": "POST",
          "RawUrl": "/api/Wcs/updateStatus",
          "Response": "System.String",
          "Request": [
            {
              "ID": "1",
              "Name": "requestJson",
              "Desc": "请求报文json",
              "Type": "System.String"
            }
          ],
          "Content": "LogHelper.Info(\"/api/Wcs/updateStatus:\" + requestJson);\r\nvar str = Settings.apiHelper.Post(Settings.WMSbaseUrl + \"mom-basic/dataTransmission/json/service/200\", requestJson);\r\nreturn str;",
          "ContentType": "application/json",
          "ReqParamStr": "System.String requestJson",
          "ReqParamTypeStr": "System.String"
        },
        {
          "ID": "20250531152110369",
          "Name": "toMes",
          "Desc": "托盘上报校验接口(包含托盘校验、绑拖和过账)",
          "Method": "POST",
          "RawUrl": "/api/Wcs/toMes",
          "Response": "System.String",
          "Request": [
            {
              "ID": "1",
              "Name": "requestJson",
              "Desc": "请求报文json",
              "Type": "System.String"
            }
          ],
          "Content": "\r\n                                        LogHelper.Info(\"/api/Wcs/toMes:\" + requestJson);\r\n                                        var str = Settings.apiHelper.Post(Settings.MESbaseUrl + \"mom-basic/dataTransmission/json/service/202\", requestJson);\r\n                                        return str;",
          "ContentType": "application/json",
          "ReqParamStr": "System.String requestJson",
          "ReqParamTypeStr": "System.String"
        }
      ]
    }
  ],
  "CreationTime": "2025-02-26 15:31:23",
  "LastWriteTime": "2025-04-18 10:41:51"
  "LastWriteTime": "2025-05-31 16:36:28"
}
S7/RunTime/Code/×Ô¶¨ÒåÀà.cs
@@ -38,6 +38,8 @@
        
        public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();
        public static string HKbaseUrl { get; set; }
        public static string MESbaseUrl { get; set; }
        public static string WMSbaseUrl { get; set; }
        public static readonly HttpHelper apiHelper = new HttpHelper();
        
        public static string GetTimeStamp(DateTime? time = null)
@@ -430,6 +432,9 @@
    if (sessionId != "") {
        request.Headers.Set("ASP.NET_SessionId", sessionId);
    }
            //Authorization: UApGP6WW9FsBUqAlzxRGOw ==
            request.Headers.Set("Authorization", "UApGP6WW9FsBUqAlzxRGOw==");
    StreamReader reader = null;
    Stream stream = null;
    WebResponse rsp = null;
@@ -608,4 +613,182 @@
    
#endregion [自定义类][20250417094750211][Utils]
}
public class ToWMSMES
{
#region    [自定义类][20250531152402452][ToWMSMES]
    //2 wms  mes
        public class CreateTask
        {
            public string taskType { get; set; }
            public string startBit { get; set; }
            public string endBit { get; set; }
            public string reqCode { get; set; }
            public string cntrCode { get; set; }
            internal static ReturnMsg CreatemesTask(CreateTask model)
            {
                ITaskRepository taskservice = new TaskRepository();
                var task = taskservice.FindEntity(x => x.S_TASK_NO == model.reqCode);
                if (task == null)
                {
                    //var i = TaskProcess.CreateTask("", model.startBit, model.endBit, string.IsNullOrEmpty(model.taskType) ? "Mes下发" : model.taskType, 5, new List<string> { model.cntrCode });
                    TaskEntity wmsTask = new TaskEntity()
                    {
                        S_ID = Guid.NewGuid().ToString(),
                        S_STATE = "编辑",
                        T_CREATE = DateTime.Now,
                        T_MODIFY = DateTime.Now,
                        S_TASK_NO = model.reqCode,
                        S_START_LAREA = "",
                        S_END_LAREA = "",
                        S_DEPART_NAME = "",
                        S_START_LOC = model.startBit,
                        S_END_LOC = model.endBit,
                        S_TYPE = model.reqCode,
                        S_SRC_NO = "",//
                        N_PRIORITY = -1,
                        S_WORK_MODE = "agv",
                        S_B_STATE = "MES",
                        S_CNTRS = model.cntrCode,
                        N_START_LAYER = 1,
                        N_END_LAYER = 1,
                        N_CNTR_COUNT = 1
                    };
                    ITaskRepository taskserice = new TaskRepository();
                    var i = taskserice.Insert(wmsTask) > 0;
                    return new ReturnMsg { resultCode = (i ? 0 : -1), resultMsg = i ? "" : "任务生成失败。" };
                }
                else
                {
                    return new ReturnMsg { resultCode = -1, resultMsg = "任务重复下发。" };
                }
            }
        }
        public class ReturnMsg
        {
            public int resultCode { get; set; }
            public string resultMsg { get; set; }
        }
        public static void ResMesTask()
        {
            ///1.
            TaskRepository taskservice = new TaskRepository();
            var tasks = taskservice.FindList(x => x.S_B_STATE == "MES" && x.N_PRIORITY == -88);
            var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("捷瞬抓臂"));
            if (VERXs.Any())
                foreach (var task in tasks)
                {
                    var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));
                    if (sx == null)
                    {
                        //直接生成对应任务。
                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS.Split(',').ToList());
                        if (res)
                        {
                            //task.N_PRIORITY = 0;
                            taskservice.dbcontext.Set<TaskEntity>().Attach(task);
                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;
                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;
                            taskservice.dbcontext.SaveChanges();
                        }
                    }
                    else
                    {
                        LocRepository locRepository = new LocRepository();
                        //生成跳跃任务。  -- æ‰˜ç›˜è´§ä½è¡¨ã€‚
                        var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);
                        if (t1s.Any())
                        {
                            var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();
                            if (t1.S_END_LOC == task.S_END_LOC)
                            {
                                task.N_PRIORITY = 0;
                                task.S_B_STATE = "MES_完成";
                                taskservice.Update(task);
                            }
                            if (t1.S_B_STATE == "完成")
                            {
                                //1.终点是否有托盘。 ä¾æ®æ˜¯ç»ˆç‚¹çš„任务是 ä½œä¸ºç»ˆç‚¹ï¼Œè¿˜æ˜¯èµ·ç‚¹ã€‚
                                var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC");
                                if (ec != null && ec.S_END_LOC == task.S_END_LOC)
                                {
                                    //上次是入库任务。 åˆ™å‡ºåº“。 å¦åˆ™è¿›è¡ŒäºŒæ®µã€‚
                                    LocEntity endLoc = null;
                                    var di = sx;
                                    if (di != null)
                                    {
                                        foreach (var ssloc in di.deviceNo)
                                        {
                                            var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
                                            if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "无")
                                            {
                                                endLoc = endloc;
                                                break;
                                            }
                                        }
                                        if (endLoc != null)
                                        {
                                            var res = TaskProcess.CreateTask("", task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "下空", 7, t1.S_CNTRS.Split(',').ToList());
                                            if (res)
                                            {
                                                task.N_PRIORITY = 0; taskservice.Update(task);
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + "补满", 6, task.S_CNTRS.Split(',').ToList());
                                    if (res)
                                    {
                                        task.N_PRIORITY = 0; taskservice.Update(task);
                                    }
                                }
                            }
                        }
                        else
                        {
                            //生成第一段。
                            LocEntity endLoc = null;
                            var di = sx;
                            if (di != null)
                            {
                                foreach (var ssloc in di.deviceNo)
                                {
                                    var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);
                                    if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == "无")
                                    {
                                        endLoc = endloc;
                                        break;
                                    }
                                }
                                if (endLoc != null)
                                {
                                    var res = TaskProcess.CreateTask("", task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + "满转", 8, task.S_CNTRS.Split(',').ToList());
                                    if (res)
                                    {
                                        task.N_PRIORITY = 0; taskservice.Update(task);
                                    }
                                }
                            }
                        }
                    }
                }
            //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains("捷瞬抓臂"));
            //if ()
            ///2  çœ‹ç¼“存区。 æ²¡æ»¡çš„。
        }
#endregion [自定义类][20250531152402452][ToWMSMES]
}
}
S7/S7.json
@@ -2,12 +2,12 @@
  "Name": "S7",
  "Desc": "",
  "SN": "03d560ed-fd80-4d8a-a514-d992e07894b0",
  "Directory": "C:\\Users\\Administrator\\Desktop\\S7",
  "Directory": "G:\\1AGIT\\HH-0167_WuHuAoKeSi\\S7",
  "UpdateTime": "2025-02-26 15:31:01",
  "Version": "1.0.0.0",
  "PlatformVersion": "1.0.4.1",
  "PlatformVersion": "1.0.4.2",
  "DevelopVersion": "1.0.2.0",
  "Encode": "Ij/zvOgkqNT5SmHrFKCAVQ==",
  "CreationTime": "0001-01-01 00:00:00",
  "LastWriteTime": "2025-04-18 10:45:51"
  "LastWriteTime": "2025-05-31 16:38:12"
}
S7/Scripts/Custom.json
@@ -36,8 +36,8 @@
      "Type": "ClassCode",
      "Level": "Item",
      "Statement": "public class Settings",
      "EditCode": "\t\tpublic static bool FirstG {get;set;}=false;\r\n        public static string HostToAgvServerUrl { get; set; }\r\n        \r\n        public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();\r\n        public static string HKbaseUrl { get; set; }\r\n        public static readonly HttpHelper apiHelper = new HttpHelper();\r\n        \r\n        public static string GetTimeStamp(DateTime? time = null)\r\n\t\t{\r\n\t\t    TimeSpan ts = DateTime.UtcNow - (time ?? new DateTime(1970, 1, 1, 0, 0, 0, 0));\r\n\t\t    return Convert.ToInt64(ts.TotalMilliseconds).ToString();\r\n\t\t}",
      "Code": "public class Settings\r\n{\t\tpublic static bool FirstG {get;set;}=false;\r\n        public static string HostToAgvServerUrl { get; set; }\r\n        \r\n        public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();\r\n        public static string HKbaseUrl { get; set; }\r\n        public static readonly HttpHelper apiHelper = new HttpHelper();\r\n        \r\n        public static string GetTimeStamp(DateTime? time = null)\r\n\t\t{\r\n\t\t    TimeSpan ts = DateTime.UtcNow - (time ?? new DateTime(1970, 1, 1, 0, 0, 0, 0));\r\n\t\t    return Convert.ToInt64(ts.TotalMilliseconds).ToString();\r\n\t\t}\r\n}",
      "EditCode": "\t\tpublic static bool FirstG {get;set;}=false;\r\n        public static string HostToAgvServerUrl { get; set; }\r\n        \r\n        public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();\r\n        public static string HKbaseUrl { get; set; }\r\n        public static string MESbaseUrl { get; set; }\r\n        public static string WMSbaseUrl { get; set; }\r\n        public static readonly HttpHelper apiHelper = new HttpHelper();\r\n        \r\n        public static string GetTimeStamp(DateTime? time = null)\r\n\t\t{\r\n\t\t    TimeSpan ts = DateTime.UtcNow - (time ?? new DateTime(1970, 1, 1, 0, 0, 0, 0));\r\n\t\t    return Convert.ToInt64(ts.TotalMilliseconds).ToString();\r\n\t\t}",
      "Code": "public class Settings\r\n{\t\tpublic static bool FirstG {get;set;}=false;\r\n        public static string HostToAgvServerUrl { get; set; }\r\n        \r\n        public static List<deviceInfo> deviceInfos { get; set; } = new List<deviceInfo>();\r\n        public static string HKbaseUrl { get; set; }\r\n        public static string MESbaseUrl { get; set; }\r\n        public static string WMSbaseUrl { get; set; }\r\n        public static readonly HttpHelper apiHelper = new HttpHelper();\r\n        \r\n        public static string GetTimeStamp(DateTime? time = null)\r\n\t\t{\r\n\t\t    TimeSpan ts = DateTime.UtcNow - (time ?? new DateTime(1970, 1, 1, 0, 0, 0, 0));\r\n\t\t    return Convert.ToInt64(ts.TotalMilliseconds).ToString();\r\n\t\t}\r\n}",
      "CusMethod": {
        "Name": "",
        "Params": [],
@@ -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    \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}",
      "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                            if (keyValue.Name == \"MESbaseUrl\")\r\n                            {\r\n                                Settings.MESbaseUrl = keyValue.Value.ToString();\r\n                            }\r\n                            if (keyValue.Name == \"WMSbaseUrl\")\r\n                            {\r\n                                Settings.WMSbaseUrl = 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                            if (keyValue.Name == \"MESbaseUrl\")\r\n                            {\r\n                                Settings.MESbaseUrl = keyValue.Value.ToString();\r\n                            }\r\n                            if (keyValue.Name == \"WMSbaseUrl\")\r\n                            {\r\n                                Settings.WMSbaseUrl = 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": [],
@@ -412,8 +412,8 @@
      "Type": "ClassCode",
      "Level": "Item",
      "Statement": "public class HttpHelper",
      "EditCode": "public string Post(string url, string postData, string contentType = \"application/json\", string sessionId = \"\") {\r\n    Console.WriteLine(url);\r\n    WebRequest request = WebRequest.Create(url);\r\n    request.Method = \"POST\";\r\n    byte[] byteArray = Encoding.UTF8.GetBytes(postData);\r\n    request.ContentType = contentType;\r\n    request.ContentLength = byteArray.Length;\r\n    request.Timeout = 3000;\r\n    if (sessionId != \"\") {\r\n        request.Headers.Set(\"ASP.NET_SessionId\", sessionId);\r\n    }\r\n    StreamReader reader = null;\r\n    Stream stream = null;\r\n    WebResponse rsp = null;\r\n    try {\r\n        stream = request.GetRequestStream();\r\n        stream.Write(byteArray, 0, byteArray.Length);\r\n        stream.Close();\r\n        rsp = request.GetResponse();\r\n        stream = rsp.GetResponseStream();\r\n        reader = new StreamReader(stream);\r\n        return reader.ReadToEnd();\r\n    }\r\n    catch (Exception ex) {\r\n        Console.WriteLine($\"{url} err={ex.Message}\");\r\n        return \"\";\r\n    }\r\n    finally {\r\n        // é‡Šæ”¾èµ„源\r\n        if (reader != null) reader.Close();\r\n        if (stream != null) stream.Close();\r\n        if (rsp != null) rsp.Close();\r\n    }\r\n\r\n}",
      "Code": "public class HttpHelper\r\n{public string Post(string url, string postData, string contentType = \"application/json\", string sessionId = \"\") {\r\n    Console.WriteLine(url);\r\n    WebRequest request = WebRequest.Create(url);\r\n    request.Method = \"POST\";\r\n    byte[] byteArray = Encoding.UTF8.GetBytes(postData);\r\n    request.ContentType = contentType;\r\n    request.ContentLength = byteArray.Length;\r\n    request.Timeout = 3000;\r\n    if (sessionId != \"\") {\r\n        request.Headers.Set(\"ASP.NET_SessionId\", sessionId);\r\n    }\r\n    StreamReader reader = null;\r\n    Stream stream = null;\r\n    WebResponse rsp = null;\r\n    try {\r\n        stream = request.GetRequestStream();\r\n        stream.Write(byteArray, 0, byteArray.Length);\r\n        stream.Close();\r\n        rsp = request.GetResponse();\r\n        stream = rsp.GetResponseStream();\r\n        reader = new StreamReader(stream);\r\n        return reader.ReadToEnd();\r\n    }\r\n    catch (Exception ex) {\r\n        Console.WriteLine($\"{url} err={ex.Message}\");\r\n        return \"\";\r\n    }\r\n    finally {\r\n        // é‡Šæ”¾èµ„源\r\n        if (reader != null) reader.Close();\r\n        if (stream != null) stream.Close();\r\n        if (rsp != null) rsp.Close();\r\n    }\r\n\r\n}\r\n}",
      "EditCode": "public string Post(string url, string postData, string contentType = \"application/json\", string sessionId = \"\") {\r\n    Console.WriteLine(url);\r\n    WebRequest request = WebRequest.Create(url);\r\n    request.Method = \"POST\";\r\n    byte[] byteArray = Encoding.UTF8.GetBytes(postData);\r\n    request.ContentType = contentType;\r\n    request.ContentLength = byteArray.Length;\r\n    request.Timeout = 3000;\r\n    if (sessionId != \"\") {\r\n        request.Headers.Set(\"ASP.NET_SessionId\", sessionId);\r\n    }\r\n    \r\n            //Authorization: UApGP6WW9FsBUqAlzxRGOw ==\r\n            request.Headers.Set(\"Authorization\", \"UApGP6WW9FsBUqAlzxRGOw==\");\r\n    StreamReader reader = null;\r\n    Stream stream = null;\r\n    WebResponse rsp = null;\r\n    try {\r\n        stream = request.GetRequestStream();\r\n        stream.Write(byteArray, 0, byteArray.Length);\r\n        stream.Close();\r\n        rsp = request.GetResponse();\r\n        stream = rsp.GetResponseStream();\r\n        reader = new StreamReader(stream);\r\n        return reader.ReadToEnd();\r\n    }\r\n    catch (Exception ex) {\r\n        Console.WriteLine($\"{url} err={ex.Message}\");\r\n        return \"\";\r\n    }\r\n    finally {\r\n        // é‡Šæ”¾èµ„源\r\n        if (reader != null) reader.Close();\r\n        if (stream != null) stream.Close();\r\n        if (rsp != null) rsp.Close();\r\n    }\r\n\r\n}",
      "Code": "public class HttpHelper\r\n{public string Post(string url, string postData, string contentType = \"application/json\", string sessionId = \"\") {\r\n    Console.WriteLine(url);\r\n    WebRequest request = WebRequest.Create(url);\r\n    request.Method = \"POST\";\r\n    byte[] byteArray = Encoding.UTF8.GetBytes(postData);\r\n    request.ContentType = contentType;\r\n    request.ContentLength = byteArray.Length;\r\n    request.Timeout = 3000;\r\n    if (sessionId != \"\") {\r\n        request.Headers.Set(\"ASP.NET_SessionId\", sessionId);\r\n    }\r\n    \r\n            //Authorization: UApGP6WW9FsBUqAlzxRGOw ==\r\n            request.Headers.Set(\"Authorization\", \"UApGP6WW9FsBUqAlzxRGOw==\");\r\n    StreamReader reader = null;\r\n    Stream stream = null;\r\n    WebResponse rsp = null;\r\n    try {\r\n        stream = request.GetRequestStream();\r\n        stream.Write(byteArray, 0, byteArray.Length);\r\n        stream.Close();\r\n        rsp = request.GetResponse();\r\n        stream = rsp.GetResponseStream();\r\n        reader = new StreamReader(stream);\r\n        return reader.ReadToEnd();\r\n    }\r\n    catch (Exception ex) {\r\n        Console.WriteLine($\"{url} err={ex.Message}\");\r\n        return \"\";\r\n    }\r\n    finally {\r\n        // é‡Šæ”¾èµ„源\r\n        if (reader != null) reader.Close();\r\n        if (stream != null) stream.Close();\r\n        if (rsp != null) rsp.Close();\r\n    }\r\n\r\n}\r\n}",
      "CusMethod": {
        "Name": "",
        "Params": [],
@@ -626,9 +626,30 @@
        "InheritClass": "",
        "Inherits": []
      }
    },
    {
      "ID": "20250531152402452",
      "Name": "ToWMSMES",
      "Desc": "",
      "ParentID": "",
      "Type": "ClassCode",
      "Level": "Item",
      "Statement": "public class ToWMSMES",
      "EditCode": "//2 wms  mes \r\n\r\n\r\n        public class CreateTask\r\n        {\r\n            public string taskType { get; set; }\r\n            public string startBit { get; set; }\r\n            public string endBit { get; set; }\r\n            public string reqCode { get; set; }\r\n            public string cntrCode { get; set; }\r\n\r\n            internal static ReturnMsg CreatemesTask(CreateTask model)\r\n            {\r\n                ITaskRepository taskservice = new TaskRepository();\r\n                var task = taskservice.FindEntity(x => x.S_TASK_NO == model.reqCode);\r\n                if (task == null)\r\n                {\r\n                    //var i = TaskProcess.CreateTask(\"\", model.startBit, model.endBit, string.IsNullOrEmpty(model.taskType) ? \"Mes下发\" : model.taskType, 5, new List<string> { model.cntrCode });\r\n                    TaskEntity wmsTask = new TaskEntity()\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_TASK_NO = model.reqCode,\r\n                        S_START_LAREA = \"\",\r\n                        S_END_LAREA = \"\",\r\n                        S_DEPART_NAME = \"\",\r\n                        S_START_LOC = model.startBit,\r\n                        S_END_LOC = model.endBit,\r\n                        S_TYPE = model.reqCode,\r\n                        S_SRC_NO = \"\",//\r\n                        N_PRIORITY = -1,\r\n                        S_WORK_MODE = \"agv\",\r\n                        S_B_STATE = \"MES\",\r\n                        S_CNTRS = model.cntrCode,\r\n                        N_START_LAYER = 1,\r\n                        N_END_LAYER = 1,\r\n                        N_CNTR_COUNT = 1\r\n                    };\r\n                    ITaskRepository taskserice = new TaskRepository();\r\n                    var i = taskserice.Insert(wmsTask) > 0;\r\n                    return new ReturnMsg { resultCode = (i ? 0 : -1), resultMsg = i ? \"\" : \"任务生成失败。\" };\r\n                }\r\n                else\r\n                {\r\n                    return new ReturnMsg { resultCode = -1, resultMsg = \"任务重复下发。\" };\r\n                }\r\n            }\r\n        }\r\n        public class ReturnMsg\r\n        {\r\n            public int resultCode { get; set; }\r\n            public string resultMsg { get; set; }\r\n        }\r\n        \r\n        \r\n        public static void ResMesTask()\r\n        {\r\n            ///1.\r\n            TaskRepository taskservice = new TaskRepository();\r\n            var tasks = taskservice.FindList(x => x.S_B_STATE == \"MES\" && x.N_PRIORITY == -88);\r\n            var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains(\"捷瞬抓臂\"));\r\n            if (VERXs.Any())\r\n                foreach (var task in tasks)\r\n                {\r\n                    var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));\r\n                    if (sx == null)\r\n                    {\r\n                        //直接生成对应任务。\r\n                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS.Split(',').ToList());\r\n                        if (res)\r\n                        {\r\n                            //task.N_PRIORITY = 0;\r\n                            taskservice.dbcontext.Set<TaskEntity>().Attach(task);\r\n                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;\r\n                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;\r\n                            taskservice.dbcontext.SaveChanges();\r\n                        }\r\n                    }\r\n                    else\r\n                    {\r\n                        LocRepository locRepository = new LocRepository();\r\n                        //生成跳跃任务。  -- æ‰˜ç›˜è´§ä½è¡¨ã€‚ \r\n                        var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);\r\n                        if (t1s.Any())\r\n                        {\r\n                            var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();\r\n                            if (t1.S_END_LOC == task.S_END_LOC)\r\n                            {\r\n                                task.N_PRIORITY = 0;\r\n                                task.S_B_STATE = \"MES_完成\";\r\n                                taskservice.Update(task);\r\n                            }\r\n                            if (t1.S_B_STATE == \"完成\")\r\n                            {\r\n                                //1.终点是否有托盘。 ä¾æ®æ˜¯ç»ˆç‚¹çš„任务是 ä½œä¸ºç»ˆç‚¹ï¼Œè¿˜æ˜¯èµ·ç‚¹ã€‚\r\n                                var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($\"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC\");\r\n\r\n                                if (ec != null && ec.S_END_LOC == task.S_END_LOC)\r\n                                {\r\n                                    //上次是入库任务。 åˆ™å‡ºåº“。 å¦åˆ™è¿›è¡ŒäºŒæ®µã€‚ \r\n                                    LocEntity endLoc = null;\r\n                                    var di = sx;\r\n                                    if (di != null)\r\n                                    {\r\n                                        foreach (var ssloc in di.deviceNo)\r\n                                        {\r\n                                            var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);\r\n                                            if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == \"无\")\r\n                                            {\r\n                                                endLoc = endloc;\r\n                                                break;\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null)\r\n                                        {\r\n                                            var res = TaskProcess.CreateTask(\"\", task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + \"下空\", 7, t1.S_CNTRS.Split(',').ToList());\r\n                                            if (res)\r\n                                            {\r\n                                                task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                }\r\n                                else\r\n                                {\r\n                                    var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + \"补满\", 6, task.S_CNTRS.Split(',').ToList());\r\n                                    if (res)\r\n                                    {\r\n                                        task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        else\r\n                        {\r\n                            //生成第一段。\r\n                            LocEntity endLoc = null;\r\n                            var di = sx;\r\n                            if (di != null)\r\n                            {\r\n                                foreach (var ssloc in di.deviceNo)\r\n                                {\r\n                                    var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);\r\n                                    if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == \"无\")\r\n                                    {\r\n                                        endLoc = endloc;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                                if (endLoc != null)\r\n                                {\r\n                                    var res = TaskProcess.CreateTask(\"\", task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + \"满转\", 8, task.S_CNTRS.Split(',').ToList());\r\n                                    if (res)\r\n                                    {\r\n                                        task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    }\r\n                }\r\n            //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains(\"捷瞬抓臂\"));\r\n            //if ()\r\n            ///2  çœ‹ç¼“存区。 æ²¡æ»¡çš„。\r\n\r\n\r\n        }\r\n        \r\n        ",
      "Code": "public class ToWMSMES\r\n{//2 wms  mes \r\n\r\n\r\n        public class CreateTask\r\n        {\r\n            public string taskType { get; set; }\r\n            public string startBit { get; set; }\r\n            public string endBit { get; set; }\r\n            public string reqCode { get; set; }\r\n            public string cntrCode { get; set; }\r\n\r\n            internal static ReturnMsg CreatemesTask(CreateTask model)\r\n            {\r\n                ITaskRepository taskservice = new TaskRepository();\r\n                var task = taskservice.FindEntity(x => x.S_TASK_NO == model.reqCode);\r\n                if (task == null)\r\n                {\r\n                    //var i = TaskProcess.CreateTask(\"\", model.startBit, model.endBit, string.IsNullOrEmpty(model.taskType) ? \"Mes下发\" : model.taskType, 5, new List<string> { model.cntrCode });\r\n                    TaskEntity wmsTask = new TaskEntity()\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_TASK_NO = model.reqCode,\r\n                        S_START_LAREA = \"\",\r\n                        S_END_LAREA = \"\",\r\n                        S_DEPART_NAME = \"\",\r\n                        S_START_LOC = model.startBit,\r\n                        S_END_LOC = model.endBit,\r\n                        S_TYPE = model.reqCode,\r\n                        S_SRC_NO = \"\",//\r\n                        N_PRIORITY = -1,\r\n                        S_WORK_MODE = \"agv\",\r\n                        S_B_STATE = \"MES\",\r\n                        S_CNTRS = model.cntrCode,\r\n                        N_START_LAYER = 1,\r\n                        N_END_LAYER = 1,\r\n                        N_CNTR_COUNT = 1\r\n                    };\r\n                    ITaskRepository taskserice = new TaskRepository();\r\n                    var i = taskserice.Insert(wmsTask) > 0;\r\n                    return new ReturnMsg { resultCode = (i ? 0 : -1), resultMsg = i ? \"\" : \"任务生成失败。\" };\r\n                }\r\n                else\r\n                {\r\n                    return new ReturnMsg { resultCode = -1, resultMsg = \"任务重复下发。\" };\r\n                }\r\n            }\r\n        }\r\n        public class ReturnMsg\r\n        {\r\n            public int resultCode { get; set; }\r\n            public string resultMsg { get; set; }\r\n        }\r\n        \r\n        \r\n        public static void ResMesTask()\r\n        {\r\n            ///1.\r\n            TaskRepository taskservice = new TaskRepository();\r\n            var tasks = taskservice.FindList(x => x.S_B_STATE == \"MES\" && x.N_PRIORITY == -88);\r\n            var VERXs = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains(\"捷瞬抓臂\"));\r\n            if (VERXs.Any())\r\n                foreach (var task in tasks)\r\n                {\r\n                    var sx = VERXs?.Find(x => x.location.Contains(task.S_END_LOC));\r\n                    if (sx == null)\r\n                    {\r\n                        //直接生成对应任务。\r\n                        var res = TaskProcess.CreateTask(task.S_TASK_NO, task.S_START_LOC, task.S_END_LOC, task.S_TYPE, 6, task.S_CNTRS.Split(',').ToList());\r\n                        if (res)\r\n                        {\r\n                            //task.N_PRIORITY = 0;\r\n                            taskservice.dbcontext.Set<TaskEntity>().Attach(task);\r\n                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).CurrentValue = 0;\r\n                            taskservice.dbcontext.Entry(task).Property(x => x.N_PRIORITY).IsModified = true;\r\n                            taskservice.dbcontext.SaveChanges();\r\n                        }\r\n                    }\r\n                    else\r\n                    {\r\n                        LocRepository locRepository = new LocRepository();\r\n                        //生成跳跃任务。  -- æ‰˜ç›˜è´§ä½è¡¨ã€‚ \r\n                        var t1s = taskservice.FindList(x => x.S_SRC_NO == task.S_TASK_NO);\r\n                        if (t1s.Any())\r\n                        {\r\n                            var t1 = t1s.OrderBy(x => x.T_CREATE).LastOrDefault();\r\n                            if (t1.S_END_LOC == task.S_END_LOC)\r\n                            {\r\n                                task.N_PRIORITY = 0;\r\n                                task.S_B_STATE = \"MES_完成\";\r\n                                taskservice.Update(task);\r\n                            }\r\n                            if (t1.S_B_STATE == \"完成\")\r\n                            {\r\n                                //1.终点是否有托盘。 ä¾æ®æ˜¯ç»ˆç‚¹çš„任务是 ä½œä¸ºç»ˆç‚¹ï¼Œè¿˜æ˜¯èµ·ç‚¹ã€‚\r\n                                var ec = taskservice.FindList(x => (x.S_START_LOC == task.S_START_LOC || x.S_END_LOC == task.S_END_LOC) /*&& DateTime.Now.Subtract(x.T_CREATE).TotalHours < 5*/).OrderByDescending(x => x.T_CREATE).FirstOrDefault();//($\"select top 1 * from TN_TASK WHERE S_START_LOC='{task.S_END_LOC}' OR S_END_LOC='{task.S_END_LOC}' ORDER BY T_CREATE DESC\");\r\n\r\n                                if (ec != null && ec.S_END_LOC == task.S_END_LOC)\r\n                                {\r\n                                    //上次是入库任务。 åˆ™å‡ºåº“。 å¦åˆ™è¿›è¡ŒäºŒæ®µã€‚ \r\n                                    LocEntity endLoc = null;\r\n                                    var di = sx;\r\n                                    if (di != null)\r\n                                    {\r\n                                        foreach (var ssloc in di.deviceNo)\r\n                                        {\r\n                                            var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);\r\n                                            if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == \"无\")\r\n                                            {\r\n                                                endLoc = endloc;\r\n                                                break;\r\n                                            }\r\n                                        }\r\n                                        if (endLoc != null)\r\n                                        {\r\n                                            var res = TaskProcess.CreateTask(\"\", task.S_END_LOC, endLoc.S_LOC_CODE, task.S_TYPE + \"下空\", 7, t1.S_CNTRS.Split(',').ToList());\r\n                                            if (res)\r\n                                            {\r\n                                                task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                            }\r\n                                        }\r\n                                    }\r\n                                }\r\n                                else\r\n                                {\r\n                                    var res = TaskProcess.CreateTask(task.S_TASK_NO, t1.S_END_LOC, task.S_END_LOC, task.S_TYPE + \"补满\", 6, task.S_CNTRS.Split(',').ToList());\r\n                                    if (res)\r\n                                    {\r\n                                        task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n                        else\r\n                        {\r\n                            //生成第一段。\r\n                            LocEntity endLoc = null;\r\n                            var di = sx;\r\n                            if (di != null)\r\n                            {\r\n                                foreach (var ssloc in di.deviceNo)\r\n                                {\r\n                                    var endloc = locRepository.FindEntity(x => x.S_LOC_CODE == ssloc);\r\n                                    if (endloc != null && endloc.N_CURRENT_NUM == 0 && endloc.S_LOCK_STATE == \"无\")\r\n                                    {\r\n                                        endLoc = endloc;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                                if (endLoc != null)\r\n                                {\r\n                                    var res = TaskProcess.CreateTask(\"\", task.S_START_LOC, endLoc.S_LOC_CODE, task.S_TYPE + \"满转\", 8, task.S_CNTRS.Split(',').ToList());\r\n                                    if (res)\r\n                                    {\r\n                                        task.N_PRIORITY = 0; taskservice.Update(task);\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                    }\r\n                }\r\n            //var VERX = Settings.deviceInfos?.FindAll(x => x.deviceName.Contains(\"捷瞬抓臂\"));\r\n            //if ()\r\n            ///2  çœ‹ç¼“存区。 æ²¡æ»¡çš„。\r\n\r\n\r\n        }\r\n        \r\n        \r\n}",
      "CusMethod": {
        "Name": "",
        "Params": [],
        "ReturnType": ""
      },
      "CusClass": {
        "Name": "ToWMSMES",
        "InheritClass": "",
        "Inherits": []
      }
    }
  ],
  "CreationTime": "2025-02-26 15:31:23",
  "LastWriteTime": "2025-04-18 10:41:31",
  "LastWriteTime": "2025-05-31 17:56:35",
  "HasSaved": true
}
S7/Scripts/Script.json
@@ -966,6 +966,81 @@
          "FullName": "业务逻辑.任务下发",
          "ParentFullName": "业务逻辑",
          "Enabled": "Enabled"
        },
        {
          "ID": "20250531163653189",
          "Name": "处理线程",
          "Desc": "",
          "Content": "",
          "ContentCopy": "",
          "ParentID": "20250226153120175",
          "Children": [
            {
              "ID": "20250531163716255",
              "Name": "ResolveMesTask",
              "Desc": "",
              "Content": "",
              "ContentCopy": "",
              "ParentID": "20250531163653189",
              "Children": [],
              "Type": "Program",
              "Property": {
                "SyncExec": "False",
                "RepeatExec": "Until",
                "ExceCount": 1,
                "ExceInternal": 3000,
                "StartCondition": {
                  "Type": "View",
                  "Event": "",
                  "Expression": "",
                  "Judge": "",
                  "Command": {},
                  "HmiEvent": {
                    "20250306140515428": [
                      "Open"
                    ]
                  }
                },
                "EndCondition": {
                  "Type": "None",
                  "Event": "",
                  "Expression": "",
                  "Judge": "",
                  "Command": {},
                  "HmiEvent": {}
                }
              },
              "FullName": "业务逻辑.处理线程.ResolveMesTask",
              "ParentFullName": "业务逻辑.处理线程",
              "Enabled": "Enabled"
            }
          ],
          "Type": "Group",
          "Property": {
            "SyncExec": "False",
            "RepeatExec": "None",
            "ExceCount": 1,
            "ExceInternal": 3000,
            "StartCondition": {
              "Type": "None",
              "Event": "",
              "Expression": "",
              "Judge": "",
              "Command": {},
              "HmiEvent": {}
            },
            "EndCondition": {
              "Type": "None",
              "Event": "",
              "Expression": "",
              "Judge": "",
              "Command": {},
              "HmiEvent": {}
            }
          },
          "FullName": "业务逻辑.处理线程",
          "ParentFullName": "业务逻辑",
          "Enabled": "Enabled"
        }
      ],
      "Type": "Group",
@@ -1032,6 +1107,6 @@
    }
  ],
  "CreationTime": "2025-02-26 15:31:20",
  "LastWriteTime": "2025-04-17 09:48:04",
  "LastWriteTime": "2025-05-31 16:38:12",
  "HasSaved": true
}
S7/Static/config.json
@@ -1,54 +1,56 @@
{
    "HostToAgvServerUrl": "vvvvvvvvvvvv",
    "HKbaseUrl": "http://10.221.55.249:8181/",
    "deviceInfo": [
      {
        "address": "0",
        "deviceName": "维希尔抓臂1",
        "deviceNo": [],
        "location": [ "VXR1L", "VXR1R" ],
        "deviceType": 1,
        "enable": 1
      },
        {
            "address": "0",
            "deviceName": "维希尔抓臂2",
            "deviceNo": [],
            "location": [ "踢踢踢" ],
            "deviceType": 1,
            "enable": 1
        },
        {
            "address": "0",
            "deviceName": "捷瞬输送1",
            "deviceNo": [],
            "location": [ "踢踢踢" ],
            "deviceType": 3,
            "enable": 1
        },
        {
            "address": "0",
            "deviceName": "捷瞬输送2",
            "deviceNo": [],
            "location": [ "踢踢踢" ],
            "deviceType": 3,
            "enable": 1
        },
        {
            "address": "0",
            "deviceName": "捷瞬抓臂1",
            "deviceNo": [],
            "location": [ "踢踢踢" ],
            "deviceType": 2,
            "enable": 1
        },
        {
            "address": "0",
            "deviceName": "捷瞬抓臂2",
            "deviceNo": [],
            "location": [ "踢踢踢" ],
            "deviceType": 2,
            "enable": 1
        }
    ]
  "HostToAgvServerUrl": "vvvvvvvvvvvv",
  "HKbaseUrl": "http://10.221.55.249:8181/",
  "MESbaseUrl": "http://10.80.2.45:32630/",
  "WMESbaseUrl": "http://10.80.2.45:32630/",
  "deviceInfo": [
    {
      "address": "0",
      "deviceName": "维希尔抓臂1",
      "deviceNo": [],
      "location": [ "VXR1L", "VXR1R" ],
      "deviceType": 1,
      "enable": 1
    },
    {
      "address": "0",
      "deviceName": "维希尔抓臂2",
      "deviceNo": [],
      "location": [ "踢踢踢" ],
      "deviceType": 1,
      "enable": 1
    },
    {
      "address": "0",
      "deviceName": "捷瞬输送1",
      "deviceNo": [],
      "location": [ "踢踢踢" ],
      "deviceType": 3,
      "enable": 1
    },
    {
      "address": "0",
      "deviceName": "捷瞬输送2",
      "deviceNo": [],
      "location": [ "踢踢踢" ],
      "deviceType": 3,
      "enable": 1
    },
    {
      "address": "0",
      "deviceName": "捷瞬抓臂1",
      "deviceNo": [],
      "location": [ "踢踢踢" ],
      "deviceType": 2,
      "enable": 1
    },
    {
      "address": "0",
      "deviceName": "捷瞬抓臂2",
      "deviceNo": [],
      "location": [ "踢踢踢" ],
      "deviceType": 2,
      "enable": 1
    }
  ]
}