using SJZY.Track.Application.Contract.Services; using SJZY.Track.Domain.Aggregates.KPIAreaAggregate; using SJZY.Track.Domain.Dtos.Forewarning; namespace SJZY.Track.Application.Services.ForewarningServices; [ApiExplorerSettings(GroupName = "预警服务")] [Route("/ForewarningService")] public class KpiAreaService : ApplicationService { private readonly IForewarningCacheService _forewarningCacheService; private readonly IKpiAreaRepository _ruleAreaRepository; public KpiAreaService(IKpiAreaRepository ruleAreaRepository, IForewarningCacheService forewarningCacheService) { _ruleAreaRepository = ruleAreaRepository; _forewarningCacheService = forewarningCacheService; } /// /// 创建分区 /// /// /// 分区id [HttpPost("KpiArea/CreateKpiArea")] public async ValueTask CreateKpiArea(CreateRuleAreaRequest input) { var ruleAreaEntity = ObjectMapper.Map(input); var hasSameName = await _ruleAreaRepository.IsAnyAsync(val => val.SubSystemId == input.SystemId && val.Name == input.Name); if (hasSameName) { return new UnifyResultDto(false, "分区名称重复,请重新修改提交"); } var areaId = await _ruleAreaRepository.CreateAreaAsync(ruleAreaEntity); return new UnifyResultDto(true, areaId, "创建成功"); } /// /// 添加区域信息 /// /// /// 区域id [HttpPost("KpiArea/AddAreaInfo")] public async ValueTask AddAreaInfoAsync(AddRuleAreaInfoRequest input) { var ruleAreaEntity = ObjectMapper.Map(input); var ruleInfoId = await _ruleAreaRepository.AddAreaInfoAsync(ruleAreaEntity); await _forewarningCacheService.ClearRedisByAreaId(input.AreaId); return new UnifyResultDto(true, ruleInfoId, "添加成功"); } /// /// 删除分区 /// /// 分区id /// [HttpDelete("KpiArea/DeleteKpiArea")] public async ValueTask DeleteKpiArea(int id) { await _ruleAreaRepository.DeleteArea(id); await _forewarningCacheService.ClearRedisByAreaId(id); return new UnifyResultDto(true, "删除成功"); } /// /// 删除分区信息 /// /// 分区信息id /// [HttpDelete("KpiArea/DeleteKpiAreaInfo")] public async ValueTask DeleteKpiAreaInfo(int id) { var info = await _ruleAreaRepository.GetAreaInfoById(id); if (info == null) return new UnifyResultDto(false, "未找到该区域信息"); await _ruleAreaRepository.DeleteAreaInfo(id); await _forewarningCacheService.ClearRedisByAreaId(info.AreaId); return new UnifyResultDto(true, "删除成功"); } /// /// 更新区域信息 /// /// /// [HttpPost("KpiArea/ModifyKpiArea")] public async Task ModifyKpiArea(UpdateRuleAreaRequest input) { if (input.Id <= 0) return new UnifyResultDto(false, "id不能为空"); var ruleArea = await _ruleAreaRepository.GetFirstAsync(val => val.Id == input.Id); if (ruleArea == null) return new UnifyResultDto(false, "未找到该区域"); ruleArea.Name = input.Name; await _ruleAreaRepository.UpdateAsync(ruleArea); return new UnifyResultDto(true, "更新成功"); } /// /// 更新区域信息 /// /// /// [HttpPost("KpiArea/ModifyKpiAreaInfo")] public async Task ModifyKpiAreaInfo(UpdateRuleAreaInfoRequest input) { if (input.Id <= 0) return new UnifyResultDto(false, "id不能为空"); var areaInfo = await _ruleAreaRepository.GetAreaInfoById(input.Id); if (areaInfo == null) return new UnifyResultDto(false, "未找到该区域信息"); var ruleAreaEntity = ObjectMapper.Map(input, areaInfo); await _ruleAreaRepository.UpdateAreaInfoAsync(ruleAreaEntity); await _forewarningCacheService.ClearRedisByAreaId(areaInfo.AreaId); return new UnifyResultDto(true, "更新成功"); } /// /// 查询分区列表 /// /// /// [HttpPost("KpiArea/GetKpiAreas")] public async Task> GetKpiAreas(QueryAreaRequest input) { return await _ruleAreaRepository.GetAreas(input); } /// /// 查询分区列表 /// /// /// [HttpPost("KpiArea/GetKpiAreaInfos")] public async Task> GetKpiAreaInfos(QueryAreaInfoRequest query) { return await _ruleAreaRepository.GetAreaInfos(query); } }