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() { } }