通知告警规则引擎

This commit is contained in:
“hsc”
2026-08-28 15:20:52 +08:00
parent 01f51fa3b4
commit d9b079142b
12 changed files with 904 additions and 7 deletions
@@ -0,0 +1,124 @@
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
{
/// <summary>
/// 数据转发 服务实现(配置数据转发规则,支持通过消息通知的方式定时转发数据)
/// </summary>
public class DataForwardService : IDataForwardService
{
/// <summary>
/// 获取全部转发规则列表
/// </summary>
public async Task<Result<List<DataForwardRuleDto>>> GetListAsync()
{
try
{
var list = await SqlSugarContext.DbContext.Queryable<DataForwardRuleEntity>()
.Where(x => x.IsDel == 0)
.OrderBy(x => x.CreateTime, SqlSugar.OrderByType.Desc)
.ToListAsync();
// Entity → DTOId 转 string
return Result<List<DataForwardRuleDto>>.Success(list.ToDtoList());
}
catch (Exception ex)
{
return Result<List<DataForwardRuleDto>>.Error("查询转发规则失败", ex);
}
}
/// <summary>
/// 新增转发规则(DTO → Entitystring Id 转 long
/// </summary>
public async Task<Result> AddAsync(DataForwardRuleDto dto)
{
if (dto == null || string.IsNullOrWhiteSpace(dto.ForwardName))
return Result.Error("转发规则名称不能为空");
if (string.IsNullOrWhiteSpace(dto.TargetAddress))
return Result.Error("目标地址不能为空");
if (dto.ForwardInterval <= 0)
return Result.Error("转发间隔必须大于 0 秒");
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);
}
}
/// <summary>
/// 修改转发规则(最近转发时间等系统字段不允许被前端覆盖)
/// </summary>
public async Task<Result> UpdateAsync(DataForwardRuleDto 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.LastForwardTime })
.ExecuteCommandAsync();
return Result.Success();
}
catch (Exception ex)
{
return Result.Error("修改转发规则失败", ex);
}
}
/// <summary>
/// 删除转发规则(软删除:IsDel 置 1)
/// </summary>
public async Task<Result> DeleteAsync(long id)
{
try
{
await SqlSugarContext.DbContext.Updateable<DataForwardRuleEntity>()
.SetColumns(x => x.IsDel == 1)
.Where(x => x.Id == id)
.ExecuteCommandAsync();
return Result.Success();
}
catch (Exception ex)
{
return Result.Error("删除转发规则失败", ex);
}
}
/// <summary>
/// 启用/停用转发规则
/// </summary>
public async Task<Result> SetEnabledAsync(long id, bool enabled)
{
try
{
await SqlSugarContext.DbContext.Updateable<DataForwardRuleEntity>()
.SetColumns(x => x.Enabled == enabled)
.Where(x => x.Id == id)
.ExecuteCommandAsync();
return Result.Success();
}
catch (Exception ex)
{
return Result.Error("更新启用状态失败", ex);
}
}
}
}