Files
IOT_API/Service/Implement/Inspection/DataForwardService.cs
T
2026-08-28 15:20:52 +08:00

125 lines
4.2 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}
}
}
}