From 4eafe9c975b88483da2a16f20c45285db0a3e791 Mon Sep 17 00:00:00 2001 From: zs <zhousong@weben-smart.com> Date: 周一, 05 5月 2025 21:33:05 +0800 Subject: [PATCH] 库存及库存明细 --- HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs | 125 +++++++++++++++++++++++++++++++++++------ 1 files changed, 105 insertions(+), 20 deletions(-) diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs index 6b88e6a..4f3b9ee 100644 --- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs +++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsMaterialStockAppService.cs @@ -8,6 +8,10 @@ using Volo.Abp.Data; using Volo.Abp.ObjectExtending; using CMS.Plugin.HIAWms.Domain.Shared.Util; +using CMS.Plugin.HIAWms.Domain.WmsMaterials; +using CMS.Plugin.HIAWms.Domain.WmsContainers; +using CMS.Plugin.HIAWms.Domain.WmsPlaces; +using CMS.Plugin.HIAWms.Domain.WmsAreas; namespace CMS.Plugin.HIAWms.Application.Implements; @@ -15,14 +19,27 @@ public class WmsMaterialStockAppService : CMSPluginAppService, IWmsMaterialStockAppService { private readonly IWmsMaterialStockRepository _wmsmaterialstockRepository; + private readonly IWmsMaterialRepository _wmsMaterialRepository; + private readonly IWmsContainerRepository _wmscontainerRepository; + private readonly IWmsPlaceRepository _wmsplaceRepository; + private readonly IWmsAreaRepository _wmsareaRepository; /// <summary> /// Initializes a new instance of the <see cref="WmsMaterialStockAppService"/> class. /// </summary> /// <param name="wmsmaterialstockRepository">The task job repository.</param> - public WmsMaterialStockAppService(IWmsMaterialStockRepository wmsmaterialstockRepository) + public WmsMaterialStockAppService(IWmsMaterialStockRepository wmsmaterialstockRepository, + IWmsMaterialRepository wmsMaterialRepository, + IWmsContainerRepository wmscontainerRepository, + IWmsPlaceRepository wmsplaceRepository, + IWmsAreaRepository wmsareaRepository + ) { _wmsmaterialstockRepository = wmsmaterialstockRepository; + _wmsMaterialRepository = wmsMaterialRepository; + _wmscontainerRepository = wmscontainerRepository; + _wmsplaceRepository = wmsplaceRepository; + _wmsareaRepository = wmsareaRepository; } /// <inheritdoc /> @@ -54,19 +71,60 @@ { await CheckCreateOrUpdateDtoAsync(input); - var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo); - if (exist) + //var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo); + //if (exist) + //{ + // throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + //} + var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); + if(material == null) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�"); } - + var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); + if (container == null) + { + throw new UserFriendlyException("鎵樼洏淇℃伅涓嶅瓨鍦�"); + } + var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); + if(place == null) + { + throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); + if(area == null) + { + throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + } var maxSort = await _wmsmaterialstockRepository.GetMaxSortAsync(); var sort = input.Sort ?? maxSort; var wmsmaterialstock = ObjectMapper.Map<WmsMaterialStockCreateDto, WmsMaterialStock>(input); input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); + wmsmaterialstock.MaterialId = Guid.NewGuid().ToString("N"); + material.MaterialName = material.MaterialName; + + wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + wmsmaterialstock.ContainerType = container.ContainerType; + + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; + wmsmaterialstock.AreaCode = place.AreaCode; + wmsmaterialstock.AreaName = area.AreaName; + + wmsmaterialstock.MaterialModel = material.MaterialModel; + wmsmaterialstock.MaterialBatch = input.MaterialBatch; + wmsmaterialstock.Sort = sort; wmsmaterialstock.InStockTime = DateTime.Now; await _wmsmaterialstockRepository.InsertAsync(wmsmaterialstock); + + + container.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + place.Islock = input.IsLock; + + await _wmscontainerRepository.UpdateAsync(container); + await _wmsplaceRepository.UpdateAsync(place); if (input.Sort.HasValue && wmsmaterialstock.Sort != maxSort) { @@ -82,35 +140,62 @@ await CheckCreateOrUpdateDtoAsync(input); var wmsmaterialstock = await _wmsmaterialstockRepository.GetAsync(id); - var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo, wmsmaterialstock.Id); - if (exist) + //var exist = await _wmsmaterialstockRepository.NameExistAsync(input.MaterialNo, wmsmaterialstock.Id); + //if (exist) + //{ + // throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + //} + var material = await _wmsMaterialRepository.FindByNameAsync(input.MaterialNo); + if (material == null) { - throw new UserFriendlyException(L[CMSPluginDomainErrorCodes.NameAlreadyExists, input.MaterialNo]); + throw new UserFriendlyException("鐗╂枡淇℃伅涓嶅瓨鍦�"); } - + var container = await _wmscontainerRepository.FindByNameAsync(input.ContainerNo); + if (container == null) + { + throw new UserFriendlyException("鎵樼洏淇℃伅涓嶅瓨鍦�"); + } + var place = await _wmsplaceRepository.FindByNameAsync(input.PlaceNo); + if (place == null) + { + throw new UserFriendlyException("搴撲綅淇℃伅涓嶅瓨鍦�"); + } + var area = await _wmsareaRepository.FindByNameAsync(place.AreaCode); + if (area == null) + { + throw new UserFriendlyException("搴撲綅搴撳尯淇℃伅涓嶅瓨鍦�"); + } wmsmaterialstock.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp); input.MapExtraPropertiesTo(wmsmaterialstock, MappingPropertyDefinitionChecks.None); - wmsmaterialstock.MaterialNo = input.MaterialNo; - wmsmaterialstock.MaterialName = input.MaterialName; wmsmaterialstock.ContainerNo = input.ContainerNo; - wmsmaterialstock.ContainerStatus = input.ContainerStatus; - wmsmaterialstock.ContainerType = input.ContainerType; wmsmaterialstock.StockNumber = input.StockNumber; - wmsmaterialstock.MaterialBatch = input.MaterialBatch; - wmsmaterialstock.SupplierCode = input.SupplierCode; - wmsmaterialstock.MaterialModel = input.MaterialModel; wmsmaterialstock.PlaceNo = input.PlaceNo; - wmsmaterialstock.PlaceStatus = input.PlaceStatus; - wmsmaterialstock.StorageTypeNo = input.StorageTypeNo; - wmsmaterialstock.AreaCode = input.AreaCode; - wmsmaterialstock.AreaName = input.AreaName; wmsmaterialstock.IsLock = input.IsLock; wmsmaterialstock.InStockTime = input.InStockTime; wmsmaterialstock.Remark = input.Remark; + wmsmaterialstock.MaterialName = material.MaterialName; + wmsmaterialstock.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + wmsmaterialstock.ContainerType = container.ContainerType; + + wmsmaterialstock.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + wmsmaterialstock.StorageTypeNo = place.StorageTypeNo; + wmsmaterialstock.AreaCode = place.AreaCode; + wmsmaterialstock.AreaName = area.AreaName; + + wmsmaterialstock.MaterialModel = material.MaterialModel; + wmsmaterialstock.MaterialBatch = input.MaterialBatch; + await _wmsmaterialstockRepository.UpdateAsync(wmsmaterialstock); + container.ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.KUWEI; + place.PlaceStatus = Domain.Shared.Enums.PlaceStatusEnum.CUNHUO; + place.Islock = input.IsLock; + + await _wmscontainerRepository.UpdateAsync(container); + await _wmsplaceRepository.UpdateAsync(place); + return ObjectMapper.Map<WmsMaterialStock, WmsMaterialStockDto>(wmsmaterialstock); } -- Gitblit v1.9.3