From 3a39ac3976a8f848b276799d73bf6dffd7b377ac Mon Sep 17 00:00:00 2001 From: tq <1916474859@qq,com> Date: Mon, 15 Jul 2024 16:03:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B0=B4=E5=86=B7=E6=9C=BA=E6=95=85=E9=9A=9C?= =?UTF-8?q?=E5=85=A5=E5=BA=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Handler/WaterCoolStatusHandler.cs | 114 +++++++++++++++++- 1 file changed, 113 insertions(+), 1 deletion(-) diff --git a/Service/WaterCool/Handler/WaterCoolStatusHandler.cs b/Service/WaterCool/Handler/WaterCoolStatusHandler.cs index 4d8f6b3..4f9c78d 100644 --- a/Service/WaterCool/Handler/WaterCoolStatusHandler.cs +++ b/Service/WaterCool/Handler/WaterCoolStatusHandler.cs @@ -1,6 +1,9 @@ -using DotNetty.Transport.Channels; +using Common.Const; +using DotNetty.Transport.Channels; +using Entity.DbModel.Station; using HybirdFrameworkCore.Autofac.Attribute; using log4net; +using Repository.Station; using Service.Charger.Handler; using Service.WaterCool.Client; using Service.WaterCool.Msg.WaterCool; @@ -13,7 +16,11 @@ public class WaterCoolStatusHandler : SimpleChannelInboundHandler= 1) + { + SaveAlarmInfo(new List { msg.TmsTroubleCode.ToString() }, sn); + } } } + private void SaveAlarmInfo(List lstAlarm, string sn) + { + string waterCool = "waterCool"; + int typeCode = (int)EquipmentType.WaterCool; + if (lstAlarm.Count > 0) + { + #region 有报警比较两边差异,新出现的报警就添加,消失的报警就处理并记录 + + var lstEquipAlarmRecord = + EquipAlarmRecordRepository.QueryListByClause(e => e.EquipTypeCode == typeCode).ToList(); + var sqllstAlarm = lstEquipAlarmRecord.Select(obj => obj.ErrorCode).ToList(); + + // 找出实时报警中存在但数据库中不存在的元素 + List uniqueToList1 = lstAlarm.Except(sqllstAlarm).ToList(); + + // 找出数据库中存在但实时报警中不存在的元素 + List uniqueToList2 = sqllstAlarm.Except(lstAlarm).ToList(); + + if (uniqueToList1.Count > 0) + { + //这里要添加新的报警数据 + foreach (var errorCode in uniqueToList1) + { + EquipAlarmDefine? alarmDefine = + EquipAlarmDefineRepository.SelectByEquipCodeAndErrorCode(typeCode, waterCool, + errorCode); + if (alarmDefine != null) + { + EquipAlarmRecord record = new EquipAlarmRecord() + { + EquipTypeCode = alarmDefine.EquipTypeCode, + EquipCode = sn, + ErrorCode = alarmDefine.ErrorCode, + ErrorLevel = alarmDefine.ErrorLevel, + ErrorMsg = alarmDefine.ErrorMsg, + ProcessMethod = alarmDefine.ProcessMethod, + StartTime = DateTime.Now + }; + EquipAlarmRecordRepository.Insert(record); + } + } + } + + if (uniqueToList2.Count > 0) + { + //这些是要清除实时报警,并且处理记录的。 + // 使用LINQ找出ErrorCode在uniqueToList2中的EquipAlarmRecord对象 + List filteredObjectList = lstEquipAlarmRecord + .Where(obj => uniqueToList2.Contains(obj.ErrorCode)) + .ToList(); + foreach (var VARIABLE in filteredObjectList) + { + EquipAlarmProcessRecord EquipAlarmProcessRecord = new EquipAlarmProcessRecord(); + EquipAlarmProcessRecord.EquipTypeCode = VARIABLE.EquipTypeCode; + EquipAlarmProcessRecord.EquipCode = VARIABLE.EquipCode; + EquipAlarmProcessRecord.ErrorCode = VARIABLE.ErrorCode; + EquipAlarmProcessRecord.ErrorLevel = VARIABLE.ErrorLevel; + EquipAlarmProcessRecord.ErrorMsg = VARIABLE.ErrorMsg; + EquipAlarmProcessRecord.ProcessMethod = VARIABLE.ProcessMethod; + EquipAlarmProcessRecord.StartTime = VARIABLE.StartTime; + EquipAlarmProcessRecord.ProcessTime = DateTime.Now; + + EquipAlarmProcessRecordRepository.Insert(EquipAlarmProcessRecord); + } + + EquipAlarmRecordRepository.Delete(filteredObjectList); + } + + #endregion + } + else + { + #region 没报警把已处理记录更新并删除实时报警 + + var lstEquipAlarmRecord = + EquipAlarmRecordRepository.QueryListByClause(e => e.EquipTypeCode ==typeCode ).ToList(); + + if (lstEquipAlarmRecord.Count > 0) + { + foreach (var VARIABLE in lstEquipAlarmRecord) + { + EquipAlarmProcessRecord EquipAlarmProcessRecord = new EquipAlarmProcessRecord(); + EquipAlarmProcessRecord.EquipTypeCode = VARIABLE.EquipTypeCode; + EquipAlarmProcessRecord.EquipCode = VARIABLE.EquipCode; + EquipAlarmProcessRecord.ErrorCode = VARIABLE.ErrorCode; + EquipAlarmProcessRecord.ErrorLevel = VARIABLE.ErrorLevel; + EquipAlarmProcessRecord.ErrorMsg = VARIABLE.ErrorMsg; + EquipAlarmProcessRecord.ProcessMethod = VARIABLE.ProcessMethod; + EquipAlarmProcessRecord.StartTime = VARIABLE.StartTime; + EquipAlarmProcessRecord.ProcessTime = DateTime.Now; + + EquipAlarmProcessRecordRepository.Insert(EquipAlarmProcessRecord); + } + + EquipAlarmRecordRepository.Delete(e => e.EquipTypeCode == typeCode); + } + + #endregion + } + } } \ No newline at end of file