using System.ComponentModel.DataAnnotations;
using SJZY.Track.Application.Contract.Dtos.Forewarning;
using SJZY.Track.Application.Helpers;
using SJZY.Track.Domain.Aggregates.ForewarningAggregate;
using SJZY.Track.Domain.Dtos.Forewarning;
namespace SJZY.Track.Application.Services.ForewarningServices;
[ApiExplorerSettings(GroupName = "预警服务")]
[Route("/ForewarningService")]
public class ForewarningService : ApplicationService
{
private readonly IWarningRepository _warningRepository;
public ForewarningService(IWarningRepository warningRepository)
{
_warningRepository = warningRepository;
}
///
/// 创建预警
///
///
///
[HttpPost("CreateWarning")]
public async Task CreateWarning(CreateWarningInput input)
{
var warning = ObjectMapper.Map(input);
warning.WarningRules = ForewarningHelper.CalcRuleList(input.TrackStatusSpans, input.WarningFactors);
warning.WarningFactors = ForewarningHelper.MapFactorEntities(input.WarningFactors);
await _warningRepository.CreateForewarningAsync(warning);
return true;
}
///
/// 修改预警规则时效
///
///
///
///
[HttpPost("ModifyTimeSpans")]
public async Task ModifyTimeSpans(ModifyTimeSpanInput input)
{
if (!await _warningRepository.IsAnyAsync(x => x.Id == input.WarningId))
{
throw new BusinessException(message: "预警不存在");
}
if (input.Items.IsNullOrEmpty()) return false;
var warningRules = ObjectMapper.Map, List>(input.Items);
await _warningRepository.ModifyTimeSpansAsync(warningRules);
return true;
}
///
/// 获取预警分页列表
///
///
///
[HttpPost("GetWarningPageList")]
public async Task> GetWarningPageList(GetWarningPageInputVo inputVo)
{
if (!inputVo.KeyWord.IsNullOrEmpty()) inputVo.KeyWord = inputVo.KeyWord!.Trim();
return await _warningRepository.GetWarningPageListAsync(inputVo);
}
///
/// 查询预警规则列表
///
/// 预警规则id
///
[HttpGet("GetWarningRuleList")]
public async Task> GetWarningRuleListAsync([Required] int warningId)
{
return await _warningRepository.GetWarningRuleListAsync(warningId);
}
///
/// 发送预警通知
///
[HttpPost("SendForewarningNotification")]
public void SendForewarningNotification()
{
}
}