diff --git a/Entity/DbModel/Station/EquipAlarmDefine.cs b/Entity/DbModel/Station/EquipAlarmDefine.cs
new file mode 100644
index 0000000..95b84d4
--- /dev/null
+++ b/Entity/DbModel/Station/EquipAlarmDefine.cs
@@ -0,0 +1,72 @@
+using SqlSugar;
+
+namespace Entity.DbModel.Station;
+
+///
+///设备报警记录
+///
+[SugarTable("equip_alarm_define")]
+public partial class EquipAlarmDefine : BaseModel
+{
+ public EquipAlarmDefine()
+ {
+ }
+
+ ///
+ /// Desc:id
+ /// Default:
+ /// Nullable:False
+ ///
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
+ public int Id { get; set; }
+
+ ///
+ /// Desc:设备类型编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_type_code")]
+ public int EquipTypeCode { get; set; }
+
+ ///
+ /// Desc:设备编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_code")]
+ public string EquipCode { get; set; }
+
+ ///
+ /// Desc:报警编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_code")]
+ public string ErrorCode { get; set; }
+
+ ///
+ /// Desc:报警等级
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_level")]
+ public string ErrorLevel { get; set; }
+
+ ///
+ /// Desc:报警描述
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_msg")]
+ public string ErrorMsg { get; set; }
+
+ ///
+ /// Desc:处理方法
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "process_method")]
+ public string ProcessMethod { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/Entity/DbModel/Station/EquipAlarmProcessRecord.cs b/Entity/DbModel/Station/EquipAlarmProcessRecord.cs
new file mode 100644
index 0000000..9e00eb0
--- /dev/null
+++ b/Entity/DbModel/Station/EquipAlarmProcessRecord.cs
@@ -0,0 +1,86 @@
+using SqlSugar;
+
+namespace Entity.DbModel.Station;
+
+///
+ ///设备报警处理记录
+ ///
+ [SugarTable("equip_alarm_process_record")]
+ public partial class EquipAlarmProcessRecord : BaseModel
+ {
+ public EquipAlarmProcessRecord()
+ {
+ }
+
+ ///
+ /// Desc:id
+ /// Default:
+ /// Nullable:False
+ ///
+ [SugarColumn(ColumnName = "id")]
+ public int Id { get; set; }
+
+ ///
+ /// Desc:设备类型编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_type_code")]
+ public int EquipTypeCode { get; set; }
+
+ ///
+ /// Desc:设备编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_code")]
+ public string EquipCode { get; set; }
+
+ ///
+ /// Desc:报警编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_code")]
+ public string ErrorCode { get; set; }
+
+ ///
+ /// Desc:报警等级
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_level")]
+ public string ErrorLevel { get; set; }
+
+ ///
+ /// Desc:报警描述
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_msg")]
+ public string ErrorMsg { get; set; }
+
+ ///
+ /// Desc:处理方法
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "process_method")]
+ public string ProcessMethod { get; set; }
+ ///
+ /// Desc:开始时间
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "start_time")]
+ public DateTime? StartTime { get; set; }
+ ///
+ /// Desc:处理时间
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "process_time")]
+ public DateTime? ProcessTime { get; set; }
+
+
+ }
\ No newline at end of file
diff --git a/Entity/DbModel/Station/EquipAlarmRecord.cs b/Entity/DbModel/Station/EquipAlarmRecord.cs
new file mode 100644
index 0000000..75e8fa8
--- /dev/null
+++ b/Entity/DbModel/Station/EquipAlarmRecord.cs
@@ -0,0 +1,80 @@
+using SqlSugar;
+
+namespace Entity.DbModel.Station;
+
+///
+///设备报警记录
+///
+[SugarTable("equip_alarm_record")]
+public partial class EquipAlarmRecord : BaseModel
+{
+ public EquipAlarmRecord()
+ {
+ }
+
+ ///
+ /// Desc:id
+ /// Default:
+ /// Nullable:False
+ ///
+ [SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
+ public int Id { get; set; }
+
+ ///
+ /// Desc:设备类型编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_type_code")]
+ public int EquipTypeCode { get; set; }
+
+ ///
+ /// Desc:设备编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "equip_code")]
+ public string EquipCode { get; set; }
+
+ ///
+ /// Desc:报警编码
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_code")]
+ public string ErrorCode { get; set; }
+
+ ///
+ /// Desc:报警等级
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_level")]
+ public string ErrorLevel { get; set; }
+
+ ///
+ /// Desc:报警描述
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "error_msg")]
+ public string ErrorMsg { get; set; }
+
+ ///
+ /// Desc:处理方法
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "process_method")]
+ public string ProcessMethod { get; set; }
+
+ ///
+ /// Desc:开始时间
+ /// Default:
+ /// Nullable:True
+ ///
+ [SugarColumn(ColumnName = "start_time")]
+ public DateTime? StartTime { get; set; }
+
+
+}
\ No newline at end of file
diff --git a/Repository/Station/EquipAlarmDefineRepository.cs b/Repository/Station/EquipAlarmDefineRepository.cs
new file mode 100644
index 0000000..8e4f2b3
--- /dev/null
+++ b/Repository/Station/EquipAlarmDefineRepository.cs
@@ -0,0 +1,13 @@
+using Entity.DbModel.Station;
+using HybirdFrameworkCore.Autofac.Attribute;
+using SqlSugar;
+
+namespace Repository.Station;
+
+[Scope]
+public class EquipAlarmDefineRepository : BaseRepository
+{
+ public EquipAlarmDefineRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Repository/Station/EquipAlarmProcessRecordRepository.cs b/Repository/Station/EquipAlarmProcessRecordRepository.cs
new file mode 100644
index 0000000..8cd9b8f
--- /dev/null
+++ b/Repository/Station/EquipAlarmProcessRecordRepository.cs
@@ -0,0 +1,13 @@
+using Entity.DbModel.Station;
+using HybirdFrameworkCore.Autofac.Attribute;
+using SqlSugar;
+
+namespace Repository.Station;
+
+[Scope]
+public class EquipAlarmProcessRecordRepository : BaseRepository
+{
+ public EquipAlarmProcessRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Repository/Station/EquipAlarmRecordRepository.cs b/Repository/Station/EquipAlarmRecordRepository.cs
new file mode 100644
index 0000000..40a71f6
--- /dev/null
+++ b/Repository/Station/EquipAlarmRecordRepository.cs
@@ -0,0 +1,13 @@
+using Entity.DbModel.Station;
+using HybirdFrameworkCore.Autofac.Attribute;
+using SqlSugar;
+
+namespace Repository.Station;
+
+[Scope]
+public class EquipAlarmRecordRepository : BaseRepository
+{
+ public EquipAlarmRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
+ {
+ }
+}
\ No newline at end of file
diff --git a/Service/Charger/Handler/UploadRemoteSignalDataHandler.cs b/Service/Charger/Handler/UploadRemoteSignalDataHandler.cs
index b2277ce..2120ddb 100644
--- a/Service/Charger/Handler/UploadRemoteSignalDataHandler.cs
+++ b/Service/Charger/Handler/UploadRemoteSignalDataHandler.cs
@@ -10,6 +10,9 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using Common.Const;
+using Entity.DbModel.Station;
+using Repository;
using Repository.Station;
namespace Service.Charger.Handler
@@ -24,10 +27,18 @@ namespace Service.Charger.Handler
{
private static readonly ILog Log = LogManager.GetLogger(typeof(UploadRemoteSignalDataHandler));
private BinInfoRepository BinInfoRepository { get; set; }
-
- public UploadRemoteSignalDataHandler(BinInfoRepository _binInfoRepository)
+ private EquipAlarmRecordRepository EquipAlarmRecordRepository { get; set; }
+ private EquipAlarmProcessRecordRepository EquipAlarmProcessRecordRepository { get; set; }
+ private EquipAlarmDefineRepository EquipAlarmDefineRepository { get; set; }
+ public UploadRemoteSignalDataHandler(BinInfoRepository _binInfoRepository,
+ EquipAlarmRecordRepository _EquipAlarmRecordRepository,
+ EquipAlarmProcessRecordRepository _EquipAlarmProcessRecordRepository,
+ EquipAlarmDefineRepository _EquipAlarmDefineRepository)
{
BinInfoRepository = _binInfoRepository;
+ EquipAlarmRecordRepository = _EquipAlarmRecordRepository;
+ EquipAlarmProcessRecordRepository = _EquipAlarmProcessRecordRepository;
+ EquipAlarmDefineRepository = _EquipAlarmDefineRepository;
}
protected override void ChannelRead0(IChannelHandlerContext ctx, UploadRemoteSignalData msg)
@@ -50,6 +61,140 @@ namespace Service.Charger.Handler
{
BinInfoRepository.Update(i => i.ChargeStatus == 4, i => i.ChargerNo == sn);
}
+
+ #region 充电机故障显示
+//不准确,注释
+//if(sn=="C2008")
+ //if (msg.TotalWarning||msg.TotalError)
+ {
+ var lstEquipAlarmDefine = EquipAlarmDefineRepository.QueryListByClause(i => i.EquipCode == "充电机");
+
+ List lstAlarm = new List();
+
+ if (msg.EmergencyStop)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="1").ToList()[0].ErrorCode);
+ if (msg.SmokeFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="2").ToList()[0].ErrorCode);
+ if (msg.ChargeACInputCircuitBreakerFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="3").ToList()[0].ErrorCode);
+ if (msg.DcBusPositElecContactorRefuFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="4").ToList()[0].ErrorCode);
+ if (msg.DcBusNegatElecContactorRefuFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="5").ToList()[0].ErrorCode);
+ if (msg.DcBusPositElecFusesFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="6").ToList()[0].ErrorCode);
+ if (msg.DDcBusNegatElecFusesFault)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="7").ToList()[0].ErrorCode);
+ if (msg.ChargingInterfaceLockError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="8").ToList()[0].ErrorCode);
+ if (msg.ChargerFanError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="9").ToList()[0].ErrorCode);
+ if (msg.ArresterError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="10").ToList()[0].ErrorCode);
+ if (msg.InsulationDetectionAlarm)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="11").ToList()[0].ErrorCode);
+ if (msg.InsulationDetectionError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="12").ToList()[0].ErrorCode);
+ if (msg.BatteryPolarityReverseError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="13").ToList()[0].ErrorCode);
+ if (msg.VeConGuidanceFailure)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="14").ToList()[0].ErrorCode);
+ if (msg.ChargingOverTempError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="15").ToList()[0].ErrorCode);
+ if (msg.InterfaceOverFaulty)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="16").ToList()[0].ErrorCode);
+ if (msg.ChargingGunNotHomingError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="17").ToList()[0].ErrorCode);
+ if (msg.BmsConnError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="18").ToList()[0].ErrorCode);
+ if (msg.ChargerInputOverVoltageError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="19").ToList()[0].ErrorCode);
+ if (msg.ChargerInputUnderVoltageError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="20").ToList()[0].ErrorCode);
+ if (msg.DcBusOutputOverVoltageError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="21").ToList()[0].ErrorCode);
+ if (msg.DcBusOutputUnderVoltageError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="22").ToList()[0].ErrorCode);
+ if (msg.DcBusOutputOverCurrentError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="23").ToList()[0].ErrorCode);
+ if (msg.VehicleConnStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="24").ToList()[0].ErrorCode);
+ if (msg.ChargeStationGunHolderStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="25").ToList()[0].ErrorCode);
+ if (msg.ChargingInterfaceLockStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="26").ToList()[0].ErrorCode);
+ if (msg.PositiveDcTransmissionContactorStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="27").ToList()[0].ErrorCode);
+ if (msg.NegativeDcTransmissionContactorStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="28").ToList()[0].ErrorCode);
+ if (msg.EntranceGuardError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="29").ToList()[0].ErrorCode);
+ if (msg.PConA3dhesionFailure)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="30").ToList()[0].ErrorCode);
+ if (msg.NConadhesionFailure)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="31").ToList()[0].ErrorCode);
+ if (msg.ReliefCircuitError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="32").ToList()[0].ErrorCode);
+ if (msg.ConActivated)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="33").ToList()[0].ErrorCode);
+ if (msg.ConAdhesionFailure)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="34").ToList()[0].ErrorCode);
+ if (msg.AuxiliaryPowerError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="35").ToList()[0].ErrorCode);
+ if (msg.ModuleOutputReverseError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="36").ToList()[0].ErrorCode);
+ if (msg.AcContactorStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="37").ToList()[0].ErrorCode);
+ if (msg.ChargingGunOverTempWarning)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="38").ToList()[0].ErrorCode);
+ if (msg.ChargerOverTempWarning)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="39").ToList()[0].ErrorCode);
+ if (msg.MeterConnError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="40").ToList()[0].ErrorCode);
+ if (msg.MeterDataError)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="41").ToList()[0].ErrorCode);
+ if (msg.WaterloggingWarning)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="42").ToList()[0].ErrorCode);
+ if (msg.ReversePowerWarning)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="43").ToList()[0].ErrorCode);
+ if (msg.BatteryPackAuxiliaryPowerStatus)lstAlarm.Add(sn+lstEquipAlarmDefine.Where(i=>i.ErrorCode=="44").ToList()[0].ErrorCode);
+
+
+ //查询当前充电机的实时报警信息
+ var lstNowEquipAlarmRecord = EquipAlarmRecordRepository.QueryListByClause(i => i.EquipCode == sn);
+ var sqllstAlarm=lstNowEquipAlarmRecord.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.QueryByClause(i=>i.ErrorCode==errorCode.Replace(sn,""));
+ if (alarmDefine != null)
+ {
+ EquipAlarmRecord record = new EquipAlarmRecord()
+ {
+ EquipTypeCode = alarmDefine.EquipTypeCode,
+ EquipCode = sn,
+ ErrorCode = errorCode,
+ ErrorLevel = alarmDefine.ErrorLevel,
+ ErrorMsg = alarmDefine.ErrorMsg,
+ ProcessMethod = alarmDefine.ProcessMethod,
+ StartTime= DateTime.Now
+ };
+ EquipAlarmRecordRepository.Insert(record);
+ }
+ }
+ }
+ else if (uniqueToList2.Count > 0)
+ {
+ //这些是要清除实时报警,并且处理记录的。
+ // 使用LINQ找出ErrorCode在uniqueToList2中的EquipAlarmRecord对象
+ List filteredObjectList = lstNowEquipAlarmRecord
+ .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);
+ }
+ }
+ //else
+ //{
+ /*var lstNowEquipAlarmRecord = EquipAlarmRecordRepository.QueryListByClause(i => i.EquipCode == sn);
+ if (lstNowEquipAlarmRecord.Count > 0)
+ {
+ foreach (var VARIABLE in lstNowEquipAlarmRecord)
+ {
+ 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(i=>i.Id>0);*/
+ //}
+
+ #endregion
}
}
}