using AngleSharp.Io; using AutoMapper; using LogLibrary.Log; using Newtonsoft.Json; using System.Threading.Tasks; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_DTO.AGV; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_IBasicInfoRepository; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks.ConveyorLineJob; using TaskStatus = WIDESEAWCS_DTO.AGV.TaskStatus; namespace WIDESEAWCS_Tasks.AGV { public class ESSSignal:IESSSignal { private readonly ITaskRepository _taskRepository; private readonly ITask_HtyRepository _taskhtyRepository; private readonly ITaskService _taskService; private readonly IDt_StationManagerRepository _stationManagerRepository; private readonly IMapper _mapper; public ESSSignal(ITaskRepository taskRepository, ITaskService taskService,IDt_StationManagerRepository stationManagerRepository,ITask_HtyRepository taskhtyRepository, IMapper mapper) { _taskRepository = taskRepository; _taskService = taskService; _stationManagerRepository = stationManagerRepository; _taskhtyRepository = taskhtyRepository; _mapper = mapper; } #region ESS任务状态回调 /// /// ESS任务状态回调 /// /// public WebResponseContent TaskStatusCallback(StatusCallbackRequest result) { WebResponseContent content = new WebResponseContent(); try { var task = _taskRepository.QueryFirst(t => t.TaskNum == Convert.ToInt32(result.TaskCode)); if (task == null) { return content.Error("未找到任务"); } switch (result.EventType) { case EventType.tote_load: content.OK(); break; case EventType.tote_unload: content.OK(); break; case EventType.robot_reach: content.OK(); break; case EventType.task: content = RobotTaskStatusCallback(result, task); break; case EventType.task_allocated: _taskService.UpdateTaskStatusToNext(task.TaskNum); break; //case 20: // content = RequestPickUp(task, commonConveyorLine, elevator); // break; //case 21: // content = PickUpFinish(task, commonConveyorLine, elevator); // break; //case 22: // content = RequestPut(task, commonConveyorLine, elevator); // break; //case 8: // content = PutFinish(task, commonConveyorLine, elevator); // break; default: content.Error($"未知的事件类型: {result.EventType}"); break; } return content; } catch (Exception ex) { return content.Error(ex.Message); } } public WebResponseContent RobotTaskStatusCallback(StatusCallbackRequest result,Dt_Task task) { WebResponseContent content = new WebResponseContent(); try { switch (result.Status) { case TaskStatus.cancel: _taskService.UpdateTaskStatusToNext(task.TaskNum); break; case TaskStatus.success: break; case TaskStatus.suspend: break; default: break; } content.OK(); } catch (Exception ex) { content.Error(ex.Message); } return content; } #endregion #region ESS任务状态回调 ///// ///// 放货完成 ///// ///// ///// //public WebResponseContent PutFinish(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) //{ // WebResponseContent content = new WebResponseContent(); // try // { // if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry) // { // if (task.Floor == "1F") // { // elevator.SetValue(ElevatorDBName.OneLayerPutFinish, 1); // } // else // { // elevator.SetValue(ElevatorDBName.TwoLayerPutFinish, 1); // } // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // else if (task.TaskState == (int)TaskAcrossFloorStatusEnum.EndAddressExecuting) // { // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.CarryGroup) // { // _taskService.UpdateTaskStatusToNext(task.TaskNum); // } // if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.RelocationGroup) // { // _taskService.UpdateTaskStatusToNext(task.TaskNum); // } // if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup) // { // if (task.TaskState == (int)TaskOutStatusEnum.AGV_OutExecuting) // { // _taskService.UpdateTaskStatusToNext(task.TaskNum); // } // } // else if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup) // { // commonConveyorLine.SetValue(ConveyorLineDBName.PutFinish, 1, "LK001"); // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // } // catch (Exception ex) // { // content.Error(ex.Message); // } // return content; //} ///// ///// 取货完成 ///// ///// ///// //public WebResponseContent PickUpFinish(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) //{ // WebResponseContent content = new WebResponseContent(); // try // { // if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry) // { // if (task.Floor == "1F") // { // elevator.SetValue(ElevatorDBName.OneLayerPickUpFinish, 1); // } // else // { // elevator.SetValue(ElevatorDBName.TwoLayerPickUpFinish, 1); // } // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup) // { // commonConveyorLine.SetValue(ConveyorLineDBName.PickUpFinish, 1, "LK001"); // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // } // catch (Exception ex) // { // content.Error(ex.Message); // } // return content; //} ///// ///// 请求取货 ///// ///// ///// //public WebResponseContent RequestPickUp(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) //{ // WebResponseContent content = new WebResponseContent(); // try // { // if (task.TaskState == (int)TaskAcrossFloorStatusEnum.SecondCarry) // { // if (task.Floor == "1F") // { // if (elevator.GetValue(ElevatorDBName.OneLayerAllowPickUp) == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPickUp"; // _taskRepository.UpdateData(task); // content.Error("设备不允许取货"); // } // } // else // { // if (elevator.GetValue(ElevatorDBName.TwoLayerAllowPickUp) == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPickUp"; // _taskRepository.UpdateData(task); // content.Error("设备不允许取货"); // } // } // } // if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.OutbondGroup) // { // if (commonConveyorLine.GetValue(ConveyorLineDBName.AllowPickUp, "LK001") == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // _taskService.UpdateTaskStatusToNext(task.TaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPickUp"; // _taskRepository.UpdateData(task); // content.Error("设备不允许取货"); // } // } // } // catch (Exception ex) // { // task.AGVSign = "RequestPickUp"; // _taskRepository.UpdateData(task); // content.Error(ex.Message); // } // return content; //} ///// ///// 请求放货 ///// ///// ///// //public WebResponseContent RequestPut(Dt_Task task, CommonConveyorLine commonConveyorLine, CommonElevator elevator) //{ // WebResponseContent content = new WebResponseContent(); // try // { // if (task.TaskState == (int)TaskAcrossFloorStatusEnum.FirstCarry) // { // if (task.Floor == "1F") // { // if (elevator.GetValue(ElevatorDBName.OneLayerAllowPut) == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPut"; // _taskRepository.UpdateData(task); // content.Error("设备不允许放货"); // } // } // else // { // if (elevator.GetValue(ElevatorDBName.TwoLayerAllowPut) == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPut"; // _taskRepository.UpdateData(task); // content.Error("设备不允许放货"); // } // } // } // if (task.TaskState.GetTaskStateGroup() == TaskStateGroup.InboundGroup) // { // if (commonConveyorLine.GetValue(ConveyorLineDBName.AllowPut, "LK001") == 1) // { // _taskService.ContinueAgvTask(task.AGVTaskNum); // content.OK(); // } // else // { // task.AGVSign = "RequestPut"; // _taskRepository.UpdateData(task); // content.Error("设备不允许取货"); // } // } // } // catch (Exception ex) // { // task.AGVSign = "RequestPut"; // _taskRepository.UpdateData(task); // content.Error(ex.Message); // } // return content; //} #endregion } }