using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; using WIDESEAWCS_Common.TaskEnum; using WIDESEAWCS_Core; using WIDESEAWCS_ITaskInfoRepository; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_TaskInfoRepository; using WIDESEAWCS_TaskInfoService; using WIDESEAWCS_Tasks.ElevatorJob; namespace WIDESEAWCS_Server.Controllers.Task { [Route("/api/Elevator")] [ApiController] public class ElevatorController : ControllerBase { private readonly ITaskService _taskService; private readonly ITaskRepository _taskRepository; public ElevatorController(ITaskService taskService, ITaskRepository taskRepository) { _taskService = taskService; _taskRepository = taskRepository; } /// /// 停止 /// /// [HttpPost, HttpGet, Route("stopElevator"), AllowAnonymous] public WebResponseContent StopElevator() { WebResponseContent content = new WebResponseContent(); try { CommonElevator? commonElevator = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ1") as CommonElevator; if (commonElevator != null) { commonElevator.SetValue(ElevatorDBName.StopElevator, 1); Thread.Sleep(1000); commonElevator.SetValue(ElevatorDBName.StopElevator, 0); return content.OK("提升机停止成功"); } return content.Error("失败"); } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 初始化提升机 /// /// [HttpPost, HttpGet, Route("initialization"), AllowAnonymous] public WebResponseContent initialzationElevator() { WebResponseContent content = new WebResponseContent(); try { CommonElevator? elevator = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ1") as CommonElevator; if (elevator != null) { elevator.SetValue(ElevatorDBName.StopElevator, 1); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.StopElevator, 0); Thread.Sleep(1000); //获取提升机状态的显示 =0无状态;=1运行中;=2待机;=3报警 if (elevator.GetValue(ElevatorDBName.ElevatorStatus) == 2) { //获取提升机手动/自动切换开关状态 if (elevator.GetValue(ElevatorDBName.ManualAutoSwitch) == 1) { //获取提升机是否能允许初始化 if (elevator.GetValue(ElevatorDBName.AllowInitialization) == 1) { if (elevator.GetValue(ElevatorDBName.InitializationFlag) == 0) { if (elevator.GetValue(ElevatorDBName.InitializationFlag) == 0) { elevator.SetValue(ElevatorDBName.InitializationTrigger, 1); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.InitializationTrigger, 0); } } Thread.Sleep(1000); if (elevator.GetValue(ElevatorDBName.InitializationFlag) == 1) { Thread.Sleep(5000); if (elevator.GetValue(ElevatorDBName.InitializationFlag) == 0) { var TaskDouble = _taskRepository.QueryData(x => x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && x.TaskState < (int)TaskAcrossFloorStatusEnum.EndAddressExecuting && x.DoubleTray == 1); var task = _taskRepository.QueryFirst(x => x.TaskState > (int)TaskAcrossFloorStatusEnum.CarryNew && x.TaskState < (int)TaskAcrossFloorStatusEnum.EndAddressExecuting); if (TaskDouble.Count() > 0) { if (TaskDouble.First().Floor == "2F") { elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(TaskDouble.First().TaskNum)); elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(1)); elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(2)); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1)); _taskService.SendAgvTask("AAA", TaskDouble.First().TaskNum); _taskService.UpdateTaskStatusToNext(TaskDouble.First().TaskNum); } else { elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(TaskDouble.First().TaskNum)); elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(1)); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1)); _taskService.SendAgvTask("DDD", TaskDouble.First().TaskNum); _taskService.UpdateTaskStatusToNext(TaskDouble.First().TaskNum); } } if (task != null) { if (task.Floor == "2F") { elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(task.TaskNum)); elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(1)); elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(2)); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1)); _taskService.SendAgvTask("AAA", task.TaskNum); _taskService.UpdateTaskStatusToNext(task.TaskNum); } else { elevator.SetValue(ElevatorDBName.TaskNum, Convert.ToInt16(task.TaskNum)); elevator.SetValue(ElevatorDBName.FlagBit, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.StartFloor, Convert.ToInt16(2)); elevator.SetValue(ElevatorDBName.EdnFloor, Convert.ToInt16(1)); Thread.Sleep(1000); elevator.SetValue(ElevatorDBName.StartCommand, Convert.ToInt16(1)); _taskService.SendAgvTask("DDD", task.TaskNum); _taskService.UpdateTaskStatusToNext(task.TaskNum); } } if (elevator.GetValue(ElevatorDBName.InitializationFlag) == 0) { elevator.SetValue(ElevatorDBName.StartElevator, 1); Thread.Sleep(2000); elevator.SetValue(ElevatorDBName.StartElevator, 0); } } } } } } return content.OK("提升机初始化成功"); } return content.Error("失败"); } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 启动 /// /// [HttpPost, HttpGet, Route("startElevator"), AllowAnonymous] public WebResponseContent StartElevator() { WebResponseContent content = new WebResponseContent(); try { CommonElevator? commonElevator = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ1") as CommonElevator; if (commonElevator != null) { if(commonElevator.GetValue(ElevatorDBName.AllowDeviceStartup) == 1) { commonElevator.SetValue(ElevatorDBName.StartElevator, 1); Thread.Sleep(1000); commonElevator.SetValue(ElevatorDBName.StartElevator, 0); return content.OK("提升机启动成功"); } else { return content.Error("提升机当前状态不允许启动"); } } return content.Error("失败"); } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 复位 /// /// [HttpPost, HttpGet, Route("resetElevator"), AllowAnonymous] public WebResponseContent ResetElevator() { WebResponseContent content = new WebResponseContent(); try { CommonElevator? commonElevator = Storage.Devices.FirstOrDefault(x => x.DeviceCode == "TSJ1") as CommonElevator; if (commonElevator != null) { commonElevator.SetValue(ElevatorDBName.ResetElevator, 1); Thread.Sleep(1000); commonElevator.SetValue(ElevatorDBName.ResetElevator, 0); return content.OK("提升机启动成功"); } return content.Error("失败"); } catch (Exception ex) { return content.Error(ex.Message); } } } }