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;
}
///
/// 这个到时候根据现场情况来配置,设备号和现场情况来定。
/// 一个轨道俩个plc
///
///
///
//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("M104"); //卡住报警
// var leftPLcOher = serialPortDevice.Communicator.Read("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("M104"); //卡住报警
// var rightPLcOher = serialPortDevice.Communicator.Read("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("M104"); //卡住报警
var leftPLcOher = serialPortDevice.Communicator.Read("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("M104"); //卡住报警
var leftPLcOher1 = devices.Value.left.Communicator.Read("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("M104"); //卡住报警
var rightPLcOher = serialPortDevice.Communicator.Read("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("M104"); //卡住报警
var rightPLcOher = devices.Value.right.Communicator.Read("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);
}
}
}