diff --git a/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/DeleteTransportWarningSceneInput.cs b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/DeleteTransportWarningSceneInput.cs
new file mode 100644
index 00000000..e543dcaf
--- /dev/null
+++ b/src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/DeleteTransportWarningSceneInput.cs
@@ -0,0 +1,18 @@
+using SJZY.Track.Application.Contract.Dtos.Warning.DataAnnotations;
+
+namespace SJZY.Track.Application.Contract.Dtos.Warning.Transport;
+
+public sealed class DeleteTransportWarningSceneInput
+{
+ ///
+ /// 场景唯一id
+ ///
+ [IdRequired]
+ public int Id { get; set; }
+
+ ///
+ /// 预警规则主体id
+ ///
+ [IdRequired]
+ public int WarningId { get; set; }
+}
diff --git a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs
index 49ba57e2..7e806d35 100644
--- a/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs
+++ b/src/SJZY.Track.Application/Services/Warning/Handlers/TransportWarningHandler.cs
@@ -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 || //多个 普货,危险品
diff --git a/src/SJZY.Track.Application/Services/Warning/Handlers/Warning/ITransportWarningHandler.cs b/src/SJZY.Track.Application/Services/Warning/Handlers/Warning/ITransportWarningHandler.cs
index 7982f919..587ab892 100644
--- a/src/SJZY.Track.Application/Services/Warning/Handlers/Warning/ITransportWarningHandler.cs
+++ b/src/SJZY.Track.Application/Services/Warning/Handlers/Warning/ITransportWarningHandler.cs
@@ -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 bos);
diff --git a/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs b/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs
index c5899c38..db94b13d 100644
--- a/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs
+++ b/src/SJZY.Track.Application/Services/Warning/TransportWarningService.cs
@@ -251,6 +251,34 @@ public class TransportWarningService : ApplicationService
});
}
+
+ ///
+ /// 删除运输时效规则场景
+ ///
+ ///
+ ///
+ [HttpPost("DeleteTransportWarningScene")]
+ public async Task 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);
+ }
+
+
///
/// 编辑预警规则项目(全量)
///
diff --git a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/IWarningRuleRepository.cs b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/IWarningRuleRepository.cs
index 59415873..ea534ba9 100644
--- a/src/SJZY.Track.Domain/Aggregates/WarningAggregate/IWarningRuleRepository.cs
+++ b/src/SJZY.Track.Domain/Aggregates/WarningAggregate/IWarningRuleRepository.cs
@@ -14,7 +14,7 @@ public interface IWarningRuleRepository : IBasicRepository
#region 规则主体
// 检查名称是否重复
- Task CheckNameDuplicateAsync(int id,int subsystemId, int customId, string name);
+ Task CheckNameDuplicateAsync(int id, int subsystemId, int customId, string name);
// 新增/更新预警规则主体,并返回id
Task UpsertReturnIdAsync(WarningRuleEntity entity);
@@ -53,6 +53,9 @@ public interface IWarningRuleRepository : IBasicRepository
// 批量新增运输时效场景规则项目
Task BulkInsertTransportSceneRuleItemsAsync(List entities);
+ // 删除运输预警场景
+ Task DeleteTransportSceneAsync(int warningId, int sceneId);
+
// 删除运输预警场景规则项目
Task DeleteTransportSceneRuleItemsAsync(HashSet ruleItemIds);
diff --git a/src/SJZY.Track.Repository/Repositories/WarningRuleRepository.cs b/src/SJZY.Track.Repository/Repositories/WarningRuleRepository.cs
index 495e2a74..5cc11a67 100644
--- a/src/SJZY.Track.Repository/Repositories/WarningRuleRepository.cs
+++ b/src/SJZY.Track.Repository/Repositories/WarningRuleRepository.cs
@@ -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,
.ExecuteCommandAsync();
}
+ public async Task DeleteTransportSceneAsync(int warningId, int sceneId)
+ {
+ using var tran = TransactionHelper.GetReadCommitted();
+
+ var result = await Context.Deleteable()
+ .Where(x => x.WarningId == warningId && x.Id == sceneId)
+ .ExecuteCommandHasChangeAsync();
+ await Context.Deleteable()
+ .Where(x => x.TransportWarningSceneId == sceneId)
+ .ExecuteCommandAsync();
+
+ tran.Complete();
+
+ return result;
+ }
+
public Task DeleteTransportSceneRuleItemsAsync(HashSet ruleItemIds)
{
return Context.Deleteable()