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_ITaskInfoService;
|
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 readonly IAlarmResetHsyServer _alarmResetHsyServer;
|
WebSocketServer _webSocketServer;
|
|
|
public AlarmResetJob(WebSocketServer webSocketServer, IAlarmResetHsyServer alarmResetHsyServer)
|
{
|
_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 (!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)
|
//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 = "报警伸缩卡住报警";
|
=======
|
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)
|
{
|
|
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);
|
}
|
}
|
}
|