add-interface:增加运输时效规则场景删除接口

This commit is contained in:
hardstylewyl 2025-03-05 16:21:22 +08:00
parent c8f82208cd
commit ccc300bd56
6 changed files with 76 additions and 1 deletions

View File

@ -0,0 +1,18 @@
using SJZY.Track.Application.Contract.Dtos.Warning.DataAnnotations;
namespace SJZY.Track.Application.Contract.Dtos.Warning.Transport;
public sealed class DeleteTransportWarningSceneInput
{
/// <summary>
/// 场景唯一id
/// </summary>
[IdRequired]
public int Id { get; set; }
/// <summary>
/// 预警规则主体id
/// </summary>
[IdRequired]
public int WarningId { get; set; }
}

View File

@ -60,6 +60,12 @@ public class TransportWarningHandler : ITransportWarningHandler
return;
}
public async Task HandleSceneDeletedAsync(WarningRuleEntity rule, TransportWarningSceneBO delScene)
{
// todo:暂时不做后续处理
return;
}
private bool CanSceneChange(TransportWarningSceneBO oldScene, TransportWarningSceneBO postScene)
{
return oldScene.CargoType != postScene.CargoType || //多个 普货,危险品

View File

@ -23,6 +23,9 @@ public interface ITransportWarningHandler : ITransientDependency
// 运输预警场景变更
Task HandleSceneChangedAsync(WarningRuleEntity rule, TransportWarningSceneBO oldScene, TransportWarningSceneBO postScene);
// 运输预警场景删除
Task HandleSceneDeletedAsync(WarningRuleEntity rule, TransportWarningSceneBO delScene);
// 处理配置项列表保存
Task HandleEditAsync(WarningRuleEntity rule, TransportWarningSceneEntity scene, List<TransportWarningSceneRuleItemBO> bos);

View File

@ -251,6 +251,34 @@ public class TransportWarningService : ApplicationService
});
}
/// <summary>
/// 删除运输时效规则场景
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
[HttpPost("DeleteTransportWarningScene")]
public async Task<UnifyResultDto> DeleteTransportWarningScene(DeleteTransportWarningSceneInput input)
{
var rule = await _warningRuleRepository.GetWarningRuleByIdAsync(input.WarningId, WarningRuleType.运输时效预警);
if (rule == null)
{
throw new BusinessException(message: $"预警规则主体不存在,WarningId=[{input.WarningId}]");
}
var scene = await _warningRuleRepository.GetTransportSceneAsync(input.WarningId, input.Id);
if (scene == null)
{
throw new BusinessException(message: $"预警规则场景不存在,WarningId=[{input.WarningId}]");
}
await _warningRuleRepository.DeleteTransportSceneAsync(input.WarningId, input.Id);
// 处理删除
await _transportWarningHandler.HandleSceneDeletedAsync(rule, TransportWarningSceneBO.From(scene));
return new UnifyResultDto(true);
}
/// <summary>
/// 编辑预警规则项目(全量)
/// </summary>

View File

@ -14,7 +14,7 @@ public interface IWarningRuleRepository : IBasicRepository<WarningRuleEntity>
#region 规则主体
// 检查名称是否重复
Task<bool> CheckNameDuplicateAsync(int id,int subsystemId, int customId, string name);
Task<bool> CheckNameDuplicateAsync(int id, int subsystemId, int customId, string name);
// 新增/更新预警规则主体,并返回id
Task<int> UpsertReturnIdAsync(WarningRuleEntity entity);
@ -53,6 +53,9 @@ public interface IWarningRuleRepository : IBasicRepository<WarningRuleEntity>
// 批量新增运输时效场景规则项目
Task<int> BulkInsertTransportSceneRuleItemsAsync(List<TransportWarningSceneRuleItemEntity> entities);
// 删除运输预警场景
Task<bool> DeleteTransportSceneAsync(int warningId, int sceneId);
// 删除运输预警场景规则项目
Task<int> DeleteTransportSceneRuleItemsAsync(HashSet<int> ruleItemIds);

View File

@ -1,3 +1,4 @@
using SJZY.Track.Domain;
using SJZY.Track.Domain.Aggregates.WarningAggregate;
using SJZY.Track.Domain.Aggregates.WarningAggregate.Complete;
using SJZY.Track.Domain.Aggregates.WarningAggregate.Return;
@ -146,6 +147,22 @@ public sealed class WarningRuleRepository : BasicRepository<WarningRuleEntity>,
.ExecuteCommandAsync();
}
public async Task<bool> DeleteTransportSceneAsync(int warningId, int sceneId)
{
using var tran = TransactionHelper.GetReadCommitted();
var result = await Context.Deleteable<TransportWarningSceneEntity>()
.Where(x => x.WarningId == warningId && x.Id == sceneId)
.ExecuteCommandHasChangeAsync();
await Context.Deleteable<TransportWarningSceneRuleItemEntity>()
.Where(x => x.TransportWarningSceneId == sceneId)
.ExecuteCommandAsync();
tran.Complete();
return result;
}
public Task<int> DeleteTransportSceneRuleItemsAsync(HashSet<int> ruleItemIds)
{
return Context.Deleteable<TransportWarningSceneRuleItemEntity>()