From d06e44eb1c8818c8d19709602631eb7888d4f0e9 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期二, 06 五月 2025 08:53:01 +0800 Subject: [PATCH] 修改程序,AGV交互 --- Admin.NET/WCS.Application/OpenApi/OpenApi.cs | 205 ++++++++++++++++++--------------------------------- 1 files changed, 72 insertions(+), 133 deletions(-) diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs index c394ccf..cdf71f7 100644 --- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs @@ -34,24 +34,29 @@ /// <param name="models">浠诲姟淇℃伅</param> /// <returns>鍙嶉淇℃伅</returns> [AllowAnonymous] - public async Task AddAssignTasks(ResponseTasksModel models) + public async Task<ResponseAgvDto> AddAssignTasks(AgvTaskSend models) { - // 楠岃瘉浠诲姟鏄惁宸插瓨鍦� - var taskInfo = await _db.Queryable<WcsTask>().FirstAsync(w => w.TaskNo == models.TaskNo); - if (taskInfo == null) - { - throw Oops.Bah("浠诲姟:" + models.TaskNo + ";涓嶅瓨鍦�!"); - } - var data1 = FourWayCarUtil.GetCarPath("090501", "080501","0"); - if (data1 == null) //|| data1.Count == 0 - { - throw Oops.Bah("鍒嗛厤璺緞涓嶅瓨鍦�!"); - } - // 鏍规嵁浠诲姟鐘舵�� 琛ュ厖璧峰缁撴潫鑺傜偣鐘舵�� - var data2 = FourWayCarUtil.GetCarPathUp(data1, 0); - var path = ""; - var executionPath1 = ""; + 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) //{ // //璺緞鑺傜偣 @@ -425,35 +430,6 @@ { case "end"://浠诲姟瀹屾垚 { - - //璐у搧鎷夊埌瀵嗛泦搴撳叆搴撳彛闇�瑕佸悜杈撻�佺嚎鍐欏叆鍊� - 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澶辫触"); - } - } modTask.Status = TaskStatusEnum.Complete; modTask.FinishDate = DateTime.Now; await _db.Updateable(modTask).ExecuteCommandAsync(); @@ -477,14 +453,14 @@ var inputs = new TaskRequestWMS(); inputs.TaskNo = modTask.TaskNo; inputs.PalletNo = modTask.PalletNo; - inputs.TaskType = "2"; + inputs.TaskType = modTask.TaskType.ToString(); inputs.TaskStatus = "2"; var modResponseTask = httpService.RequestTask(inputs).Result; } } break; - case "outbin"://璧板嚭鍌ㄤ綅 + case "admin"://璧板嚭鍌ㄤ綅 { //鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵�� if (modTask.Origin == "WMS") @@ -500,67 +476,31 @@ } break; - case "apply"://鏀捐揣鐢宠 + case "continue"://鏀捐揣鐢宠 { - //todo:鍘荤爜鍨涘伐浣嶅彇璐э紝闇�瑕佸啓PLC淇″彿鍏抽棴鍏夊箷 - if ((modTask.StartLocate == AGVStaionEnum.B1.ToString() || modTask.StartLocate == AGVStaionEnum.B2.ToString()) - && (modTask.EndLocate == AGVStaionEnum.C1.ToString() || modTask.EndLocate == AGVStaionEnum.C2.ToString())) + if (modTask.EndLocate != "B010101")//9鍙峰伐浣嶅湴鍧� { - 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(); + result.Code = "1"; + result.Message = "鎵句笉鍒拌浠诲姟"; + return result; } - } - 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() + modTask.Status = TaskStatusEnum.Complete; + modTask.IsComple = "1"; + await _db.Updateable(modTask).ExecuteCommandAsync(); + 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灏忚溅鍙嶉浠诲姟鍒拌揪9宸ヤ綅", }; - await _db.Insertable(taskMonitor).ExecuteCommandAsync(); - HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>()); + await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); + HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); + HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + } break; case "cancel"://浠诲姟鍙栨秷 @@ -612,8 +552,7 @@ return result; } - - + /// <summary> /// 鑾峰彇鍘熸潗鏂欎粨鐘舵�� /// </summary> @@ -673,35 +612,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