track/src/SJZY.Track.Application/Services/ForewarningServices/KpiAreaService.cs
2024-09-18 10:38:32 +08:00

146 lines
5.2 KiB
C#

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;
}
/// <summary>
/// 创建分区
/// </summary>
/// <param name="input"></param>
/// <returns>分区id</returns>
[HttpPost("KpiArea/CreateKpiArea")]
public async ValueTask<UnifyResultDto> CreateKpiArea(CreateRuleAreaRequest input)
{
var ruleAreaEntity = ObjectMapper.Map<CreateRuleAreaRequest, RuleAreaEntity>(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, "创建成功");
}
/// <summary>
/// 添加区域信息
/// </summary>
/// <param name="input"></param>
/// <returns>区域id</returns>
[HttpPost("KpiArea/AddAreaInfo")]
public async ValueTask<UnifyResultDto> AddAreaInfoAsync(AddRuleAreaInfoRequest input)
{
var ruleAreaEntity = ObjectMapper.Map<AddRuleAreaInfoRequest, RuleAreaInfoEntity>(input);
var ruleInfoId = await _ruleAreaRepository.AddAreaInfoAsync(ruleAreaEntity);
await _forewarningCacheService.ClearRedisByAreaId(input.AreaId);
return new UnifyResultDto(true, ruleInfoId, "添加成功");
}
/// <summary>
/// 删除分区
/// </summary>
/// <param name="id">分区id</param>
/// <returns></returns>
[HttpDelete("KpiArea/DeleteKpiArea")]
public async ValueTask<UnifyResultDto> DeleteKpiArea(int id)
{
await _ruleAreaRepository.DeleteArea(id);
await _forewarningCacheService.ClearRedisByAreaId(id);
return new UnifyResultDto(true, "删除成功");
}
/// <summary>
/// 删除分区信息
/// </summary>
/// <param name="id">分区信息id</param>
/// <returns></returns>
[HttpDelete("KpiArea/DeleteKpiAreaInfo")]
public async ValueTask<UnifyResultDto> 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, "删除成功");
}
/// <summary>
/// 更新区域信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("KpiArea/ModifyKpiArea")]
public async Task<UnifyResultDto> 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, "更新成功");
}
/// <summary>
/// 更新区域信息
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("KpiArea/ModifyKpiAreaInfo")]
public async Task<UnifyResultDto> 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, "更新成功");
}
/// <summary>
/// 查询分区列表
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("KpiArea/GetKpiAreas")]
public async Task<UnifyPageResultDto<AreaDto>> GetKpiAreas(QueryAreaRequest input)
{
return await _ruleAreaRepository.GetAreas(input);
}
/// <summary>
/// 查询分区列表
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
[HttpPost("KpiArea/GetKpiAreaInfos")]
public async Task<UnifyPageResultDto<RuleAreaInfoDto>> GetKpiAreaInfos(QueryAreaInfoRequest query)
{
return await _ruleAreaRepository.GetAreaInfos(query);
}
}