From fa8171059a6f30209ad0dd332003794ee0719e09 Mon Sep 17 00:00:00 2001
From: 647556386 <647556386@qq.com>
Date: 星期四, 25 十二月 2025 08:53:26 +0800
Subject: [PATCH] 盘点

---
 项目代码/WMS无仓储版/WIDESEA_WMSServer/WIDESEA_OutboundService/OutboundService.cs |   51 +++++++++++++++++++++++++++++++++------------------
 1 files changed, 33 insertions(+), 18 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 aadb5ac..89c656a 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"
@@ -171,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)
                     {
@@ -249,14 +250,23 @@
                 }
 
                 result.FactoryArea = outboundOrder.FactoryArea;
+                List<Dt_OutboundOrderDetail> selectedDetails = new List<Dt_OutboundOrderDetail>();
 
-                // 鑾峰彇閫夋嫨鐨勫嚭搴撴槑缁�
-                List<Dt_OutboundOrderDetail> selectedDetails = _detailRepository.QueryData(x => x.OrderId == outboundOrder.Id && request.DetailIds.Contains(x.Id));
-
-                if (outboundOrder.IsBatch == 1)
+                if(request.DetailIds == null || !request.DetailIds.Any())
                 {
-                    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);
+                    selectedDetails = _detailRepository.QueryData(x => x.OrderId == outboundOrder.Id);
                 }
+                else
+                {
+                    // 鑾峰彇閫夋嫨鐨勫嚭搴撴槑缁�
+                     selectedDetails = _detailRepository.QueryData(x => x.OrderId == outboundOrder.Id && request.DetailIds.Contains(x.Id));
+                }
+                
+
+                //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())
@@ -277,7 +287,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());
@@ -364,7 +374,6 @@
                 .GroupBy(x => new
                 {
                     x.MaterielCode,
-                    x.MaterielName,
                     x.BatchNo,
                     x.SupplyCode,
                     x.WarehouseCode
@@ -372,7 +381,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,
@@ -424,13 +432,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>();
@@ -960,7 +970,6 @@
 
                     if (outboundOrder.OrderType != 0)
                     {
-
                         Dt_AllocateOrder allocateOrder = _allocateOrderRepository.QueryFirst(x => x.OrderNo == outboundOrder.OrderNo);
                         if (allocateOrder != null)
                         {
@@ -1098,8 +1107,11 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-
-                        //todo: 鍥炰紶MES
+                        if(outboundOrder.OrderType != OutOrderTypeEnum.InternalAllocat.ObjToInt())
+                        {
+                            _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
+                        }
+                        
                     }
                 }
                 catch (Exception ex)
@@ -1487,7 +1499,10 @@
                     {
                         UpdateOutboundOrderStatus(request.OrderNo, OutOrderStatusEnum.鍑哄簱瀹屾垚.ObjToInt());
 
-                        //todo: 鍥炰紶MES
+                        if (outboundOrder.OrderType != OutOrderTypeEnum.InternalAllocat.ObjToInt())
+                        {
+                            _feedbackMesService.OutboundFeedback(outboundOrder.OrderNo);
+                        }
                     }
                 }
                 catch (Exception ex)

--
Gitblit v1.9.3