From ccc300bd56c4ec6f61080f007d257c9af1767b4d Mon Sep 17 00:00:00 2001
From: hardstylewyl <827778732@qq.com>
Date: Wed, 5 Mar 2025 16:21:22 +0800
Subject: [PATCH] =?UTF-8?q?add-interface:=E5=A2=9E=E5=8A=A0=E8=BF=90?=
=?UTF-8?q?=E8=BE=93=E6=97=B6=E6=95=88=E8=A7=84=E5=88=99=E5=9C=BA=E6=99=AF?=
=?UTF-8?q?=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../DeleteTransportWarningSceneInput.cs | 18 ++++++++++++
.../Handlers/TransportWarningHandler.cs | 6 ++++
.../Warning/ITransportWarningHandler.cs | 3 ++
.../Warning/TransportWarningService.cs | 28 +++++++++++++++++++
.../IWarningRuleRepository.cs | 5 +++-
.../Repositories/WarningRuleRepository.cs | 17 +++++++++++
6 files changed, 76 insertions(+), 1 deletion(-)
create mode 100644 src/SJZY.Track.Application.Contract/Dtos/Warning/Transport/DeleteTransportWarningSceneInput.cs
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()