| | |
| | | using WIDESEAWCS_Core; |
| | | using WIDESEAWCS_DTO.AGV; |
| | | using WIDESEAWCS_ITaskInfoRepository; |
| | | using WIDESEAWCS_ITaskInfoService; |
| | | using WIDESEAWCS_Model.Models; |
| | | using WIDESEAWCS_QuartzJob; |
| | | using WIDESEAWCS_Tasks; |
| | | using WIDESEAWCS_Tasks.AGV; |
| | | using WIDESEAWCS_Tasks.ConveyorLineJob; |
| | | using WIDESEAWCS_Tasks.ElevatorJob; |
| | | |
| | |
| | | public class AGVController : ControllerBase |
| | | { |
| | | private readonly ITaskRepository _taskRepository; |
| | | private readonly ITaskService _taskService; |
| | | private readonly IAGVSignal _signal; |
| | | |
| | | public AGVController(ITaskRepository taskRepository) |
| | | public AGVController(ITaskRepository taskRepository,ITaskService taskService,IAGVSignal signal) |
| | | { |
| | | _taskRepository = taskRepository; |
| | | _taskService = taskService; |
| | | _signal = signal; |
| | | } |
| | | |
| | | /// <summary> |
| | |
| | | /// </summary> |
| | | /// <param name="receiveDTO"></param> |
| | | /// <returns></returns> |
| | | [HttpPost, Route("AGVStatusReport"), AllowAnonymous] |
| | | public WebResponseContent AGVStatusReport(AGVReceiveDTO receiveDTO) => SignalInteraction(receiveDTO); |
| | | |
| | | #region AGVä¸è®¾å¤ä¿¡å·äº¤äº |
| | | |
| | | /// <summary> |
| | | /// AGV--设å¤äº¤äº |
| | | /// </summary> |
| | | /// <returns></returns> |
| | | public WebResponseContent SignalInteraction(AGVReceiveDTO receiveDTO) |
| | | [HttpPost, HttpGet,Route("AGVStatusReport"), AllowAnonymous] |
| | | public WebResponseContent AGVStatusReport([FromBody] AGVReceiveDTO receiveDTO) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | var task = _taskRepository.QueryFirst(t => t.TaskNum == receiveDTO.TaskNum); |
| | | if (task == null) |
| | | { |
| | | return content.Error("æªæ¾å°ä»»å¡"); |
| | | } |
| | | MethodInfo? method = GetType().GetMethod(receiveDTO.Status); |
| | | if (method != null) |
| | | { |
| | | CommonConveyorLine? commonConveyorLine = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.DeviceCode) as CommonConveyorLine; |
| | | CommonElevator? elevator = Storage.Devices.FirstOrDefault(x => x.DeviceCode == task.DeviceCode) as CommonElevator; |
| | | if (elevator == null && commonConveyorLine == null) |
| | | return content.Error("æªæ¾å°è®¾å¤"); |
| | | else |
| | | return content = (WebResponseContent)method.Invoke(this, new object[] { task, commonConveyorLine, elevator }); |
| | | |
| | | } |
| | | else |
| | | { |
| | | throw new Exception($"æªæ¾å°è¯¥ç¶æ{receiveDTO.Status}å®ä¹"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | return content.Error(ex.Message); |
| | | } |
| | | return _signal.SignalInteraction(receiveDTO); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// æ¾è´§å®æ |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent PutFinish(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | { |
| | | elevator.SetValue(ElevatorDBName.OneLayerPutFinish, 1); |
| | | elevator.SetValue(ElevatorDBName.StartCommand, 1); |
| | | content.OK(); |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) |
| | | { |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | { |
| | | elevator.SetValue(ElevatorDBName.TwoLayerPutFinish, 1); |
| | | elevator.SetValue(ElevatorDBName.StartCommand, 1); |
| | | content.OK(); |
| | | } |
| | | else |
| | | { |
| | | commonConveyorLine.SetValue(ConveyorLineDBName.PutFinish, 1, "101"); |
| | | commonConveyorLine.SetValue(ConveyorLineDBName.ConveyorLineTaskNum, 9990, "101"); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("ä»»å¡ç¶æå¼å¸¸"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// åè´§å®æ |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent PickUpFinish(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | { |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | { |
| | | elevator.SetValue(ElevatorDBName.TwoLayerPutFinish, 1); |
| | | elevator.SetValue(ElevatorDBName.StartCommand, 1); |
| | | content.OK(); |
| | | } |
| | | else |
| | | { |
| | | commonConveyorLine.SetValue(ConveyorLineDBName.PutFinish, 1, "101"); |
| | | content.OK(); |
| | | } |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) |
| | | { |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | { |
| | | elevator.SetValue(ElevatorDBName.OneLayerPutFinish, 1); |
| | | elevator.SetValue(ElevatorDBName.StartCommand, 1); |
| | | content.OK(); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("ä»»å¡ç¶æå¼å¸¸"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 请æ±åè´§ |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent RequestPickUp(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | { |
| | | int AllowPickUp = 0; |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | AllowPickUp = elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPickUp); |
| | | else |
| | | AllowPickUp = commonConveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.AllowPickUp, "101"); |
| | | |
| | | content = AllowPickUp == 1 ? content.OK() : content.Error("设å¤ä¸å
许åè´§"); |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) |
| | | { |
| | | int AllowPickUp = 0; |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | AllowPickUp = elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPickUp); |
| | | |
| | | content = AllowPickUp == 1 ? content.OK() : content.Error("设å¤ä¸å
许åè´§"); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("ä»»å¡ç¶æå¼å¸¸"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// è¯·æ±æ¾è´§ |
| | | /// </summary> |
| | | /// <param name="task"></param> |
| | | /// <returns></returns> |
| | | public WebResponseContent RequestPut(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) |
| | | { |
| | | WebResponseContent content = new WebResponseContent(); |
| | | try |
| | | { |
| | | if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.OutbondGroup) |
| | | { |
| | | int AllowPickUp = 0; |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | AllowPickUp = elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.OneLayerAllowPut); |
| | | |
| | | content = AllowPickUp == 1 ? content.OK() : content.Error("设å¤ä¸å
许æ¾è´§"); |
| | | |
| | | } |
| | | else if (task.TaskType.GetTaskTypeGroup() == TaskTypeGroup.InboundGroup) |
| | | { |
| | | int AllowPickUp = 0; |
| | | if (task.DeviceCode.Contains("TSJ")) |
| | | AllowPickUp = elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.TwoLayerAllowPut); |
| | | else |
| | | AllowPickUp = commonConveyorLine.GetValue<ConveyorLineDBName, short>(ConveyorLineDBName.AllowPut, "101"); |
| | | |
| | | content = AllowPickUp == 1 ? content.OK() : content.Error("设å¤ä¸å
许æ¾è´§"); |
| | | } |
| | | else |
| | | { |
| | | throw new Exception("ä»»å¡ç¶æå¼å¸¸"); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | content.Error(ex.Message); |
| | | } |
| | | return content; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | } |
| | | } |