From a17fb9308a1e06cea03fb9b6f5356f807f07807b Mon Sep 17 00:00:00 2001 From: lvzb <35200379@qq.com> Date: Tue, 9 Apr 2024 15:55:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=A0=A1=E9=AA=8Cerp?= =?UTF-8?q?=E5=82=A8=E4=BD=8D=E9=9B=B6=E4=BB=B6=E5=AF=B9=E5=BA=94=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E7=9B=B8=E5=85=B3=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Settings/BasedataSettingsDto.cs | 2 ++ .../Settings/BasedataSettingsUpdateInput.cs | 1 + .../ErpLocationItemAppService.cs | 6 ++-- .../Setttings/BasedataSettingsAppService.cs | 3 ++ .../BasedataSettingDefinitionProvider.cs | 5 +++ .../ErpLocationItemAclService.cs | 36 +++++++++++++++++++ .../IErpLocationItemAclService.cs | 9 +++++ .../Balances/BalanceManager.cs | 9 ++--- 8 files changed, 64 insertions(+), 7 deletions(-) create mode 100644 be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/ErpLocationItemAclService.cs create mode 100644 be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/IErpLocationItemAclService.cs diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsDto.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsDto.cs index 82b18f1f0..eadefbfa6 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsDto.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsDto.cs @@ -6,6 +6,8 @@ public class BasedataSettingsDto public string ItemStoreRelation_LocationTypes { get; set; } public string ItemStoreRelation_NotFoundReturnInfinity { get; set; } + + public string ErpLocationItem_NotFoundReturnInfinity { get; set; } public string ItemQuality_NotFoundReturnExempt { get; set; } public string AQL_DefaultSampleQty { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsUpdateInput.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsUpdateInput.cs index 400c7505e..77a07f180 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsUpdateInput.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application.Contracts/Settings/BasedataSettingsUpdateInput.cs @@ -5,6 +5,7 @@ public class BasedataSettingsUpdateInput public string ItemStoreRelation_LocationTypes { get; set; } public string ItemStoreRelation_NotFoundReturnInfinity { get; set; } + public string ErpLocationItem_NotFoundReturnInfinity { get; set; } public string ItemQuality_NotFoundReturnExempt { get; set; } public string AQL_DefaultSampleQty { get; set; } diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs index 32ed05116..1f81f0138 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/ErpLocationItems/ErpLocationItemAppService.cs @@ -80,8 +80,8 @@ public class ErpLocationItemAppService if (entity == null) { - //if (await SettingManager.IsTrueAsync(BasedataSettings.ErpLocationItem.NotFoundReturnInfinity).ConfigureAwait(false)) - //{ + if (await SettingManager.IsTrueAsync(BasedataSettings.ErpLocationItem.NotFoundReturnInfinity).ConfigureAwait(false)) + { entity = new ErpLocationItem() { @@ -89,7 +89,7 @@ public class ErpLocationItemAppService ErpLocationCode= erpLocationCode }; - // } + } } var dto = ObjectMapper.Map(entity); return dto; diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Setttings/BasedataSettingsAppService.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Setttings/BasedataSettingsAppService.cs index 1466fe7d7..d17f1e93e 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Setttings/BasedataSettingsAppService.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Application/Setttings/BasedataSettingsAppService.cs @@ -31,6 +31,8 @@ public class BasedataSettingsAppService : settings.Find(p => p.Name == BasedataSettings.ItemStoreRelation.LocationTypes)?.Value; dto.ItemStoreRelation_NotFoundReturnInfinity = settings.Find(p => p.Name == BasedataSettings.ItemStoreRelation.NotFoundReturnInfinity)?.Value; + dto.ErpLocationItem_NotFoundReturnInfinity = + settings.Find(p => p.Name == BasedataSettings.ErpLocationItem.NotFoundReturnInfinity)?.Value; dto.ItemQuality_NotFoundReturnExempt = settings.Find(p => p.Name == BasedataSettings.ItemQuality.NotFoundReturnExempt)?.Value; dto.AQL_DefaultSampleQty = @@ -49,6 +51,7 @@ public class BasedataSettingsAppService : { await _settingManager.SetGlobalAsync(BasedataSettings.ItemStoreRelation.LocationTypes, input.ItemStoreRelation_LocationTypes).ConfigureAwait(false); await _settingManager.SetGlobalAsync(BasedataSettings.ItemStoreRelation.NotFoundReturnInfinity, input.ItemStoreRelation_NotFoundReturnInfinity).ConfigureAwait(false); + await _settingManager.SetGlobalAsync(BasedataSettings.ErpLocationItem.NotFoundReturnInfinity, input.ErpLocationItem_NotFoundReturnInfinity).ConfigureAwait(false); await _settingManager.SetGlobalAsync(BasedataSettings.ItemQuality.NotFoundReturnExempt, input.ItemQuality_NotFoundReturnExempt).ConfigureAwait(false); await _settingManager.SetGlobalAsync(BasedataSettings.AQL.DefaultSampleQty, input.AQL_DefaultSampleQty).ConfigureAwait(false); await _settingManager.SetGlobalAsync(BasedataSettings.ItemPack.DefaultPackQty, input.ItemPack_DefaultPackQty).ConfigureAwait(false); diff --git a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Settings/BasedataSettingDefinitionProvider.cs b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Settings/BasedataSettingDefinitionProvider.cs index 79562f4c0..af5dc48e6 100644 --- a/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Settings/BasedataSettingDefinitionProvider.cs +++ b/be/Modules/BaseData/src/Win_in.Sfs.Basedata.Domain/Settings/BasedataSettingDefinitionProvider.cs @@ -23,6 +23,11 @@ public class BasedataSettingDefinitionProvider : SettingDefinitionProvider BasedataSettings.ItemStoreRelation.NotFoundReturnInfinity, "true", LocalizableString.Create(BasedataSettings.ItemStoreRelation.NotFoundReturnInfinity) + ), + new SettingDefinition( + BasedataSettings.ErpLocationItem.NotFoundReturnInfinity, + "false", + LocalizableString.Create(BasedataSettings.ErpLocationItem.NotFoundReturnInfinity) ), //找不到质量信息, 默认为免检 new SettingDefinition( diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/ErpLocationItemAclService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/ErpLocationItemAclService.cs new file mode 100644 index 000000000..64dd3945e --- /dev/null +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/ErpLocationItemAclService.cs @@ -0,0 +1,36 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Volo.Abp.Caching; +using Win_in.Sfs.Basedata.Application.Contracts; +using Win_in.Sfs.Shared.Application; + +namespace Win_in.Sfs.Wms.Inventory.Domain.Acl.ErpLocationItem; +public class ErpLocationItemAclService + : AclServiceBase, IErpLocationItemAclService +{ + private readonly IErpLocationItemAppService _appService; + private readonly IDistributedCache _cache; + + public ErpLocationItemAclService( + IErpLocationItemAppService appService + , IDistributedCache cache + ) + { + _appService = appService; + _cache = cache; + } + + public virtual async Task GetFirstAsync(string itemCode, string locationCode) + { + var dto = await _cache.GetOrAddItemAsync( + $"{itemCode}:{locationCode}", + async () => await GetFromAppServiceAsync(itemCode, locationCode).ConfigureAwait(false), + CacheMinutes).ConfigureAwait(false); + return dto; + } + + private async Task GetFromAppServiceAsync(string itemCode, string locationCode) + { + return await _appService.CheckItemErpLocationIsAvailable(itemCode, locationCode).ConfigureAwait(false); + } +} diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/IErpLocationItemAclService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/IErpLocationItemAclService.cs new file mode 100644 index 000000000..9b52bbfa7 --- /dev/null +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain.Acl/ErpLocationItem/IErpLocationItemAclService.cs @@ -0,0 +1,9 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using Win_in.Sfs.Basedata.Application.Contracts; + +namespace Win_in.Sfs.Wms.Inventory.Domain.Acl.ErpLocationItem; +public interface IErpLocationItemAclService +{ + Task GetFirstAsync(string itemCode, string locationCode); +} diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs index 5eaf96cad..9c69813e6 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Domain/Balances/BalanceManager.cs @@ -14,6 +14,7 @@ using Volo.Abp.SettingManagement; using Win_in.Sfs.Basedata.Application.Contracts; using Win_in.Sfs.Shared.Domain; using Win_in.Sfs.Shared.Domain.Shared; +using Win_in.Sfs.Wms.Inventory.Domain.Acl.ErpLocationItem; using Win_in.Sfs.Wms.Inventory.Domain.Acl.ItemBasic; using Win_in.Sfs.Wms.Inventory.Domain.Acl.ItemStoreRelation; using Win_in.Sfs.Wms.Inventory.Domain.Acl.Location; @@ -29,7 +30,7 @@ public class BalanceManager : DomainService, IBalanceManager private readonly IItemBasicAclService _itemBasicAclService; private readonly ILocationAclService _locationAclService; private readonly IItemStoreRelationAclService _itemStoreRelationAclService; - private readonly IErpLocationItemAppService _erpLocationItemAppService; + private readonly IErpLocationItemAclService _erpLocationItemAclService; private readonly ISettingManager _settingManager; private readonly IExpectInRepository _expectInRepository; private readonly IExpectOutRepository _expectOutRepository; @@ -42,7 +43,7 @@ public class BalanceManager : DomainService, IBalanceManager , IExpectOutRepository expectOutRepository , IItemStoreRelationAclService itemStoreRelationAclService , ISettingManager settingManager - ,IErpLocationItemAppService erpLocationItemAppService + , IErpLocationItemAclService erpLocationItemAclService ) { _objectMapper = objectMapper; @@ -53,7 +54,7 @@ public class BalanceManager : DomainService, IBalanceManager _itemStoreRelationAclService = itemStoreRelationAclService; _settingManager = settingManager; _expectOutRepository = expectOutRepository; - _erpLocationItemAppService= erpLocationItemAppService; + _erpLocationItemAclService = erpLocationItemAclService; } #region Modify @@ -162,7 +163,7 @@ public class BalanceManager : DomainService, IBalanceManager /// private async Task CheckErpLocationItemAsync(Transaction transaction) { - var erpLocationItem =await _erpLocationItemAppService.CheckItemErpLocationIsAvailable( transaction.ItemCode, transaction.LocationErpCode).ConfigureAwait(false); + var erpLocationItem =await _erpLocationItemAclService.GetFirstAsync( transaction.ItemCode, transaction.LocationErpCode).ConfigureAwait(false); if (erpLocationItem == null) {