using Model; using Model.Dto.Inspection; using Model.Entity.Inspection; using Model.Mapper; using ORM; using Service.Interface; using System; using System.Collections.Generic; using System.Threading.Tasks; namespace Service.Implement { /// /// 告警规则 服务实现(规则实例:查看所有设备告警的规则列表) /// public class AlertRuleService : IAlertRuleService { /// /// 获取全局告警规则列表(OwnerType=0,不含产品/设备归属规则) /// public async Task>> GetListAsync() { try { var list = await SqlSugarContext.DbContext.Queryable() .Where(x => x.IsDel == 0 && x.OwnerType == 0) .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc) .ToListAsync(); // Entity → DTO(Id 转 string) return Result>.Success(list.ToDtoList()); } catch (Exception ex) { return Result>.Error("查询告警规则失败", ex); } } /// /// 获取某归属对象下的规则列表(OwnerType=产品/设备,可选按点过滤) /// public async Task>> GetOwnerRulesAsync(int ownerType, long ownerId, string? pointCode) { try { var list = await SqlSugarContext.DbContext.Queryable() .Where(x => x.IsDel == 0 && x.OwnerType == (byte)ownerType && x.OwnerId == ownerId) .WhereIF(!string.IsNullOrWhiteSpace(pointCode), x => x.PointCode == pointCode) .OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc) .ToListAsync(); return Result>.Success(list.ToDtoList()); } catch (Exception ex) { return Result>.Error("查询归属告警规则失败", ex); } } /// /// 新增告警规则(DTO → Entity,string Id 转 long) /// public async Task AddAsync(AlertRuleDto dto) { if (dto == null || string.IsNullOrWhiteSpace(dto.RuleName)) return Result.Error("规则名称不能为空"); try { var entity = dto.ToEntity(); entity.CreateTime = DateTime.Now; await SqlSugarContext.DbContext.Insertable(entity).ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("新增告警规则失败", ex); } } /// /// 修改告警规则(触发次数等系统字段不允许被前端覆盖) /// public async Task UpdateAsync(AlertRuleDto dto) { var entity = dto?.ToEntity(); if (entity == null || entity.Id <= 0) return Result.Error("规则Id无效"); try { await SqlSugarContext.DbContext.Updateable(entity) .IgnoreColumns(x => new { x.CreateTime, x.IsDel, x.TriggerCount, x.LastAlarmTime }) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("修改告警规则失败", ex); } } /// /// 删除告警规则(软删除:IsDel 置 1) /// public async Task DeleteAsync(long id) { try { await SqlSugarContext.DbContext.Updateable() .SetColumns(x => x.IsDel == 1) .Where(x => x.Id == id) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("删除告警规则失败", ex); } } /// /// 启用/停用告警规则 /// public async Task SetEnabledAsync(long id, bool enabled) { try { await SqlSugarContext.DbContext.Updateable() .SetColumns(x => x.Enabled == enabled) .Where(x => x.Id == id) .ExecuteCommandAsync(); return Result.Success(); } catch (Exception ex) { return Result.Error("更新启用状态失败", ex); } } } }