From 413194b8c6a71fea8cb7a567800b11703c6c7d5a Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期三, 11 六月 2025 14:40:05 +0800 Subject: [PATCH] 添加叠托机业务 --- Admin.NET/WCS.Application/OpenApi/OpenApi.cs | 537 ++++++++++++++++++++++------------------------------------- 1 files changed, 203 insertions(+), 334 deletions(-) diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs index 7652479..c6a068c 100644 --- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs @@ -1,22 +1,9 @@ -锘縰sing DocumentFormat.OpenXml.Presentation; -using Elastic.Clients.Elasticsearch; +锘縰sing Admin.NET.Core.Service; using Furion.DatabaseAccessor; using Furion.Logging; -using NewLife.Serialization; -using Newtonsoft.Json; -using System; -using System.Diagnostics.CodeAnalysis; -using System.Linq; -using System.Text; using WCS.Application.Entity; -using Microsoft.AspNetCore.Mvc; -using Admin.NET.Core.Service; -using DocumentFormat.OpenXml.Bibliography; -using AngleSharp.Common; -using AngleSharp.Text; -using Newtonsoft.Json.Linq; -using SqlSugar; -using NewLife.Reflection; +using WCS.Application.Util; +using static SKIT.FlurlHttpClient.Wechat.Api.Models.ComponentTCBBatchCreateContainerServiceVersionRequest.Types; namespace WCS.Application; @@ -42,7 +29,59 @@ _taskService = taskService; } - // <summary> + /// <summary> + /// 娴嬭瘯鍒嗛厤浠诲姟璺緞 + /// </summary> + /// <param name="models">浠诲姟淇℃伅</param> + /// <returns>鍙嶉淇℃伅</returns> + [AllowAnonymous] + public async Task<ResponseAgvDto> AddAssignTasks(AgvTaskSend models) + { + + var response = await new HttpService().GenAgvSendTask(models); + //var response2 = await new HttpService().GenAgvContinueTask("Tk20250503000001"); + //var response3 = await new HttpService().GenAgvUnbind("models", "B010101"); + return response; + // 楠岃瘉浠诲姟鏄惁宸插瓨鍦� + //var taskInfo = await _db.Queryable<WcsTask>().FirstAsync(w => w.TaskNo == models.TaskNo); + //if (taskInfo == null) + //{ + // throw Oops.Bah("浠诲姟:" + models.TaskNo + ";涓嶅瓨鍦�!"); + //} + //var data1 = FourWayCarUtil.GetCarPath("091501", "091601","0"); + //if (data1 == null) //|| data1.Count == 0 + //{ + // throw Oops.Bah("鍒嗛厤璺緞涓嶅瓨鍦�!"); + //} + + //// 鏍规嵁浠诲姟鐘舵�� 琛ュ厖璧峰缁撴潫鑺傜偣鐘舵�� + //var data2 = FourWayCarUtil.GetCarPathUp(data1, 0); + //var path = ""; + //var executionPath1 = ""; + //foreach (var item in data1) + //{ + // //璺緞鑺傜偣 + // var pathXYZ = item.X.ToString().PadLeft(2, '0') + item.Y.ToString().PadLeft(2, '0') + item.Z.ToString().PadLeft(2, '0') + item.NodeCom.ToString(); + // path += pathXYZ + ";"; + // if (item.IsSendPlc) + // { + // executionPath1 += pathXYZ + ";"; + // } + //} + //// 鎻掑叆鍥涘悜杞︿换鍔¤〃 + //var carTask1 = new WcsCarTasks() + //{ + // TaskNo = taskInfo.TaskNo, + // PreId = "", + // ExecutionPath = executionPath1, + // Path = path, + // CarNo = "", + // Status = TaskStatusEnum.Wait + //}; + //var i = _db.Insertable(carTask1).ExecuteCommand(); + //Console.WriteLine(""+i); + } + /// WCS鎺ュ彈WMS涓嬪彂鐨勪换鍔�(澶� /// 鏉′换鍔�) /// <param name="models">浠诲姟淇℃伅</param> @@ -60,7 +99,8 @@ throw Oops.Bah("浠诲姟宸插瓨鍦�!"); } var listTask = new List<WcsTask>(); - foreach (var models in modelList) + var list = modelList.OrderBy(m => m.Order).ThenBy(m => m.TaskNo).ToList(); + foreach (var models in list) { if (models.TaskType == "0") { @@ -73,21 +113,32 @@ //鏂板浠诲姟 var taskAdd = new WcsTask() { - TaskNo = models.TaskNo, + TaskNo = models.TaskNo, TaskType = (TaskTypeEnum)Convert.ToInt32(models.TaskType), Type = models.Type, Status = TaskStatusEnum.Wait, Levels = 999, Origin = "WMS", + SkuNo = models.SkuNo, + SkuName=models.SkuName, + LotNo=models.LotNo, StartRoadway = models.StartRoadway, StartLocate = models.StartLocate, EndLocate = models.EndLocate, EndRoadway = models.EndRoadway, PalletNo = models.PalletNo, + CreateTime = DateTime.Now }; - listTask.Add(taskAdd); + + // 鑻ラ潪AGV浠诲姟澧炲姞浠诲姟ID + if (models.Type != PLCTypeEnum.AGV) + { + taskAdd.TaskId = FourWayCarUtil.GetTaskId(); + } + + await _db.Insertable(taskAdd).ExecuteCommandAsync(); } - await _db.Insertable(listTask).ExecuteCommandAsync(); + } /// <summary> /// WCS鎺ュ彈WMS涓嬪彂鐨勪换鍔�(鍗曟潯浠诲姟) @@ -115,16 +166,27 @@ var taskAdd = new WcsTask() { TaskNo = models.TaskNo, - TaskType = TaskTypeEnum.Out, + TaskType = (TaskTypeEnum?)int.Parse(models.TaskType), Status = TaskStatusEnum.Wait, + Type = models.Type, Levels = 999, Origin = "WMS", + SkuNo = models.SkuNo, + SkuName = models.SkuName, + LotNo = models.LotNo, StartRoadway = models.StartRoadway, StartLocate = models.StartLocate, EndLocate = models.EndLocate, EndRoadway = models.EndRoadway, PalletNo = models.PalletNo, }; + + // 鑻ラ潪AGV浠诲姟澧炲姞浠诲姟ID + if (models.Type != PLCTypeEnum.AGV) + { + taskAdd.TaskId = FourWayCarUtil.GetTaskId(); + } + await _db.Insertable(taskAdd).ExecuteCommandAsync(); } @@ -359,124 +421,29 @@ [UnitOfWork] public async Task<dynamic> agvCallback(AGVCallBackInput input) { + Log.Information("AGV鍙嶉浠诲姟" + input.ToJson()); AGVCallBackResponse result = new AGVCallBackResponse() { ReqCode = input.ReqCode, Message = "鎴愬姛", Code = "0" }; - if (input.TaskCode.Substring(0, 3) != "WCS" && input.TaskCode.Substring(0, 2) != "TK") + if (input.robotTaskCode.Substring(0, 3) != "WCS" && input.robotTaskCode.Substring(0, 2) != "TK") + { + result.Message = "鍙嶉鐨勪换鍔′笉鏄疻CS鐨勪换鍔�"; + result.Code = "1"; return result; + } PLCUtil modUtil = null; try { - var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.TaskCode); + var modTask = await _db.Queryable<WcsTask>().FirstAsync(s => s.TaskNo == input.robotTaskCode); if (modTask != null) { - switch (input.Method) + switch (input.Extra.Values.Method) { case "end"://浠诲姟瀹屾垚 { - PLCService.AGVStatus = false; - //鎶婃垚鍝佽揣鐗╂媺鍒扮紦瀛樺伐浣嶅悗锛屼笅涓�涓换鍔℃妸鎵樼洏鎷夊幓鎻愬崌鏈烘垨鑰呯紦瀛樺尯锛堜紭鍏堢骇浣庝竴鐐癸級 - if (modTask.EndLocate == AGVStaionEnum.C1.ToString() || modTask.EndLocate == AGVStaionEnum.C2.ToString()) - { - var strEndLocate = ""; - Enum.TryParse(await _sysConfigService.GetConfigValue<string>("workshop_Trend"), out WorkshopEnum workshop); - if (workshop == WorkshopEnum.Storage) - strEndLocate = AGVStaionEnum.A1.ToString(); - else - strEndLocate = AGVStorageUtil.GetProductInStorage(); - WcsTask modInsertTask = new WcsTask() - { - TaskNo = _taskService.GetTaskCode(), - TaskType = TaskTypeEnum.Move, - Type = PLCTypeEnum.AGV, - StartLocate = modTask.EndLocate,//缂撳瓨鍖� - EndLocate = strEndLocate, - PalletNo = modTask.PalletNo, - Status = TaskStatusEnum.Wait, - Levels = 6, - Origin = "WCS" - }; - await _db.Insertable(modInsertTask).ExecuteCommandAsync(); - HubUtil.PublicTask(modInsertTask.Adapt<WcsTaskOutput>()); - } - - //璐у搧鎷夊埌鐢垫鍙i渶瑕佸悜杈撻�佺嚎鍐欏叆100 - if (modTask.EndLocate == AGVStaionEnum.A1.ToString()) - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Text == "杈撻�佺嚎"); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.First(s => s.Text == "C鍙�"); - var modStation = PLCTaskAction.plcPositions.First(s => s.Text == "C鍙g敵璇峰叆搴�"); - var plcResult = modConn.SetPlcDBValue(modStation.PosType, modDevice.DbNumber, modStation.PlcPos, "100"); - if (plcResult.IsSucceed) - { - WcsTaskMonitor modTaskMonitorPLC = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modStation.PlcPos, - StartLocat = modTask.StartLocate, - EndLocat = modTask.EndLocate, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modStation.Text}鍐欏叆鎸囦护100锛岀粨鏋渰plcResult.IsSucceed}", - }; - _db.Insertable(modTaskMonitorPLC).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitorPLC.Adapt<WcsTaskMonitorOutput>()); - } - else - { - Log.Error("C鍙g敵璇峰叆搴撳啓鍏ュ��100澶辫触"); - } - } - //鏀惧叆鎷嗘墭鏈哄悗锛屽悜鎷嗘墭鏈哄啓鍏ュ畬鎴愪俊鍙� - if (modTask.EndLocate == AGVStaionEnum.D1.ToString()) - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.Text == "鎷嗘墭鏈�"); - var res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "0"); - var modTaskMonitorPLC = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modDevice.WcsPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆瀹屾垚淇″彿0锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitorPLC).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitorPLC.Adapt<WcsTaskMonitorOutput>()); - modConn.Close(); - } - //if (modTask.EndLocate == AGVStaionEnum.B1.ToString() || modTask.EndLocate == AGVStaionEnum.B2.ToString()) - //{ - // var num = modTask.EndLocate.Substring(1, 1); - // var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.RobotPalletizer && s.WareHouseNo == num); - // var modConn = new PLCUtil(modPlc); - // var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB); - // var res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos, "0"); - // var modTaskMonitorPLC = new WcsTaskMonitor() - // { - // TaskNo = modTask.TaskNo, - // PlcId = modDevice.PlcId, - // PlcName = modDevice.PlcPos, - // Status = TaskStatusEnum.Doing, - // InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鏀炬墭瀹屾垚淇″彿锛岀粨鏋渰res.IsSucceed}", - // }; - // _db.Insertable(modTaskMonitorPLC).ExecuteCommand(); - // HubUtil.PublicTaskMonitor(modTaskMonitorPLC.Adapt<WcsTaskMonitorOutput>()); - // modConn.Close(); - //} - if (modTask.EndLocate == AGVStaionEnum.F1.ToString()) - { - await _sysConfigService.UpdateConfigValue("cache_Materal", true); - } - if (modTask.StartLocate == AGVStaionEnum.F1.ToString()) - { - await _sysConfigService.UpdateConfigValue("cache_Materal", false); - } modTask.Status = TaskStatusEnum.Complete; modTask.FinishDate = DateTime.Now; await _db.Updateable(modTask).ExecuteCommandAsync(); @@ -493,201 +460,104 @@ await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + //鍙嶉WMS浠诲姟瀹屾垚 if (modTask.Origin == "WMS") { HttpService httpService = new HttpService(); var inputs = new TaskRequestWMS(); inputs.TaskNo = modTask.TaskNo; inputs.PalletNo = modTask.PalletNo; - inputs.TaskType = "2"; + inputs.TaskType = ((int)modTask.TaskType).ToString(); inputs.TaskStatus = "2"; var modResponseTask = httpService.RequestTask(inputs).Result; } - //鎵樼洏杩涘嚭缂撳瓨鍖� 闇�瑕佽褰� - if (new[] { "Z", "C" }.Contains(modTask.EndLocate.Substring(0, 1))) - { - await _sysConfigService.UpdateConfigValue($"cache_{modTask.EndLocate}", true); - } - if (new[] { "Z", "C" }.Contains(modTask.StartLocate.Substring(0, 1))) - { - await _sysConfigService.UpdateConfigValue($"cache_{modTask.StartLocate}", false); - } + } break; case "outbin"://璧板嚭鍌ㄤ綅 { - //鍙栫┖鎵樺畬鎴愬悗锛屽悜鎷嗘墭鏈哄啓鍏ュ畬鎴愪俊鍙� - if (modTask.StartLocate == AGVStaionEnum.D1.ToString() && (modTask.EndLocate == AGVStaionEnum.B1.ToString() || modTask.EndLocate == AGVStaionEnum.B2.ToString())) - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.Text == "鎷嗘墭鏈�"); - var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "鍙栨墭淇″彿"); - var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "0"); - WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍙栨墭淇″彿0锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "鍙栨墭瀹屾垚"); - res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "1"); - modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍙栨墭瀹屾垚1锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - modConn.Close(); - } - //todo:鍘荤爜鍨涘伐浣嶅彇璐у畬鎴愬悗锛岄渶瑕佸啓PLC淇″彿寮�鍚厜骞� - if ((modTask.StartLocate == AGVStaionEnum.B1.ToString() || modTask.StartLocate == AGVStaionEnum.B2.ToString()) - && (modTask.EndLocate == AGVStaionEnum.C1.ToString() || modTask.EndLocate == AGVStaionEnum.C2.ToString())) - { - var num = modTask.StartLocate.Substring(1, 1); - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.RobotPalletizer && s.WareHouseNo == num); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB); - var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "寮�鍚厜骞�"); - var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "1"); - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆寮�鍚厜骞�1锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - //鍐欏叆鍏夊箷0 - Task.Run(() => - { - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB); - var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "寮�鍚厜骞�"); - Thread.Sleep(1000); - var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "0"); - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆寮�鍚厜骞�0锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - }); - - //鍚戠爜鍨涙満鍣ㄤ汉鍐欏彇鎵樺畬鎴愪俊鍙� - modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.Station); - res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.PlcPos, "0"); - modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍙栨墭瀹屾垚淇″彿锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - modConn.Close(); - } - //璧峰宸ヤ綅鏄彁鍗囨満鍙栬揣宸ヤ綅 - if (modTask.StartLocate == AGVStaionEnum.A1.ToString()) - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.ConveyorLine); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Text == "C鍙�"); - var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "鍙栬蛋纭"); - var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "1"); - Log.Information($"鍚憄lc{modDevice.PlcId}鍐欏叆1-鍙栬蛋纭锛岀粨鏋滐細{res.ToJson()}"); - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍙栬蛋纭锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - } - } - break; - case "apply"://鏀捐揣鐢宠 - { - //todo:鍘荤爜鍨涘伐浣嶅彇璐э紝闇�瑕佸啓PLC淇″彿鍏抽棴鍏夊箷 - if ((modTask.StartLocate == AGVStaionEnum.B1.ToString() || modTask.StartLocate == AGVStaionEnum.B2.ToString()) - && (modTask.EndLocate == AGVStaionEnum.C1.ToString() || modTask.EndLocate == AGVStaionEnum.C2.ToString())) - { - var no = modTask.StartLocate.Substring(1, 1); - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.RobotPalletizer && s.WareHouseNo == no); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.PlcId == modPlc.Id && s.Level == DeviceLevelEnum.DB); - var modPos = PLCTaskAction.plcPositions.FirstOrDefault(s => s.DeviceId == modDevice.Id && s.Text == "鍏抽棴鍏夊箷"); - var res = modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "1"); - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆鍏抽棴鍏夊箷1锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - Task.Run(() => - { - Thread.Sleep(1000); - modConn.SetPlcDBValue(modPos.PosType, modDevice.DbNumber, modPos.PlcPos, "0"); - var modTaskMonitor = new WcsTaskMonitor() - { - TaskNo = modTask.TaskNo, - PlcId = modDevice.PlcId, - PlcName = modPos.PlcPos, - Status = TaskStatusEnum.Doing, - InteractiveMsg = $"鍚憑modDevice.Text}鍐欏叆寮�鍚厜骞�0锛岀粨鏋渰res.IsSucceed}", - }; - _db.Insertable(modTaskMonitor).ExecuteCommand(); - HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); - }); - modConn.Close(); - } - } - break; - case "start"://浠诲姟寮�濮� - { - //寮�濮嬪悜鎷嗘墭鏈烘斁鍏ユ墭鐩樹换鍔� - if (modTask.EndLocate == AGVStaionEnum.D1.ToString()) - { - var modPlc = PLCTaskAction.plcs.FirstOrDefault(s => s.Type == PLCTypeEnum.PalletMachine); - var modConn = new PLCUtil(modPlc); - var modDevice = PLCTaskAction.plcDevices.FirstOrDefault(s => s.Text == "鎷嗘墭鏈�"); - var res = modConn.SetPlcDBValue(modDevice.PosType, modDevice.DbNumber, modDevice.WcsPos, "1"); - modConn.Close(); - } - - var taskMonitor = new WcsTaskMonitor() + WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() { TaskNo = modTask.TaskNo, - PlcName = input.Method, - InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟寮�濮�" + //PlcId = modDevice.PlcId, + PlcName = "AGV", + StartLocat = modTask.StartLocate, + EndLocat = modTask.EndLocate, + Status = TaskStatusEnum.Complete, + InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍙栬揣瀹屾垚锛岃蛋鍑哄偍浣�", }; - await _db.Insertable(taskMonitor).ExecuteCommandAsync(); - HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>()); + await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); + //鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵�� + if (modTask.Origin == "WMS") + { + HttpService httpService = new HttpService(); + var inputs = new TaskRequestWMS(); + inputs.TaskNo = modTask.TaskNo; + inputs.PalletNo = modTask.PalletNo; + inputs.TaskType = ((int)modTask.TaskType).ToString(); + inputs.TaskStatus = "2"; + var modResponseTask = httpService.RequestTaskQh(inputs).Result; + } + } break; - case "cancel"://浠诲姟缁撴潫 + case "release"://鏀捐揣鐢宠 + { + if (modTask.EndLocate != "B040101")//9鍙峰伐浣嶅湴鍧� + { + result.Code = "1"; + result.Message = "鎵句笉鍒拌浠诲姟"; + return result; + } + //modTask.Status = TaskStatusEnum.Complete; + modTask.IsComple = "1"; + await _db.Updateable(modTask).ExecuteCommandAsync(); + WcsTaskMonitor modTaskMonitor = new WcsTaskMonitor() + { + TaskNo = modTask.TaskNo, + //PlcId = modDevice.PlcId, + PlcName = "AGV", + StartLocat = modTask.StartLocate, + EndLocat = modTask.EndLocate, + Status = TaskStatusEnum.Complete, + InteractiveMsg = $"AGV灏忚溅鍙嶉浠诲姟鍒拌揪9宸ヤ綅", + }; + await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + if (modTask.Origin == "WMS") + { + HttpService httpService = new HttpService(); + var inputs = new TaskRequestWMS(); + inputs.TaskNo = modTask.TaskNo; + inputs.PalletNo = modTask.PalletNo; + inputs.TaskType = ((int)modTask.TaskType).ToString(); + inputs.TaskStatus = "2"; + var modResponseTask = httpService.RequestTaskQh(inputs).Result; + } + } + break; + case "notifyFullSite": + { + var palletNo = input.Extra.Values.carrierCode; + var count = input.Extra.Values.pileCount; + if (string.IsNullOrWhiteSpace(palletNo) || count <= 0) + { + throw new Exception("鍙傛暟锛氭墭鐩樺彿/鏁伴噺楠岃瘉澶辫触"); + } + //鍚慦MS鐢宠绌烘墭鍏ュ簱 + HttpService httpService = new HttpService(); + var inputs = new NullPallInRequest(); + + inputs.PalletNo = modTask.PalletNo; + inputs.PallNum = count; + inputs.Locate = "B100101";//鍙犳墭鐩樻満浣嶇疆 + inputs.HouseNo = "W02"; + var modResponseTask = httpService.RequestLiKuPallet(inputs); + + } + break; + case "cancel"://浠诲姟鍙栨秷 { PLCService.AGVStatus = false; modTask.IsSuccess = TaskSuccessEnum.Fail; @@ -733,11 +603,10 @@ modUtil?.Close(); } - + Log.Information("AGV鍙嶉浠诲姟杩斿洖" + result.ToJson()); return result; } - - + /// <summary> /// 鑾峰彇鍘熸潗鏂欎粨鐘舵�� /// </summary> @@ -797,35 +666,35 @@ /// </summary> /// <param name="input"></param> /// <returns></returns> - [HttpPost] - [UnitOfWork] - public async Task ProductStorage(RequestStorage input) - { - var intProduct = AGVStorageUtil.ProductCount(); - var intTask = await _db.Queryable<WcsTask>().Where(s => s.TaskType == TaskTypeEnum.Move - && s.Type == PLCTypeEnum.AGV && s.Status <= TaskStatusEnum.Doing - && s.StartLocate.StartsWith("Z") && s.EndLocate == AGVStaionEnum.A1.ToString()).CountAsync(); - if (input.Qty > intProduct) - throw Oops.Bah($"杈撳叆鏁伴噺澶т簬鍙嚭鏁伴噺{intProduct}"); - var listTask = new List<WcsTask>(); - var TaskNo = GetTaskCode("WCS"); - for (int i = 0; i < input.Qty; i++) - { - listTask.Add(new WcsTask() - { - TaskNo = "WCS" + DateTime.Now.ToString("yyyyMMdd") + (TaskNo++).ToString().PadLeft(4, '0'), - TaskType = TaskTypeEnum.Move, - Type = PLCTypeEnum.AGV, - StartLocate = AGVStaionEnum.Z11.ToString(), - EndLocate = AGVStaionEnum.A1.ToString(), - PalletNo = "", - Status = TaskStatusEnum.Wait, - Levels = 10, - Origin = "PDA" - }); - } - await _db.Insertable(listTask).ExecuteCommandAsync(); - } + //[HttpPost] + //[UnitOfWork] + //public async Task ProductStorage(RequestStorage input) + //{ + // var intProduct = AGVStorageUtil.ProductCount(); + // var intTask = await _db.Queryable<WcsTask>().Where(s => s.TaskType == TaskTypeEnum.Move + // && s.Type == PLCTypeEnum.AGV && s.Status <= TaskStatusEnum.Doing + // && s.StartLocate.StartsWith("Z") && s.EndLocate == AGVStaionEnum.A1.ToString()).CountAsync(); + // if (input.Qty > intProduct) + // throw Oops.Bah($"杈撳叆鏁伴噺澶т簬鍙嚭鏁伴噺{intProduct}"); + // var listTask = new List<WcsTask>(); + // var TaskNo = GetTaskCode("WCS"); + // for (int i = 0; i < input.Qty; i++) + // { + // listTask.Add(new WcsTask() + // { + // TaskNo = "WCS" + DateTime.Now.ToString("yyyyMMdd") + (TaskNo++).ToString().PadLeft(4, '0'), + // TaskType = TaskTypeEnum.Move, + // Type = PLCTypeEnum.AGV, + // StartLocate = AGVStaionEnum.Z11.ToString(), + // EndLocate = AGVStaionEnum.A1.ToString(), + // PalletNo = "", + // Status = TaskStatusEnum.Wait, + // Levels = 10, + // Origin = "PDA" + // }); + // } + // await _db.Insertable(listTask).ExecuteCommandAsync(); + //} /// <summary> /// 鑷姩鐢熸垚浠诲姟鍙� /// </summary> -- Gitblit v1.8.0