From 7f078e66be9959d94fc78344f195b7b4656812be Mon Sep 17 00:00:00 2001 From: dengjunjie <dengjunjie@hnkhzn.com> Date: 星期日, 29 十二月 2024 11:22:10 +0800 Subject: [PATCH] 任务表添加AGV任务号(AGV-年月日+任务号),修改测试架仓AGV交互逻辑 --- 代码管理/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs | 162 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 160 insertions(+), 2 deletions(-) diff --git "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs" "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs" index bf814b7..b4abb72 100644 --- "a/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs" +++ "b/\344\273\243\347\240\201\347\256\241\347\220\206/WCS/WIDESEAWCS_Server/WIDESEAWCS_Server/Controllers/AGVController.cs" @@ -1,8 +1,14 @@ 锘縰sing Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using WIDESEA_DTO.Agv; +using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; +using WIDESEAWCS_Core.Enums; +using WIDESEAWCS_Core.Helper; using WIDESEAWCS_IBasicInfoRepository; +using WIDESEAWCS_ITaskInfoRepository; +using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks; @@ -14,12 +20,147 @@ public class AGVController : ControllerBase { private readonly IStationMangerRepository _stationMangerRepository; + private readonly ITaskService _taskService; + private readonly ITaskRepository _taskRepository; - public AGVController(IStationMangerRepository stationMangerRepository) + public AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository) { _stationMangerRepository = stationMangerRepository; + _taskService = taskService; + _taskRepository = taskRepository; + } + /// <summary> + /// 瀹夊叏淇″彿鐢宠 AGV-WCS + /// </summary> + /// <param name="secureApplyModel"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("AgvSecureApply"), AllowAnonymous] + public AgvResponseContent AgvSecureApply([FromBody] AgvSecureApplyDTO secureApplyModel) + { + AgvResponseContent agvResponseContent = new AgvResponseContent(); + agvResponseContent.ReqCode = secureApplyModel.ReqCode; + try + { + var task = _taskRepository.QueryFirst(x => secureApplyModel.TaskCode.ObjToInt() == x.TaskNum); + if (task == null) throw new Exception("鏈壘鍒颁换鍔�"); + if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) + { + var content = TakeRequest(task.CurrentAddress); + if (!content.Status) + { + throw new Exception(content.Message); + } + } + else + { + var content = PutRequest(task.NextAddress, task.PalletType); + if (!content.Status) + { + throw new Exception(content.Message); + } + } + task.TaskState = TaskStatusEnum.AGV_WaitToExecute.ObjToInt(); + var up = _taskRepository.UpdateData(task); + agvResponseContent.Code = up ? "0" : "1"; + agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触"; + } + catch (Exception ex) + { + agvResponseContent.Code = "1"; + agvResponseContent.Message = ex.Message; + } + return agvResponseContent; + //return _taskService.AgvSecureApply(secureApplyModel); + } + /// <summary> + /// AGV浠诲姟鏇存柊/瀹屾垚 + /// </summary> + /// <param name="agvUpdateModel"></param> + /// <returns></returns> + [HttpPost, HttpGet, Route("AgvCallback"), AllowAnonymous] + public AgvResponseContent AgvUpdateTask([FromBody] AgvUpdateDTO agvUpdateModel) + { + AgvResponseContent agvResponseContent = new AgvResponseContent(); + try + { + if (agvUpdateModel == null) throw new Exception("鏈幏鍙栧埌璇锋眰鍙傛暟"); + agvResponseContent.ReqCode = agvUpdateModel.ReqCode; + var task = _taskRepository.QueryFirst(x => agvUpdateModel.TaskCode == x.AgvTaskNum); + if (task == null) throw new Exception($"鏈壘鍒颁换鍔�,浠诲姟鍙枫�恵agvUpdateModel.TaskCode}銆�"); + switch (agvUpdateModel.Method) + { + case "start": + break; + case "outbin"://鍑哄簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鍙栬揣瀹屾垚 + if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) + { + var content = TakeFinish(task.CurrentAddress); + if (!content.Status) throw new Exception(content.Message); + task.TaskState = TaskStatusEnum.AGV_Finish.ObjToInt(); + var up = _taskRepository.DeleteAndMoveIntoHty(task, OperateTypeEnum.鑷姩瀹屾垚); + _taskService.TaskCompleted(task.TaskNum); + agvResponseContent.Code = up ? "0" : "1"; + agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触"; + return agvResponseContent; + } + break; + case "getSafetySignal"://瀹夊叏淇″彿鐢宠 + { + if (task.TaskType == TaskTypeEnum.Outbound.ObjToInt()) + { + var content = TakeRequest(task.CurrentAddress); + if (!content.Status) throw new Exception(content.Message); + } + else + { + var content = PutRequest(task.NextAddress, task.PalletType); + if (!content.Status) throw new Exception(content.Message); + } + task.TaskState = TaskStatusEnum.AGV_WaitToExecute.ObjToInt(); + var up = _taskRepository.UpdateData(task); + agvResponseContent.Code = up ? "0" : "1"; + agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触"; + return agvResponseContent; + } + case "end"://鍏ュ簱鏍规嵁杩欎釜淇″彿鍒ゆ柇鏀捐揣瀹屾垚 + if (task.TaskType != TaskTypeEnum.Outbound.ObjToInt()) + { + var content = PutFinish(task.NextAddress); + if (!content.Status) throw new Exception(content.Message); + task.CurrentAddress = task.NextAddress; + task.NextAddress = ""; + task.TaskState = TaskStatusEnum.SC_Execute.ObjToInt(); + var up = _taskRepository.UpdateData(task); + agvResponseContent.Code = up ? "0" : "1"; + agvResponseContent.Message = up ? "鎴愬姛" : "澶辫触"; + return agvResponseContent; + } + break; + case "cancel": + task.TaskState = TaskStatusEnum.Cancel.ObjToInt(); + _taskRepository.UpdateData(task); + break; + default: + throw new Exception($"鏈畾涔夋柟娉曞悕銆恵agvUpdateModel.Method}銆�"); + } + agvResponseContent.Code = "0"; + agvResponseContent.Message = "鎴愬姛"; + } + catch (Exception ex) + { + agvResponseContent.Code = "1"; + agvResponseContent.Message = ex.Message; + } + return agvResponseContent; + //return _taskService.AgvUpdateTask(agvUpdateModel); } + /// <summary> + /// 鏀捐揣璇锋眰 + /// </summary> + /// <param name="code"></param> + /// <param name="palletType"></param> + /// <returns></returns> [HttpPost, HttpGet, Route("PutRequest"), AllowAnonymous] public WebResponseContent PutRequest(string code, int palletType) { @@ -46,7 +187,6 @@ else { otherDevice.SetValue(GroundStationDBName.W_PutRequest, true, stationManger.StationCode); - otherDevice.SetValue(GroundStationDBName.W_PutPalletType, (short)palletType, stationManger.StationCode); Thread.Sleep(1000); canPut = otherDevice.GetValue<GroundStationDBName, bool>(GroundStationDBName.R_IsCanPut, stationManger.StationCode); if (canPut) @@ -65,6 +205,12 @@ } } + //[HttpPost, HttpGet, Route("PutFinish"), AllowAnonymous] + /// <summary> + /// 鏀捐揣瀹屾垚 + /// </summary> + /// <param name="code"></param> + /// <returns></returns> [HttpPost, HttpGet, Route("PutFinish"), AllowAnonymous] public WebResponseContent PutFinish(string code) { @@ -92,6 +238,12 @@ } } + //[HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous] + /// <summary> + /// 鍙栬揣璇锋眰 + /// </summary> + /// <param name="code"></param> + /// <returns></returns> [HttpPost, HttpGet, Route("TakeRequest"), AllowAnonymous] public WebResponseContent TakeRequest(string code) { @@ -136,6 +288,12 @@ } } + //[HttpPost, HttpGet, Route("TakeFinish"), AllowAnonymous] + /// <summary> + /// 鍙栬揣瀹屾垚 + /// </summary> + /// <param name="code"></param> + /// <returns></returns> [HttpPost, HttpGet, Route("TakeFinish"), AllowAnonymous] public WebResponseContent TakeFinish(string code) { -- Gitblit v1.9.3