schangxiang@126.com
2025-05-11 17c0c88cb5419351e4f0bf498e4b9535c5b39197
HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAppService.cs
ÎļþÃû´Ó HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsBindInStockAssService.cs ÐÞ¸Ä
@@ -10,19 +10,21 @@
using CMS.Plugin.HIAWms.Domain.WmsMaterials;
using CMS.Plugin.HIAWms.Domain.WmsPlaces;
using CMS.Plugin.HIAWms.Domain.WmsTask;
using Microsoft.Extensions.DependencyInjection;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Volo.Abp;
using Volo.Abp.Uow;
namespace CMS.Plugin.HIAWms.Application.Implements
{
    /// <summary>
    /// ç»„盘入库
    /// </summary>
    public class WmsBindInStockAssService : CMSPluginAppService
    public class WmsBindInStockAppService : CMSPluginAppService, IWmsBindInStockAppService
    {
        private readonly IWmsMaterialRepository _wmsMaterialRepository;
        private readonly IWmsContainerRepository _wmsContainerRepository;
@@ -34,8 +36,9 @@
        private readonly IWmsCommonAppService _wmsCommonAppService;
        private readonly IWmsTaskRepository _wmsTaskRepository;
        private readonly IWmsTaskAppService _wmsTaskAppService;
        private readonly IServiceProvider _serviceProvider;
        public WmsBindInStockAssService(IWmsMaterialRepository wmsMaterialRepository,
        public WmsBindInStockAppService(IWmsMaterialRepository wmsMaterialRepository,
            IWmsContainerRepository wmsContainerRepository,
            IWmsPlaceRepository wmsPlaceRepository
,
@@ -45,7 +48,8 @@
            IWmsMaterialStockAppService wmsMaterialStockAppService,
            IWmsCommonAppService wmsCommonAppService,
            IWmsTaskRepository wmsTaskRepository,
            IWmsTaskAppService wmsTaskAppService)
            IWmsTaskAppService wmsTaskAppService,
            IServiceProvider serviceProvider)
        {
            _wmsMaterialRepository = wmsMaterialRepository;
            _wmsContainerRepository = wmsContainerRepository;
@@ -57,10 +61,15 @@
            _wmsCommonAppService = wmsCommonAppService;
            _wmsTaskRepository = wmsTaskRepository;
            _wmsTaskAppService = wmsTaskAppService;
            _serviceProvider = serviceProvider;
        }
        public async Task BindMaterialContaienrAsync(BindInstockInput input)
        {
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            if (string.IsNullOrEmpty(input.MaterialModel)) { throw new UserFriendlyException("请选择库位编号"); }
            if (string.IsNullOrEmpty(input.MaterialBatch)) { throw new UserFriendlyException("请输入批次号"); }
            if (input.StockNumber <= 0) { throw new UserFriendlyException("入库数量必须大于0"); }
@@ -111,13 +120,13 @@
            {
                containerNo = DateTime.Now.ToString("yyMMddHHmmss") + new Random(Guid.NewGuid().GetHashCode()).Next(100, 9999).ToString();
            }
            var container = new WmsContainer
            {
                ContainerNo = containerNo,
                ContainerType = Domain.Shared.Enums.ContainerTypeEnum.XUNI,
                ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.ZUPANG,
            };
            await _wmsContainerRepository.InsertAsync(container);
            //var container = new WmsContainer
            //{
            //    ContainerNo = containerNo,
            //    ContainerType = Domain.Shared.Enums.ContainerTypeEnum.XUNI,
            //    ContainerStatus = Domain.Shared.Enums.ContainerStatusEnum.ZUPANG,
            //};
            //var result =  await _wmsContainerRepository.InsertAsync(container);
            var materialStock = new WmsMaterialStockCreateDto
            {
@@ -132,6 +141,9 @@
                EmptyContainer = Domain.Shared.Enums.YesNoEnum.N,
            };
            await _wmsMaterialStockAppService.CreateAsync(materialStock);
            await uow.SaveChangesAsync();
            await uow.CompleteAsync();
        }
@@ -144,6 +156,10 @@
        public async Task BindInStockAsync(BindInstockInput input)
        {
            if (string.IsNullOrEmpty(input.PlaceNo)) { throw new UserFriendlyException("请选择库位编号"); }
            using var scope = _serviceProvider.CreateScope();
            var unitOfWorkManager = scope.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
            using var uow = unitOfWorkManager.Begin(requiresNew: true);
            input.ContainerNo = DateTime.Now.ToString("yyMMddHHmmss") + new Random(Guid.NewGuid().GetHashCode()).Next(100, 9999).ToString();
            await BindMaterialContaienrAsync(input);
@@ -179,6 +195,9 @@
                }
            }
            await _wmsTaskRepository.InsertManyAsync(taskList);
            await uow.SaveChangesAsync();
            await uow.CompleteAsync();
        }
    }
}