using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using RYB_PTL_API;
using System.Security.Policy;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_QuartzJob.Repository;
namespace WIDESEAWCS_Server.Controllers
{
[Route("PTL")]
[ApiController]
public class PTLAPIController : ControllerBase
{
private readonly ITaskService _taskService;
//private bool _eventSubscribed = false;
public PTLAPIController(ITaskService taskService)
{
_taskService = taskService;
//SubscribeEvent();
}
///
/// 订阅PTL事件
///
//private void SubscribeEvent()
//{
// if (!_eventSubscribed)
// {
// RYB_PTL.UserResultAvailable += RYB_PTL_UserResultAvailable;
// _eventSubscribed = true;
// }
//}
/////
///// 取消订阅PTL事件
/////
//private void UnsubscribeEvent()
//{
// if (_eventSubscribed)
// {
// RYB_PTL.UserResultAvailable -= RYB_PTL_UserResultAvailable;
// _eventSubscribed = false;
// }
//}
/////
///// PTL回调事件处理
/////
//private void RYB_PTL_UserResultAvailable(RYB_PTL.RtnValueStruct rs)
//{
// try
// {
// var content = new EPLightContent();
// var pTLCallBackDTO = new PTLCallBackDTO
// {
// sIp = rs.Ip,
// sTagID = rs.Tagid,
// sValue = rs.Number,
// sKeyCode = rs.KeyCode,
// sLocator = rs.Locator
// };
// var taskBackLight = new TaskBackLight()
// {
// TagNo = "B1",
// TagCode = pTLCallBackDTO.sLocator,
// };
// // 调用服务处理
// _taskService.WMSLightBack(new List { taskBackLight });
// }
// catch (Exception ex)
// {
// // 记录日志或处理异常
// Console.WriteLine($"处理PTL回调时出错: {ex.Message}");
// }
//}
///
/// 播种墙下发(一期)
///
[HttpPost, Route("RYB_PTL_CloseDigit5"), AllowAnonymous]
public EPLightContent RYB_PTL_CloseDigit5([FromBody] CloseDigit5DTO request)
{
var content = new EPLightContent();
try
{
bool isConnected = RYB_PTL.RYB_PTL_DspDigit5(
request.sIP,
request.sTagID,
request.iNum,
request.iMode,
request.iColorIndex);
}
catch (Exception ex)
{
return content.Error(ex.Message);
}
return content;
}
///
/// 回调上传
///
///
[HttpPost, Route("RYB_PTL_UserResultAvailable"), AllowAnonymous]
public EPLightContent? RYB_PTL_UserResultAvailable([FromBody] List pTLCallBackDTOs)
{
EPLightContent content = new EPLightContent();
try
{
if (pTLCallBackDTOs == null)
{
return content.Error("传入不能为空");
}
List taskBackLights = pTLCallBackDTOs.Select(x => new TaskBackLight()
{
TagNo = "B1",
TagCode = x.sLocator,
}).ToList();
content = _taskService.WMSLightBack(taskBackLights);
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
///
/// 播种墙初始化(一期)
///
///
[HttpPost, Route("RYB_PTL_Connect"), AllowAnonymous]
public EPLightContent RYB_PTL_Connect([FromBody] ConnectDTO request)
{
EPLightContent content = new EPLightContent();
try
{
bool isConnected;
if (request.iTimeOut.HasValue)
{
isConnected = RYB_PTL.RYB_PTL_Connect(request.sIp, request.iPort, request.iTimeOut.Value);
}
else
{
isConnected = RYB_PTL.RYB_PTL_Connect(request.sIp, request.iPort);
}
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
///
/// 播种墙结束作业(一期)
///
///
[HttpPost, Route("RYB_PTL_Disconnect"), AllowAnonymous]
public EPLightContent RYB_PTL_Disconnect()
{
EPLightContent content = new EPLightContent();
try
{
bool isDisconnected = RYB_PTL.RYB_PTL_Disconnect();
}
catch (Exception ex)
{
content.Error(ex.Message);
}
return content;
}
/////
///// 资源释放
/////
//public void Dispose()
//{
// UnsubscribeEvent();
//}
}
}