From 114ffafeeb20ef7066cb2e2882bb58b96f791ab5 Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期一, 20 十月 2025 11:33:11 +0800
Subject: [PATCH] 提交数据
---
项目代码/后端/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs | 284 ++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 191 insertions(+), 93 deletions(-)
diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs"
index 1d08638..6673b39 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/\345\220\216\347\253\257/WCS/WIDESEAWCS_Server/WIDESEAWCS_Tasks/SSG/AlarmResetJob.cs"
@@ -15,142 +15,246 @@
using WIDESEAWCS_TelescopicService;
using WIDESEAWCS_ISystemServices;
using WIDESEAWCS_Core.Helper;
-
+using Microsoft.AspNetCore.Http;
+using System.Collections.Concurrent;
+using Microsoft.AspNetCore.Hosting.Server;
+using static System.Collections.Specialized.BitVector32;
namespace WIDESEAWCS_Tasks
{
[DisallowConcurrentExecution]
public class AlarmResetJob : JobBase, IJob
{
-
private readonly IAlarmResetHsyServer _alarmResetHsyServer;
private readonly ISys_UserService _UserService;
WebSocketServer _webSocketServer;
private readonly Idt_ErrormsginfoService _ErrormsginfoService;
+ private readonly AlarmResetHsyServer _alarmResetHsy;
+ private readonly IIPaddressServer _cunstomipService;
+ //private static readonly object _lockObj = new object(); //鍔犻攣
- public AlarmResetJob(Idt_ErrormsginfoService errormsginfoService, WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService)
+ // 澧炴坊鐨勫瓧鍏歌窡韪姤璀︿负姣忎釜瑁呯疆 Quartz 榛樿姣忔璋冨害浠诲姟鏃朵細閲嶆柊鍒涘缓
+ private static readonly Dictionary<string, bool> _leftAlarmStates = new Dictionary<string, bool>() //鍔犻攣
+ {
+ ["M109"] = false,//浼烘湇鎶ヨ
+ ["M111"] = false,//鍏朵粬鎶ヨ
+ ["M110"] = false,//鎬ュ仠鎶ヨ
+ ["M120"] = false,//闅滅鎶ヨ
+ };
+ private static readonly Dictionary<string, bool> _rightAlarmStates = new Dictionary<string, bool>()
+ {
+ ["M109"] = false,//浼烘湇鎶ヨ
+ ["M111"] = false,//鍏朵粬鎶ヨ
+ ["M110"] = false,//鎬ュ仠鎶ヨ
+ ["M120"] = false,//闅滅鎶ヨ
+ };
+
+ public AlarmResetJob(Idt_ErrormsginfoService errormsginfoService, WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer, ISys_UserService UserService, IIPaddressServer cunstomipService)
{
_webSocketServer = webSocketServer;
_alarmResetHsyServer = alarmResetHsyServer;
_UserService = UserService;
_ErrormsginfoService = errormsginfoService;
+ _cunstomipService = cunstomipService;
}
+
public Task Execute(IJobExecutionContext context)
{
try
{
+ WebSocketSession[] webSocketSessions = _webSocketServer.OnlineSessions;//灏嗘墍鏈夌殑杩炴帴淇℃伅瀛樺埌杩欓噷
+ //string clientIp = webSocketSessions[0].Remote.Address.ToString().Replace("::ffff", ""); //鑾峰彇涓�涓猧p鍦板潃
- //鑾峰彇璁惧鍙�
- // 鑾峰彇璁惧閰嶇疆
- //OtherDevice serialPortDevice = (OtherDevice)context.JobDetail.JobDataMap.Get("JobParams");
- if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
+ foreach (var session in webSocketSessions)
{
- Console.WriteLine("閰嶇疆椤� DepartmentID 鏃犳硶杞崲涓烘暣鏁�");
- }
- var devices = GetDevicesByDeptId(deid);
- if (devices != null)
- {
- //棣栧厛瑕佷竴鐩磋锛屽鏋滃彂鐢熶簡鏁呴殰瑕佸啓鍒癬alarmResetHsyServer涓褰曚笅鏉ュ苟涓旂粰鍒板墠绔暟鎹�
- //宸lc
- try
+ string clientIp = session.Remote.Address.ToString().Replace("::ffff:", "");
+ var customip = _cunstomipService.GetStandid(clientIp);
+ if (customip.Status && customip.Data != null)
{
- if (devices.Value.left.IsConnected)
+ //var deid = customip.Data.StationID;
+ var deid = Convert.ToInt32(customip.Data);
+ var devices = GetDevicesByDeptId(deid);
+
+
+
+ //if (!int.TryParse(AppSettings.Get("DepartmentID"), out int deid))
+ //{
+ // Console.WriteLine("閰嶇疆椤� DepartmentID 鏃犳硶杞崲涓烘暣鏁�");
+ //}
+ //var devices = GetDevicesByDeptId(deid);
+
+
+ if (devices != null)
{
- var leftPLcstuck1 = devices.Value.left.Communicator.Read<bool>("M109"); //鍗′綇鎶ヨ
- var leftPLcOher1 = devices.Value.left.Communicator.Read<bool>("M111"); //鍏朵粬鎶ヨ //榛樿鏄痜alse
- var leftPLcNowAdd = devices.Value.left.Communicator.Read<float>("D80");
- Console.WriteLine($"{devices.Value.left.DeviceName}:鍗′綇鎶ヨ{leftPLcstuck1}锛屽叾浠栨姤璀leftPLcOher1}");
- if (leftPLcstuck1 == true && leftPLcOher1 == false)
+ // Left PLC processing
+ try
{
- string text = $"杞ㄩ亾{deid}锛氫几缂╁崱浣忔姤璀�";
- //鎶ヨ浜嗗湪杩欒皟鐢ㄦ坊鍔犳柟娉曪紝骞朵紶缁欏墠绔�
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid,text, leftPLcstuck1);
+ if (devices.Value.left.IsConnected)
+ {
+ var leftPLcstuck1 = devices.Value.left.Communicator.Read<bool>("M109"); // Servo alarm
+ var leftPLcOher1 = devices.Value.left.Communicator.Read<bool>("M111"); // Other alarm
+ var leftscram = devices.Value.left.Communicator.Read<bool>("M110"); // Emergency stop
+ var leftstop = devices.Value.left.Communicator.Read<bool>("M120"); // Obstacle stop
+
+ var leftPLcNowAdd = devices.Value.left.Communicator.Read<float>("D80"); //褰撳墠浣嶇疆
+ Console.WriteLine($"{devices.Value.left.DeviceName}:鍗′綇鎶ヨ{leftPLcstuck1}锛屽叾浠栨姤璀leftPLcOher1}");
- }
- if (leftPLcstuck1 == false && leftPLcOher1 == true)
- {
- string text = $"杞ㄩ亾{deid}锛氬叾浠栨晠闅滄姤璀�";
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1);
+ // Check and record alarms only when state changes from false to true
+ if (leftPLcstuck1 && !_leftAlarmStates["M109"])
+ {
+ string text = $"妫�{deid}閬撳乏渚ц鎯曟満鏋勶細浼哥缉鍗′綇鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1);
+ _leftAlarmStates["M109"] = true;
+ }
+ else if (!leftPLcstuck1)
+ {
+ _leftAlarmStates["M109"] = false;
+ }
+ if (leftPLcOher1 && !_leftAlarmStates["M111"])
+ {
+ string text = $"妫�{deid}閬撳乏渚ц鎯曟満鏋勶細鍏朵粬鏁呴殰鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcOher1);
+ _leftAlarmStates["M111"] = true;
+ }
+ else if (!leftPLcOher1)
+ {
+ _leftAlarmStates["M111"] = false;
+ }
+
+ if (leftscram && !_leftAlarmStates["M110"])
+ {
+ string text = $"妫�{deid}閬撳乏渚ц鎯曟満鏋勶細鎬ュ仠鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftscram);
+ _leftAlarmStates["M110"] = true;
+ }
+ else if (!leftscram)
+ {
+ _leftAlarmStates["M110"] = false;
+ }
+
+ if (leftstop && !_leftAlarmStates["M120"])
+ {
+ string text = $"妫�{deid}閬撳乏渚ц鎯曟満鏋勶細閬囬殰纰嶅仠姝㈡姤璀�";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftstop);
+ _leftAlarmStates["M120"] = true;
+ }
+ else if (!leftstop)
+ {
+ _leftAlarmStates["M120"] = false;
+ }
+
+
+ _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new
+ {
+ device = "宸lc",
+ Liftvalue = leftPLcNowAdd
+ })); //杩斿洖褰撳墠plc浣嶇疆
+ }
}
- if (leftPLcstuck1 == true && leftPLcOher1 == true)//濡傛灉鎶ヨ浜�
+ catch (Exception)
{
- string text = $"杞ㄩ亾{deid}锛氭姤璀︿几缂╁崱浣忔姤璀﹀拰鍏朵粬鏁呴殰鎶ヨ";
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, leftPLcstuck1);
+ string text = $"杞ㄩ亾{deid}锛氬乏PLC鏈繛鎺�";
+ //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);
}
- _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new
+
+ // Right PLC processing
+ try
{
- device = "宸lc",
- Liftvalue = leftPLcNowAdd
- }));//鎶奃80缁欏墠绔�
+ if (devices.Value.right.IsConnected)
+ {
+ var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M109"); // Servo alarm
+ var rightPLcOher = devices.Value.right.Communicator.Read<bool>("M111"); // Other alarm
+ var rightscram = devices.Value.right.Communicator.Read<bool>("M110"); // Emergency stop
+ var rightstop = devices.Value.right.Communicator.Read<bool>("M120"); // Obstacle stop
+
+
+ var rightPLcNowAdd = devices.Value.right.Communicator.Read<float>("D80");
+ Console.WriteLine($"{devices.Value.right.DeviceName}:鍗′綇鎶ヨ{rightPLcSuck}锛屽叾浠栨姤璀rightPLcOher}");
+
+
+ // Check and record alarms only when state changes from false to true
+ if (rightPLcSuck && !_rightAlarmStates["M109"])
+ {
+ string text = $"妫�{deid}閬撳彸渚ц鎯曟満鏋勶細鎶ヨ浼哥缉鍗′綇鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcSuck);
+ _rightAlarmStates["M109"] = true;
+ }
+ else if (!rightPLcSuck)
+ {
+ _rightAlarmStates["M109"] = false;
+ }
+
+ if (rightPLcOher && !_rightAlarmStates["M111"])
+ {
+ string text = $"妫�{deid}閬撳彸渚ц鎯曟満鏋勶細鍏朵粬鏁呴殰鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher);
+ _rightAlarmStates["M111"] = true;
+ }
+ else if (!rightPLcOher)
+ {
+ _rightAlarmStates["M111"] = false;
+ }
+
+ if (rightscram && !_rightAlarmStates["M110"])
+ {
+ string text = $"妫�{deid}閬撳彸渚ц鎯曟満鏋勶細鎬ュ仠鎶ヨ";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightscram);
+ _rightAlarmStates["M110"] = true;
+ }
+ else if (!rightscram)
+ {
+ _rightAlarmStates["M110"] = false;
+ }
+
+ if (rightstop && !_rightAlarmStates["M120"])
+ {
+ string text = $"妫�{deid}閬撳彸渚ц鎯曟満鏋勶細閬囬殰纰嶅仠姝㈡姤璀�";
+ var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightstop);
+ _rightAlarmStates["M120"] = true;
+ }
+ else if (!rightstop)
+ {
+ _rightAlarmStates["M120"] = false;
+ }
+
+ _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new
+ {
+ device = "鍙砅lc",
+ Rightvalue = rightPLcNowAdd
+ }));
+ }
+ }
+ catch (Exception)
+ {
+ string text = $"杞ㄩ亾{deid}锛氬彸PLC鏈繛鎺�";
+ //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);
+ }
+
+ var alrt = _alarmResetHsyServer.GetWebSocketInfo(deid);
+ _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt)); //杩斿洖鎵�鏈夌殑鎶ヨ琛ㄧ殑淇℃伅
}
}
- catch (Exception)
- {
- string text = $"杞ㄩ亾{deid}锛氬乏PLC鏈繛鎺�";
- //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);//娣诲姞鏁版嵁
}
-
- try
- {
- if (devices.Value.right.IsConnected)//鏄惁杩炴帴涓�
- {
- //鍙硃lc
- var rightPLcSuck = devices.Value.right.Communicator.Read<bool>("M109"); //鍗′綇鎶ヨ
- var rightPLcOher = devices.Value.right.Communicator.Read<bool>("M111");//鍏朵粬鎶ヨ
- var rightPLcNowAdd = devices.Value.right.Communicator.Read<float>("D80");
- Console.WriteLine($"{devices.Value.right.DeviceName}:鍗′綇鎶ヨ{rightPLcSuck}锛屽叾浠栨姤璀rightPLcOher}");
- if (rightPLcSuck == true && rightPLcOher == false)
- {
- string text = $"杞ㄩ亾{deid}锛氭姤璀︿几缂╁崱浣忔姤璀�";
- //鎶ヨ浜嗗湪杩欒皟鐢ㄦ坊鍔犳柟娉曪紝骞朵紶缁欏墠绔�
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcSuck);
- // _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(reslut));//websocketserver杩欑鍙兘浼犵粰鍓嶇json鏍煎紡
- }
- if (rightPLcOher == false && rightPLcSuck == true)
- {
- string text = $"杞ㄩ亾{deid}锛氬叾浠栨晠闅滄姤璀�";
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher);
- }
- if (rightPLcSuck == true && rightPLcOher == true)//濡傛灉鎶ヨ浜�
- {
- string text = $"杞ㄩ亾{deid}锛氭姤璀︿几缂╁崱浣忔姤璀﹀拰鍏朵粬鏁呴殰鎶ヨ";
- var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, rightPLcOher);//娣诲姞鏁版嵁
- }
- _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(new {
- device="鍙砅lc",
- Rightvalue= rightPLcNowAdd
- }));//鎶奃80缁欏墠绔�
-
- }
- }
- catch (Exception)
- {
- string text = $"杞ㄩ亾{deid}锛氬彸PLC鏈繛鎺�";
- //var reslut = _alarmResetHsyServer.AddAlarmHsy(deid, text, false);//娣诲姞鏁版嵁
- }
- var alrt = _alarmResetHsyServer.GetWebSocketInfo(deid);
- _webSocketServer.PublishAllClientPayload(JsonConvert.SerializeObject(alrt));
-
}
- }
-
-
catch (Exception ex)
{
_ErrormsginfoService.UpdateErrorMsg(ex.Message, 1);
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")}";
@@ -158,13 +262,7 @@
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);
}
}
-}
-
-
+}
\ No newline at end of file
--
Gitblit v1.9.3