diff --git a/src/Shentun.Peis.Application/SampleGroupDetails/SampleGroupDetailAppService.cs b/src/Shentun.Peis.Application/SampleGroupDetails/SampleGroupDetailAppService.cs index 6b1bed6..8e29b36 100644 --- a/src/Shentun.Peis.Application/SampleGroupDetails/SampleGroupDetailAppService.cs +++ b/src/Shentun.Peis.Application/SampleGroupDetails/SampleGroupDetailAppService.cs @@ -32,17 +32,23 @@ namespace Shentun.Peis.SampleGroupDetails public class SampleGroupDetailAppService : ApplicationService { private readonly IRepository _repository; + private readonly IRepository _sampleGroupRepository; private readonly IRepository _userRepository; + private readonly IRepository _asbitemRepository; private readonly SampleGroupDetailManager _manager; public SampleGroupDetailAppService( IRepository repository, IRepository userRepository, - SampleGroupDetailManager manager) + SampleGroupDetailManager manager, + IRepository asbitemRepository, + IRepository sampleGroupRepository) { - this._repository = repository; - this._userRepository = userRepository; - this._manager = manager; + _repository = repository; + _userRepository = userRepository; + _manager = manager; + _asbitemRepository = asbitemRepository; + _sampleGroupRepository = sampleGroupRepository; } /// @@ -71,6 +77,24 @@ namespace Shentun.Peis.SampleGroupDetails await _manager.CheckAndDeleteAsync(input.SampleGroupId); if (input.Details.Any()) { + #region 加限制 + if (input.Details.Any()) + { + var isAsbitemEnt = (from sampleGroupDetail in await _repository.GetQueryableAsync() + join asbitem in await _asbitemRepository.GetQueryableAsync() on sampleGroupDetail.AsbitemId equals asbitem.Id + join sampleGroup in await _sampleGroupRepository.GetQueryableAsync() on sampleGroupDetail.SampleGroupId equals sampleGroup.Id into sampleGroupTemp + from sampleGrouphaveEmpty in sampleGroupTemp.DefaultIfEmpty() + where input.Details.Select(s => s.AsbitemId).Contains(sampleGroupDetail.AsbitemId) + select new + { + asbitemName = asbitem.DisplayName, + sampleGroupName = sampleGrouphaveEmpty != null ? sampleGrouphaveEmpty.DisplayName : "" + }).FirstOrDefault(); + if (isAsbitemEnt != null) + throw new UserFriendlyException($"组合项目{isAsbitemEnt.asbitemName}已在{isAsbitemEnt.sampleGroupName}条码分组中,不允许添加"); + } + #endregion + List sampleGroupDetails = new List(); foreach (var details in input.Details) {