using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; using System.Linq; using WIDESEAWCS_Core; using WIDESEAWCS_Core.BaseController; using WIDESEAWCS_DTO.TaskInfo; using WIDESEAWCS_ITaskInfoService; using WIDESEAWCS_Model.Models; using WIDESEAWCS_QuartzJob; using WIDESEAWCS_Tasks.ElevatorJob; namespace WIDESEAWCS_WCSServer.Controllers.Task { [Route("api/Task")] [ApiController] public class TaskController : ApiBaseController { private readonly IHttpContextAccessor _httpContextAccessor; public TaskController(ITaskService service, IHttpContextAccessor httpContextAccessor) : base(service) { _httpContextAccessor = httpContextAccessor; } [HttpPost, Route("ReceiveTask"), AllowAnonymous] public WebResponseContent ReceiveWMSTask([FromBody] List taskDTOs) { return Service.ReceiveWMSTask(taskDTOs); } [HttpPost, HttpGet, Route("UpdateTaskExceptionMessage")] public WebResponseContent UpdateTaskExceptionMessage(int taskNum, string message) { return Service.UpdateTaskExceptionMessage(taskNum, message); } [HttpPost, HttpGet, Route("UpdateTaskStatusToNext") ,AllowAnonymous] public WebResponseContent UpdateTaskStatusToNext(int taskNum) { return Service.UpdateTaskStatusToNext(taskNum); } [HttpPost, HttpGet, Route("TaskStatusRecovery")] public WebResponseContent TaskStatusRecovery(int taskNum) { return Service.TaskStatusRecovery(taskNum); } [HttpPost, HttpGet, Route("RollbackTaskStatusToLast")] public WebResponseContent RollbackTaskStatusToLast(int taskNum) { return Service.RollbackTaskStatusToLast(taskNum); } [HttpPost, HttpGet, Route("SendAgvTask"),AllowAnonymous] public WebResponseContent SendAgvTask(string modelProcessCode, int taskNum) { return Service.SendAgvTask(modelProcessCode, taskNum); } [HttpPost, HttpGet, Route("elevator"), AllowAnonymous] public WebResponseContent initialzationElevator() { 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); } } } }