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;
|
}
|
|
/// <summary>
|
/// 停止
|
/// </summary>
|
/// <returns></returns>
|
[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, short>(ElevatorDBName.StopElevator, 1);
|
Thread.Sleep(1000);
|
commonElevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StopElevator, 0);
|
return content.OK("提升机停止成功");
|
}
|
return content.Error("失败");
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 初始化提升机
|
/// </summary>
|
/// <returns></returns>
|
[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, short>(ElevatorDBName.StopElevator, 1);
|
Thread.Sleep(1000);
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StopElevator, 0);
|
Thread.Sleep(1000);
|
//获取提升机状态的显示 =0无状态;=1运行中;=2待机;=3报警
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.ElevatorStatus) == 2)
|
{
|
//获取提升机手动/自动切换开关状态
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.ManualAutoSwitch) == 1)
|
{
|
//获取提升机是否能允许初始化
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.AllowInitialization) == 1)
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 0)
|
{
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 0)
|
{
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.InitializationTrigger, 1);
|
Thread.Sleep(1000);
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.InitializationTrigger, 0);
|
}
|
}
|
Thread.Sleep(1000);
|
if (elevator.GetValue<ElevatorDBName, short>(ElevatorDBName.InitializationFlag) == 1)
|
{
|
Thread.Sleep(5000);
|
if (elevator.GetValue<ElevatorDBName, short>(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, short>(ElevatorDBName.InitializationFlag) == 0)
|
{
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 1);
|
Thread.Sleep(2000);
|
elevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 0);
|
|
}
|
}
|
}
|
|
}
|
}
|
}
|
return content.OK("提升机初始化成功");
|
|
}
|
return content.Error("失败");
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 启动
|
/// </summary>
|
/// <returns></returns>
|
[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, short>(ElevatorDBName.AllowDeviceStartup) == 1)
|
{
|
commonElevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 1);
|
Thread.Sleep(1000);
|
commonElevator.SetValue<ElevatorDBName, short>(ElevatorDBName.StartElevator, 0);
|
return content.OK("提升机启动成功");
|
}
|
else
|
{
|
return content.Error("提升机当前状态不允许启动");
|
}
|
|
}
|
return content.Error("失败");
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
|
/// <summary>
|
/// 复位
|
/// </summary>
|
/// <returns></returns>
|
[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, short>(ElevatorDBName.ResetElevator, 1);
|
Thread.Sleep(1000);
|
commonElevator.SetValue<ElevatorDBName, short>(ElevatorDBName.ResetElevator, 0);
|
return content.OK("提升机启动成功");
|
}
|
return content.Error("失败");
|
}
|
catch (Exception ex)
|
{
|
return content.Error(ex.Message);
|
}
|
}
|
}
|
}
|