diff --git a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs index 01de540d..52f4fc46 100644 --- a/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs +++ b/src/SJZY.Track.Application/Services/Warning/CompleteWarningService.cs @@ -243,11 +243,21 @@ public class CompleteWarningService : ApplicationService } var bos = CompleteWarningRuleItemBO.From(input); - // 同一个主体下,规则项目的检查点不能重复 - var checkPointTrackStatusIds = bos.Select(x => x.CheckPointTrackStatusId).ToHashSet(); - if (checkPointTrackStatusIds.Count < bos.Count) + // 同一个主体下同一个检查点,订单类型不允许出现交集 + foreach (var group in bos.GroupBy(x=>x.CheckPointTrackStatusId)) { - throw new BusinessException(message: "完整预警规则项目检查点不能重复!"); + var allOrderTypes = new HashSet(); + var count = 0; + foreach (var orderTypes in group.Select(x => x.OrderTypes)) + { + allOrderTypes.UnionWith(orderTypes); + count += orderTypes.Count; + } + + if (allOrderTypes.Count < count) + { + throw new BusinessException(message: "同一个检查点下,订单类型不允许出现交集!"); + } } await _completeWarningHandler.HandleEditAsync(rule, bos);