yanjinhui
2025-05-08 dce06906b2757824ad6ecfd02c1ff04ee8e9ad20
ÏîÄ¿´úÂë/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
@@ -11,93 +11,238 @@
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_TelescopicService;
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
=======
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_Core.Helper;
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
namespace WIDESEAWCS_Tasks
{
    [DisallowConcurrentExecution]
    public class AlarmResetJob : JobBase, IJob
    {
        private WebSocketServer _webSocketContext;
        private readonly AlarmResetHsyServer _alarmResetHsyServer;
        private readonly IAlarmResetHsyServer _alarmResetHsyServer;
        WebSocketServer _webSocketServer;
        
        public AlarmResetJob(WebSocketServer webSocketServer, AlarmResetHsyServer alarmResetHsyServer)
        public AlarmResetJob(WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer)
        {
            _webSocketContext = webSocketServer;
            _webSocketServer = webSocketServer;
            _alarmResetHsyServer = alarmResetHsyServer;
        }
        /// <summary>
        /// è¿™ä¸ªåˆ°æ—¶å€™æ ¹æ®çŽ°åœºæƒ…å†µæ¥é…ç½®ï¼Œè®¾å¤‡å·å’ŒçŽ°åœºæƒ…å†µæ¥å®šã€‚
        /// ä¸€ä¸ªè½¨é“俩个plc
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        //public Task Execute(IJobExecutionContext context)
        //{
        //    try
        //    {
        //        //获取设备号
        //        // èŽ·å–è®¾å¤‡é…ç½®
        //        OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams");
        //        if (serialPortDevice!=null)
        //        {
        //            //首先要一直读,如果发生了故障要写到_alarmResetHsyServer中记录下来并且给到前端数据
        //            //å·¦plc
        //            if (serialPortDevice.DeviceCode == "SSG001")
        //            {
        //                var leftPLcstuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
        //                var leftPLcOher = serialPortDevice.Communicator.Read<bool>("M105");  //其他报警 //默认是false
        //                Console.WriteLine($"{serialPortDevice.DeviceName}:卡住报警{leftPLcstuck},其他报警{leftPLcOher}");
        //                if (leftPLcstuck == true && leftPLcOher == false)
        //                   //if (leftPLcOher == false)
        //                    {
        //                    string text = "轨道一:伸缩卡住报警";
        //                    //报警了在这调用添加方法,并传给前端
        //                     var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
        //                }
        //                if (leftPLcOher == true && leftPLcstuck == false)
        //                {
        //                    string text = "轨道一:其他故障报警";
        //                    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
        //                }
        //                if (leftPLcstuck == true && leftPLcOher == true)//如果报警了
        //                {
        //                    string text = "轨道一:报警伸缩卡住报警和其他故障报警";
        //                    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
        //                }
        //                var alrt = _alarmResetHsyServer.GetWebSocketInfo();
        //                _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));//websocketserver这种只能传给前端json格式
        //            }
        //            else if (serialPortDevice.DeviceCode == "SSG002")
        //            {
        //                //右plc
        //                var rightPLcSuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
        //                var rightPLcOher = serialPortDevice.Communicator.Read<bool>("M105");//其他报警
        //                Console.WriteLine($"{serialPortDevice.DeviceName}:卡住报警{rightPLcSuck},其他报警{rightPLcOher}");
        //                if (rightPLcSuck == true && rightPLcOher == false)
        //                {
        //                    string text = "轨道一:报警伸缩卡住报警";
        //                    //报警了在这调用添加方法,并传给前端
        //                     var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck);
        //                    // _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
        //                }
        //                if (rightPLcOher == true && rightPLcSuck == false)
        //                {
        //                    string text = "轨道一:其他故障报警";
        //                    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
        //                }
        //                if (rightPLcSuck == true && rightPLcOher == true)//如果报警了
        //                {
        //                    string text = "轨道一:报警伸缩卡住报警和其他故障报警";
        //                    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);//添加数据
        //                }
        //                var alrt = _alarmResetHsyServer.GetWebSocketInfo();
        //                _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));
        //            }
        //        }
        //    }
        //    catch (Exception ex)
        //    {
        //        Console.WriteLine("错误信息:" + ex.Message);
        //        Console.WriteLine(ex.StackTrace);
        //    }
        //    return Task.CompletedTask;
        //}
        public Task Execute(IJobExecutionContext context)
        {
            try
            {
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
=======
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                //获取设备号
                // èŽ·å–è®¾å¤‡é…ç½®
                OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams");
                if (serialPortDevice!=null)
                //OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams");
                if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
                {
                    Console.WriteLine("配置项 DepartmentID æ— æ³•转换为整数");
                }
                var devices = GetDevicesByDeptId(deid);
                if (devices != null)
                {
                    //首先要一直读,如果发生了故障要写到_alarmResetHsyServer中记录下来并且给到前端数据
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                    if (serialPortDevice.DeviceName=="左汇川PLC")
                    {
                        //å·¦plc
                        //var leftPLcstuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
                        //var leftPLcOher = serialPortDevice.Communicator.Read<bool>("M105");  //其他报警 //默认是false
                        //Console.WriteLine($"å·¦PLC:卡住报警{leftPLcstuck},其他报警{leftPLcOher}");
                        //    if (leftPLcstuck == true&&leftPLcOher==false)
                        //    {
                        //        string  text = "报警伸缩卡住报警";
                        //    //报警了在这调用添加方法,并传给前端
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        //     }
                        //    if (leftPLcOher == true&&leftPLcstuck==false) {
                        //        string text = "其他故障报警";
                        //        _alarmResetHsyServer.AddAlarmHsy(text, leftPLcOher);
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        //     }
                        //    if (leftPLcstuck == true && leftPLcOher == true)//如果报警了
                        //    {
                        //         string text = "报警伸缩卡住报警和其他故障报警";
                        //         _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        var leftPLcstuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
                        var leftPLcOher = serialPortDevice.Communicator.Read<bool>("M105");  //其他报警 //默认是false
                        Console.WriteLine($"å·¦PLC:卡住报警{leftPLcstuck},其他报警{leftPLcOher}");
                        //}
                        if(leftPLcstuck == true && leftPLcOher == false)
                           //if (leftPLcOher == false)
                            {
                            string text = "伸缩卡住报警";
=======
                    //å·¦plc
                    var leftPLcstuck1 = devices.Value.left.Communicator.Read<bool>("M104"); //卡住报警
                        var leftPLcOher1 = devices.Value.left.Communicator.Read<bool>("M105");  //其他报警 //默认是false
                        Console.WriteLine($"{devices.Value.left.DeviceName}:默认是false,现在卡住报警值:{leftPLcstuck1},现在其他报警值:{leftPLcOher1}");
                        if (leftPLcstuck1 == true && leftPLcOher1 == false)
                        //if (leftPLcOher1 == false)
                        {
                            string text =$"轨道{deid}:伸缩卡住报警";
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            //报警了在这调用添加方法,并传给前端
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
                        }
                        if (leftPLcstuck1 == true && leftPLcOher1 == false)
                        {
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            string text = "其他故障报警";
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
=======
                            string text = $"轨道{deid}:其他故障报警";
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                        }
                        if (leftPLcstuck1 == true && leftPLcOher1 == true)//如果报警了
                        {
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            string text = "报警伸缩卡住报警和其他故障报警";
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                        }
                        var alrt = _alarmResetHsyServer.GetWebSocketInfo();
                        _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));//websocketserver这种只能传给前端json格式
                    }
                    else if (serialPortDevice.DeviceName == "右汇川PLC")
                    {
                        //右plc
                        //var rightPLcSuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
                        //var rightPLcOher = serialPortDevice.Communicator.Read<bool>("M105");//其他报警
                        //Console.WriteLine($"右PLC:卡住报警{rightPLcSuck},其他报警{rightPLcOher}");
                        //if (rightPLcSuck == true&& rightPLcOher==false)
                        //{
                        //    string text = "报警伸缩卡住报警";
                        //    //报警了在这调用添加方法,并传给前端
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        //}
                        //if (rightPLcOher == true&& rightPLcSuck==false)
                        //{
                        //    string text = "其他故障报警";
                        //    _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        //}
                        //if (rightPLcSuck == true && rightPLcOher == true)//如果报警了
                        //{
                        //    string text = "报警伸缩卡住报警和其他故障报警";
                        //    _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                        //    var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                        //    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                        var rightPLcSuck = serialPortDevice.Communicator.Read<bool>("M104"); //卡住报警
                        var rightPLcOher = serialPortDevice.Communicator.Read<bool>("M105");//其他报警
                        Console.WriteLine($"右PLC:卡住报警{rightPLcSuck},其他报警{rightPLcOher}");
                        if (rightPLcSuck == true && rightPLcOher == false)
                        {
                            string text = "报警伸缩卡住报警";
=======
                            string text = $"轨道{deid}:报警伸缩卡住报警和其他故障报警";
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
                        }
                        //}
                    }
                        //右plc
                        var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M104"); //卡住报警
                        var rightPLcOher = devices.Value.right.Communicator.Read<bool>("M105");//其他报警
                        Console.WriteLine($"{devices.Value.right.DeviceName}::默认是false,现在卡住报警值:{rightPLcSuck},:现在其他报警值:{rightPLcOher}");
                        if (rightPLcSuck == true && rightPLcOher == false)
                        {
                            string text = $"轨道{deid}:报警伸缩卡住报警";
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            //报警了在这调用添加方法,并传给前端
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck);
                        }
                        if (rightPLcOher == true && rightPLcSuck == false)
                        {
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            string text = "其他故障报警";
=======
                            string text = $"轨道{deid}:其他故障报警";
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                        }
                        if (rightPLcSuck == true && rightPLcOher == true)//如果报警了
                        {
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            string text = "报警伸缩卡住报警和其他故障报警";
=======
                            string text = $"轨道{deid}:报警伸缩卡住报警和其他故障报警";
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                            var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);//添加数据
                        }
                        var alrt = _alarmResetHsyServer.GetWebSocketInfo();
                        _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));
<<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
                    }
                }
=======
                    }
>>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
            }
            catch (Exception ex)
            {
@@ -107,5 +252,20 @@
            }
            return Task.CompletedTask;
        }
        public (OtherDevice left, OtherDevice right)? GetDevicesByDeptId(int deptId)
        {
            // å·¦è®¾å¤‡å·ï¼š1 -> 001,2 -> 003,3 -> 005...
            int baseCode = 1 + (deptId - 1) * 2;
            string leftCode = $"SSG{baseCode.ToString("D3")}";
            string rightCode = $"SSG{(baseCode + 1).ToString("D3")}";
            var left = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == leftCode);
            var right = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == rightCode);
            if (left == null || right == null)
                return null;
            return (left, right);
        }
    }
}