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()