/* *所有关于iot_alarm类的业务代码应在此处编写 *可使用repository.调用常用方法,获取EF/Dapper等信息 *如果需要事务请使用repository.DbContextBeginTransaction *也可使用DBServerProvider.手动获取数据库相关信息 *用户信息、权限、角色等使用UserContext.Current操作 *iot_alarmService对增、删、改查、导入、导出、审核业务代码扩展参照ServiceFunFilter */ using VolPro.Core.BaseProvider; using VolPro.Core.Extensions.AutofacManager; using VolPro.Entity.DomainModels; using System.Linq; using VolPro.Core.Utilities; using System.Linq.Expressions; using VolPro.Core.Extensions; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.AspNetCore.Http; using Warehouse.IRepositories; using System; using System.Threading.Tasks; namespace Warehouse.Services { public partial class iot_alarmService { private readonly IHttpContextAccessor _httpContextAccessor; private readonly Iiot_alarmRepository _repository;//访问数据库 [ActivatorUtilitiesConstructor] public iot_alarmService( Iiot_alarmRepository dbRepository, IHttpContextAccessor httpContextAccessor ) : base(dbRepository) { _httpContextAccessor = httpContextAccessor; _repository = dbRepository; //多租户会用到这init代码,其他情况可以不用 //base.Init(dbRepository); } /// /// Upsert 单条告警。按 SourceAlarmId 去重,已存在则跳过。 /// public async Task UpsertAlarmAsync(SyncAlarmItem a, int? deviceId) { var db = _repository.DbContext; // SourceAlarmId 去重 var exists = db.Queryable() .Any(x => x.SourceAlarmId == a.SourceAlarmId); if (exists) return; var alarm = new iot_alarm { SourceAlarmId = a.SourceAlarmId, DeviceId = (int)deviceId, AdapterCode = a.AdapterCode, AlarmLevel = a.Level, AlarmDesc = a.Desc, AlarmValue = (decimal?)a.Value, StartTime = DateTime.TryParse(a.StartTime, out var st) ? st : DateTime.Now, State = "未确认", CreateDate = DateTime.Now }; db.Insertable(alarm).ExecuteCommand(); } } /// 告警同步条目(A4 接口接收的数据模型) public class SyncAlarmItem { public string SourceAlarmId { get; set; } = ""; public string DeviceSourceId { get; set; } = ""; public string AdapterCode { get; set; } = ""; public string Level { get; set; } = ""; public string Desc { get; set; } = ""; public double? Value { get; set; } public string StartTime { get; set; } = ""; } }