充电机故障信息保存

master
CZ 5 months ago
parent 355ef6b8d7
commit 17ebb89ced

@ -0,0 +1,72 @@
using SqlSugar;
namespace Entity.DbModel.Station;
///<summary>
///设备报警记录
///</summary>
[SugarTable("equip_alarm_define")]
public partial class EquipAlarmDefine : BaseModel
{
public EquipAlarmDefine()
{
}
/// <summary>
/// Desc:id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
public int Id { get; set; }
/// <summary>
/// Desc:设备类型编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_type_code")]
public int EquipTypeCode { get; set; }
/// <summary>
/// Desc:设备编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_code")]
public string EquipCode { get; set; }
/// <summary>
/// Desc:报警编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_code")]
public string ErrorCode { get; set; }
/// <summary>
/// Desc:报警等级
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_level")]
public string ErrorLevel { get; set; }
/// <summary>
/// Desc:报警描述
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_msg")]
public string ErrorMsg { get; set; }
/// <summary>
/// Desc:处理方法
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "process_method")]
public string ProcessMethod { get; set; }
}

@ -0,0 +1,86 @@
using SqlSugar;
namespace Entity.DbModel.Station;
///<summary>
///设备报警处理记录
///</summary>
[SugarTable("equip_alarm_process_record")]
public partial class EquipAlarmProcessRecord : BaseModel
{
public EquipAlarmProcessRecord()
{
}
/// <summary>
/// Desc:id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(ColumnName = "id")]
public int Id { get; set; }
/// <summary>
/// Desc:设备类型编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_type_code")]
public int EquipTypeCode { get; set; }
/// <summary>
/// Desc:设备编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_code")]
public string EquipCode { get; set; }
/// <summary>
/// Desc:报警编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_code")]
public string ErrorCode { get; set; }
/// <summary>
/// Desc:报警等级
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_level")]
public string ErrorLevel { get; set; }
/// <summary>
/// Desc:报警描述
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_msg")]
public string ErrorMsg { get; set; }
/// <summary>
/// Desc:处理方法
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "process_method")]
public string ProcessMethod { get; set; }
/// <summary>
/// Desc:开始时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "start_time")]
public DateTime? StartTime { get; set; }
/// <summary>
/// Desc:处理时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "process_time")]
public DateTime? ProcessTime { get; set; }
}

@ -0,0 +1,80 @@
using SqlSugar;
namespace Entity.DbModel.Station;
///<summary>
///设备报警记录
///</summary>
[SugarTable("equip_alarm_record")]
public partial class EquipAlarmRecord : BaseModel
{
public EquipAlarmRecord()
{
}
/// <summary>
/// Desc:id
/// Default:
/// Nullable:False
/// </summary>
[SugarColumn(IsPrimaryKey = true, IsIdentity = true, ColumnName = "id")]
public int Id { get; set; }
/// <summary>
/// Desc:设备类型编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_type_code")]
public int EquipTypeCode { get; set; }
/// <summary>
/// Desc:设备编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "equip_code")]
public string EquipCode { get; set; }
/// <summary>
/// Desc:报警编码
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_code")]
public string ErrorCode { get; set; }
/// <summary>
/// Desc:报警等级
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_level")]
public string ErrorLevel { get; set; }
/// <summary>
/// Desc:报警描述
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "error_msg")]
public string ErrorMsg { get; set; }
/// <summary>
/// Desc:处理方法
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "process_method")]
public string ProcessMethod { get; set; }
/// <summary>
/// Desc:开始时间
/// Default:
/// Nullable:True
/// </summary>
[SugarColumn(ColumnName = "start_time")]
public DateTime? StartTime { get; set; }
}

@ -0,0 +1,13 @@
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using SqlSugar;
namespace Repository.Station;
[Scope]
public class EquipAlarmDefineRepository : BaseRepository<EquipAlarmDefine>
{
public EquipAlarmDefineRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
{
}
}

@ -0,0 +1,13 @@
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using SqlSugar;
namespace Repository.Station;
[Scope]
public class EquipAlarmProcessRecordRepository : BaseRepository<EquipAlarmProcessRecord>
{
public EquipAlarmProcessRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
{
}
}

@ -0,0 +1,13 @@
using Entity.DbModel.Station;
using HybirdFrameworkCore.Autofac.Attribute;
using SqlSugar;
namespace Repository.Station;
[Scope]
public class EquipAlarmRecordRepository : BaseRepository<EquipAlarmRecord>
{
public EquipAlarmRecordRepository(ISqlSugarClient sqlSugar) : base(sqlSugar)
{
}
}

@ -10,6 +10,9 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Common.Const;
using Entity.DbModel.Station;
using Repository;
using Repository.Station; using Repository.Station;
namespace Service.Charger.Handler namespace Service.Charger.Handler
@ -24,10 +27,18 @@ namespace Service.Charger.Handler
{ {
private static readonly ILog Log = LogManager.GetLogger(typeof(UploadRemoteSignalDataHandler)); private static readonly ILog Log = LogManager.GetLogger(typeof(UploadRemoteSignalDataHandler));
private BinInfoRepository BinInfoRepository { get; set; } private BinInfoRepository BinInfoRepository { get; set; }
private EquipAlarmRecordRepository EquipAlarmRecordRepository { get; set; }
public UploadRemoteSignalDataHandler(BinInfoRepository _binInfoRepository) private EquipAlarmProcessRecordRepository EquipAlarmProcessRecordRepository { get; set; }
private EquipAlarmDefineRepository EquipAlarmDefineRepository { get; set; }
public UploadRemoteSignalDataHandler(BinInfoRepository _binInfoRepository,
EquipAlarmRecordRepository _EquipAlarmRecordRepository,
EquipAlarmProcessRecordRepository _EquipAlarmProcessRecordRepository,
EquipAlarmDefineRepository _EquipAlarmDefineRepository)
{ {
BinInfoRepository = _binInfoRepository; BinInfoRepository = _binInfoRepository;
EquipAlarmRecordRepository = _EquipAlarmRecordRepository;
EquipAlarmProcessRecordRepository = _EquipAlarmProcessRecordRepository;
EquipAlarmDefineRepository = _EquipAlarmDefineRepository;
} }
protected override void ChannelRead0(IChannelHandlerContext ctx, UploadRemoteSignalData msg) 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); 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<string> lstAlarm = new List<string>();
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<string> uniqueToList1 = lstAlarm.Except(sqllstAlarm).ToList();
// 找出数据库中存在但实时报警中不存在的元素
List<string> 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<EquipAlarmRecord> 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
} }
} }
} }

Loading…
Cancel
Save