From 5883a139074dd7493d9f0d776540f196d55d1034 Mon Sep 17 00:00:00 2001 From: chengsc <11752@DESKTOP-DS49RCP> Date: 星期五, 25 四月 2025 20:42:30 +0800 Subject: [PATCH] 添加分配下发任务方法 --- Admin.NET/WCS.Application/OpenApi/OpenApi.cs | 200 +++---------------------------------------------- 1 files changed, 14 insertions(+), 186 deletions(-) diff --git a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs index 7652479..62c9a4d 100644 --- a/Admin.NET/WCS.Application/OpenApi/OpenApi.cs +++ b/Admin.NET/WCS.Application/OpenApi/OpenApi.cs @@ -377,33 +377,8 @@ { 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 == "杈撻�佺嚎"); @@ -431,52 +406,6 @@ 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,6 +422,7 @@ await _db.Insertable(modTaskMonitor).ExecuteCommandAsync(); HubUtil.PublicTask(modTask.Adapt<WcsTaskOutput>()); HubUtil.PublicTaskMonitor(modTaskMonitor.Adapt<WcsTaskMonitorOutput>()); + //鍙嶉WMS浠诲姟瀹屾垚 if (modTask.Origin == "WMS") { HttpService httpService = new HttpService(); @@ -503,125 +433,23 @@ 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())) + //鍙嶉WMS浠诲姟鍙栬揣瀹屾垚銆乄MS鍒ゆ柇鏄钩搴撳偍浣嶅氨鏇存柊鍌ㄤ綅鐘舵�� + if (modTask.Origin == "WMS") { - 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(); + HttpService httpService = new HttpService(); + var inputs = new TaskRequestWMS(); + inputs.TaskNo = modTask.TaskNo; + inputs.PalletNo = modTask.PalletNo; + inputs.TaskType = "2"; + inputs.TaskStatus = "2"; + var modResponseTask = httpService.RequestTaskQh(inputs).Result; } - //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"://鏀捐揣鐢宠 @@ -687,7 +515,7 @@ HubUtil.PublicTaskMonitor(taskMonitor.Adapt<WcsTaskMonitorOutput>()); } break; - case "cancel"://浠诲姟缁撴潫 + case "cancel"://浠诲姟鍙栨秷 { PLCService.AGVStatus = false; modTask.IsSuccess = TaskSuccessEnum.Fail; -- Gitblit v1.8.0