using 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; namespace WIDESEAWCS_Server.Controllers { [Route("api/[controller]")] [ApiController] public class PP_AGVController : ControllerBase { private readonly IStationMangerRepository _stationMangerRepository; private readonly ITaskService _taskService; private readonly ITaskRepository _taskRepository; public PP_AGVController(IStationMangerRepository stationMangerRepository, ITaskService taskService, ITaskRepository taskRepository) { _stationMangerRepository = stationMangerRepository; _taskService = taskService; _taskRepository = taskRepository; } /// /// AGV任务更新/完成 /// /// /// [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 && agvUpdateModel.Method != "begin") throw new Exception($"未找到任务,任务号【{agvUpdateModel.TaskCode}】"); switch (agvUpdateModel.Method) { case "start": break; case "begin": break; case "outbin"://出库根据这个信号判断取货完成 if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) { 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"://安全信号申请 { break; } case "end"://入库根据这个信号判断放货完成 if (task.TaskType != TaskTypeEnum.Outbound.ObjToInt()) { 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 "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); } } }