yanjinhui
2025-05-08 ed91a57aa65eb921ddd96f09cc8b07b14c61823c
project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
@@ -1,18 +1,20 @@
// using HslCommunication.WebSocket;
// using Newtonsoft.Json;
// using Quartz;
// using SqlSugar;
// using System;
// using System.Collections.Generic;
// using System.Linq;
// using System.Text;
// using System.Threading.Tasks;
// using WIDESEAWCS_Core.HttpContextUser;
// using WIDESEAWCS_Core;
// using WIDESEAWCS_ITaskInfoService;
// using WIDESEAWCS_Model.Models;
// using WIDESEAWCS_QuartzJob;
// using WIDESEAWCS_TelescopicService;
using HslCommunication.WebSocket;
using Newtonsoft.Json;
using Quartz;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WIDESEAWCS_Core.HttpContextUser;
using WIDESEAWCS_Core;
using WIDESEAWCS_ITaskInfoService;
using WIDESEAWCS_Model.Models;
using WIDESEAWCS_QuartzJob;
using WIDESEAWCS_TelescopicService;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_Core.Helper;
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
// using WIDESEAWCS_ISystemServices;
// =======
@@ -23,297 +25,116 @@
// >>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
// namespace WIDESEAWCS_Tasks
// {
//     [DisallowConcurrentExecution]
//     public class AlarmResetJob : JobBase, IJob
//     {
namespace WIDESEAWCS_Tasks
{
    [DisallowConcurrentExecution]
    public class AlarmResetJob : JobBase, IJob
    {
//         private readonly IAlarmResetHsyServer _alarmResetHsyServer;
//         private readonly ISys_UserService _UserService;
//         WebSocketServer _webSocketServer;
        private readonly IAlarmResetHsyServer _alarmResetHsyServer;
        private readonly ISys_UserService _UserService;
        WebSocketServer _webSocketServer;
        
        
        
//         public AlarmResetJob(WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService)
//         {
//             _webSocketServer = webSocketServer;
//             _alarmResetHsyServer = alarmResetHsyServer;
//             _UserService = UserService;
//         }
//         /// <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 AlarmResetJob(WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService)
        {
            _webSocketServer = webSocketServer;
            _alarmResetHsyServer = alarmResetHsyServer;
            _UserService = UserService;
        }
//         public Task Execute(IJobExecutionContext context)
//         {
//             try
//             {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
        public Task Execute(IJobExecutionContext context)
        {
            try
            {
              
// =======
// <<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
// =======
                //获取设备号
                // 获取设备配置
                //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中记录下来并且给到前端数据
                    //左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}:卡住报警{leftPLcstuck1},其他报警{leftPLcOher1}");
                    if (leftPLcstuck1 == true && leftPLcOher1 == false)
                    //if (leftPLcOher == false)
                    {
                        string text = $"轨道{deid}:伸缩卡住报警";
                        //报警了在这调用添加方法,并传给前端
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
// >>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                 //获取设备号
//                 // 获取设备配置
//                 //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中记录下来并且给到前端数据
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                     //左plc
                    }
                    if (leftPLcstuck1 == true && leftPLcOher1 == false)
                    {
                        string text = $"轨道{deid}:其他故障报警";
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
                   
//                     if (serialPortDevice.DeviceCode == "SSG001")
// =======
// <<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                     if (serialPortDevice.DeviceName=="左汇川PLC")
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                     {
//                         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)
//                             {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "轨道一:伸缩卡住报警";
//                             //报警了在这调用添加方法,并传给前端
//                              var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                    }
                    if (leftPLcstuck1 == true && leftPLcOher1 == true)//如果报警了
                    {
                        string text = $"轨道{deid}:报警伸缩卡住报警和其他故障报警";
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
                    }
                           
//                         }
//                         if (leftPLcOher == true && leftPLcstuck == false)
//                         {
//                             string text = "轨道一:其他故障报警";
// =======
//                             string text = "伸缩卡住报警";
// =======
                    //右plc
                    var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M104"); //卡住报警
                    var rightPLcOher = devices.Value.left.Communicator.Read<bool>("M105");//其他报警
                    Console.WriteLine($"{devices.Value.right.DeviceName}:卡住报警{rightPLcSuck},其他报警{rightPLcOher}");
                    if (rightPLcSuck == true && rightPLcOher == false)
                    {
                        string text = $"轨道{deid}:报警伸缩卡住报警";
                        //报警了在这调用添加方法,并传给前端
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck);
                        // _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver这种只能传给前端json格式
                    }
                    if (rightPLcOher == true && rightPLcSuck == false)
                    {
                        string text = $"轨道{deid}:其他故障报警";
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
                    }
                    if (rightPLcSuck == true && rightPLcOher == true)//如果报警了
                    {
                        string text = $"轨道{deid}:报警伸缩卡住报警和其他故障报警";
                        var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);//添加数据
                    }
                    var alrt = _alarmResetHsyServer.GetWebSocketInfo();
                    _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));
                }
//                     //左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);
            }
            catch (Exception ex)
            {
//                         }
//                         if (leftPLcstuck1 == true && leftPLcOher1 == false)
//                         {
// <<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "其他故障报警";
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
                Console.WriteLine("错误信息:" + ex.Message);
                Console.WriteLine(ex.StackTrace);
            }
            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")}";
                            
// =======
//                             string text = $"轨道{deid}:其他故障报警";
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck1);
            var left = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == leftCode);
            var right = (OtherDevice)Storage.Devices.Find(x => x.DeviceCode == rightCode);
// >>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                         }
//                         if (leftPLcstuck1 == true && leftPLcOher1 == true)//如果报警了
//                         {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "轨道一:报警伸缩卡住报警和其他故障报警";
// =======
// <<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "报警伸缩卡住报警和其他故障报警";
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, leftPLcstuck);
            if (left == null || right == null)
                return null;
                          
//                         }
            return (left, right);
        }
    }
}
//                         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)
//                         {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "轨道一:报警伸缩卡住报警";
// =======
//                             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
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             //报警了在这调用添加方法,并传给前端
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcSuck);
//                         }
//                         if (rightPLcOher == true && rightPLcSuck == false)
//                         {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "轨道一:其他故障报警";
// =======
// <<<<<<< 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
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);
//                         }
//                         if (rightPLcSuck == true && rightPLcOher == true)//如果报警了
//                         {
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             string text = "轨道一:报警伸缩卡住报警和其他故障报警";
// =======
// <<<<<<< 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
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                             var reslut = _alarmResetHsyServer.AddAlarmHsy(text, rightPLcOher);//添加数据
//                         }
//                         var alrt = _alarmResetHsyServer.GetWebSocketInfo();
//                         _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));
// <<<<<<< HEAD:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                     }
// =======
// <<<<<<< Updated upstream:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                     }
// >>>>>>> qy0318:项目代码/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//                 }
// =======
//                     }
// >>>>>>> Stashed changes:project/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs
//             }
//             catch (Exception ex)
//             {
//                 Console.WriteLine("错误信息:" + ex.Message);
//                 Console.WriteLine(ex.StackTrace);
//             }
//             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);
//         }
//     }
// }