From 7454827e0fa6ad72c7508437d862a095fb783beb Mon Sep 17 00:00:00 2001 From: xiaolipro <2357729423@qq.com> Date: Sat, 27 Jul 2024 17:44:23 +0800 Subject: [PATCH] =?UTF-8?q?connect:=20=E5=AF=B9=E6=8E=A5=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E7=BC=96=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Dtos/Common/IdWithNameDto.cs | 8 ++++ .../Helpers/ForewarningHelper.cs | 10 +++-- .../ForewarningServices/ForewarningService.cs | 40 +++++++++++++------ .../Dtos/Forewarning/WarningNitifyDto.cs | 10 +++++ 4 files changed, 52 insertions(+), 16 deletions(-) create mode 100644 src/SJZY.Track.Application.Contract/Dtos/Common/IdWithNameDto.cs diff --git a/src/SJZY.Track.Application.Contract/Dtos/Common/IdWithNameDto.cs b/src/SJZY.Track.Application.Contract/Dtos/Common/IdWithNameDto.cs new file mode 100644 index 00000000..7027b635 --- /dev/null +++ b/src/SJZY.Track.Application.Contract/Dtos/Common/IdWithNameDto.cs @@ -0,0 +1,8 @@ +namespace SJZY.Track.Application.Contract.Dtos.Common; + +public class IdWithNameDto +{ + public int Id { get; set; } + + public string Name { get; set; } +} \ No newline at end of file diff --git a/src/SJZY.Track.Application/Helpers/ForewarningHelper.cs b/src/SJZY.Track.Application/Helpers/ForewarningHelper.cs index 6b572c44..eb79d6f0 100644 --- a/src/SJZY.Track.Application/Helpers/ForewarningHelper.cs +++ b/src/SJZY.Track.Application/Helpers/ForewarningHelper.cs @@ -2,6 +2,7 @@ using System.Dynamic; using Nest; using Newtonsoft.Json.Linq; using SJZY.Expand.ABP.Core.PublicMethords; +using SJZY.Track.Application.Contract.Dtos.Common; using SJZY.Track.Application.Contract.Dtos.Forewarning; using SJZY.Track.Domain.Aggregates.ForewarningAggregate; using SJZY.Track.Domain.Dtos.Forewarning; @@ -119,7 +120,7 @@ public class ForewarningHelper case RuleFactorType.LeavePort: if (value.Type is not JTokenType.String) { - throw new BusinessException(message: "货物类型只接收字符串"); + throw new BusinessException(message: "起运港只接收字符串"); } rules[row].LeavePort = strValue; @@ -127,7 +128,7 @@ public class ForewarningHelper case RuleFactorType.ProductCode: if (value.Type is not JTokenType.String) { - throw new BusinessException(message: "货物类型只接收字符串"); + throw new BusinessException(message: "产品代码只接收字符串"); } rules[row].ProductCode = strValue; @@ -161,8 +162,9 @@ public class ForewarningHelper }).ToList(); } - public static EditWarningOutput MapWarningSummary(WarningEntity warning) + public static EditWarningOutput MapWarningSummary(WarningEntity warning, List statusList) { + var statusDic = statusList.ToDictionary(x => x.Id, x => x.Name); return new EditWarningOutput { Name = warning.Name, @@ -174,7 +176,9 @@ public class ForewarningHelper { Id = x.Id, StartTrackStatusId = x.StartTrackStatusId, + StartTrackStatus = statusDic.TryGetValue(x.StartTrackStatusId, out var start) ? start : "", EndTrackStatusId = x.EndTrackStatusId, + EndTrackStatus = statusDic.TryGetValue(x.EndTrackStatusId, out var end) ? end : "", NotifyUserId = x.NotifyUserId, }).ToList(), WarningFactors = warning.WarningFactors.Select(x => new WarningFactorWithIdDto diff --git a/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningService.cs b/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningService.cs index abe4f846..a155a5f6 100644 --- a/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningService.cs +++ b/src/SJZY.Track.Application/Services/ForewarningServices/ForewarningService.cs @@ -1,8 +1,11 @@ using System.ComponentModel.DataAnnotations; +using SJZY.Track.Application.Contract.Dtos.Common; using SJZY.Track.Application.Contract.Dtos.Forewarning; using SJZY.Track.Application.Helpers; using SJZY.Track.Domain.Aggregates.ForewarningAggregate; +using SJZY.Track.Domain.Aggregates.TrackStatusAggregate; using SJZY.Track.Domain.Dtos.Forewarning; +using SJZY.Track.Domain.Dtos.TrackStatus; using SJZY.Track.Domain.Queries; namespace SJZY.Track.Application.Services.ForewarningServices; @@ -17,7 +20,7 @@ public class ForewarningService : ApplicationService { _warningRepository = warningRepository; } - + /// /// 获取预警分页列表 /// @@ -29,7 +32,7 @@ public class ForewarningService : ApplicationService if (!inputVo.KeyWord.IsNullOrEmpty()) inputVo.KeyWord = inputVo.KeyWord!.Trim(); return await _warningRepository.GetWarningPageListAsync(inputVo); } - + /// /// 创建预警 /// @@ -45,21 +48,23 @@ public class ForewarningService : ApplicationService { throw new BusinessException(message: "该子系统下的客户已经存在一个同名预警: " + warning.Name); } - + warning.WarningRules = ForewarningHelper.CalcRuleList(input.TrackStatusSpans, input.WarningFactors); warning.WarningFactors = ForewarningHelper.MapFactorEntities(input.WarningFactors); warning.WarningNotifies = ForewarningHelper.MapNotifyEntities(input); await _warningRepository.CreateForewarningAsync(warning); return true; } - + /// /// 编辑预警 /// /// + /// /// [HttpPost("EditWarning")] - public async Task EditWarning(int warningId) + public async Task EditWarning(int warningId, + [FromServices] IBasicQuery statusQuery) { var warning = await _warningRepository.GetByIdAsync(warningId); @@ -67,8 +72,15 @@ public class ForewarningService : ApplicationService { throw new BusinessException(message: "预警不存在"); } - - return ForewarningHelper.MapWarningSummary(warning); + + var statusList = await statusQuery.GetListAsync(x => x.SubSystemId == warning.SubSystemId, x => + new IdWithNameDto + { + Id = x.Id, + Name = x.Status + }); + + return ForewarningHelper.MapWarningSummary(warning, statusList); } /// @@ -86,7 +98,8 @@ public class ForewarningService : ApplicationService } if (await _warningRepository.IsAnyAsync(x => - x.SubSystemId == warning.SubSystemId && x.CustomerId == warning.CustomerId && x.Id != warning.Id)) + x.SubSystemId == warning.SubSystemId && x.CustomerId == warning.CustomerId && x.Id != warning.Id && + x.Name == input.Name)) { throw new BusinessException(message: "该子系统下的客户已经存在一个同名预警: " + warning.Name); } @@ -120,7 +133,7 @@ public class ForewarningService : ApplicationService { throw new BusinessException(message: "预警不存在"); } - + if (isEnable) { if (await _warningRepository.IsAnyAsync(x => @@ -129,7 +142,7 @@ public class ForewarningService : ApplicationService throw new BusinessException(message: "该子系统下的客户已经存在一个启用的预警,请先禁用"); } } - + warning.SetEnable(isEnable); return await _warningRepository.TurnWarningAsync(warning); @@ -142,15 +155,16 @@ public class ForewarningService : ApplicationService /// /// [HttpGet("GetWarningRuleList")] - public async Task> GetWarningRuleListAsync([Required] int warningId, [FromServices] IBasicQuery factorQuery) + public async Task> GetWarningRuleListAsync([Required] int warningId, + [FromServices] IBasicQuery factorQuery) { var factors = await factorQuery.GetListAsync(x => x.WarningId == warningId, x => x.Type); var rules = await _warningRepository.GetWarningRuleListAsync(warningId); - + var dynamicList = ForewarningHelper.DynamicCalcRuleList(rules, factors); return dynamicList; } - + /// /// 修改预警规则时效 /// diff --git a/src/SJZY.Track.Domain/Dtos/Forewarning/WarningNitifyDto.cs b/src/SJZY.Track.Domain/Dtos/Forewarning/WarningNitifyDto.cs index 255a421a..f831cfeb 100644 --- a/src/SJZY.Track.Domain/Dtos/Forewarning/WarningNitifyDto.cs +++ b/src/SJZY.Track.Domain/Dtos/Forewarning/WarningNitifyDto.cs @@ -12,6 +12,16 @@ public class WarningNitifyDto /// public int EndTrackStatusId { get; set; } + /// + /// 起始轨迹状态 + /// + public string StartTrackStatus { get; set; } = null!; + + /// + /// 终止轨迹状态 + /// + public string EndTrackStatus { get; set; } = null!; + /// /// 通知人id ///