From be0141e89b24122159e1ca837f25d6245638976b Mon Sep 17 00:00:00 2001 From: quowingwang Date: Thu, 8 Jan 2026 18:36:10 +0800 Subject: [PATCH] =?UTF-8?q?=E6=89=8B=E8=A1=A8=E4=BF=A1=E6=81=AF=E7=BB=B4?= =?UTF-8?q?=E6=8A=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Utils/MyAlarmLigth/TiaoQiFangLight.cs | 48 ++++++---- .../mes/andon/AndonAlarmRecordService.cs | 87 ++++++++++++++++++- 2 files changed, 117 insertions(+), 18 deletions(-) diff --git a/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs b/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs index 35716104..b39ddcb7 100644 --- a/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs +++ b/ZR.Service/Utils/MyAlarmLigth/TiaoQiFangLight.cs @@ -5,6 +5,9 @@ using System.Collections.Generic; using System.Linq; using System.Threading; 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 { @@ -28,6 +31,8 @@ namespace ZR.Service.Utils.MyAlarmLigth private CancellationTokenSource _cts; private Task _listenTask; + //private AndonAlarmLevelService andonAlarmLevelService = new AndonAlarmLevelService(); + /// /// 构造函数(精简参数,日志可选) /// @@ -121,32 +126,45 @@ namespace ZR.Service.Utils.MyAlarmLigth byte lightUnitId = 0x01; // 警灯站号(可按需替换为ReadAlarmlightNumber) try { + //X1、X2、X3红按钮,X4绿按钮,X5红按钮 + //Y1蜂鸣器、Y2红灯、Y3黄灯、Y4绿灯 + //Y1->0; Y2->1; y3->2; y4->3 switch (portNumber) { - // X1-X4 → 红灯 + // X1→ 红按钮 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; + // X2→ 红按钮 case 2: - _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); - _modbusClient.WriteSingleCoil(lightUnitId, 1, true); + _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; + // X3→ 红按钮 case 3: - _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); - _modbusClient.WriteSingleCoil(lightUnitId, 2, true); + _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; + // X4→ 绿按钮 case 4: - _logger?.LogInformation($"✅ X{portNumber}触发:红灯闪烁"); - _modbusClient.WriteSingleCoil(lightUnitId, 3, true); + _modbusClient.WriteSingleCoil(lightUnitId, 0, false); //0-Y1地址蜂鸣器 + _modbusClient.WriteSingleCoil(lightUnitId, 1, false); //1-Y2地址红灯 + _modbusClient.WriteSingleCoil(lightUnitId, 2, false); //2-Y3地址黄灯 + _modbusClient.WriteSingleCoil(lightUnitId, 3, true); //3-Y4地址绿灯 break; - // X5 → 绿灯 + // X5 → 红按钮 case 5: - _logger?.LogInformation($"✅ X{portNumber}触发:绿灯常亮"); - _modbusClient.WriteSingleCoil(lightUnitId, 0, false); - _modbusClient.WriteSingleCoil(lightUnitId, 1, false); - _modbusClient.WriteSingleCoil(lightUnitId, 2, false); - _modbusClient.WriteSingleCoil(lightUnitId, 3, false); + _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; } } diff --git a/ZR.Service/mes/andon/AndonAlarmRecordService.cs b/ZR.Service/mes/andon/AndonAlarmRecordService.cs index daff790b..49631441 100644 --- a/ZR.Service/mes/andon/AndonAlarmRecordService.cs +++ b/ZR.Service/mes/andon/AndonAlarmRecordService.cs @@ -611,8 +611,7 @@ namespace ZR.Service.mes.andon model.Receiver4 = typeDic.Receiver4; model.Receiver4Name = typeDic.Receiver4Name; } - - string strMessage = $"{model.Area1}{model.Area2}{model.AlarmType}{model.AlarmInfo}"; + string strMessage = model.CreatedTime.ToString() + model.Area1 + model.Area2 + model.AlarmType + model.AlarmInfo; // 2. 执行核心数据插入(先落库,确保数据不丢失) var resultEntity = Context.Insertable(model).ExecuteReturnEntity(); @@ -723,7 +722,7 @@ namespace ZR.Service.mes.andon string strOperate = "超时上报"; int timeoutMinutes = 0; 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上报 if (item.AutoCount == 0 && item.Receiver2Name != null) { @@ -874,5 +873,87 @@ namespace ZR.Service.mes.andon //LightUp.CheckLightOnStatusAndTurnOn(_modbusClient, Convert.ToByte(15)); 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 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; + //} } } \ No newline at end of file