From de4a3a2c1b39c128d4ecd23367db5fcbda957bdd Mon Sep 17 00:00:00 2001
From: zs <zhousong@weben-smart.com>
Date: 周二, 13 5月 2025 11:21:21 +0800
Subject: [PATCH] 临时提交

---
 HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs |   17 +++++++++++------
 1 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs
index 63d57b9..890f1c6 100644
--- a/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs
+++ b/HIAWms/server/src/CMS.Plugin.HIAWms.Application/Implements/WmsCommonAppService.cs
@@ -1,4 +1,5 @@
 锘縰sing CMS.Plugin.HIAWms.Application.Contracts.Dtos.CommonDto;
+using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsMaterialStocks;
 using CMS.Plugin.HIAWms.Application.Contracts.Dtos.WmsPlaces;
 using CMS.Plugin.HIAWms.Application.Contracts.Services;
 using CMS.Plugin.HIAWms.Domain.WmsMaterials;
@@ -44,9 +45,10 @@
         public async Task<Dictionary<WmsPlaceDto, int>> FindAvailablePlacesAsync(string materialModel,int requiredNum, string materialNo="" )
         {
             // 1. 鑾峰彇鎵�鏈夊簱瀛樺拰搴撲綅淇℃伅
-            var stockList = await _wmsMaterialStockRepository.GetListAsync(new WmsMaterialStock());
+            var stockList = await _wmsMaterialStockRepository.GetListAsync(new WmsMaterialStock { StorageTypeNo = Domain.Shared.Enums.PlaceTypeEnum.YUANLIAOKUWEI});
 
-            var allPlaceList = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(await _wmsPlaceRepository.GetListAsync(new WmsPlace()));
+            var placeList = await _wmsPlaceRepository.GetListAsync(new WmsPlace { StorageTypeNo = Domain.Shared.Enums.PlaceTypeEnum.YUANLIAOKUWEI});
+            var allPlaceList = ObjectMapper.Map<List<WmsPlace>, List<WmsPlaceDto>>(placeList);
 
             // 2. 鏌ユ壘鐩稿悓鐗╂枡鍨嬪彿鍜岀紪鍙风殑搴撳瓨锛堟寜搴撳瓨閲忛檷搴忥級
             var sameModelStocks = stockList
@@ -108,19 +110,22 @@
         /// <param name="requiredNum"></param>
         /// <param name="materialNo"></param>
         /// <returns></returns>
-        public async Task<Dictionary<string, int>> FindStockAsync(string materialModel, int requiredNum, string materialNo = "")
+        public async Task<Dictionary<WmsMaterialStockDto, int>> FindStockAsync(string materialModel, int requiredNum, string materialNo = "")
         {
             // 1. 鑾峰彇鎵�鏈夊簱瀛橈紙鎺掗櫎閿佸畾搴撳瓨锛�
             var stockList = (await _wmsMaterialStockRepository.GetListAsync(new WmsMaterialStock()))
                 .Where(x => x.IsLock == Domain.Shared.Enums.YesNoEnum.N)
+                .Where(x=>x.StorageTypeNo == Domain.Shared.Enums.PlaceTypeEnum.YUANLIAOKUWEI)
                 .ToList();
 
             // 2. 绛涢�夊尮閰嶇墿鏂�
-            var availableStocks = stockList
+            var availableStocklist = stockList
                 .Where(x => x.MaterialModel == materialModel)
                 .WhereIf(!string.IsNullOrEmpty(materialNo), x => x.MaterialNo == materialNo)
                 .OrderBy(x => x.StockNumber) // 浼樺厛浠庡簱瀛樺皯鐨勫簱浣嶅嚭
                 .ToList();
+
+            var availableStocks = ObjectMapper.Map<List<WmsMaterialStock>, List<WmsMaterialStockDto>>(availableStocklist);
 
             // 3. 妫�鏌ユ�诲簱瀛樻槸鍚﹁冻澶�
             int totalAvailable = availableStocks.Sum(x => x.StockNumber);
@@ -131,7 +136,7 @@
             }
 
             // 4. 璁$畻鍚勫簱浣嶅嚭搴撴暟閲�
-            var allocation = new Dictionary<string, int>(); // <搴撲綅鍙�, 鍑哄簱鏁�>
+            var allocation = new Dictionary<WmsMaterialStockDto, int>(); // <搴撲綅鍙�, 鍑哄簱鏁�>
             int remaining = requiredNum;
 
             foreach (var stock in availableStocks)
@@ -139,7 +144,7 @@
                 if (remaining <= 0) break;
 
                 int deductAmount = Math.Min(stock.StockNumber, remaining);
-                allocation.Add(stock.PlaceNo, deductAmount);
+                allocation.Add(stock, deductAmount);
                 remaining -= deductAmount;
             }
 

--
Gitblit v1.9.3