From 28f223131f9b42769aa5204877aa0d972e169d41 Mon Sep 17 00:00:00 2001 From: hwh <332078369@qq.com> Date: 星期三, 11 九月 2024 16:49:15 +0800 Subject: [PATCH] 空取货和满放货逻辑 --- Admin.NET/WCS.Application/PLC/PLCService.cs | 124 ++++++++++++++++++++++++++++++++++++++++- 1 files changed, 121 insertions(+), 3 deletions(-) diff --git a/Admin.NET/WCS.Application/PLC/PLCService.cs b/Admin.NET/WCS.Application/PLC/PLCService.cs index 26c39e3..3ebf90d 100644 --- a/Admin.NET/WCS.Application/PLC/PLCService.cs +++ b/Admin.NET/WCS.Application/PLC/PLCService.cs @@ -4,8 +4,10 @@ using Furion.Logging; using IoTClient; using Microsoft.AspNetCore.SignalR; +using Qiniu.Storage; using RazorEngine.Compilation.ImpromptuInterface.Dynamic; using SKIT.FlurlHttpClient.Wechat.TenpayV3.ExtendedSDK.Global.Models; +using System; using System.Data; using System.Reflection.Emit; @@ -143,7 +145,7 @@ .SetColumns(s => s.Status == TaskStatusEnum.Doing) .Where(s => s.Id == modTask.Id) .ExecuteCommand(); - + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); WcsTaskMonitor modInsertTaskMonitor; if (string.IsNullOrEmpty(taskInfo.EndStation)) { @@ -338,7 +340,7 @@ modTask.Status = TaskStatusEnum.Complete; modTask.FinishDate = DateTime.Now; _db.Updateable(modTask).ExecuteCommand(); - + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); var modcTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, @@ -516,12 +518,128 @@ break; case "843": { - + //绌哄彇璐у紓甯� + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); + var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + if (!result.IsSucceed) + break; + string taskNo = Convert.ToString(TaskNo); + var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing); + if (modTask == null) + { + Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}"); + break; + } + var res = plcConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "844"); + if (!res.IsSucceed) + break; + modTask.Status = TaskStatusEnum.Exception; + _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand(); + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿绌哄彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}"); + var modTaskRequest = modTask.Adapt<TaskRequest>(); + HttpService httpService = new HttpService(); + var modResponseTask = httpService.RequestEmptyException(modTaskRequest).Result; + if (modResponseTask.StatusCode == "0") + { + //璇锋眰鎴愬姛 + modTask.IsSuccess = TaskSuccessEnum.Success; + _db.Updateable(modTask).UpdateColumns(s => s.IsSuccess).ExecuteCommand(); + //涓嬪彂浠诲姟鏃ュ織 + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + } + else + { + //璇锋眰澶辫触 + modTask.IsSuccess = TaskSuccessEnum.Fail; + modTask.Information = modResponseTask.Message; + _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand(); + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + } } break; case "861": { + //婊℃斁璐у紓甯� + var modPosTask = modDevice.listStation.FirstOrDefault(s => s.Text == "浠诲姟鍙�"); + var modPosPalletNo = modDevice.listStation.FirstOrDefault(s => s.Text == "鎵樼洏鍙�"); + var (result, TaskNo) = plcConn.GetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos); + if (!result.IsSucceed) + break; + string taskNo = Convert.ToString(TaskNo); + var modTask = _db.Queryable<WcsTask>().First(s => s.TaskNo == taskNo && s.Status == TaskStatusEnum.Doing); + if (modTask == null) + { + Log.Error($"銆愬爢鍨涙満銆戝綋鍓嶄换鍔″彿涓嶅瓨鍦ㄥ搴旂殑浠诲姟锛屼换鍔″彿锛歿modTask.TaskNo}"); + break; + } + modTask.Status = TaskStatusEnum.Exception; + _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand(); + _taskLogHubContext.Clients.All.PublicTask(modTask.Adapt<WcsTaskOutput>()); + Log.Information($"銆愬爢鍨涙満銆憌cs浠诲姟鍙樻洿婊″彇寮傚父锛屼换鍔″彿锛歿modTask.TaskNo}"); + var modTaskRequest = modTask.Adapt<TaskRequest>(); + HttpService httpService = new HttpService(); + var modResponseTask = httpService.RequestFullException(modTaskRequest).Result; + if (modResponseTask.StatusCode == "0") + { + //淇敼浠诲姟涓烘鍦ㄦ墽琛� + modTask.Status = TaskStatusEnum.Doing; + _db.Updateable(modTask).UpdateColumns(s => s.Status).ExecuteCommand(); + // 璧峰鎺掑垪灞� + var modPosRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鎺�"); + var modPosColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣鍒�"); + var modPosStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鍙栬揣灞�"); + // 鐩爣鏀捐揣宸ヤ綅 + var modPosEndRow = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鎺�"); + var modPosEndColumn = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣鍒�"); + var modPosEndStorey = modDevice.listStation.FirstOrDefault(s => s.Text == "鏀捐揣灞�"); + string endLocat = modResponseTask.TaskList.EndLocate; + string row = int.Parse(endLocat.Substring(0, 2)).ToString(); + string column = int.Parse(endLocat.Substring(2, 2)).ToString(); + string storey = int.Parse(endLocat.Substring(4, 2)).ToString(); + // 缁橮LC鍐欏叆浠诲姟鏁版嵁 + var listResult = new List<Result>(); + // 浠诲姟鍙锋墭鐩樺彿 + listResult.Add(plcConn.SetPlcDBValue(modPosTask.PosType, modDevice.DbNumber, modPosTask.PlcPos, modTask.TaskNo)); + listResult.Add(plcConn.SetPlcDBValue(modPosPalletNo.PosType, modDevice.DbNumber, modPosPalletNo.PlcPos, modTask.PalletNo)); + // 璧峰鎺掑垪灞� + listResult.Add(plcConn.SetPlcDBValue(modPosRow.PosType, modDevice.DbNumber, modPosRow.PlcPos, "2")); + listResult.Add(plcConn.SetPlcDBValue(modPosColumn.PosType, modDevice.DbNumber, modPosColumn.PlcPos, "100")); + listResult.Add(plcConn.SetPlcDBValue(modPosStorey.PosType, modDevice.DbNumber, modPosStorey.PlcPos, "1")); + listResult.Add(plcConn.SetPlcDBValue(modPosEndRow.PosType, modDevice.DbNumber, modPosEndRow.PlcPos, row)); + listResult.Add(plcConn.SetPlcDBValue(modPosEndColumn.PosType, modDevice.DbNumber, modPosEndColumn.PlcPos, column)); + listResult.Add(plcConn.SetPlcDBValue(modPosEndStorey.PosType, modDevice.DbNumber, modPosEndStorey.PlcPos, storey)); + // 鏄惁鍐欏叆鎴愬姛 + if (listResult.All(s => s.IsSucceed)) + { + // 鍚戣泛鏈哄啓鍏ユ帶鍒舵祦绋嬪瓧 + var res = modDevice.PLCUtil.SetPlcDBValue(modDevice.PosType, modDevice.WcsPos, "862"); + var modcTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + PlcId = modDevice.Id, + PlcName = modDevice.Text, + PalletNo = modTask.PalletNo, + Status = TaskStatusEnum.Complete, + StartLocat = modDevice.StationNum, + EndLocat = endLocat, + InteractiveMsg = $"鍐欏叆鎸囦护锛歿modDevice.StationNum}宸ヤ綅====銆�" + endLocat + "鍌ㄤ綅鍦板潃!" + }; + // 鎻掑叆浜や簰鏃ュ織 + _db.Insertable(modcTaskMonitor).ExecuteCommand(); + //涓嬪彂浠诲姟鏃ュ織 + _taskLogHubContext.Clients.All.PublicTaskMonitor(modcTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + } + + } + //else + //{ + // //璇锋眰澶辫触 + // modTask.IsSuccess = TaskSuccessEnum.Fail; + // modTask.Information = modResponseTask.Message; + // _db.Updateable(modTask).UpdateColumns(s => new { s.IsSuccess, s.Information }).ExecuteCommand(); + //} } break; default: -- Gitblit v1.8.0