From cd259233c8d14b27e745a7657ad46549335fbca9 Mon Sep 17 00:00:00 2001
From: z8018 <1282578289@qq.com>
Date: 星期五, 19 十二月 2025 20:21:58 +0800
Subject: [PATCH] Merge branch 'htq20251215' of http://115.159.85.185:8098/r/ZhongRui/ALDbanyunxiangmu into htq20251215

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs |   34 +++++++++++++++++-----------------
 1 files changed, 17 insertions(+), 17 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
index 4d48189..151e998 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS\346\227\240\344\273\223\345\202\250\347\211\210/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs"
@@ -110,6 +110,7 @@
             PickingOutboundResponseDTO response = new PickingOutboundResponseDTO();
             try
             {
+                _unitOfWorkManage.BeginTran();
                 // 1. 璁$畻鍑哄簱鏁伴噺閫昏緫
                 OutboundCalculationDTO calculationResult = CalcOutboundQuantity(request);
 
@@ -170,7 +171,8 @@
 
                     pickedDetails.AddRange(materielPickedDetails.PickedDetails);
 
-                    decimal allallocatedQuantity = materielCalc.UnallocatedQuantity;
+                    decimal allallocatedQuantity = Math.Min(materielCalc.UnallocatedQuantity, materielPickedDetails.PickedDetails.Sum(x => x.OutboundQuantity));
+                    materielCalc.UnallocatedQuantity = allallocatedQuantity;
                     // 鏇存柊鍑哄簱鍗曟槑缁嗭紙澧炲姞閿佸畾鏁伴噺锛屼笉澧炲姞宸插嚭鏁伴噺锛�
                     foreach (var detail in materielCalc.Details)
                     {
@@ -252,10 +254,10 @@
                 // 鑾峰彇閫夋嫨鐨勫嚭搴撴槑缁�
                 List<Dt_OutboundOrderDetail> selectedDetails = _detailRepository.QueryData(x => x.OrderId == outboundOrder.Id && request.DetailIds.Contains(x.Id));
 
-                if (outboundOrder.IsBatch == 1)
-                {
-                    selectedDetails = _detailRepository.QueryData(x => x.OrderId == selectedDetails.First().OrderId && x.WarehouseCode == selectedDetails.First().WarehouseCode && x.MaterielCode == selectedDetails.First().MaterielCode && x.BatchNo == selectedDetails.First().BatchNo && x.SupplyCode == selectedDetails.First().SupplyCode);
-                }
+                //if (outboundOrder.IsBatch == 1 && request.DetailIds.Count == 1)
+                //{
+                //    selectedDetails = _detailRepository.QueryData(x => x.OrderId == selectedDetails.First().OrderId && x.WarehouseCode == selectedDetails.First().WarehouseCode && x.MaterielCode == selectedDetails.First().MaterielCode && x.BatchNo == selectedDetails.First().BatchNo && x.SupplyCode == selectedDetails.First().SupplyCode);
+                //}
 
 
                 if (!selectedDetails.Any())
@@ -276,7 +278,7 @@
                 result.OutboundOrder = outboundOrder;
                 result.SelectedDetails = selectedDetails;
 
-                if (outboundOrder.IsBatch == 0)
+                if (outboundOrder.IsBatch == 0 || request.DetailIds.Count > 1)
                 {
                     // 澶氭槑缁嗗嚭搴擄細鎸夌墿鏂欏垎缁勫鐞�
                     result.MaterielCalculations = CalcMaterielOutboundQuantities(outboundOrder, selectedDetails.ToList());
@@ -363,7 +365,6 @@
                 .GroupBy(x => new
                 {
                     x.MaterielCode,
-                    x.MaterielName,
                     x.BatchNo,
                     x.SupplyCode,
                     x.WarehouseCode
@@ -371,7 +372,6 @@
                 .Select(g => new MaterielOutboundCalculationDTO
                 {
                     MaterielCode = g.Key.MaterielCode,
-                    MaterielName = g.Key.MaterielName,
                     BatchNo = g.Key.BatchNo,
                     SupplyCode = g.Key.SupplyCode,
                     WarehouseCode = g.Key.WarehouseCode,
@@ -423,13 +423,15 @@
             Dictionary<int, List<Dt_OutStockLockInfo>> lockStockMap = data.LockStockMap;
 
             // 楠岃瘉鎬诲彲鐢ㄥ簱瀛樻槸鍚︽弧瓒冲嚭搴撻渶姹�
-            if (totalAvailableStock < materielCalc.UnallocatedQuantity)
-            {
-                throw new Exception($"鐗╂枡 {materielCalc.MaterielCode} 鍙敤搴撳瓨 {totalAvailableStock} 涓嶈冻鍑哄簱鏁伴噺 {materielCalc.UnallocatedQuantity}");
-            }
+            //if (totalAvailableStock < materielCalc.UnallocatedQuantity)
+            //{
+            //    throw new Exception($"鐗╂枡 {materielCalc.MaterielCode} 鍙敤搴撳瓨 {totalAvailableStock} 涓嶈冻鍑哄簱鏁伴噺 {materielCalc.UnallocatedQuantity}");
+            //}
+            // 闇�鍒嗛厤鏁伴噺
+            decimal remainingQuantity = Math.Min(totalAvailableStock, materielCalc.UnallocatedQuantity);
 
             // 闇�鍒嗛厤鏁伴噺
-            decimal remainingQuantity = materielCalc.UnallocatedQuantity;
+            //decimal remainingQuantity = materielCalc.UnallocatedQuantity;
 
             // 宸插垎閰嶇殑鎵樼洏鍒楄〃
             List<string> allocatedPallets = new List<string>();
@@ -959,7 +961,6 @@
 
                     if (outboundOrder.OrderType != 0)
                     {
-
                         Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                         if (allocateOrder != null)
                         {
@@ -1097,8 +1098,7 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-
-                        //todo: 鍥炰紶MES
+                        _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
                     }
                 }
                 catch (Exception ex)
@@ -1486,7 +1486,7 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-                        //todo: 鍥炰紶MES
+                        _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
                     }
                 }
                 catch (Exception ex)

--
Gitblit v1.9.3