手表信息维护

This commit is contained in:
quowingwang 2026-01-08 18:36:10 +08:00
parent 0ac46d2933
commit be0141e89b
2 changed files with 117 additions and 18 deletions

View File

@ -5,6 +5,9 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using ZR.Service.mes.andon;
using ZR.Service.mes.andon.Iservice;
using static System.Formats.Asn1.AsnWriter;
namespace ZR.Service.Utils.MyAlarmLigth namespace ZR.Service.Utils.MyAlarmLigth
{ {
@ -28,6 +31,8 @@ namespace ZR.Service.Utils.MyAlarmLigth
private CancellationTokenSource _cts; private CancellationTokenSource _cts;
private Task _listenTask; private Task _listenTask;
//private AndonAlarmLevelService andonAlarmLevelService = new AndonAlarmLevelService();
/// <summary> /// <summary>
/// 构造函数(精简参数,日志可选) /// 构造函数(精简参数,日志可选)
/// </summary> /// </summary>
@ -121,32 +126,45 @@ namespace ZR.Service.Utils.MyAlarmLigth
byte lightUnitId = 0x01; // 警灯站号可按需替换为ReadAlarmlightNumber byte lightUnitId = 0x01; // 警灯站号可按需替换为ReadAlarmlightNumber
try try
{ {
//X1、X2、X3红按钮X4绿按钮X5红按钮
//Y1蜂鸣器、Y2红灯、Y3黄灯、Y4绿灯
//Y1->0; Y2->1; y3->2; y4->3
switch (portNumber) switch (portNumber)
{ {
// X1-X4 → 红灯 // X1→ 红按钮
case 1: case 1:
_logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); _modbusClient.WriteSingleCoil(lightUnitId, 0, true); //0-Y1地址蜂鸣器
_modbusClient.WriteSingleCoil(lightUnitId, 0, true); //0-Y1地址 _modbusClient.WriteSingleCoil(lightUnitId, 1, true); //1-Y2地址红灯
_modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯
_modbusClient.WriteSingleCoil(lightUnitId, 3, false); //3-Y4地址绿灯
break; break;
// X2→ 红按钮
case 2: case 2:
_logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); _modbusClient.WriteSingleCoil(lightUnitId, 0, true); //0-Y1地址蜂鸣器
_modbusClient.WriteSingleCoil(lightUnitId, 1, true); _modbusClient.WriteSingleCoil(lightUnitId, 1, true); //1-Y2地址红灯
_modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯
_modbusClient.WriteSingleCoil(lightUnitId, 3, false); //3-Y4地址绿灯
break; break;
// X3→ 红按钮
case 3: case 3:
_logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); _modbusClient.WriteSingleCoil(lightUnitId, 0, true); //0-Y1地址蜂鸣器
_modbusClient.WriteSingleCoil(lightUnitId, 2, true); _modbusClient.WriteSingleCoil(lightUnitId, 1, true); //1-Y2地址红灯
_modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯
_modbusClient.WriteSingleCoil(lightUnitId, 3, false); //3-Y4地址绿灯
break; break;
// X4→ 绿按钮
case 4: case 4:
_logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); _modbusClient.WriteSingleCoil(lightUnitId, 0, false); //0-Y1地址蜂鸣器
_modbusClient.WriteSingleCoil(lightUnitId, 3, true); _modbusClient.WriteSingleCoil(lightUnitId, 1, false); //1-Y2地址红灯
_modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯
_modbusClient.WriteSingleCoil(lightUnitId, 3, true); //3-Y4地址绿灯
break; break;
// X5 → 绿灯 // X5 → 红按钮
case 5: case 5:
_logger?.LogInformation($"✅ X{portNumber}触发:绿灯常亮"); _modbusClient.WriteSingleCoil(lightUnitId, 0, true); //0-Y1地址蜂鸣器
_modbusClient.WriteSingleCoil(lightUnitId, 0, false); _modbusClient.WriteSingleCoil(lightUnitId, 1, true); //1-Y2地址红灯
_modbusClient.WriteSingleCoil(lightUnitId, 1, false); _modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯
_modbusClient.WriteSingleCoil(lightUnitId, 2, false); _modbusClient.WriteSingleCoil(lightUnitId, 3, false); //3-Y4地址绿灯
_modbusClient.WriteSingleCoil(lightUnitId, 3, false);
break; break;
} }
} }

View File

@ -611,8 +611,7 @@ namespace ZR.Service.mes.andon
model.Receiver4 = typeDic.Receiver4; model.Receiver4 = typeDic.Receiver4;
model.Receiver4Name = typeDic.Receiver4Name; model.Receiver4Name = typeDic.Receiver4Name;
} }
string strMessage = model.CreatedTime.ToString() + model.Area1 + model.Area2 + model.AlarmType + model.AlarmInfo;
string strMessage = $"{model.Area1}{model.Area2}{model.AlarmType}{model.AlarmInfo}";
// 2. 执行核心数据插入(先落库,确保数据不丢失) // 2. 执行核心数据插入(先落库,确保数据不丢失)
var resultEntity = Context.Insertable(model).ExecuteReturnEntity(); var resultEntity = Context.Insertable(model).ExecuteReturnEntity();
@ -723,7 +722,7 @@ namespace ZR.Service.mes.andon
string strOperate = "超时上报"; string strOperate = "超时上报";
int timeoutMinutes = 0; int timeoutMinutes = 0;
string ReceiveId = ""; string ReceiveId = "";
string strWatchMessage = item.Area1 + item.Area2 + item.AlarmType + item.AlarmInfo; string strWatchMessage = item.CreatedTime.ToString()+item.Area1 + item.Area2 + item.AlarmType + item.AlarmInfo;
//超时未响应接收人1向接收人2上报 //超时未响应接收人1向接收人2上报
if (item.AutoCount == 0 && item.Receiver2Name != null) if (item.AutoCount == 0 && item.Receiver2Name != null)
{ {
@ -874,5 +873,87 @@ namespace ZR.Service.mes.andon
//LightUp.CheckLightOnStatusAndTurnOn(_modbusClient, Convert.ToByte(15)); //LightUp.CheckLightOnStatusAndTurnOn(_modbusClient, Convert.ToByte(15));
return ApiResult.Success("处理成功"); return ApiResult.Success("处理成功");
} }
//public ApiResult createAlarmRecordTiaoQI(string strAlarmType)
//{
// // 1. 核心业务逻辑(新增报警记录)- 优先执行,不受通讯影响
// string strDay = DateTime.Now.ToString("yyyyMMdd");
// int Sequence = 1;
// // 兼容无历史记录的情况避免First()空指针)
// var lastItem = Queryable()
// .Where(it => it.AlarmCode.Contains(strDay))
// .OrderByDescending(it => it.Sequence)
// .ToList()
// .FirstOrDefault(); // 替换First()为FirstOrDefault(),避免无数据时抛异常
// if (lastItem != null)
// {
// Sequence = (int)lastItem.Sequence + 1;
// }
// string formattedSequence = Sequence.ToString("D4");
// string strAlarmCode = "Alarm" + strDay + formattedSequence;
// model.AlarmCode = strAlarmCode;
// model.Sequence = Sequence;
// model.Status = "待响应";
// // 获取报警类型配置
// var typeDic = andonAlarmTypeDictService.Queryable()
// .Where(k => k.TypeCode == model.AlarmTypeCode)
// .ToList()
// .FirstOrDefault(); // 替换ToList().FirstOrDefault(),减少内存占用
// if (typeDic != null)
// {
// model.Receiver1 = typeDic.Receiver1;
// model.Receiver1Name = typeDic.Receiver1Name;
// model.Receiver2 = typeDic.Receiver2;
// model.Receiver2Name = typeDic.Receiver2Name;
// model.Receiver3 = typeDic.Receiver3;
// model.Receiver3Name = typeDic.Receiver3Name;
// model.Receiver4 = typeDic.Receiver4;
// model.Receiver4Name = typeDic.Receiver4Name;
// }
// string strMessage = $"{model.Area1}{model.Area2}{model.AlarmType}{model.AlarmInfo}";
// // 2. 执行核心数据插入(先落库,确保数据不丢失)
// var resultEntity = Context.Insertable(model).ExecuteReturnEntity();
// // 3. 通讯相关操作(手表推送+三色灯)- 独立try-catch
// try
// {
// // 3.1 手表呼叫报警(注释保留,仅做异常隔离)
// if (!string.IsNullOrEmpty(model.Receiver1))
// {
// List<string> WatchAddressList = GetReceiverWatchAddress(model.Receiver1);
// if (WatchAddressList.Any())
// {
// foreach (string strWatchAddress in WatchAddressList)
// {
// Watchup.StartPush(strMessage, _socketGateway, strWatchAddress);
// }
// }
// }
// }
// catch (Exception ex)
// {
// }
// try
// {
// // 3.2 三色灯鸣叫报警(核心通讯操作,单独异常捕获)
// byte bLightIp = GetLightIp(model.Area1, model.Area2);
// if (bLightIp != 0)
// {
// LightUp.WriteAlarmLightCommand_Red(_modbusClient, bLightIp);
// }
// }
// catch (Exception ex)
// {
// }
// // 4. 返回新增的实体(核心业务结果不受通讯影响)
// return null;
//}
} }
} }