1
xiazhengtongxue
2025-12-26 a2f06e43a6f4ed3c613aefbb8bc0ccf3dd30ff8f
ÏîÄ¿´úÂë/WCSServices/WIDESEAWCS_Server/Controllers/PTLAPIController.cs
@@ -1,13 +1,11 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using RYB_PTL_API;
using System.Security.Policy;
using System.Collections.Generic;
using System.Linq;
using WIDESEAWCS_DTO;
using WIDESEAWCS_DTO.TaskInfo;
using WIDESEAWCS_IBasicInfoRepository;
using WIDESEAWCS_ITaskInfoRepository;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_QuartzJob.Repository;
namespace WIDESEAWCS_Server.Controllers
{
@@ -16,70 +14,75 @@
    public class PTLAPIController : ControllerBase
    {
        private readonly ITaskService _taskService;
        //private bool _eventSubscribed = false;
        private bool _eventSubscribed = false;
        public PTLAPIController(ITaskService taskService)
        {
            _taskService = taskService;
            //SubscribeEvent();
            SubscribeEvent();
        }
        /// <summary>
        /// è®¢é˜…PTL事件
        /// </summary>
        //private void SubscribeEvent()
        //{
        //    if (!_eventSubscribed)
        //    {
        //        RYB_PTL.UserResultAvailable += RYB_PTL_UserResultAvailable;
        //        _eventSubscribed = true;
        //    }
        //}
        private void SubscribeEvent()
        {
            if (!_eventSubscribed)
            {
                RYB_PTL.UserResultAvailable += new RYB_PTL.UserResultAvailableEventHandler(RYB_PTL_UserResultAvailable);
                _eventSubscribed = true;
            }
        }
        /// <summary>
        /// å–消订阅PTL事件
        /// </summary>
        private void UnsubscribeEvent()
        {
            if (_eventSubscribed)
            {
                RYB_PTL.UserResultAvailable -= new RYB_PTL.UserResultAvailableEventHandler(RYB_PTL_UserResultAvailable);
                _eventSubscribed = false;
            }
        }
        /// <summary>
        /// PTL回调事件处理(只处理手拍事件)
        /// </summary>
        private void RYB_PTL_UserResultAvailable(RYB_PTL.RtnValueStruct rs)
        {
            try
            {
                if (rs.KeyCode == null)
                {
                    return;
                }
                // æž„建回调数据
                var pTLCallBackDTO = new PTLCallBackDTO
                {
                    sIp = rs.Ip,
                    sTagID = rs.Tagid,
                    sValue = rs.Number,
                    sKeyCode = rs.KeyCode,
                    sLocator = rs.Locator
                };
        ///// <summary>
        ///// å–消订阅PTL事件
        ///// </summary>
        //private void UnsubscribeEvent()
        //{
        //    if (_eventSubscribed)
        //    {
        //        RYB_PTL.UserResultAvailable -= RYB_PTL_UserResultAvailable;
        //        _eventSubscribed = false;
        //    }
        //}
                // æ ¹æ®ä¸šåŠ¡éœ€è¦æž„å»ºä»»åŠ¡ä¿¡æ¯
                var taskBackLight = new TaskBackLight()
                {
                    TagNo = "B1",
                    TagCode = pTLCallBackDTO.sLocator,
                };
        ///// <summary>
        ///// PTL回调事件处理
        ///// </summary>
        //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> { taskBackLight });
        //    }
        //    catch (Exception ex)
        //    {
        //        // è®°å½•日志或处理异常
        //        Console.WriteLine($"处理PTL回调时出错: {ex.Message}");
        //    }
        //}
                // è°ƒç”¨æœåŠ¡å¤„ç†æ‰‹æ‹äº‹ä»¶
                _taskService.WMSLightBack(new List<TaskBackLight> { taskBackLight });
                UnsubscribeEvent();
            }
            catch (Exception ex)
            {
                // è®°å½•日志或处理异常
                Console.WriteLine($"处理PTL手拍回调时出错: {ex.Message}");
            }
        }
        /// <summary>
        /// æ’­ç§å¢™ä¸‹å‘(一期)
        /// </summary>
@@ -95,8 +98,6 @@
                    request.iNum,
                    request.iMode,
                    request.iColorIndex);
            }
            catch (Exception ex)
            {
@@ -104,8 +105,6 @@
            }
            return content;
        }
        /// <summary>
        /// å›žè°ƒä¸Šä¼ 
        /// </summary>
@@ -134,6 +133,7 @@
            }
            return content;
        }
        /// <summary>
        /// æ’­ç§å¢™åˆå§‹åŒ–(一期)
        /// </summary>
@@ -144,16 +144,11 @@
            EPLightContent content = new EPLightContent();
            try
            {
                bool isConnected;
                //RYB_PTL.UserResultAvailable += new RYB_PTL.UserResultAvailableEventHandler(RYB_PTL_UserResultAvailable);
                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);
                }
                bool isCfg = RYB_PTL.RYB_PTL_InitialConfiguration(new string[,] { { "11.2.30.252", "0001-0016" },{ "11.2.30.252", "1-16" } });
                bool isConnected = RYB_PTL.RYB_PTL_Connect(request.sIp, request.iPort);
            }
            catch (Exception ex)
            {
@@ -161,6 +156,7 @@
            }
            return content;
        }
        /// <summary>
        /// æ’­ç§å¢™ç»“束作业(一期)
        /// </summary>
@@ -179,13 +175,14 @@
            }
            return content;
        }
        ///// <summary>
        ///// èµ„源释放
        ///// </summary>
        //public void Dispose()
        //{
        //    UnsubscribeEvent();
        //}
    }
}
        /// <summary>
        /// èµ„源释放(标记为不暴露给Swagger)
        /// </summary>
        [ApiExplorerSettings(IgnoreApi = true)]
        public void Dispose()
        {
            UnsubscribeEvent();
        }
    }
}