diff --git a/Service/Fire/Common/FireConst.cs b/Service/Fire/Common/FireConst.cs
index 6d54b32..e5515db 100644
--- a/Service/Fire/Common/FireConst.cs
+++ b/Service/Fire/Common/FireConst.cs
@@ -1,4 +1,6 @@
-using DotNetty.Common.Utilities;
+using Common.Const;
+using DotNetty.Common.Utilities;
+using Entity.DbModel.Station;
namespace Service.Fire.Common;
diff --git a/Service/Fire/Handler/DataReqHandler.cs b/Service/Fire/Handler/DataReqHandler.cs
index 9f3044e..4af4812 100644
--- a/Service/Fire/Handler/DataReqHandler.cs
+++ b/Service/Fire/Handler/DataReqHandler.cs
@@ -1,7 +1,10 @@
using System.Text;
+using Common.Const;
using DotNetty.Transport.Channels;
+using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using log4net;
+using Repository.Station;
using Service.Fire.Client;
using Service.Fire.Common;
using Service.Fire.Msg.Fire.Req;
@@ -21,12 +24,69 @@ namespace Service.Fire.Handler
{
private static readonly ILog Log = LogManager.GetLogger(typeof(PollingReqHandler));
+ public EquipAlarmDefineRepository _equipAlarmDefineRepository { get; set; }
+ public EquipAlarmRecordRepository _equipAlarmRecordRepository { get; set; }
+ public EquipAlarmProcessRecordRepository _equipAlarmProcessRecordRepository { get; set; }
+
+ public DataReqHandler(EquipAlarmDefineRepository equipAlarmDefineRepository,
+ EquipAlarmRecordRepository equipAlarmRecordRepository,
+ EquipAlarmProcessRecordRepository equipAlarmProcessRecordRepository)
+ {
+ _equipAlarmDefineRepository = equipAlarmDefineRepository;
+ _equipAlarmRecordRepository = equipAlarmRecordRepository;
+ _equipAlarmProcessRecordRepository = equipAlarmProcessRecordRepository;
+ }
+
protected override void ChannelRead0(IChannelHandlerContext ctx, DataReq msg)
{
if (FireMgr.TryGetClient(ctx.Channel, out var sn, out var client))
{
Log.Info($"receive {msg} from {sn}");
+ if (msg.Building == 1) //1栋左
+ {
+ if (msg.DeviceStatus == 0x05) //火警
+ {
+ Troubleshoot("85", true);
+ }
+ else if (msg.DeviceStatus == 0x00) //火警消除
+ {
+ Troubleshoot("85", false);
+ }
+
+ if (msg.DeviceType == 0xED) //气体现场动作
+ {
+ Troubleshoot("86", true);
+ }
+ else //报警消除
+ {
+ Troubleshoot("86", false);
+ }
+ }
+ else if (msg.Building == 2) //2栋右
+ {
+ if (msg.DeviceStatus == 0x05) //火警
+ {
+ Troubleshoot("87", true);
+ }
+ else if (msg.DeviceStatus == 0x00) //火警消除
+ {
+ Troubleshoot("87", false);
+ }
+
+ if (msg.DeviceType == 0xED) //气体现场动作
+ {
+ Troubleshoot("88", true);
+ }
+ else //报警消除
+ {
+ Troubleshoot("85", false);
+ }
+ }
+
+ #region 预处理
+
+ /*
string datatime =
(new DateTime(2000 + msg.Years, msg.Month, msg.Day, msg.Hour, msg.Minute, msg.Seconds)).ToString();
string functionalAttribute = FireConst.FunctionalAttribute(msg.FunctionalAttribute);
@@ -34,6 +94,8 @@ namespace Service.Fire.Handler
string deviceStatus = FireConst.DeviceStatus(msg.DeviceStatus);
string deviceType = FireConst.DeviceType(msg.DeviceType);
+ string fault = informationType + functionalAttribute + ":" + deviceType + deviceStatus;
+
string strDecode = "";
for (int i = 0; i < msg.BytesLocationCode.Length; i++)
{
@@ -51,7 +113,73 @@ namespace Service.Fire.Handler
byte[] bytesVelNo = FireConst.ToByteByHexStr(strDecode);
Encoding gbEcoding = Encoding.GetEncoding("gb2312");
string strVelNo = gbEcoding.GetString(bytesVelNo);
+ */
+
+ #endregion
+ }
+ }
+
+ ///
+ /// 处理报警方法
+ ///
+ /// 报警编码
+ /// 是否存在报警
+ ///
+ public bool Troubleshoot(string errorCode, bool isAlarm)
+ {
+ if (isAlarm) //存在报警
+ {
+ EquipAlarmDefine EquipAlarmDefine =
+ _equipAlarmDefineRepository.QueryByClause(i =>
+ i.ErrorCode == errorCode && i.EquipTypeCode == (int)EquipmentType.Fire);
+
+ if (EquipAlarmDefine!=null)
+ {
+ var isfault=_equipAlarmRecordRepository.QueryByClause(i =>
+ i.ErrorCode == errorCode && i.EquipTypeCode == (int)EquipmentType.Fire);
+ if (isfault!=null) //判断这个报警是否已经添加了
+ {
+ return true;
+ }
+
+ EquipAlarmRecord EquipAlarmRecord = new EquipAlarmRecord()
+ {
+ EquipTypeCode = EquipAlarmDefine.EquipTypeCode,
+ EquipCode = EquipAlarmDefine.EquipCode,
+ ErrorCode = EquipAlarmDefine.ErrorCode,
+ ErrorLevel = EquipAlarmDefine.ErrorLevel,
+ ErrorMsg = EquipAlarmDefine.ErrorMsg,
+ StartTime = DateTime.Now,
+ };
+ _equipAlarmRecordRepository.Insert(EquipAlarmRecord); //添加故障处理
+ }
+ }
+ else
+ {
+ EquipAlarmRecord EquipAlarmRecord =
+ _equipAlarmRecordRepository.QueryByClause(i =>
+ i.ErrorCode == errorCode && i.EquipTypeCode == (int)EquipmentType.Fire);
+
+ if (EquipAlarmRecord != null)
+ {
+ EquipAlarmProcessRecord EquipAlarmProcessRecord = new EquipAlarmProcessRecord()
+ {
+ EquipTypeCode = EquipAlarmRecord.EquipTypeCode,
+ EquipCode = EquipAlarmRecord.EquipCode,
+ ErrorCode = EquipAlarmRecord.ErrorCode,
+ ErrorLevel = EquipAlarmRecord.ErrorLevel,
+ ErrorMsg = EquipAlarmRecord.ErrorMsg,
+ StartTime = EquipAlarmRecord.StartTime,
+ ProcessTime = DateTime.Now,
+ };
+ _equipAlarmProcessRecordRepository.Insert(EquipAlarmProcessRecord); //保存记录
+
+ _equipAlarmRecordRepository.Delete(i =>
+ i.ErrorCode == errorCode && i.EquipTypeCode == (int)EquipmentType.Fire);
+ }
}
+
+ return true;
}
}
}
\ No newline at end of file