From 02e4718a9a3f03e2385d4e26ffbedf1ceb89908e Mon Sep 17 00:00:00 2001
From: yanjinhui <3306209981@qq.com>
Date: 星期三, 19 十一月 2025 09:32:27 +0800
Subject: [PATCH] 优化人工入库,防止人工出现散件

---
 新建文件夹/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs |   29 +++++++++++++++++++++--------
 1 files changed, 21 insertions(+), 8 deletions(-)

diff --git "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs" "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
index 4a33baa..5e3d40a 100644
--- "a/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
+++ "b/\346\226\260\345\273\272\346\226\207\344\273\266\345\244\271/WIDESEA_WMSServer/WIDESEA_SquareCabinServices/DeliveryOrderServices.cs"
@@ -247,6 +247,7 @@
                         Dt_Inventory_Batch? inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num).FirstOrDefault();
                         if (inventory_Batch == null) throw new Exception($"鏈壘鍒板嚭搴撳崟鍙枫�恵entityOrder.Out_no}銆戜腑鐗╂枡缂栧彿銆恵item.Goods_no}銆戠墿鏂欐壒娆°�恵item.Batch_num}銆戠殑搴撳瓨鎵规淇℃伅");
                         if (inventory_Batch.AvailableQuantity < item.Order_qty) throw new Exception($"鍑哄簱鍗曞彿銆恵entityOrder.Out_no}銆戜腑鐗╂枡缂栧彿銆恵item.Goods_no}銆戠墿鏂欐壒娆°�恵item.Batch_num}銆戠殑搴撳瓨鎵规淇℃伅鍙敤鏁伴噺涓嶈冻");
+                        if (inventory_Batch.SupplyQuantity > 0) throw new Exception($"鍑哄簱鍗曞彿銆恵entityOrder.Out_no}銆戜腑鐗╂枡缂栧彿銆恵item.Goods_no}銆戠墿鏂欐壒娆°�恵item.Batch_num}銆戠殑搴撳瓨鎵规淇℃伅瀛樺湪鏈畬鎴愮殑鐩樼偣浠诲姟锛屾棤娉曞垱寤哄嚭搴撳崟");
                         inventory_Batch.AvailableQuantity -= item.Order_qty;
                         inventory_Batch.OutboundQuantity += item.Order_qty;
                         List<Dt_InventoryInfo> dt_InventoryInfos = InventoryInfos.Where(x => x.MaterielCode == item.Goods_no && x.BatchNo == item.Batch_num).ToList();
@@ -324,6 +325,7 @@
                 #endregion
                 else
                 {
+
                     string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
                     string WareCodeLK = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
                     #region 鍒涘缓澶т欢搴撱�佺珛搴撳嚭搴撳ご琛�
@@ -354,15 +356,16 @@
                     List<Dt_Inventory_Batch> batchesUp = new List<Dt_Inventory_Batch>();
                     List<Dt_InventoryInfo> inventoryInfosUp = new List<Dt_InventoryInfo>();
                     List<Dt_SupplyTask> supplyTasks = new List<Dt_SupplyTask>();
-                    List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode));
-                    var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode));
-                    var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt() && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK));
+                    List<Dt_MaterielInfo> materielInfos = _materielInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)).ToList();
+                    var inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode)).ToList();
+                    var InventoryInfos = _inventoryInfoService.Repository.QueryData(x => outorder.details.Select(e => e.goods_no).Contains(x.MaterielCode) && x.StockStatus == StockStatusEmun.鍏ュ簱瀹屾垚.ObjToInt() && x.AvailableQuantity > 0 && (x.WarehouseCode == WareCodeDJ || x.WarehouseCode == WareCodeLK)).ToList();
                     foreach (var detail in outorder.details)
                     {
                         #region 鏌ヨ搴撳瓨鎵规鍜屽簱瀛�
                         Dt_Inventory_Batch? inventory_Batch = inventory_Batchs.Where(x => x.MaterielCode == detail.goods_no && x.BatchNo == detail.batch_num).FirstOrDefault();
                         if (inventory_Batch == null) throw new Exception($"鏈壘鍒板嚭搴撳崟鍙枫�恵outorder.order_no}銆戜腑鐗╂枡缂栧彿銆恵detail.goods_no}銆戠墿鏂欐壒娆°�恵detail.batch_num}銆戠殑搴撳瓨鎵规淇℃伅");
                         if (inventory_Batch.AvailableQuantity < detail.order_qty) throw new Exception($"鍑哄簱鍗曞彿銆恵outorder.order_no}銆戜腑鐗╂枡缂栧彿銆恵detail.goods_no}銆戠墿鏂欐壒娆°�恵detail.batch_num}銆戠殑搴撳瓨鎵规淇℃伅鍙敤鏁伴噺涓嶈冻");
+                        if(inventory_Batch.SupplyQuantity>0) throw new Exception($"鍑哄簱鍗曞彿銆恵outorder.order_no}銆戜腑鐗╂枡缂栧彿銆恵detail.goods_no}銆戠墿鏂欐壒娆°�恵detail.batch_num}銆戠殑搴撳瓨鎵规淇℃伅瀛樺湪鏈畬鎴愮殑鐩樼偣浠诲姟锛屾棤娉曞垱寤哄嚭搴撳崟");
                         inventory_Batch.AvailableQuantity -= detail.order_qty;
                         inventory_Batch.OutboundQuantity += detail.order_qty;
                         List<Dt_InventoryInfo> dt_InventoryInfos = InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
@@ -1098,8 +1101,8 @@
                     List<Dt_DeliveryOrder> deliveryOrdersAdd = new List<Dt_DeliveryOrder>();
                     string WareCodeLK = WarehouseEnum.绔嬪簱.ObjToInt().ToString("000");
                     string WareCodeDJ = WarehouseEnum.澶т欢搴�.ObjToInt().ToString("000");
-                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode));
-                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode));
+                    List<Dt_Inventory_Batch> inventory_Batchs = _inventory_BatchServices.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
+                    List<Dt_InventoryInfo> _InventoryInfos = _inventoryInfoService.Repository.QueryData(x => codes.Contains(x.MaterielCode)).ToList();
 
                     foreach (var item in order.details)
                     {
@@ -1115,8 +1118,8 @@
                         //鎵炬墍鏈夊簱瀛�
                         List<Dt_InventoryInfo> inventoryInfos = _InventoryInfos.Where(x => x.MaterielCode == inventory_Batch.MaterielCode && x.BatchNo == inventory_Batch.BatchNo).ToList();
                         //鑾峰彇绔嬪簱鐩樼偣宸紓鏁�
-                        var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).First();
-                        var LkQty = inventoryLK.SupplyQuantity;
+                        var inventoryLK = inventoryInfos.Where(x => x.WarehouseCode == WareCodeLK).FirstOrDefault();
+                        var LkQty = inventoryLK?.SupplyQuantity??0;
                         //鑾峰彇澶т欢搴撶洏鐐瑰樊寮傛暟
                         var inventoryDJ = inventoryInfos.Where(x => x.WarehouseCode == WareCodeDJ).ToList();
                         var DJQty = inventoryDJ.Sum(x => x.SupplyQuantity);
@@ -1489,7 +1492,17 @@
                     materielInfo.Business_qty -= supplyTask.StockQuantity;
                     if (materielInfo.Business_qty < materielInfo.MinQty)
                     {
-                        CreateAllocatInOut(materielInfo);//鍒涘缓璋冩嫧浠诲姟
+                        var result = CreateAllocatInOut(materielInfo); // 鍒涘缓璋冩嫧浠诲姟
+                        if (!result.Status)
+                        {
+                            // 璋冩嫧浠诲姟鍒涘缓澶辫触锛屼絾浠嶇劧瑕佹洿鏂扮墿鏂欎俊鎭�
+                            _materielInfoService.UpdateData(materielInfo);
+                            // 鍙互閫夋嫨璁板綍鏃ュ織鎴栨坊鍔犳彁绀轰俊鎭�
+                            _messageInfoService.AddMessageInfo(MessageGroupByEnum.InventoryLowAlarm,
+                                $"璋冩嫧浠诲姟鍒涘缓澶辫触",
+                                $"鐗╂枡{materielInfo.MaterielCode}涓氬姟搴撳瓨宸叉洿鏂帮紝浣嗚皟鎷ㄤ换鍔″垱寤哄け璐�: {result.Message}");
+                        }
+                        // 濡傛灉鎴愬姛锛岀墿鏂欎俊鎭凡缁忓湪 CreateAllocatInOut 鍐呴儴鏇存柊浜�
                     }
                     else
                     {

--
Gitblit v1.9.3