From 265aaae59634f0207879381d0f98b310ce34cb3b Mon Sep 17 00:00:00 2001 From: "boxu.zheng" Date: Fri, 15 Dec 2023 16:55:33 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BA=93=E4=BD=8D=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Balances/BalanceAppService.cs | 24 +++++++++++++ ...nnedReceiptRequestForDongyangAppService.cs | 35 +++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs index 4668b56a8..71c7135e0 100644 --- a/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs +++ b/be/Modules/Inventory/src/Win_in.Sfs.Wms.Inventory.Application/Balances/BalanceAppService.cs @@ -464,6 +464,30 @@ public class BalanceAppService return dtos; } + /// + /// 根据发料任务需求,算出推荐的库存 (在获取时 已经添加预占用) + /// + /// + /// + /// + [HttpGet("recommend-list-location")] + public virtual async Task> GetRecommendBalancesAsync(RecommendBalanceRequestInput input) + { + var traceId = GuidGenerator.Create(); + var itemCode = input.ItemCode; + var qty = input.Qty; + var locationTypes = input.LocationTypes; + var locationAreas = input.LocationAreas; + var statuses = input.Statuses; + Logger.LogDebug(traceId + "|Input:" + input); + + var balances = await _balanceManager.GetRecommendBalancesAsync(traceId, itemCode, qty, locationTypes, locationAreas, statuses).ConfigureAwait(false); + + var dtos = ObjectMapper.Map, List>(balances); + + return dtos; + } + /// /// pda发料执行查询使用 /// diff --git a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs index 5e685a6c1..c363be0f8 100644 --- a/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs +++ b/be/Modules/Store/src/Win_in.Sfs.Wms.Store.Application/Requests/UnplannedReceiptRequests/UnplannedReceiptRequestForDongyangAppService.cs @@ -22,12 +22,16 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ { private readonly IDepartmentAppService _departmentApp; private readonly IUnplannedReceiptRequestManager _unplannedReceiptRequestManager; + private readonly ILocationAppService _locationAppService; + private readonly IBalanceAppService _balanceAppService; public UnplannedReceiptRequestForDongyangAppService(IUnplannedReceiptRequestRepository repository, IUnplannedReceiptRequestManager unplannedReceiptRequestManager, - IDepartmentAppService departmentApp) : base(repository, unplannedReceiptRequestManager) + IDepartmentAppService departmentApp, ILocationAppService locationAppService, IBalanceAppService balanceAppService) : base(repository, unplannedReceiptRequestManager) { _unplannedReceiptRequestManager = unplannedReceiptRequestManager; _departmentApp = departmentApp; + _locationAppService = locationAppService; + _balanceAppService = balanceAppService; } /// @@ -51,12 +55,37 @@ public class UnplannedReceiptRequestForDongyangAppService : UnplannedReceiptRequ { if (detail.UnplannedReceiptType == EnumUnplannedReceiptType.Raw) { - //这写原料 检验 + var locationDto= await _locationAppService.GetByCodeAsync(detail.LocationCode); + if (locationDto.Type!=EnumLocationType.RAW||locationDto.Type!=EnumLocationType.SEMI) + { + throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," + + $"不是{EnumLocationType.RAW.GetDisplayName()}" + + $"或{EnumLocationType.SEMI.GetDisplayName()}】"); + } + + //需要赋值一个这个方法 去掉区域参数 换成库位参数 + //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() + //{ + // ItemCode = detail.ItemCode, + + //}); } if (detail.UnplannedReceiptType == EnumUnplannedReceiptType.Wip) { - //这写线边 校验 + var locationDto = await _locationAppService.GetByCodeAsync(detail.LocationCode); + if (locationDto.Type != EnumLocationType.WIP) + { + throw new UserFriendlyException($"【{detail.LocationCode}】库位类型错误," + + $"不是{EnumLocationType.WIP.GetDisplayName()}"); + } + + //需要赋值一个这个方法 去掉区域参数 换成库位参数 + //_balanceAppService.GetRecommendBalancesAsync(new RecommendBalanceRequestInput() + //{ + // ItemCode = detail.ItemCode, + + //}); } await SetDetailPropertiesAsync(detail).ConfigureAwait(false);