From 7ab32aab1cfd8b71940ade95fa69aec0b95e95c3 Mon Sep 17 00:00:00 2001 From: liudl <673013083@qq.com> Date: 星期日, 16 二月 2025 16:36:40 +0800 Subject: [PATCH] Merge branch 'master' of http://47.95.120.53:8083/r/WCSNet6 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 35 ++++++ Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs | 170 ++++++++++++++++++++++++++++++++++ Admin.NET/WCS.Application/Util/HttpService.cs | 21 ++++ Admin.NET/WCS.Application/Model/TaskRequest.cs | 20 ++++ 4 files changed, 244 insertions(+), 2 deletions(-) diff --git a/Admin.NET/WCS.Application/Model/TaskRequest.cs b/Admin.NET/WCS.Application/Model/TaskRequest.cs index 3ae8e61..6945a70 100644 --- a/Admin.NET/WCS.Application/Model/TaskRequest.cs +++ b/Admin.NET/WCS.Application/Model/TaskRequest.cs @@ -568,3 +568,23 @@ public string FinishQty { get; set; } } + +public class PortModel +{ + /// <summary> + /// 鍏ュ簱鍙� + /// </summary> + public string Port { get; set; } +} + +public class PortRequestModel +{ + /// <summary> + /// 鍏ュ簱鍙� + /// </summary> + public string Port { get; set; } + /// <summary> + /// 浠诲姟鍙� + /// </summary> + public string TaskNo { get; set; } +} diff --git a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs index 67583ce..8890284 100644 --- a/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/DemoOpenApi.cs @@ -1,4 +1,5 @@ 锘縰sing Dm.filter; +using DocumentFormat.OpenXml.Drawing.Charts; using DocumentFormat.OpenXml.Presentation; using Elastic.Clients.Elasticsearch; using Furion.Logging; @@ -398,4 +399,173 @@ } } + + /// <summary> + /// WCS鎺ュ彈WMS鍏ュ簱鏀捐揣纭鎺ュ彛 + /// </summary> + /// <param name="models"></param> + /// <returns>鍙嶉淇℃伅</returns> + [HttpPost] + [AllowAnonymous] + public IsBaleModel2 HttpInConfirm(PortModel models) + { + + try + { + string str = JsonConvert.SerializeObject(models); + Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port+"鍏ュ簱鍙�"); + + var portno = ""; + switch (models.Port) + { + case "033": + portno = "33"; + break; + case "039": + portno = "39"; + break; + case "044": + portno = "44"; + break; + case "051": + portno = "51"; + break; + } + + //妫�娴嬪叆搴撳彛鐘舵�侊紝120涓哄彲鏀撅紝鍗犵敤鍒欎慨鏀逛负130 + + WcsDeviceDto mod = new WcsDeviceDto(); + var plcConn = mod.PLCUtil; + //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "PLC娴佺▼瀛�").First(); + + var (res1, val) = plcConn.GetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos); + if (val.ToString() == "120") + { + //璇诲彇鎴愬姛鍚庡啓鍏�130 + modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS娴佺▼瀛�").First(); + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "130");//鍗犵敤姝ゅ伐浣� + if (ret.IsSucceed) + { + //鍥炰紶WMS鍙斁淇″彿 + return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" }; + } + } + return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" }; + } + catch (Exception ex) + { + return new IsBaleModel2() { Success = -1, Message = ex.Message }; + } + } + + + /// <summary> + /// WCS鎺ュ彈WMS鍏ュ簱鏀捐揣璇锋眰鎺ュ彛 + /// </summary> + /// <param name="models"></param> + /// <returns>鍙嶉淇℃伅</returns> + [HttpPost] + [AllowAnonymous] + public IsBaleModel2 HttpInRequest(PortRequestModel models) + { + try + { + string str = JsonConvert.SerializeObject(models); + Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); + + var portno = ""; + switch (models.Port) + { + case "033": + portno = "33"; + break; + case "039": + portno = "39"; + break; + case "044": + portno = "44"; + break; + case "051": + portno = "51"; + break; + } + + WcsDeviceDto mod = new WcsDeviceDto(); + var plcConn = mod.PLCUtil; + //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s=>s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "浠诲姟鍙�").First(); + plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, models.TaskNo);//鍐欏叆浠诲姟鍙� + // + modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS娴佺▼瀛�").First(); + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "140");//鍐欏叆寮�濮嬫斁璐т俊鍙� + if (ret.IsSucceed) + { + //鍥炰紶WMS鏀捐揣淇″彿 + return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" }; + } + return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" }; + } + catch (Exception ex) + { + return new IsBaleModel2() { Success = -1, Message = ex.Message }; + } + } + + + + /// <summary> + /// WCS鎺ュ彈WMS灏忚溅鏀惧畬鎴愭帴鍙� + /// </summary> + /// <param name="models"></param> + /// <returns>鍙嶉淇℃伅</returns> + [HttpPost] + [AllowAnonymous] + public IsBaleModel2 HttpInFinish(PortModel models) + { + + try + { + string str = JsonConvert.SerializeObject(models); + Log.Information("鎺ユ敹WMS鍏ュ簱鏀捐揣纭锛屾斁璐у彛锛�" + models.Port + "鍏ュ簱鍙�"); + + var portno = ""; + switch (models.Port) + { + case "033": + portno = "33"; + break; + case "039": + portno = "39"; + break; + case "044": + portno = "44"; + break; + case "051": + portno = "51"; + break; + } + + WcsDeviceDto mod = new WcsDeviceDto(); + var plcConn = mod.PLCUtil; + //鑾峰彇宸ヤ綅鐐逛綅淇℃伅 + var listPlcDevice = _db.Queryable<WcsDevice>().Where(s => s.LedIP != null && s.StationNum == portno).First(); + var modDevice = _db.Queryable<WcsPosition>().Where(s => s.StationNum == portno && s.Text == "WCS娴佺▼瀛�").First(); + + var ret = plcConn.SetPlcDBValue(modDevice.PosType, listPlcDevice.DbNumber, modDevice.PlcPos, "160");//鏀惧畬鎴� + if (ret.IsSucceed) + { + //鍥炰紶WMS鏀捐揣淇″彿 + return new IsBaleModel2() { Success = 0, Message = "鎺ュ彈鎴愬姛" }; + } + return new IsBaleModel2() { Success = -1, Message = "璇诲彇PLC鐐逛綅淇℃伅澶辫触" }; + } + catch (Exception ex) + { + return new IsBaleModel2() { Success = -1, Message = ex.Message }; + } + } + } \ No newline at end of file diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index cce8b64..ac69156 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -1757,11 +1757,42 @@ { // 鑾峰彇宸ヤ綅浠诲姟鍙蜂俊鎭� var strMsg = ""; var http = new HttpService(); - var modPosPallet = modDevice.listStation.FirstOrDefault(m => m.Text == "鎵樼洏鐮�"); - var (res, palletVal) = plcConn.GetPlcDBValue(PLCDataTypeEnum.String, modDevice.DbNumber, modPosPallet.PlcPos); // 鑾峰彇鎵樼洏浠诲姟鍙� var modPosTask = modDevice.listStation.FirstOrDefault(m => m.Text == "浠诲姟鍙�"); var (res1, val) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + if (res1.IsSucceed) + { + string tasknoVal = val.ToString(); + var modTask = _db.Queryable<WcsTask>().First(m => m.Status == TaskStatusEnum.Doing && m.TaskNo == tasknoVal && m.IsDelete == false); + if (modTask == null) + { + //璇诲彇鎴愬姛鍚庡啓鍏�151 + var ret = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "151");//鏀跺埌鍙斁淇″彿鍚庡啓鍏�151 + if (ret.IsSucceed) + { + //鍥炰紶WMS鍙斁淇″彿 + strMsg = http.RequesContinueAgv(res1.ToString(),modTask.StationNum); + if (!strMsg.Contains("-1")) + { + // 鎻掑叆浠诲姟鏄庣粏 + var modInsertTaskMonitor = new WcsTaskMonitor() + { + PlcId = modDevice.Id, + PlcName = modDevice.Text, + InteractiveMsg = $"鍐欏叆鎸囦护151锛歿modDevice.StationNum}宸ヤ綅鍙帴鍙桝GV鏀捐揣鍏ュ簱", + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete, + StartLocat = modDevice.StationNum + }; + // 鎻掑叆浜や簰鏃ュ織 + _db.Insertable(modInsertTaskMonitor).ExecuteCommand(); + } + } + break; + } + } + // + } break; #endregion diff --git a/Admin.NET/WCS.Application/Util/HttpService.cs b/Admin.NET/WCS.Application/Util/HttpService.cs index fde3f28..7aa62f6 100644 --- a/Admin.NET/WCS.Application/Util/HttpService.cs +++ b/Admin.NET/WCS.Application/Util/HttpService.cs @@ -419,6 +419,8 @@ return result.Success.ToString(); } + + /// <summary> /// 璋冪敤WMS鎺ュ彛鍙嶉缂犺啘瀹屾垚 /// </summary> @@ -490,4 +492,23 @@ return result; } + + /// <summary> + /// 璋冪敤WMS鎺ュ彛鍙嶉AGV鍙斁淇″彿 + /// </summary> + /// <param name="taskno">浠诲姟鍙�</param> + /// <param name="port">宸ヤ綅鍙�</param> + /// <returns></returns> + public string RequesContinueAgv(string taskno,string port) + { + string url = Urls.WMSAddress + ":" + Urls.WMSPort; + var str = new + { + TaskNo = taskno, + Port = port + }; + var result = (url + "/api/DownAPi/AgcontinueTask").SetBody(str, "application/json", Encoding.UTF8).PostAsAsync<IsBaleModel>().Result; + Log.Information("璋冪敤WMS鎺ュ彛鍙嶉鎷嗚啘寮傚父鎺ュ彛" + result.ToJson()); + return result.Success.ToString(); + } } -- Gitblit v1.8.0